📄 error.c
字号:
/* * remark, error, panic - diagnostics handlers * * Feature: %m is expanded to the system errno text. * * Author: Wietse Venema. */#include <stdio.h>#include <errno.h>#ifdef __STDC__#include <stdarg.h>#define VARARGS(func,type,arg) func(type arg, ...)#define VASTART(ap,type,name) va_start(ap,name)#define VAEND(ap) va_end(ap)#else#include <varargs.h>#define VARARGS(func,type,arg) func(va_alist) va_dcl#define VASTART(ap,type,name) {type name; va_start(ap); name = va_arg(ap, type)#define VAEND(ap) va_end(ap);}#endifchar *progname = "unknown";extern int errno;extern char *strerror();extern char *strcpy();#include "lib.h"/* percentm - replace %m by error message associated with value in err */char *percentm(buf, str, err)char *buf;char *str;int err;{ char *ip = str; char *op = buf; while (*ip) { switch (*ip) { case '%': switch (ip[1]) { case '\0': /* don't fall off end */ *op++ = *ip++; break; case 'm': /* replace %m */ strcpy(op, strerror(err)); op += strlen(op); ip += 2; break; default: /* leave %<any> alone */ *op++ = *ip++, *op++ = *ip++; break; } default: *op++ = *ip++; } } *op = 0; return (buf);}/* error - print warning on stderr and terminate */void VARARGS(error, char *, fmt){ va_list ap; int err = errno; char buf[BUFSIZ]; VASTART(ap, char *, fmt); fprintf(stderr, "%s: ", progname); vfprintf(stderr, percentm(buf, fmt, err), ap); fprintf(stderr, "\n"); VAEND(ap); exit(1);}/* remark - print warning on stderr and continue */void VARARGS(remark, char *, fmt){ va_list ap; int err = errno; char buf[BUFSIZ]; VASTART(ap, char *, fmt); fprintf(stderr, "%s: ", progname); vfprintf(stderr, percentm(buf, fmt, err), ap); fprintf(stderr, "\n"); VAEND(ap);}/* panic - print warning on stderr and dump core */void VARARGS(panic, char *, fmt){ va_list ap; int err = errno; char buf[BUFSIZ]; VASTART(ap, char *, fmt); fprintf(stderr, "%s: ", progname); vfprintf(stderr, percentm(buf, fmt, err), ap); fprintf(stderr, "\n"); VAEND(ap); abort();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -