本文に進む 日本−日本語
日本HPホーム 製品とサービス お客様サポート/ ダウンロード ソリューション ご購入の方法
≫ お問い合わせ
詳細検索オプション
日本HPホーム
HP-UX リファレンス: セクション 3 : ライブラリ (A~M) > c

catopen(3C)

HP-UX 11i Version 2: September 2004
≫ 

テクニカル ドキュメント

PDF版
フィードバック
ここから本文が始まります

 ≫ 目次

 ≫ 索引

名称

catopen(), catclose() ― メッセージカタログを読むためのオープン とクローズ

構文

#include <nl_types.h>

nl_catd catopen(const char *name, int oflag);

int catclose(nl_catd catd);

説明

catopen() 関数は、メッセージカタログを開いてカタログ記述子を返します。 name は、メッセージカタログ名を指定します。 name は メッセージカタログのパス名を指定する (/) を含みます。その他に環境変数 NLSPATH environ(5) 参照) が使われます。 NLSPATH が複数のパスを指定する場合、 catopen() は、指定されているメッセージカタログを確実に開くことができる最初のパスに対するカタログ記述子を返します。 NLSPATH が、環境内に存在しない場合、または NLSPATH で指定したパスに対してメッセージカタログが開かれない場合は、 catopen() はシステム全体に通用するデフォルトのパスを使います。デフォルトは oflag の値が NL_CAT_LOCALE の場合、 LC_MESSAGES に影響されます。 oflag の値がゼロの場合、 デフォルトは環境変数 LANG に影響されます。 詳細は、 environ(5) を参照してください。

所有者が root ユーザーの、 setuid または setgid プログラムから catopen() が呼び出される場合、環境変数 NLSPATH は、メッセージカタログを検索するために、直接には使用されません。 代わりに、システムファイル /etc/default/nlspath と環境変数 NLSPATH を使ってメッセージカタログを検索します。 詳細は、 nlspath(4) を参照してください。

例: 環境変数が次のように設定され、

NLSPATH=/usr/lib/nls/msg/%L/%N.cat:/tmp/%L/%N.cat

設定ファイルに次のエントリがある場合、

NLSPATH=/usr/lib/nls/msg/%L/%N.cat

/usr/lib/nls/msg/%L/%N.cat のパスだけが、カタログファイルの検索に用いられます。 この機能は、 NLSPATH 環境変数に依存する、 setuid または setgid root プログラムの互換性のためだけに提供されています。 新しく作成する、 setgidsetuid root プログラムでは、 NLSPATH に依存せず、絶対パス名だけを使用するようにしてください。

メッセージカタログ記述子は、プロセスによってクローズされるまで、または exec() 関数のいずれかに対する呼び出しが成功するまでプロセス内で有効です。 LC_MESSAGES カテゴリ内の設定を変更しても、既存の開いているカタログには影響ありません。

メッセージカタログ記述子の実現のためにファイル記述子が使われた場合は、 FD_CLOEXEC フラグがセットされます。

oflag がゼロの場合は、 カタログを見つけるために LANG 環境変数が使用されます。 oflagNL_CAT_LOCALE の場合は、 setlocale() への正常な呼び出しが catopen() への呼び出しより前に行われた場合のみ、 メッセージカテゴリを見つけるために LC_MESSAGES カテゴリが使用されます。 oflag を、これ以外の値にセットしたときの結果は定義されていません。

catclose() 関数は、前回の catopen() の呼び出しから返されたメッセージカタログ記述子 catd をクローズします。

戻り値

catopen() は正常終了するとメッセージカタログ記述子を返します。それ以外は catopen()nl_catd)-1 を返し、エラーを示す errno をセットします。

catclose() は正常終了すると ゼロを返します。それ以外は、 catclose() は -1 を返し、エラーを示す errno をセットします。

エラー

次の条件のいずれかを満たす場合、 catopen() はメッセージカタログを開かずに失敗して、最後に試みたパスについて errno をセットします。

EACCES 

パスプリフィックスの構成要素が検索パーミッションを拒否する場合、または 指定されたファイルに対する読み取りパーミッションが拒否された場合

EMFILE 

最大許容数のファイル記述子が開かれている場合

ENAMETOOLONG 

_POSIX_NO_TRUNC の動作時において、 指定したパス名の長さが PATH_MAX バイトを超えるか、パス名の構成要素の長さが NAME_MAX バイトを超える場合

ENFILE 

システム ファイルテーブルの制限を超えた場合

ENOENT 

指定されたカタログが存在しない場合、またはパスが null の場合

ENOTDIR 

パスプリフィックスの構成要素がディレクトリではない場合

catopen() が失敗した後に catgets() を呼び出すと、デフォルトのメッセージを取り出すことができます catgets(3C) 参照)。 catgets() は、無効なカタログ記述子が指定された場合には、 それ自体の def_str パラメータを返します。

次の条件が満たされる場合、 catclose() は失敗します。

EBADF 

catd が有効なオープンされているメッセージカタログ記述子でない場合

警告

NLSPATH の使用時には、 catopen()LANG のデフォルト値を供給しません。

著者

catopen() および catclose() は HP によって開発されました。

ファイル

/usr/include/nl_types.h
  

/usr/lib/nls/msg 

core HP-UX products だけのメッセージカタログのデフォルトのパス

参照

catgets(3C), setlocale(3C), nlspath(4), environ(5), thread_safety(5)

標準準拠

catopen(): AES, SVID3, XPG2, XPG3, XPG4

catclose(): AES, SVID3, XPG2, XPG3, XPG4

印刷用画面へ
プライバシー 本サイト利用時の合意事項
© 1983-2004 Hewlett-Packard Development Company, L.P.