OSDN Git Service

Update README
[linuxjm/LDP_man-pages.git] / release / man3 / fmtmsg.3
1 .\"  Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de)
2 .\"
3 .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
4 .\" Distributed under GPL
5 .\" %%%LICENSE_END
6 .\"
7 .\"  adapted glibc info page
8 .\"
9 .\"  This should run as 'Guru Meditation' (amiga joke :)
10 .\"  The function is quite complex and deserves an example
11 .\"
12 .\"  Polished, aeb, 2003-11-01
13 .\"*******************************************************************
14 .\"
15 .\" This file was generated with po4a. Translate the source file.
16 .\"
17 .\"*******************************************************************
18 .\"
19 .\" Japanese Version Copyright (c) 2004 Yuichi SATO
20 .\"         all rights reserved.
21 .\" Translated Sat Jul 24 20:19:54 JST 2004
22 .\"         by Yuichi SATO <ysato444@yahoo.co.jp>
23 .\"
24 .TH FMTMSG 3 2013\-06\-21 "" "Linux Programmer's Manual"
25 .SH 名前
26 fmtmsg \- 整形されたエラーメッセージを表示する
27 .SH 書式
28 .nf
29 \fB#include <fmtmsg.h>\fP
30 .sp
31 \fBint fmtmsg(long \fP\fIclassification\fP\fB, const char *\fP\fIlabel\fP\fB,\fP
32 .br
33 \fB           int \fP\fIseverity\fP\fB, const char *\fP\fItext\fP\fB,\fP
34 .br
35 \fB           const char *\fP\fIaction\fP\fB, const char *\fP\fItag\fP\fB);\fP
36 .fi
37 .SH 説明
38 この関数は、引き数で記述されたメッセージを、 \fIclassification\fP 引き数で指定されたデバイス上に表示する。 \fIstderr\fP
39 に書き出されるメッセージのフォーマットは、 \fBMSGVERB\fP 環境変数に依存する。
40 .LP
41 \fIlabel\fP 引き数はメッセージの発生源を識別する。 この文字列はコロンで区切られた 2 つの部分から構成されていなければならない。 1
42 つ目の部分は 10 文字以内でなければならず、 2 つ目の部分は 14 文字以内でなければならない。
43 .LP
44 \fItext\fP 引き数にはエラー条件を記述する。
45 .LP
46 \fIaction\fP 引き数にはエラーから回復するために利用可能なステップを記述する。 これが表示される場合、"TO FIX: " が前に付く。
47 .LP
48 \fItag\fP 引き数はより多くの情報を見つけるためのオンラインドキュメントへの参照である。 これは \fIlabel\fP
49 値とユニークな識別番号を含んでいるべきである。
50 .SS ダミー引き数
51 各引き数にはダミーの値を入れることができる。 ダミーの \fIclassification\fP 値 \fBMM_NULLMC\fP (0L)
52 は出力を何も指定しない。そのため何も表示されない。 ダミーの \fIseverity\fP 値 \fBNO_SEV\fP (0) は重大度 (severity)
53 が与えられていないことを表す。 値 \fBMM_NULLLBL\fP, \fBMM_NULLTXT\fP, \fBMM_NULLACT\fP, \fBMM_NULLTAG\fP
54 は \fI((char\ *)\ 0)\fP と空文字列の別名であり、 \fBMM_NULLSEV\fP は \fBNO_SEV\fP の別名である。
55 .SS "classification 引き数"
56 \fIclassification\fP 引き数は 4 種類の情報を記述する値の和である。
57 .br
58 .sp
59 最初の値は出力チャンネルを定義する。
60 .TP  12n
61 \fBMM_PRINT\fP
62 \fIstderr\fP に出力する。
63 .TP 
64 \fBMM_CONSOLE\fP
65 システムコンソールに出力する。
66 .TP 
67 \fBMM_PRINT | MM_CONSOLE\fP
68 両方に出力する。
69 .PP
70 2 番目の値はエラーの発生源である:
71 .TP  12n
72 \fBMM_HARD\fP
73 ハードウェアエラーが起こった。
74 .TP 
75 \fBMM_FIRM\fP
76 ファームウェアエラーが起こった。
77 .TP 
78 \fBMM_SOFT\fP
79 ソフトウェアエラーが起こった。
80 .PP
81 3 番目の値は問題の検知を行ったものをエンコードする:
82 .TP  12n
83 \fBMM_APPL\fP
84 アプリケーションによって検知された。
85 .TP 
86 \fBMM_UTIL\fP
87 ユーティリティによって検知された。
88 .TP 
89 \fBMM_OPSYS\fP
90 オペレーティングシステムによって検知された。
91 .PP
92 4 番目の値は問題の重大度を表す:
93 .TP  12n
94 \fBMM_RECOVER\fP
95 回復可能なエラーである。
96 .TP 
97 \fBMM_NRECOV\fP
98 回復不可能なエラーである。
99 .SS "severity 引き数"
100 \fIseverity\fP 引き数は以下の 1 つの値をとることができる。
101 .TP  12n
102 \fBMM_NOSEV\fP
103 重大度は表示されない。
104 .TP 
105 \fBMM_HALT\fP
106 この値は HALT として表示される。
107 .TP 
108 \fBMM_ERROR\fP
109 この値は ERROR として表示される。
110 .TP 
111 \fBMM_WARNING\fP
112 この値は WARNING として表示される。
113 .TP 
114 \fBMM_INFO\fP
115 この値は INFO として表示される。
116 .PP
117 数値の場合は 0 から 4 である。 \fBaddseverity\fP(3)  または環境変数 \fBSEV_LEVEL\fP
118 を使うことにより、表示するレベルと文字列を更に追加できる。
119 .SH 返り値
120 関数は 4 つの値を返す:
121 .TP  12n
122 \fBMM_OK\fP
123 全てがうまくいった。
124 .TP 
125 \fBMM_NOTOK\fP
126 完全に失敗した。
127 .TP 
128 \fBMM_NOMSG\fP
129 \fIstderr\fP に書き込むときにエラーが起こった。
130 .TP 
131 \fBMM_NOCON\fP
132 コンソールに書き込むときにエラーが起こった。
133 .SH 環境変数
134 環境変数 \fBMSGVERB\fP ("message verbosity") は \fIstderr\fP への出力の一部を抑制するのに使うことができる。
135 (コンソールへの出力には影響しない。)  この変数が定義されて、NULL でなく、 コロンで区切られた有効なキーワードのリストである場合、
136 キーワードに対応するメッセージの一部のみが表示される。 有効なキーワードは "label", "severity", "text", "action",
137 "tag" である。
138 .PP
139 環境変数 \fBSEV_LEVEL\fP は新しい重大度レベルを導入するのに使用できる。 デフォルトでは、上記の 5 つの重大度レベルのみが利用可能である。
140 他の数値の場合、 \fBfmtmsg\fP()  は何も表示しない。 \fBfmtmsg\fP()  を初めて呼び出す前に、ユーザーが \fBSEV_LEVEL\fP を
141 .sp
142 .RS
143 SEV_LEVEL=[description[:description[:...]]]
144 .RE
145 .sp
146 のような形式でプロセスの環境に設定すると、 \fBfmtmsg\fP()  は (標準のレベル 0\-4 に加えて) level に指定された値も受け付け、
147 そのようなレベルの問題が発生すると指定された printstring を表示する。 各 description は
148 .sp
149 .RS
150 severity\-keyword,level,printstring
151 .RE
152 .sp
153 という形式である。
154 .LP
155 severity\-keyword 部は \fBfmtmsg\fP()  に使用されないが、存在しなければならない。 level
156 部は数値を文字列で表したものである。 数値は 4 より大きい値でなければならない。 この値は \fBfmtmsg\fP()  の severity
157 引き数で使用されなければならず、この重大度を選択する。 前もって宣言された重大度を上書きすることはできない。 printstring は、
158 この重大度のメッセージが \fBfmtmsg\fP()  によって生成された場合に表示される文字列である。
159 .SH バージョン
160 \fBfmtmsg\fP()  は、バージョン 2.1 以降の glibc で提供されている。
161 .SH 属性
162 .SS "マルチスレッディング (pthreads(7) 参照)"
163 glibc 2.16 より前のバージョンでは、 \fBfmtmsg\fP() 関数は、 保護されていない静的な変数を使うため、 スレッドセーフではない。
164
165 .\" Modified in commit 7724defcf8873116fe4efab256596861eef21a94
166 glibc 2.16 以降では、 \fBfmtmsg\fP() 関数はロックを使って静的な変数を保護しており、 スレッドセーフである。
167 .SH 準拠
168 関数 \fBfmtmsg\fP()  と \fBaddseverity\fP(3)  と環境変数 \fBMSGVERB\fP と \fBSEV_LEVEL\fP は
169 System V に由来している。 関数 \fBfmtmsg\fP()  と環境変数 \fBMSGVERB\fP は POSIX.1\-2001 に記述されている。
170 .SH 注意
171 System V と UnixWare の man ページには、 「これらの関数は "pfmt() と addsev()" または "pfmt(),
172 vpfmt(), lfmt(), vlfmt()" で置き換えられており、 将来は削除される予定である」と書かれている。
173 .SH 例
174 .nf
175 #include <stdio.h>
176 #include <stdlib.h>
177 #include <fmtmsg.h>
178
179 int
180 main(void)
181 {
182     long class = MM_PRINT | MM_SOFT | MM_OPSYS | MM_RECOVER;
183     int err;
184
185     err = fmtmsg(class, "util\-linux:mount", MM_ERROR,
186                 "unknown mount option", "See mount(8).",
187                 "util\-linux:mount:017");
188     switch (err) {
189     case MM_OK:
190       break;
191     case MM_NOTOK:
192         printf("Nothing printed\en");
193         break;
194     case MM_NOMSG:
195         printf("Nothing printed to stderr\en");
196         break;
197     case MM_NOCON:
198         printf("No console output\en");
199         break;
200     default:
201         printf("Unknown error from fmtmsg()\en");
202     }
203     exit(EXIT_SUCCESS);
204 }
205 .fi
206 .PP
207 出力は
208 .nf
209
210     util\-linux:mount: ERROR: unknown mount option
211     TO FIX: See mount(8).  util\-linux:mount:017
212
213 .fi
214 のようになり、
215 .nf
216
217     MSGVERB=text:action; export MSGVERB
218
219 .fi
220 を実行すると、次のようになる。
221 .nf
222
223     unknown mount option
224     TO FIX: See mount(8).
225 .fi
226 .SH 関連項目
227 \fBaddseverity\fP(3), \fBperror\fP(3)
228 .SH この文書について
229 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
230 である。プロジェクトの説明とバグ報告に関する情報は
231 http://www.kernel.org/doc/man\-pages/ に書かれている。