#include <err.h> void err(int eval, const char *fmt, ...); void errx(int eval, const char *fmt, ...); void warn(const char *fmt, ...); void warnx(const char *fmt, ...); #include <stdarg.h> void verr(int eval, const char *fmt, va_list args); void verrx(int eval, const char *fmt, va_list args); void vwarn(const char *fmt, va_list args); void vwarnx(const char *fmt, va_list args);
関数 err(), verr(), warn(), vwarn() は、コードまたはグローバル変数 errno に基づいて strerror(3) から得たエラーメッセージを出力する。 fmt 引き数が NULL でない場合は、一個ずつのコロンとスペースに続けて出力する。
関数 err(), verr(), warn(), vwarn() は、エラーメッセージを探すためにグローバル変数 errno を使用する。
関数 errx(), warnx() はエラーメッセージを付け加えない。
関数 err(), verr(), errx(), verrx() は返り値を返さないが、引き数 eval の値を exit status に設定し終了する。
if ((p = malloc(size)) == NULL) err(1, NULL); if ((fd = open(file_name, O_RDONLY, 0)) == -1) err(1, "%s", file_name);
エラーメッセージを表示し、終了する:
if (tm.tm_hour < START_TIME) errx(1, "too early, wait until %s", start_time_string);
エラーを警告表示する:
if ((fd = open(raw_device, O_RDONLY, 0)) == -1) warnx("%s: %s: trying the block device", raw_device, strerror(errno)); if ((fd = open(block_device, O_RDONLY, 0)) == -1) err(1, "%s", block_device);