catopen, catclose -
メッセージカタログのオープン/クローズ
#include <nl_types.h>
nl_catd catopen(const char *name, int flag);
int catclose(nl_catd catalog);
関数
catopen()
はメッセージカタログをオープンし、カタログディスクリプターを返す。
このディスクリプターは
catclose() または
execve(2)
が呼び出されるまで有効である。
カタログディスクリプターを実装するために
ファイルディスクリプターを使用すると、
FD_CLOEXEC
フラグが設定される。
引数
name
はオープンするメッセージカタログの名前を指定する。
name
が絶対パスで指定されている場合
(すなわち '/'
を含んでいる場合)、
name
はメッセージカタログへのパス名である。
それ以外の場合、環境変数
NLSPATH が
name
とともに使用され
%N
を置き換える (
locale(7)
参照)。 プロセスが root
権限を持っているときに
NLSPATH
が使われるかどうかは指定されていない。
NLSPATH
環境変数が存在しないか、
NLSPATH
で指定されたパスの中の
どのパスにおいてもメッセージカタログをオープンできない場合、
実装で定義されているパスが使われる。
後者のデフォルトパスは、
flag 引数が
NL_CAT_LOCALE
の場合には
LC_MESSAGES
のロケール設定に依存し、
flag 引数が 0
の場合には
LANG
環境変数に依存する。
ロケールの
LC_MESSAGES
を変更すると、
オープンされているカタログディスクリプターが無効になるかもしれない。
catopen() の
flag
引数は、使用される言語のソースを示すために使われる。
NL_CAT_LOCALE
に設定されると、
LC_MESSAGES
の現在のロケール設定が使われる。
それ以外の場合は
LANG
環境変数が使われる。
関数
catclose() は
catalog
で指定されたメッセージカタログをクローズする。
これは、以降の
catalog
で指定されるメッセージカタログへの全ての参照を無効にする。
関数
catopen()
が成功すると、
nl_catd
型のメッセージカタログディスクリプターを返す。
失敗した場合は
(nl_catdv) -1
を返し、
errno
を設定してエラーを示す。
ここで起こり得るエラーの値には、
open(2)
の呼び出しの際に起こり得る全てのエラーの値が含まれる。
関数
catclose()
は、成功した場合 0
を、失敗した場合 -1
を返す。
- LC_MESSAGES
-
LC_MESSAGES
ロケール設定のソースになることも可能なので、
flag が NL_CAT_LOCALE
に設定されている場合は、使用する言語を決定するのに使われる。
- LANG
-
flag が 0
の場合、使用する言語を決定する。
この節で使用されている用語の説明については、
attributes(7) を参照。
インターフェース |
属性 |
値 |
catopen() |
Thread safety |
MT-Safe env |
catclose() |
Thread safety |
MT-Safe |
POSIX.1-2001, POSIX.1-2008.
以上は POSIX.1
における説明である。
glibc では
NL_CAT_LOCALE の値は 1
である。
デフォルトのパスは場合によって様々であるが、通常は
/usr/share/locale
以下のファイルが調べられる。
catgets(3),
setlocale(3)
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。