summaryrefslogtreecommitdiffstats
path: root/contrib/perl5/ext/Sys/Syslog/Syslog.xs
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/perl5/ext/Sys/Syslog/Syslog.xs')
-rw-r--r--contrib/perl5/ext/Sys/Syslog/Syslog.xs642
1 files changed, 642 insertions, 0 deletions
diff --git a/contrib/perl5/ext/Sys/Syslog/Syslog.xs b/contrib/perl5/ext/Sys/Syslog/Syslog.xs
new file mode 100644
index 0000000..f0573b8
--- /dev/null
+++ b/contrib/perl5/ext/Sys/Syslog/Syslog.xs
@@ -0,0 +1,642 @@
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+#ifdef I_SYSLOG
+#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;
+}
+
+
+MODULE = Sys::Syslog PACKAGE = Sys::Syslog
+
+char *
+_PATH_LOG()
+ CODE:
+#ifdef _PATH_LOG
+ RETVAL = _PATH_LOG;
+#else
+ croak("Your vendor has not defined the Sys::Syslog macro _PATH_LOG");
+ RETVAL = NULL;
+#endif
+ OUTPUT:
+ RETVAL
+
+int
+LOG_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:
+ RETVAL
+
+int
+LOG_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:
+ RETVAL
+
+int
+LOG_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:
+ RETVAL
+
+int
+LOG_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:
+ RETVAL
+
+int
+LOG_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:
+ RETVAL
+
+
+double
+constant(sv)
+ PREINIT:
+ STRLEN len;
+ INPUT:
+ SV * sv
+ char * s = SvPV(sv, len);
+ CODE:
+ RETVAL = constant(s,len);
+ OUTPUT:
+ RETVAL
+
OpenPOWER on IntegriCloud