?? splogger.c
字號:
//將消息插入系統登陸程序中
#include <sys/types.h>#include <sys/time.h>#include <syslog.h>#include "error.h"#include "substdio.h"#include "subfd.h"#include "exit.h"#include "str.h"#include "scan.h"#include "fmt.h"char buf[800]; /* syslog truncates long lines (or crashes); GPACIC */int bufpos = 0; /* 0 <= bufpos < sizeof(buf) */int flagcont = 0;int priority; /* defined if flagcont */char stamp[FMT_ULONG + FMT_ULONG + 3]; /* defined if flagcont */void stamp_make(){ struct timeval tv; char *s; gettimeofday(&tv,(struct timezone *) 0); s = stamp; s += fmt_ulong(s,(unsigned long) tv.tv_sec); *s++ = '.'; s += fmt_uint0(s,(unsigned int) tv.tv_usec,6); *s = 0;}void flush(){ if (bufpos) { buf[bufpos] = 0; if (flagcont) syslog(priority,"%s+%s",stamp,buf); /* logger folds invisibly; GPACIC */ else { stamp_make(); priority = LOG_INFO; if (str_start(buf,"warning:")) priority = LOG_WARNING; if (str_start(buf,"alert:")) priority = LOG_ALERT; syslog(priority,"%s %s",stamp,buf); flagcont = 1; } } bufpos = 0;}void main(argc,argv)int argc;char **argv;{ char ch; if (argv[1]) if (argv[2]) { unsigned long facility; scan_ulong(argv[2],&facility); openlog(argv[1],0,facility << 3); } else openlog(argv[1],0,LOG_MAIL); else openlog("splogger",0,LOG_MAIL); for (;;) { if (substdio_get(subfdin,&ch,1) < 1) _exit(0); if (ch == '\n') { flush(); flagcont = 0; continue; } if (bufpos == sizeof(buf) - 1) flush(); if ((ch < 32) || (ch > 126)) ch = '?'; /* logger truncates at 0; GPACIC */ buf[bufpos++] = ch; }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -