CATOPEN(3)

名前
catopen, catclose - メッセージカタログのオープン/クローズ

書式
#include <features.h>
#include <nl_types.h>

nl_catd catopen(name, flag)
char *name;
int flag;

void catclose(catalog)
nl_catd catalog;

説明

catopen() はメッセージカタログをオープンし、カタログディスクリプタを返す。 name はオープンするメッセージカタログの名前を指定する。 name が絶対パスで指定されている場合(すなわち '/' を含んでいる)、 name はメッセージカタログへのパス名を指定する。 それ以外ならば、環境変数 NLSPATH の値が %N を置き換えるために name とともに使用される ( locale(7) 参照)。 もし NLSPATH 環境変数が存在しないか、 NLSPATH で指定されたパスの中の どのパスにおいてもメッセージカタログをオープンできない場合、 以下のパスが順番に検索される。
    /etc/locale/LC_MESSAGES
    /usr/lib/locale/LC_MESSAGES
    /usr/lib/locale/name/LC_MESSAGES
全ての場合において、 LC_MESSAGES は 前回の setlocale() 関数の呼び出しによって設定されたロケール の LC_MESSAGES カテゴリの現在の設定を表し、 デフォルトでは "C" ロケールとなる。 最後の検索パスでは、 name はカタログ名を参照する。

catopen() に対する flag 引数は、ロード要求の型を示すために使われる。 これは、 MCLoadBySet か MCLoadAll のどちらかである。 前者の値は、必要な時にカタログの中から要求されたセットだけが メモリにロードされることを指示するが、 後者は最初に catopen() を呼び出した時点でカタログ全体がメモリにロードされる事を指示する。

catclose() は catalog で指定されたメッセージカタログをクローズする。 これは、以降の catalog で指定されるメッセージカタログへの全ての参照を無効にする。

返り値

catopen() が成功すると、 nl_catd 型のメッセージカタログディスクリプタを返す。 失敗した場合は -1 を返す。

catclose() は、成功した場合 0 を、失敗した場合 -1 を返す。

注意
これらの関数は libc.so.4.4.4c 以降でのみ使用可能である。 linux においては、カタログディスクリプタ nl_catd は実際には mmap() されたメモリの領域であってファイルディスクリプタ ではないため、カタログを共有する事ができる。

関連項目
catgets(3), setlocale(3)