Lance has converted his modules to the new naming conventions, and

contributed a curses interface.
Setup.in uses .c instead of .o now.
This commit is contained in:
Guido van Rossum 1994-08-30 12:25:20 +00:00
parent 0c4071e69f
commit f6971e2958
4 changed files with 1496 additions and 217 deletions

View File

@ -15,9 +15,9 @@
# Comment out lines to suppress modules.
# Lines have the following structure:
#
# <module> ... [<objectfile> ...] [<cpparg> ...] [<library> ...]
# <module> ... [<sourcefile> ...] [<cpparg> ...] [<library> ...]
#
# <objectfile> is anything ending in .o
# <sourcefile> is anything ending in .c (.C, .cc, .c++ are C++ files)
# <cpparg> is anything starting with -I, -D, -U or -C
# <library> is anything ending in .a or beginning with -l or -L
# <module> is anything else but should be a valid Python
@ -61,41 +61,42 @@ PYTHONPATH=.:$(DESTLIB)$(TESTPATH)$(ARCHPATH)$(STDWINPATH)
# Modules that should always be present (non UNIX dependent)
array arraymodule.o # array objects
math mathmodule.o # math library functions, e.g. sin()
parser parsermodule.o # raw interface to the Python parser
posix posixmodule.o # posix (UNIX) system calls
regex regexmodule.o regexpr.o # Regular expressions, GNU Emacs style
strop stropmodule.o # fast string operations implemented in C
struct structmodule.o # binary structure packing/unpacking
time timemodule.o # time operations and variables
array arraymodule.c # array objects
math mathmodule.c # math library functions, e.g. sin()
parser parsermodule.c # raw interface to the Python parser
posix posixmodule.c # posix (UNIX) system calls
regex regexmodule.c regexpr.c # Regular expressions, GNU Emacs style
strop stropmodule.c # fast string operations implemented in C
struct structmodule.c # binary structure packing/unpacking
time timemodule.c # time operations and variables
# Modules with some UNIX dependencies -- on by default.
# (If you have a really backward UNIX, select and socket may not be
# supported...)
fcntl fcntlmodule.o # fcntl(2) and ioctl(2)
pwd pwdmodule.o # pwd(3)
grp grpmodule.o # grp(3)
crypt cryptmodule.o # crypt(3)
select selectmodule.o # select(2); not on ancient System V
socket socketmodule.o # socket(2); not on ancient System V
fcntl fcntlmodule.c # fcntl(2) and ioctl(2)
pwd pwdmodule.c # pwd(3)
grp grpmodule.c # grp(3)
crypt cryptmodule.c # crypt(3)
select selectmodule.c # select(2); not on ancient System V
socket socketmodule.c # socket(2); not on ancient System V
signal signalmodule.c # signal(2)
# Some more UNIX dependent modules -- off by default, since these
# are not supported by all UNIX systems.
#dbm dbmmodule.o # dbm(3) may require -lndbm or similar
#nis nismodule.o # Sun yellow pages -- not everywhere
#dbm dbmmodule.c # dbm(3) may require -lndbm or similar
#nis nismodule.c # Sun yellow pages -- not everywhere
# Multimedia modules -- on by default.
# These represent audio samples or images as strings
audioop audioop.o # Operations on audio samples
imageop imageop.o # Operations on images
rgbimg rgbimgmodule.o # Read SGI RGB image files (but coded portably)
audioop audioop.c # Operations on audio samples
imageop imageop.c # Operations on images
rgbimg rgbimgmodule.c # Read SGI RGB image files (but coded portably)
# The stdwin module provides a simple, portable (between X11 and Mac)
@ -108,14 +109,14 @@ rgbimg rgbimgmodule.o # Read SGI RGB image files (but coded portably)
#STDWIN=/ufs/guido/src/stdwin
#ARCH=???
#stdwin stdwinmodule.o -I$(STDWIN)/H $(STDWIN)/Build/$(ARCH)/x11/lib/lib.a -lX11
#stdwin stdwinmodule.c -I$(STDWIN)/H $(STDWIN)/Build/$(ARCH)/x11/lib/lib.a -lX11
# The md5 module implements the RSA Data Security, Inc. MD5
# Message-Digest Algorithm, described in RFC 1321. The necessary files
# md5c.c and md5.h are included here.
md5 md5module.o md5c.o
md5 md5module.c md5c.c
# The mpz module interfaces to the GNU Multiple Precision library.
@ -127,13 +128,7 @@ md5 md5module.o md5c.o
# it).
#GMP=/ufs/guido/src/gmp
#mpz mpzmodule.o -I$(GMP) $(GMP)/libgmp.a
# The rotor module (contributed by Lance Ellinghouse) implements a
# rotor-based encryption algorithm. It is self-contained.
rotor rotormodule.o
#mpz mpzmodule.c -I$(GMP) $(GMP)/libgmp.a
# SGI IRIX specific modules -- off by default.
@ -143,14 +138,14 @@ rotor rotormodule.o
# (Font Manager and Graphics Library).
# # ADD THESE FOR IRIX5:
#al almodule.o -laudio
#cd cdmodule.o -lcdaudio -lds # -lmediad
#cl clmodule.o -lcl # -lawareaudio
#fm fmmodule.o -lfm_s -lgl_s
#gl glmodule.o -lgl_s -lX11_s
#imgfile imgfile.o -limage -lgutil
#sgi sgimodule.o
#sv svmodule.o yuvconvert.o -lsvideo -lXext -lX11_s
#al almodule.c -laudio
#cd cdmodule.c -lcdaudio -lds # -lmediad
#cl clmodule.c -lcl # -lawareaudio
#fm fmmodule.c -lfm_s -lgl_s
#gl glmodule.c -lgl_s -lX11_s
#imgfile imgfile.c -limage -lgutil
#sgi sgimodule.c
#sv svmodule.c yuvconvert.c -lsvideo -lXext -lX11_s
# The FORMS library, by Mark Overmars, implements user interface
# components such as dialogs and buttons using SGI's GL and FM
@ -160,53 +155,51 @@ rotor rotormodule.o
# toplevel directory.
#FORMS=/ufs/guido/src/forms/FORMS
#fl flmodule.o -I$(FORMS) $(FORMS)/libforms.a
#fl flmodule.c -I$(FORMS) $(FORMS)/libforms.a
# SunOS specific modules -- off by default
# sunaudiodev sunaudiodev.o
# sunaudiodev sunaudiodev.c
# Thread module -- works on SGI IRIX and on SunOS 5.x (SOLARIS) only.
# Note that you must have configured (and built!) Python with the
# --with-thread option passed to the configure script for this to work.
# thread threadmodule.o
# thread threadmodule.c
# GNN's timing module
# timing timingmodule.o
# timing timingmodule.c
# Lance Ellinghouse's signal module
# signal signalmodule.o
# Lance Ellinghouse's modules
rotor rotormodule.c # enigma-inspired en-, decryption
# syslog syslogmodule.c # syslog daemon interface
# curses cursesmodule.c -lcurses -ltermcap # guess what?
# Tommy Burnette's 'new' module (creates new empty objects of certain kinds)
# new newmodule.o
# new newmodule.c
# John Redford's sybase module
# sybase sybasemodule.o
# sybase sybasemodule.c
# Generic (SunOS / SVR4) dynamic loading module
# dl dlmodule.o
# dl dlmodule.c
# Jack Jansen's imgformat module
# imgformat imgformat.o
# Lance Ellinghouse's syslog module
# syslog syslogmodule.o
# imgformat imgformat.c
# Anthony Baxter's gdbm module (derived from Jack's dbm module)
# GNU dbm(3) will require -lgdbm
# gdbm gdbmmodule.o -I/usr/local/include -L/usr/local/lib -lgdbm
# gdbm gdbmmodule.c -I/usr/local/include -L/usr/local/lib -lgdbm
# Example -- included for reference only
# xx xxmodule.o
# xx xxmodule.c

1298
Modules/_cursesmodule.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
/***********************************************************
Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum,
Amsterdam, The Netherlands.
Copyright 1994 by Lance Ellinghouse,
Cathedral City, California Republic, United States of America.
All Rights Reserved
@ -8,31 +8,18 @@ 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.
supporting documentation, and that the name of Lance Ellinghouse
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
LANCE ELLINGHOUSE 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.
FITNESS, IN NO EVENT SHALL LANCE ELLINGHOUSE 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.
******************************************************************/
/******************************************************************
Copyright 1992 by Lance Ellinghouse (lance@markv.com)
All Rights Reserved
Permission to use, copy, distribute for any purpose and without fee
is hereby granted, provided that this copyright notice appear in
all copies and that both this copyright notice and this permission
notice appear in supporting documentation.
Permission to make any changes is granted on the basis that all
changes and improvements are also forwarded to Lance Ellinghouse
before distribution.
******************************************************************/
/* This creates an encryption and decryption engine I am calling
@ -641,14 +628,14 @@ PyRotor_Dealloc(xp)
PyMem_DEL(xp);
}
static PyObject *
static PyObject *
PyRotor_Encrypt(self, args)
PyRotorObject *self;
PyObject *args;
PyObject * args;
{
char *string = (char *)NULL;
int len = 0;
PyObject *rtn = (PyObject *)NULL;
PyObject * rtn = (PyObject * )NULL;
char *tmp;
if (!PyArg_Parse(args,"s#",&string, &len))
@ -665,14 +652,14 @@ PyRotor_Encrypt(self, args)
return(rtn);
}
static PyObject *
static PyObject *
PyRotor_EncryptMore(self, args)
PyRotorObject *self;
PyObject *args;
PyObject * args;
{
char *string = (char *)NULL;
int len = 0;
PyObject *rtn = (PyObject *)NULL;
PyObject * rtn = (PyObject * )NULL;
char *tmp;
if (!PyArg_Parse(args,"s#",&string, &len))
@ -689,14 +676,14 @@ PyRotor_EncryptMore(self, args)
return(rtn);
}
static PyObject *
static PyObject *
PyRotor_Decrypt(self, args)
PyRotorObject *self;
PyObject *args;
PyObject * args;
{
char *string = (char *)NULL;
int len = 0;
PyObject *rtn = (PyObject *)NULL;
PyObject * rtn = (PyObject * )NULL;
char *tmp;
if (!PyArg_Parse(args,"s#",&string, &len))
@ -713,14 +700,14 @@ PyRotor_Decrypt(self, args)
return(rtn);
}
static PyObject *
static PyObject *
PyRotor_DecryptMore(self, args)
PyRotorObject *self;
PyObject *args;
PyObject * args;
{
char *string = (char *)NULL;
int len = 0;
PyObject *rtn = (PyObject *)NULL;
PyObject * rtn = (PyObject * )NULL;
char *tmp;
if (!PyArg_Parse(args,"s#",&string, &len))
@ -737,21 +724,21 @@ PyRotor_DecryptMore(self, args)
return(rtn);
}
static PyObject *
static PyObject *
PyRotor_SetKey(self, args)
PyRotorObject *self;
PyObject *args;
PyObject * args;
{
char *key;
char *string;
if (PyArg_Parse(args,"s",&string))
set_key(self,string);
Py_INCREF(None);
return None;
Py_INCREF(Py_None);
return Py_None;
}
static PyMethodDef PyRotor_Methods[] = {
static struct methodlist PyRotor_Methods[] = {
{"encrypt", (PyCFunction)PyRotor_Encrypt},
{"encryptmore", (PyCFunction)PyRotor_EncryptMore},
{"decrypt", (PyCFunction)PyRotor_Decrypt},
@ -762,12 +749,12 @@ static PyMethodDef PyRotor_Methods[] = {
/* Return a rotor object's named attribute. */
static PyObject *
static PyObject *
PyRotor_GetAttr(s, name)
PyRotorObject *s;
char *name;
{
return Py_FindMethod(PyRotor_Methods, (PyObject *) s, name);
return Py_FindMethod(PyRotor_Methods, (PyObject * ) s, name);
}
static PyTypeObject PyRotor_Type = {
@ -787,10 +774,10 @@ static PyTypeObject PyRotor_Type = {
};
static PyObject *
static PyObject *
PyRotor_Rotor(self, args)
PyObject *self;
PyObject *args;
PyObject * self;
PyObject * args;
{
char *string;
PyRotorObject *r;
@ -805,10 +792,10 @@ PyRotor_Rotor(self, args)
return NULL;
}
r = PyRotor_New(num_rotors, string);
return (PyObject *)r;
return (PyObject * )r;
}
static PyMethodDef PyRotor_Rotor_Methods[] = {
static struct methodlist PyRotor_Rotor_Methods[] = {
{"newrotor", (PyCFunction)PyRotor_Rotor},
{NULL, NULL} /* Sentinel */
};
@ -822,7 +809,7 @@ static PyMethodDef PyRotor_Rotor_Methods[] = {
void
initrotor()
{
PyObject *m;
PyObject * m;
m = Py_InitModule("rotor", PyRotor_Rotor_Methods);
}

View File

@ -1,6 +1,6 @@
/***********************************************************
Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum,
Amsterdam, The Netherlands.
Copyright 1994 by Lance Ellinghouse,
Cathedral City, California Republic, United States of America.
All Rights Reserved
@ -8,125 +8,126 @@ 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.
supporting documentation, and that the name of Lance Ellinghouse
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
LANCE ELLINGHOUSE 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.
FITNESS, IN NO EVENT SHALL LANCE ELLINGHOUSE 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 *
#include "rename1.h"
static PyObject *
syslog_openlog(self, args)
object *self;
object *args;
PyObject * self;
PyObject * args;
{
char *ident = "";
object *ident_o;
PyObject * 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))
if (!PyArg_Parse(args, "(Sll);ident string, logoption, facility", &ident_o, &logopt, &facility))
if (!PyArg_Parse(args, "(Sl);ident string, logoption", &ident_o, &logopt))
if (!PyArg_Parse(args, "S;ident string", &ident_o))
return NULL;
INCREF(ident_o); /* This is needed because openlog() does NOT make a copy
Py_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);
ident = PyString_AsString(ident_o);
openlog(ident,logopt,facility);
INCREF(None);
return None;
Py_INCREF(Py_None);
return Py_None;
}
static object *
static PyObject *
syslog_syslog(self, args)
object *self;
object *args;
PyObject * self;
PyObject * args;
{
int priority = LOG_INFO;
char *message;
if (!getargs(args,"(is);priority, message string",&priority,&message))
if (!getargs(args,"s;message string",&message))
if (!PyArg_Parse(args,"(is);priority, message string",&priority,&message))
if (!PyArg_Parse(args,"s;message string",&message))
return NULL;
syslog(priority, message);
INCREF(None);
return None;
Py_INCREF(Py_None);
return Py_None;
}
static object *
static PyObject *
syslog_closelog(self, args)
object *self;
object *args;
PyObject * self;
PyObject * args;
{
if (!getnoarg(args))
if (!PyArg_NoArgs(args))
return NULL;
closelog();
INCREF(None);
return None;
Py_INCREF(Py_None);
return Py_None;
}
static object *
static PyObject *
syslog_setlogmask(self, args)
object *self;
object *args;
PyObject * self;
PyObject * args;
{
long maskpri;
if (!getargs(args,"l;mask for priority",&maskpri))
if (!PyArg_Parse(args,"l;mask for priority",&maskpri))
return NULL;
setlogmask(maskpri);
INCREF(None);
return None;
Py_INCREF(Py_None);
return Py_None;
}
static object *
static PyObject *
syslog_log_mask(self, args)
object *self;
object *args;
PyObject * self;
PyObject * args;
{
long mask;
long pri;
if (!getargs(args,"l",&pri))
if (!PyArg_Parse(args,"l",&pri))
return NULL;
mask = LOG_MASK(pri);
return newintobject(mask);
return PyInt_FromLong(mask);
}
static object *
static PyObject *
syslog_log_upto(self, args)
object *self;
object *args;
PyObject * self;
PyObject * args;
{
long mask;
long pri;
if (!getargs(args,"l",&pri))
if (!PyArg_Parse(args,"l",&pri))
return NULL;
mask = LOG_UPTO(pri);
return newintobject(mask);
return PyInt_FromLong(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},
static PyMethodDef syslog_methods[] = {
{"openlog", (PyCFunction)syslog_openlog},
{"closelog", (PyCFunction)syslog_closelog},
{"syslog", (PyCFunction)syslog_syslog},
{"setlogmask", (PyCFunction)syslog_setlogmask},
{"LOG_MASK", (PyCFunction)syslog_log_mask},
{"LOG_UPTO", (PyCFunction)syslog_log_upto},
{NULL, NULL} /* sentinel */
};
@ -135,65 +136,65 @@ static struct methodlist syslog_methods[] = {
void
initsyslog()
{
object *m, *d, *x;
PyObject *m, *d, *x;
/* Create the module and add the functions */
m = initmodule("syslog", syslog_methods);
m = Py_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);
d = PyModule_GetDict(m);
x = PyInt_FromLong(LOG_EMERG);
PyDict_SetItemString(d, "LOG_EMERG", x);
x = PyInt_FromLong(LOG_ALERT);
PyDict_SetItemString(d, "LOG_ALERT", x);
x = PyInt_FromLong(LOG_CRIT);
PyDict_SetItemString(d, "LOG_CRIT", x);
x = PyInt_FromLong(LOG_ERR);
PyDict_SetItemString(d, "LOG_ERR", x);
x = PyInt_FromLong(LOG_WARNING);
PyDict_SetItemString(d, "LOG_WARNING", x);
x = PyInt_FromLong(LOG_NOTICE);
PyDict_SetItemString(d, "LOG_NOTICE", x);
x = PyInt_FromLong(LOG_INFO);
PyDict_SetItemString(d, "LOG_INFO", x);
x = PyInt_FromLong(LOG_DEBUG);
PyDict_SetItemString(d, "LOG_DEBUG", x);
x = PyInt_FromLong(LOG_PID);
PyDict_SetItemString(d, "LOG_PID", x);
x = PyInt_FromLong(LOG_CONS);
PyDict_SetItemString(d, "LOG_CONS", x);
x = PyInt_FromLong(LOG_NDELAY);
PyDict_SetItemString(d, "LOG_NDELAY", x);
x = PyInt_FromLong(LOG_NOWAIT);
PyDict_SetItemString(d, "LOG_NOWAIT", x);
x = PyInt_FromLong(LOG_KERN);
PyDict_SetItemString(d, "LOG_KERN", x);
x = PyInt_FromLong(LOG_USER);
PyDict_SetItemString(d, "LOG_USER", x);
x = PyInt_FromLong(LOG_MAIL);
PyDict_SetItemString(d, "LOG_MAIL", x);
x = PyInt_FromLong(LOG_DAEMON);
PyDict_SetItemString(d, "LOG_DAEMON", x);
x = PyInt_FromLong(LOG_LPR);
PyDict_SetItemString(d, "LOG_LPR", x);
x = PyInt_FromLong(LOG_LOCAL0);
PyDict_SetItemString(d, "LOG_LOCAL0", x);
x = PyInt_FromLong(LOG_LOCAL1);
PyDict_SetItemString(d, "LOG_LOCAL1", x);
x = PyInt_FromLong(LOG_LOCAL2);
PyDict_SetItemString(d, "LOG_LOCAL2", x);
x = PyInt_FromLong(LOG_LOCAL3);
PyDict_SetItemString(d, "LOG_LOCAL3", x);
x = PyInt_FromLong(LOG_LOCAL4);
PyDict_SetItemString(d, "LOG_LOCAL4", x);
x = PyInt_FromLong(LOG_LOCAL5);
PyDict_SetItemString(d, "LOG_LOCAL5", x);
x = PyInt_FromLong(LOG_LOCAL6);
PyDict_SetItemString(d, "LOG_LOCAL6", x);
x = PyInt_FromLong(LOG_LOCAL7);
PyDict_SetItemString(d, "LOG_LOCAL7", x);
/* Check for errors */
if (err_occurred())
fatal("can't initialize module syslog");
if (PyErr_Occurred())
Py_FatalError("can't initialize module syslog");
}