📄 syslog.xs
字号:
#include "EXTERN.h"#include "perl.h"#include "XSUB.h"#ifdef I_SYSLOG#include <syslog.h>#endifstatic doubleconstant_LOG_NO(char *name, int len){ switch (name[6 + 0]) { case 'T': if (strEQ(name + 6, "TICE")) { /* LOG_NO removed */#ifdef LOG_NOTICE return LOG_NOTICE;#else goto not_there;#endif } case 'W': if (strEQ(name + 6, "WAIT")) { /* LOG_NO removed */#ifdef LOG_NOWAIT return LOG_NOWAIT;#else goto not_there;#endif } } errno = EINVAL; return 0;not_there: errno = ENOENT; return 0;}static doubleconstant_LOG_N(char *name, int len){ switch (name[5 + 0]) { case 'D': if (strEQ(name + 5, "DELAY")) { /* LOG_N removed */#ifdef LOG_NDELAY return LOG_NDELAY;#else goto not_there;#endif } case 'E': if (strEQ(name + 5, "EWS")) { /* LOG_N removed */#ifdef LOG_NEWS return LOG_NEWS;#else goto not_there;#endif } case 'F': if (strEQ(name + 5, "FACILITIES")) { /* LOG_N removed */#ifdef LOG_NFACILITIES return LOG_NFACILITIES;#else goto not_there;#endif } case 'O': return constant_LOG_NO(name, len); } errno = EINVAL; return 0;not_there: errno = ENOENT; return 0;}static doubleconstant_LOG_P(char *name, int len){ switch (name[5 + 0]) { case 'I': if (strEQ(name + 5, "ID")) { /* LOG_P removed */#ifdef LOG_PID return LOG_PID;#else goto not_there;#endif } case 'R': if (strEQ(name + 5, "RIMASK")) { /* LOG_P removed */#ifdef LOG_PRIMASK return LOG_PRIMASK;#else goto not_there;#endif } } errno = EINVAL; return 0;not_there: errno = ENOENT; return 0;}static doubleconstant_LOG_AU(char *name, int len){ if (6 + 2 >= len ) { errno = EINVAL; return 0; } switch (name[6 + 2]) { case '\0': if (strEQ(name + 6, "TH")) { /* LOG_AU removed */#ifdef LOG_AUTH return LOG_AUTH;#else goto not_there;#endif } case 'P': if (strEQ(name + 6, "THPRIV")) { /* LOG_AU removed */#ifdef LOG_AUTHPRIV return LOG_AUTHPRIV;#else goto not_there;#endif } } errno = EINVAL; return 0;not_there: errno = ENOENT; return 0;}static doubleconstant_LOG_A(char *name, int len){ switch (name[5 + 0]) { case 'L': if (strEQ(name + 5, "LERT")) { /* LOG_A removed */#ifdef LOG_ALERT return LOG_ALERT;#else goto not_there;#endif } case 'U': return constant_LOG_AU(name, len); } errno = EINVAL; return 0;not_there: errno = ENOENT; return 0;}static doubleconstant_LOG_CR(char *name, int len){ switch (name[6 + 0]) { case 'I': if (strEQ(name + 6, "IT")) { /* LOG_CR removed */#ifdef LOG_CRIT return LOG_CRIT;#else goto not_there;#endif } case 'O': if (strEQ(name + 6, "ON")) { /* LOG_CR removed */#ifdef LOG_CRON return LOG_CRON;#else goto not_there;#endif } } errno = EINVAL; return 0;not_there: errno = ENOENT; return 0;}static doubleconstant_LOG_C(char *name, int len){ switch (name[5 + 0]) { case 'O': if (strEQ(name + 5, "ONS")) { /* LOG_C removed */#ifdef LOG_CONS return LOG_CONS;#else goto not_there;#endif } case 'R': return constant_LOG_CR(name, len); } errno = EINVAL; return 0;not_there: errno = ENOENT; return 0;}static doubleconstant_LOG_D(char *name, int len){ switch (name[5 + 0]) { case 'A': if (strEQ(name + 5, "AEMON")) { /* LOG_D removed */#ifdef LOG_DAEMON return LOG_DAEMON;#else goto not_there;#endif } case 'E': if (strEQ(name + 5, "EBUG")) { /* LOG_D removed */#ifdef LOG_DEBUG return LOG_DEBUG;#else goto not_there;#endif } } errno = EINVAL; return 0;not_there: errno = ENOENT; return 0;}static doubleconstant_LOG_U(char *name, int len){ switch (name[5 + 0]) { case 'S': if (strEQ(name + 5, "SER")) { /* LOG_U removed */#ifdef LOG_USER return LOG_USER;#else goto not_there;#endif } case 'U': if (strEQ(name + 5, "UCP")) { /* LOG_U removed */#ifdef LOG_UUCP return LOG_UUCP;#else goto not_there;#endif } } errno = EINVAL; return 0;not_there: errno = ENOENT; return 0;}static doubleconstant_LOG_E(char *name, int len){ switch (name[5 + 0]) { case 'M': if (strEQ(name + 5, "MERG")) { /* LOG_E removed */#ifdef LOG_EMERG return LOG_EMERG;#else goto not_there;#endif } case 'R': if (strEQ(name + 5, "RR")) { /* LOG_E removed */#ifdef LOG_ERR return LOG_ERR;#else goto not_there;#endif } } errno = EINVAL; return 0;not_there: errno = ENOENT; return 0;}static doubleconstant_LOG_F(char *name, int len){ switch (name[5 + 0]) { case 'A': if (strEQ(name + 5, "ACMASK")) { /* LOG_F removed */#ifdef LOG_FACMASK return LOG_FACMASK;#else goto not_there;#endif } case 'T': if (strEQ(name + 5, "TP")) { /* LOG_F removed */#ifdef LOG_FTP return LOG_FTP;#else goto not_there;#endif } } errno = EINVAL; return 0;not_there: errno = ENOENT; return 0;}static doubleconstant_LOG_LO(char *name, int len){ if (6 + 3 >= len ) { errno = EINVAL; return 0; } switch (name[6 + 3]) { case '0': if (strEQ(name + 6, "CAL0")) { /* LOG_LO removed */#ifdef LOG_LOCAL0 return LOG_LOCAL0;#else goto not_there;#endif } case '1': if (strEQ(name + 6, "CAL1")) { /* LOG_LO removed */#ifdef LOG_LOCAL1 return LOG_LOCAL1;#else goto not_there;#endif } case '2': if (strEQ(name + 6, "CAL2")) { /* LOG_LO removed */#ifdef LOG_LOCAL2 return LOG_LOCAL2;#else goto not_there;#endif } case '3': if (strEQ(name + 6, "CAL3")) { /* LOG_LO removed */#ifdef LOG_LOCAL3 return LOG_LOCAL3;#else goto not_there;#endif } case '4': if (strEQ(name + 6, "CAL4")) { /* LOG_LO removed */#ifdef LOG_LOCAL4 return LOG_LOCAL4;#else goto not_there;#endif } case '5': if (strEQ(name + 6, "CAL5")) { /* LOG_LO removed */#ifdef LOG_LOCAL5 return LOG_LOCAL5;#else goto not_there;#endif } case '6': if (strEQ(name + 6, "CAL6")) { /* LOG_LO removed */#ifdef LOG_LOCAL6 return LOG_LOCAL6;#else goto not_there;#endif } case '7': if (strEQ(name + 6, "CAL7")) { /* LOG_LO removed */#ifdef LOG_LOCAL7 return LOG_LOCAL7;#else goto not_there;#endif } } errno = EINVAL; return 0;not_there: errno = ENOENT; return 0;}static doubleconstant_LOG_L(char *name, int len){ switch (name[5 + 0]) { case 'F': if (strEQ(name + 5, "FMT")) { /* LOG_L removed */#ifdef LOG_LFMT return LOG_LFMT;#else goto not_there;#endif } case 'O': return constant_LOG_LO(name, len); case 'P': if (strEQ(name + 5, "PR")) { /* LOG_L removed */#ifdef LOG_LPR return LOG_LPR;#else goto not_there;#endif } } errno = EINVAL; return 0;not_there: errno = ENOENT; return 0;}static doubleconstant(char *name, int len){ errno = 0; if (0 + 4 >= len ) { errno = EINVAL; return 0; } switch (name[0 + 4]) { case 'A': if (!strnEQ(name + 0,"LOG_", 4)) break; return constant_LOG_A(name, len); case 'C': if (!strnEQ(name + 0,"LOG_", 4)) break; return constant_LOG_C(name, len); case 'D': if (!strnEQ(name + 0,"LOG_", 4)) break; return constant_LOG_D(name, len); case 'E': if (!strnEQ(name + 0,"LOG_", 4)) break; return constant_LOG_E(name, len); case 'F': if (!strnEQ(name + 0,"LOG_", 4)) break; return constant_LOG_F(name, len); case 'I': if (strEQ(name + 0, "LOG_INFO")) { /* removed */#ifdef LOG_INFO return LOG_INFO;#else goto not_there;#endif } case 'K': if (strEQ(name + 0, "LOG_KERN")) { /* removed */#ifdef LOG_KERN return LOG_KERN;#else goto not_there;#endif } case 'L': if (!strnEQ(name + 0,"LOG_", 4)) break; return constant_LOG_L(name, len); case 'M': if (strEQ(name + 0, "LOG_MAIL")) { /* removed */#ifdef LOG_MAIL return LOG_MAIL;#else goto not_there;#endif } case 'N': if (!strnEQ(name + 0,"LOG_", 4)) break; return constant_LOG_N(name, len); case 'O': if (strEQ(name + 0, "LOG_ODELAY")) { /* removed */#ifdef LOG_ODELAY return LOG_ODELAY;#else goto not_there;#endif } case 'P': if (!strnEQ(name + 0,"LOG_", 4)) break; return constant_LOG_P(name, len); case 'S': if (strEQ(name + 0, "LOG_SYSLOG")) { /* removed */#ifdef LOG_SYSLOG return LOG_SYSLOG;#else goto not_there;#endif } case 'U': if (!strnEQ(name + 0,"LOG_", 4)) break; return constant_LOG_U(name, len); case 'W': if (strEQ(name + 0, "LOG_WARNING")) { /* removed */#ifdef LOG_WARNING return LOG_WARNING;#else goto not_there;#endif } } errno = EINVAL; return 0;not_there: errno = ENOENT; return 0;}MODULE = Sys::Syslog PACKAGE = Sys::Syslog char *_PATH_LOG() CODE:#ifdef _PATH_LOG RETVAL = _PATH_LOG;#else RETVAL = "";#endif OUTPUT: RETVALintLOG_FAC(p) INPUT: int p CODE:#ifdef LOG_FAC RETVAL = LOG_FAC(p);#else croak("Your vendor has not defined the Sys::Syslog macro LOG_FAC"); RETVAL = -1;#endif OUTPUT: RETVALintLOG_PRI(p) INPUT: int p CODE:#ifdef LOG_PRI RETVAL = LOG_PRI(p);#else croak("Your vendor has not defined the Sys::Syslog macro LOG_PRI"); RETVAL = -1;#endif OUTPUT: RETVALintLOG_MAKEPRI(fac,pri) INPUT: int fac int pri CODE:#ifdef LOG_MAKEPRI RETVAL = LOG_MAKEPRI(fac,pri);#else croak("Your vendor has not defined the Sys::Syslog macro LOG_MAKEPRI"); RETVAL = -1;#endif OUTPUT: RETVALintLOG_MASK(pri) INPUT: int pri CODE:#ifdef LOG_MASK RETVAL = LOG_MASK(pri);#else croak("Your vendor has not defined the Sys::Syslog macro LOG_MASK"); RETVAL = -1;#endif OUTPUT: RETVALintLOG_UPTO(pri) INPUT: int pri CODE:#ifdef LOG_UPTO RETVAL = LOG_UPTO(pri);#else croak("Your vendor has not defined the Sys::Syslog macro LOG_UPTO"); RETVAL = -1;#endif OUTPUT: RETVALdoubleconstant(sv) PREINIT: STRLEN len; INPUT: SV * sv char * s = SvPV(sv, len); CODE: RETVAL = constant(s,len); OUTPUT: RETVAL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -