summaryrefslogtreecommitdiffstats
path: root/Modules/syslogmodule.c
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1994-07-14 13:56:50 (GMT)
committerGuido van Rossum <guido@python.org>1994-07-14 13:56:50 (GMT)
commite44e373cbc311e211d379e0633d53af4210d29fa (patch)
treea7845363be1ed9ce5171f08776f643d4e9779d59 /Modules/syslogmodule.c
parent64ea535b5e208bc8c324249b80d14f470fe3a27a (diff)
downloadcpython-e44e373cbc311e211d379e0633d53af4210d29fa.zip
cpython-e44e373cbc311e211d379e0633d53af4210d29fa.tar.gz
cpython-e44e373cbc311e211d379e0633d53af4210d29fa.tar.bz2
Added some names to Setup.in, and added syslogmodule.c.
posixmodule.c: use pclose, not fclose! selectmodule.c: trap negative fileno's, change some error messages. stropmodule.c: change semantics of rindex to match string.py.
Diffstat (limited to 'Modules/syslogmodule.c')
-rw-r--r--Modules/syslogmodule.c199
1 files changed, 199 insertions, 0 deletions
diff --git a/Modules/syslogmodule.c b/Modules/syslogmodule.c
new file mode 100644
index 0000000..dd0ba35
--- /dev/null
+++ b/Modules/syslogmodule.c
@@ -0,0 +1,199 @@
+/***********************************************************
+Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum,
+Amsterdam, The Netherlands.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Stichting Mathematisch
+Centrum or CWI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior permission.
+
+STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+
+/* syslog module */
+/* (By Lance Ellinghouse) */
+
+#include "allobjects.h"
+#include "modsupport.h"
+
+#include <syslog.h>
+
+static object *
+syslog_openlog(self, args)
+ object *self;
+ object *args;
+{
+ char *ident = "";
+ object *ident_o;
+ long logopt = LOG_PID;
+ long facility = LOG_USER;
+ if (!getargs(args, "(Sll);ident string, logoption, facility", &ident_o, &logopt, &facility))
+ if (!getargs(args, "(Sl);ident string, logoption", &ident_o, &logopt))
+ if (!getargs(args, "S;ident string", &ident_o))
+ return NULL;
+ INCREF(ident_o); /* This is needed because openlog() does NOT make a copy
+ and syslog() later uses it.. cannot trash it. */
+ ident = getstringvalue(ident_o);
+ openlog(ident,logopt,facility);
+ INCREF(None);
+ return None;
+}
+
+static object *
+syslog_syslog(self, args)
+ object *self;
+ object *args;
+{
+ int priority = LOG_INFO;
+ char *message;
+
+ if (!getargs(args,"(is);priority, message string",&priority,&message))
+ if (!getargs(args,"s;message string",&message))
+ return NULL;
+ syslog(priority, message);
+ INCREF(None);
+ return None;
+}
+
+static object *
+syslog_closelog(self, args)
+ object *self;
+ object *args;
+{
+ if (!getnoarg(args))
+ return NULL;
+ closelog();
+ INCREF(None);
+ return None;
+}
+
+static object *
+syslog_setlogmask(self, args)
+ object *self;
+ object *args;
+{
+ long maskpri;
+ if (!getargs(args,"l;mask for priority",&maskpri))
+ return NULL;
+ setlogmask(maskpri);
+ INCREF(None);
+ return None;
+}
+
+static object *
+syslog_log_mask(self, args)
+ object *self;
+ object *args;
+{
+ long mask;
+ long pri;
+ if (!getargs(args,"l",&pri))
+ return NULL;
+ mask = LOG_MASK(pri);
+ return newintobject(mask);
+}
+
+static object *
+syslog_log_upto(self, args)
+ object *self;
+ object *args;
+{
+ long mask;
+ long pri;
+ if (!getargs(args,"l",&pri))
+ return NULL;
+ mask = LOG_UPTO(pri);
+ return newintobject(mask);
+}
+
+/* List of functions defined in the module */
+
+static struct methodlist syslog_methods[] = {
+ {"openlog", syslog_openlog},
+ {"closelog", syslog_closelog},
+ {"syslog", syslog_syslog},
+ {"setlogmask", syslog_setlogmask},
+ {"LOG_MASK", syslog_log_mask},
+ {"LOG_UPTO", syslog_log_upto},
+ {NULL, NULL} /* sentinel */
+};
+
+/* Initialization function for the module */
+
+void
+initsyslog()
+{
+ object *m, *d, *x;
+
+ /* Create the module and add the functions */
+ m = initmodule("syslog", syslog_methods);
+
+ /* Add some symbolic constants to the module */
+ d = getmoduledict(m);
+ x = newintobject(LOG_EMERG);
+ dictinsert(d, "LOG_EMERG", x);
+ x = newintobject(LOG_ALERT);
+ dictinsert(d, "LOG_ALERT", x);
+ x = newintobject(LOG_CRIT);
+ dictinsert(d, "LOG_CRIT", x);
+ x = newintobject(LOG_ERR);
+ dictinsert(d, "LOG_ERR", x);
+ x = newintobject(LOG_WARNING);
+ dictinsert(d, "LOG_WARNING", x);
+ x = newintobject(LOG_NOTICE);
+ dictinsert(d, "LOG_NOTICE", x);
+ x = newintobject(LOG_INFO);
+ dictinsert(d, "LOG_INFO", x);
+ x = newintobject(LOG_DEBUG);
+ dictinsert(d, "LOG_DEBUG", x);
+ x = newintobject(LOG_PID);
+ dictinsert(d, "LOG_PID", x);
+ x = newintobject(LOG_CONS);
+ dictinsert(d, "LOG_CONS", x);
+ x = newintobject(LOG_NDELAY);
+ dictinsert(d, "LOG_NDELAY", x);
+ x = newintobject(LOG_NOWAIT);
+ dictinsert(d, "LOG_NOWAIT", x);
+ x = newintobject(LOG_KERN);
+ dictinsert(d, "LOG_KERN", x);
+ x = newintobject(LOG_USER);
+ dictinsert(d, "LOG_USER", x);
+ x = newintobject(LOG_MAIL);
+ dictinsert(d, "LOG_MAIL", x);
+ x = newintobject(LOG_DAEMON);
+ dictinsert(d, "LOG_DAEMON", x);
+ x = newintobject(LOG_LPR);
+ dictinsert(d, "LOG_LPR", x);
+ x = newintobject(LOG_LOCAL0);
+ dictinsert(d, "LOG_LOCAL0", x);
+ x = newintobject(LOG_LOCAL1);
+ dictinsert(d, "LOG_LOCAL1", x);
+ x = newintobject(LOG_LOCAL2);
+ dictinsert(d, "LOG_LOCAL2", x);
+ x = newintobject(LOG_LOCAL3);
+ dictinsert(d, "LOG_LOCAL3", x);
+ x = newintobject(LOG_LOCAL4);
+ dictinsert(d, "LOG_LOCAL4", x);
+ x = newintobject(LOG_LOCAL5);
+ dictinsert(d, "LOG_LOCAL5", x);
+ x = newintobject(LOG_LOCAL6);
+ dictinsert(d, "LOG_LOCAL6", x);
+ x = newintobject(LOG_LOCAL7);
+ dictinsert(d, "LOG_LOCAL7", x);
+
+ /* Check for errors */
+ if (err_occurred())
+ fatal("can't initialize module syslog");
+}