青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

分享知識(shí)

與大家一起分享知識(shí)

C++博客 首頁 新隨筆 聯(lián)系 聚合 管理
  19 Posts :: 3 Stories :: 45 Comments :: 0 Trackbacks

D.3 Standard Error Functions

We define our own set of error functions that are used throughout the text to
?handle error conditions. The reason for using our own error functions is to
let us write our error handling with a single line of C code, as in

										
if (error condition)
    err_sys (printf format with any number of arguments);
										

instead of

										
if (error condition) {
    char buff [2002];
    snprintf(buff, sizeof (buff), printf format 
??? with any number of arguments)
; perror(buff); exit (1); }
										

Our error functions use the variable-length argument list facility from ANSI C.
See Section 7.3 of [Kernighan and Ritchie 1988] for additional details.

Figure D.3 lists the differences between the various error functions.
If the global integer daemon_proc is nonzero, the message is passed to
syslog with the indicated level; otherwise, the error is output to standard error.
Figure D.3. Summary of our standard error functions.
graphics/xdfig03.gif

Figure D.4 shows the first five functions from Figure D.3.

Figure D.4 Our standard error functions.

lib/error.c

 1 #include    "unp.h"
 2 #include    <stdarg.h>          /* ANSI C header file */
 3 #include    <syslog.h>          /* for syslog() */

 4 int     daemon_proc;            /* set nonzero by daemon_init() */

 5 static void err_doit(int, int, const char *, va_list);

 6 /* Nonfatal error related to system call
 7  * Print message and return */

 8 void
 9 err_ret(const char *fmt, ...)
10 {
11     va_list ap;

12     va_start(ap, fmt);
13     err_doit(1, LOG_INFO, fmt, ap);
14     va_end(ap);
15     return;
16 }

17 /* Fatal error related to system call
18  * Print message and terminate */

19 void
20 err_sys(const char *fmt, ...)
21 {
22     va_list ap;

23     va_start(ap, fmt);
24     err_doit(1, LOG_ERR, fmt, ap);
25     va_end(ap);
26     exit(1);
27 }

28 /* Fatal error related to system call
29  * Print message, dump core, and terminate */

30 void
31 err_dump(const char *fmt, ...)
32 {
33     va_list ap;

34     va_start(ap, fmt);
35     err_doit(1, LOG_ERR, fmt, ap);
36     va_end(ap);
37     abort();                    /* dump core and terminate */
38     exit(1);                    /* shouldn't get here */
39 }

40 /* Nonfatal error unrelated to system call
41  * Print message and return */

42 void
43 err_msg(const char *fmt, ...)
44 {
45     va_list ap;

46     va_start(ap, fmt);
47     err_doit(0, LOG_INFO, fmt, ap);
48     va_end(ap);
49     return;
50 }

51 /* Fatal error unrelated to system call
52  * Print message and terminate */

53 void
54 err_quit(const char *fmt, ...)
55 {
56     va_list ap;

57     va_start(ap, fmt);
58     err_doit(0, LOG_ERR, fmt, ap);

59     va_end(ap);
60     exit(1);
61 }

62 /* Print message and return to caller
63  * Caller specifies "errnoflag" and "level" */

64 static void
65 err_doit(int errnoflag, int level, const char *fmt, va_list ap)
66 {
67     int     errno_save, n;
68     char    buf[MAXLINE + 1];

69     errno_save = errno;         /* value caller might want printed */
70 #ifdef HAVE_VSNPRINTF
71     vsnprintf(buf, MAXLINE, fmt, ap);   * safe */
72 #else
73     vsprintf(buf, fmt, ap);     /* not safe */
74 #endif
75     n = strlen(buf);
76     if (errnoflag)
77         snprintf(buf + n, MAXLINE - n, ": %s", strerror(errno_save));
78     strcat(buf, "\n");

79     if (daemon_proc) {
80         syslog(level, buf);
81     } else {
82         fflush(stdout);         /* in case stdout and stderr are the same */
83         fputs(buf, stderr);
84         fflush(stderr);
85     }
86     return;
87 }
posted on 2006-05-09 21:39 史傳紅 閱讀(1020) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 鏈接目錄
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久一区二区三区av| 国产免费成人| 亚洲精品日韩综合观看成人91| 久久久av毛片精品| 久久精品国产亚洲5555| 精品动漫3d一区二区三区| 免费日本视频一区| 欧美国产亚洲精品久久久8v| 亚洲网站视频| 亚洲欧美中文另类| 在线日本高清免费不卡| 亚洲精品美女久久久久| 国产精品成人播放| 久久综合色8888| 欧美国产精品专区| 欧美一级淫片播放口| 久久久久久噜噜噜久久久精品| 亚洲精品欧美| 亚洲在线观看免费视频| 亚洲国产小视频| 亚洲少妇一区| 亚洲国产精品久久久久婷婷老年| 日韩一区二区精品| 国内精品久久久久久久果冻传媒| 亚洲国产精品免费| 国产精品一区二区三区久久| 欧美成人一二三| 国产精品―色哟哟| 亚洲国产精品女人久久久| 国产欧美日韩专区发布| 亚洲国产小视频| 狠狠色狠狠色综合日日tαg| 一区二区三区福利| 亚洲高清不卡在线| 午夜精品久久| 亚洲女人av| 欧美精品七区| 欧美高清视频一区二区| 国产在线高清精品| 亚洲在线免费| 亚洲在线黄色| 欧美日本在线观看| 欧美高清视频一区| 红桃视频欧美| 欧美一级免费视频| 午夜精品视频在线观看| 欧美日韩免费高清| 欧美激情偷拍| 精东粉嫩av免费一区二区三区| 亚洲一区二区高清| 亚洲午夜在线观看| 欧美日韩国产精品成人| 亚洲黑丝在线| 亚洲伦理久久| 欧美高清在线观看| 91久久精品一区二区三区| 亚洲人成7777| 欧美黄色网络| 亚洲精选成人| 亚洲影音先锋| 国产精品欧美久久久久无广告| 在线亚洲伦理| 性久久久久久久久久久久| 国产精品久久久久久亚洲毛片| 99re热精品| 亚洲欧美日韩在线不卡| 亚洲男人影院| 国产乱码精品1区2区3区| 亚洲无毛电影| 亚洲欧美综合网| 国产欧美精品在线观看| 久久国产精品一区二区三区四区| 久久免费99精品久久久久久| 韩国精品一区二区三区| 欧美96在线丨欧| 亚洲精品免费一区二区三区| 一区二区三区四区精品| 国产精品日韩二区| 久久精品日产第一区二区三区| 欧美ab在线视频| 日韩一级大片| 国产精品一区久久| 久久久久久久久蜜桃| 最新日韩在线| 欧美一区久久| 亚洲区欧美区| 国产精品视频一区二区高潮| 久久国产欧美| 亚洲精品少妇| 久久久人成影片一区二区三区 | 夜夜夜精品看看| 久久成人综合视频| 91久久国产精品91久久性色| 欧美日韩中文字幕综合视频| 香蕉视频成人在线观看| 亚洲福利视频一区二区| 香蕉尹人综合在线观看| 亚洲国产精品专区久久| 国产精品久久久久久久久免费樱桃| 欧美亚洲在线| 99精品国产在热久久| 另类av一区二区| 亚洲一品av免费观看| 在线观看日韩av| 国产精品综合视频| 欧美连裤袜在线视频| 久久精品国产清自在天天线| 一区二区三区国产精华| 欧美黄在线观看| 久久精品1区| 亚洲视频大全| 亚洲激情中文1区| 国产亚洲精品7777| 欧美日韩成人综合在线一区二区| 久久精品视频一| 亚洲免费小视频| 亚洲精品国产精品乱码不99按摩 | 在线播放亚洲| 国产精品揄拍一区二区| 欧美日本二区| 老司机一区二区| 午夜视频一区在线观看| 亚洲天堂视频在线观看| 亚洲精品一区二区三区福利| 欧美大片免费看| 久久精品人人爽| 午夜精品福利在线| 在线一区二区视频| 亚洲激情影视| 亚洲国产精品免费| 亚洲第一页在线| 在线成人亚洲| 精品99视频| 国内精品久久久| 国模精品一区二区三区色天香| 国产精品扒开腿做爽爽爽视频| 欧美韩日精品| 欧美精品一区二区三区久久久竹菊 | 麻豆成人综合网| 久久夜色精品国产噜噜av| 久久精品国产一区二区三区| 久久国产88| 久久久久国产免费免费| 久久久久久久欧美精品| 久久综合久久综合久久综合| 久久琪琪电影院| 另类酷文…触手系列精品集v1小说| 久久国产精品久久久久久| 久久精品最新地址| 久久香蕉国产线看观看av| 久热精品视频| 亚洲国产精品小视频| 亚洲日本乱码在线观看| 日韩午夜中文字幕| 亚洲欧美激情精品一区二区| 香蕉久久夜色精品国产使用方法| 欧美一区二区三区在线看| 久久裸体艺术| 欧美激情1区2区3区| 欧美日韩免费高清| 国产欧美日韩另类视频免费观看| 国产视频综合在线| 亚洲大黄网站| 一区二区久久| 久久精品在线免费观看| 亚洲成人资源网| 一区二区高清| 久久精品av麻豆的观看方式| 免费观看在线综合色| 欧美性色综合| 禁断一区二区三区在线| 日韩天天综合| 久久精品国产欧美亚洲人人爽| 欧美福利视频在线| 亚洲性色视频| 快射av在线播放一区| 国产精品高潮呻吟久久av黑人| 国产亚洲综合在线| 亚洲精品一区二区网址 | 日韩手机在线导航| 久久久女女女女999久久| 亚洲每日在线| 久久精品国产91精品亚洲| 欧美精品一区二区三区高清aⅴ| 国产日韩欧美在线播放不卡| 91久久国产精品91久久性色| 午夜精品一区二区三区在线| 欧美大色视频| 午夜激情亚洲| 欧美日本一区二区视频在线观看| 黑人操亚洲美女惩罚| 亚洲欧美一区二区视频| 亚洲欧洲综合另类| 欧美在线一二三| 欧美性色aⅴ视频一区日韩精品| 亚洲国产欧美日韩| 久久全球大尺度高清视频| 亚洲午夜电影在线观看| 欧美日韩国产精品成人| 亚洲人成亚洲人成在线观看|