com_err -
汎用のエラー表示ルーチン
#include <et/com_err.h>
void (* proc) (const char *, long, const char *, va_list);
void com_err (const char *whoami, long code, const char *format, ...);
proc = set_com_err_hook (proc);
proc = reset_com_err_hook ();
void initialize_XXXX_error_table ();
com_err
はエラーメッセージを標準エラーストリーム
stderr (
stdio(3S) を見よ)
に表示する。エラーメッセージは、
whoami 文字列
(プログラムの名前やプログラムのある部分を示す)・
値
code (
compile_et(1)
から引かれる)・
fprintf(3)
スタイルの
format
文字列を使って、残りの引数から
生成した文字列、の 3
つの部分からなる。
com_err の動作は
set_com_err_hook
を用いて変更できる。
これは
com_err
に渡される引数を用いて呼び出される関数を定義する。
デフォルトでは内部の関数が用いられ、これは整形したテキストをエラー出力に送る。
つまり、プログラムからのエラーメッセージを、例えば
syslog(3)
のような診断ログに振り向けることが容易にできるわけである。
reset_com_err_hook を用いると、
com_err
の動作をデフォルトの形式に戻すことができる。
この両関数は、実行前の
``hook'' の値を返す。
これらの ``hook''
関数は、書式の部分で示した
proc
のように宣言しなければならない。
initialize_XXXX_error_table
ルーチンは、名前とそれに対応する文字列とからなるソースファイルから
compile_et(1)
によって自動的に生成される。
それぞれの表は 4
文字までの名前を持ち、ルーチンの名前の
XXXX
の部分になる。これらのルーチンは、
各エラーコードを用いる前に呼び出しておき、
com_err ライブラリが
エラーコードをこれらの表から認識できるようにしておかなければならない。
com_err
ライブラリのルーチンを用いる全てのソースファイルは、
com_err.h
ヘッダーファイルをインクルードしなければならない。
実行ファイルをリンクするときには、
``-lcom_err'' を用いて
com_err
ライブラリが含まれるようにしなければならない。
compile_et(1),
syslog(3)
Ken Raeburn, "A Common Error Description Library for UNIX".