CATOPEN(3)

名称
catopen - メッセージカタログのオープン

ライブラリ
libc

書式
#include <nl_types.h> nl_catd catopen(const char *name, int oflag)

解説
catopen() 関数は、 name によって指定されたメッセージカタログをオープンし、メッセージカタログの 記述子を返します。 name に 1 つの ‘/’ が含まれている場合には、 name はメッセージカタログのフルパス名を指定します。そうでない場合には、環境変数の値 NLSPATH が以下の置換とともに使用されます。

%N  name 引数の値です。

%L  LANG 環境変数または LC_MESSAGES カテゴリ (下記参照) の値です。

%l  LANG 環境変数または LC_MESSAGES カテゴリの言語要素です。

%t  LANG 環境変数または LC_MESSAGES カテゴリの地域要素です。

%c  LANG 環境変数または LC_MESSAGES カテゴリのコードセット要素です。

%%  単一の % 文字です。

空の文字列は未定義の値に置換されます。

NLSPATH で定義されるパス名のテンプレートは、コロン (‘’:) で区切られます。 先頭のまたは 2 つの隣接するコロンは、%N を指定したのと同等です。

oflag 引数が NL_CAT_LOCALE 定数に設定されている場合には、 LC_MESSAGES ロケールカテゴリがメッセージカタログをオープンするために使用されます。 NL_CAT_LOCALE の使用は、 xpg4 規格に適合しています。 xpg3 との互換性のために 0 を指定することができます。 oflag が 0 に設定されている時には、 LANG 環境変数がメッセージカタログのロケールを決定します。

メッセージカタログの記述子は、プロセスがそれをクローズするまで、または 1 つの exec(3) 関数の呼び出しの成功まで、有効に残ります。

戻り値
成功して完了した時には、 catopen() はメッセージカタログの記述子を返します。 そうでない場合には、(nl_catd) -1 が返され、 errno がそのエラーを示すために設定されます。

エラー

[EINVAL]
    引数 name が有効なメッセージカタログを指していません。

[ENAMETOOLONG]
    メッセージカタログのパス名全体が 1024 文字を超過しています。

[ENOENT]
    その名前のメッセージカタログが存在しません。または、 name 引数が空の文字列を指しています。

[ENOMEM]
    十分なメモリが有効ではありません。

関連項目
gencat(1), catclose(3), catgets(3), setlocale(3)

規格
catopen() 関数は、 xpg4 に適合しています。