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

pfmt(3C)

HP-UX 11i Version 2: September 2004
≫ 

テクニカル ドキュメント

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

 ≫ 目次

 ≫ 索引

名称

pfmt(), vpfmt() ― 標準形式のメッセージ表示

構文

#include <pfmt.h> 
int pfmt(FILE *stream, long flags, char *fmt, /* [arg, ] */ ...); 
 
#include <stdarg.h> 
#include <pfmt.h> 
int vpfmt(FILE *stream, long flags, char *fmt, va_list ap); 

説明

pfmt() 関数は、 stream に標準形式のメッセージを書き込みます。 また、 stream へローカライズされた文字列を書き込むこともできます。 pfmt() に対する引き数は、 printf() スタイルの書式でフォーマットされます。 vpfmt() は、引き数が引き数リスト stdarg(5) を参照) で渡されること以外は、 pfmt() と同じです。

stream に表示される標準形式には、次のフィールドがあります。

label:severity:text

label 文字列は、 setlabel(3C) で定義されます。 ラベルが定義されていない場合、このフィールドは使用されません。 severity 文字列は、 flagsseverity グループで制御されます。 text 文字列は、フォーマットされたユーザー文字列です。

flags は、どのようにフォーマットするかを制御します。 制御情報は、いくつかの異なるグループに分けられます。 各グループから、1 つのフラグだけを、セットできます。

出力フォーマット  
MM_NOSTD  

標準形式を使用しません。 fmtprintf() 書式文字列として扱います。 このモードでは、カタログアクセスに関連したフラグだけをセットできます。

MM_STD  

標準形式を使用してフォーマットします (MM_STD は、デフォルトです)。

カタログアクセス  
MM_NOGET  

ローカライズされたメッセージカタログをアクセスしません。 書式文字列として、 def_str fmt 中のフィールド) を使用します。

MM_GET  

ローカライズされたメッセージカタログをアクセスします (MM_GET はデフォルトです)。

重要度  
MM_HALT  

ローカライズされた HALT 文字列を表示します。

MM_ERROR  

ローカライズされた ERROR 文字列を表示します (MM_ERROR はデフォルトです)。

MM_WARNING  

ローカライズされた WARNING 文字列を表示します。

MM_INFO  

ローカライズされた INFO 文字列を表示します。

これらの予約された重要度の他に、ユーザーが重要度文字列を追加して定義することもできます addsev(3C) を参照)。 ユーザーが定義した重要度を指定するには、 flags は、他の制御グループのフラグと ユーザーが定義した重要度の数値の論理和でなくてはなりません。

アクション  
MM_ACTION  

このフラグは、標準形式メッセージの severity フィールドに TO FIX: という形式のローカライズされた文字列を生成します。 このフラグと重要度制御グループのフラグがセットされた場合、このフラグが優先され、 TO FIX: 文字列が表示されます。

fmt 文字列には、次のフィールドがあります。

catalog:msg_number:def_str

catalog は、 mkmsgs(1) で作成されたメッセージカタログであり、ローカライズされたメッセージが検索されます。 msg_number は、メッセージカタログから取り出す文字列を識別する正の索引番号です (1 から始まります)。 def_str は、 pfmt() が現在のロケールまたはデフォルトのロケールの catalog からメッセージを取り出すことができなかった場合に使用する、デフォルト文字列です。 メッセージカタログが存在しない場合、あるいは、 msg_number が範囲外の値の場合、エラーが発生します。

catalog を指定しなかった場合、 pfmt()setcat(3C) で定義されたメッセージカタログを使用します。 MM_NOGETflags にセットした場合、 def_str だけを、指定しなければなりません。

次のような状態の場合、 pfmt() 関数は Message not found!! を表示します。

  • メッセージカタログが fmt に指定されていず、カタログが setcat(3C) で定義されていない場合。

  • msg_number が、正でない場合。

  • メッセージを取り出せず、 def_str が指定されていない場合。

戻り値

pfmt()vpfmt() は、正常終了すると、書き込んだバイト数を返します。 失敗すると、負の値を返します。

例 1

setlabel("UX:my_appl"); 
pfmt(stderr, MM_INFO,"MY_cat:1:file is writable"); 

次のようなメッセージを生成します。

UX:my_appl: INFO: file is writable 

例 2

setlabel(""); 
setcat("MY_cat"); 
pfmt(stderr, MM_ERROR,":1:%s is writable", "my_file"); 

次のようなメッセージを生成します。

ERROR: my_file is writable 

例 3

setlabel(""); 
setcat("MY_cat"); 
pfmt(stderr, MM_NOSTD,":1:%s is writable", "my_file"); 

次のようなメッセージを生成します。

my_file is writable 

例 4

#define MM_USER 10 
setlabel(""); 
addsev(MM_USER, "MY_NOTE"); 
pfmt(stderr, MM_USER|MM_GET,"MY_cat:1:%s is writable", "my_file"); 

次のようなメッセージを生成します。

MY_NOTE: my_file is writable 

標準準拠

pfmt(): SVID3

vpfmt(): SVID3

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