allow Sys::Syslog test to fail gracefully
[p5sagit/p5-mst-13.2.git] / ext / Sys / Syslog / Syslog.xs
index 31c0e84..93f1272 100644 (file)
 #include <syslog.h>
 #endif
 
-static double
-constant_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 double
-constant_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 double
-constant_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 double
-constant_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 double
-constant_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 double
-constant_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 double
-constant_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 double
-constant_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 double
-constant_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 double
-constant_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 double
-constant_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 double
-constant_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 double
-constant_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 double
-constant(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;
-}
-
+#include "const-c.inc"
 
 MODULE = Sys::Syslog           PACKAGE = Sys::Syslog           
 
-char *
-_PATH_LOG()
-    CODE:
-#ifdef _PATH_LOG
-       RETVAL = _PATH_LOG;
-#else
-       RETVAL = "";
-#endif
-    OUTPUT:
-       RETVAL
+INCLUDE: const-xs.inc
 
 int
 LOG_FAC(p)
@@ -625,17 +82,3 @@ LOG_UPTO(pri)
 #endif
     OUTPUT:
        RETVAL
-
-
-double
-constant(sv)
-    PREINIT:
-       STRLEN          len;
-    INPUT:
-       SV *            sv
-       char *          s = SvPV(sv, len);
-    CODE:
-       RETVAL = constant(s,len);
-    OUTPUT:
-       RETVAL
-