syslogmodule.c revision 1a21451b1d73b65af949193208372e86bf308411
1e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum/*********************************************************** 2f6971e2958a162298885b6069cc137d973fac356Guido van RossumCopyright 1994 by Lance Ellinghouse, 3f6971e2958a162298885b6069cc137d973fac356Guido van RossumCathedral City, California Republic, United States of America. 4e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum 5e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum All Rights Reserved 6e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum 7e44e373cbc311e211d379e0633d53af4210d29faGuido van RossumPermission to use, copy, modify, and distribute this software and its 8e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossumdocumentation for any purpose and without fee is hereby granted, 9e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossumprovided that the above copyright notice appear in all copies and that 10e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossumboth that copyright notice and this permission notice appear in 11f6971e2958a162298885b6069cc137d973fac356Guido van Rossumsupporting documentation, and that the name of Lance Ellinghouse 12f6971e2958a162298885b6069cc137d973fac356Guido van Rossumnot be used in advertising or publicity pertaining to distribution 13f6971e2958a162298885b6069cc137d973fac356Guido van Rossumof the software without specific, written prior permission. 14e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum 15f6971e2958a162298885b6069cc137d973fac356Guido van RossumLANCE ELLINGHOUSE DISCLAIMS ALL WARRANTIES WITH REGARD TO 16e44e373cbc311e211d379e0633d53af4210d29faGuido van RossumTHIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 17f6971e2958a162298885b6069cc137d973fac356Guido van RossumFITNESS, IN NO EVENT SHALL LANCE ELLINGHOUSE BE LIABLE FOR ANY SPECIAL, 18f6971e2958a162298885b6069cc137d973fac356Guido van RossumINDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING 19f6971e2958a162298885b6069cc137d973fac356Guido van RossumFROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, 20f6971e2958a162298885b6069cc137d973fac356Guido van RossumNEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 21f6971e2958a162298885b6069cc137d973fac356Guido van RossumWITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 22e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum 23e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum******************************************************************/ 24e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum 25c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum/****************************************************************** 26c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum 27c1822a4dd1b5276211be041c7ac216c549c787a4Guido van RossumRevision history: 28c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum 29ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum1998/04/28 (Sean Reifschneider) 30ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum - When facility not specified to syslog() method, use default from openlog() 31ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum (This is how it was claimed to work in the documentation) 32ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum - Potential resource leak of o_ident, now cleaned up in closelog() 33ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum - Minor comment accuracy fix. 34ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum 35c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum95/06/29 (Steve Clift) 36c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum - Changed arg parsing to use PyArg_ParseTuple. 37c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum - Added PyErr_Clear() call(s) where needed. 38c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum - Fix core dumps if user message contains format specifiers. 397e47402264cf87b9bbb61fc9ff610af08add7c7bThomas Wouters - Change openlog arg defaults to match normal syslog behavior. 40c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum - Plug memory leak in openlog(). 41c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum - Fix setlogmask() to return previous mask value. 42c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum 43c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum******************************************************************/ 44c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum 45e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum/* syslog module */ 46e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum 47a597dde3f1959127c33296a77f76331b59449c01Guido van Rossum#include "Python.h" 48e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum 49e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum#include <syslog.h> 50e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum 51ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum/* only one instance, only one syslog, so globals should be ok */ 52ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossumstatic PyObject *S_ident_o = NULL; /* identifier, held by openlog() */ 53ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum 54ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum 55f6971e2958a162298885b6069cc137d973fac356Guido van Rossumstatic PyObject * 5641c36ffe83d22e84cc072130b3914d66d9d722f0Peter Schneider-Kampsyslog_openlog(PyObject * self, PyObject * args) 57e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum{ 5843a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw long logopt = 0; 5943a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw long facility = LOG_USER; 606f5b741a4696bc8f331b1d9c77307940528813ffRaymond Hettinger PyObject *new_S_ident_o; 618d3654db2228b11b7fbfac49ebffbe85a69e9a52Neal Norwitz const char *ident; 62c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum 6343a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw if (!PyArg_ParseTuple(args, 648d3654db2228b11b7fbfac49ebffbe85a69e9a52Neal Norwitz "U|ll;ident string [, logoption [, facility]]", 656f5b741a4696bc8f331b1d9c77307940528813ffRaymond Hettinger &new_S_ident_o, &logopt, &facility)) 6643a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw return NULL; 6743a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw 6843a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw /* This is needed because openlog() does NOT make a copy 6943a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw * and syslog() later uses it.. cannot trash it. 7043a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw */ 716f5b741a4696bc8f331b1d9c77307940528813ffRaymond Hettinger Py_XDECREF(S_ident_o); 726f5b741a4696bc8f331b1d9c77307940528813ffRaymond Hettinger S_ident_o = new_S_ident_o; 73ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum Py_INCREF(S_ident_o); 74c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum 758d3654db2228b11b7fbfac49ebffbe85a69e9a52Neal Norwitz ident = PyUnicode_AsString(S_ident_o); 768d3654db2228b11b7fbfac49ebffbe85a69e9a52Neal Norwitz if (ident == NULL) 778d3654db2228b11b7fbfac49ebffbe85a69e9a52Neal Norwitz return NULL; 788d3654db2228b11b7fbfac49ebffbe85a69e9a52Neal Norwitz openlog(ident, logopt, facility); 79c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum 8043a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw Py_INCREF(Py_None); 8143a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw return Py_None; 82e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum} 83e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum 8443a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw 85f6971e2958a162298885b6069cc137d973fac356Guido van Rossumstatic PyObject * 8641c36ffe83d22e84cc072130b3914d66d9d722f0Peter Schneider-Kampsyslog_syslog(PyObject * self, PyObject * args) 87e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum{ 888d3654db2228b11b7fbfac49ebffbe85a69e9a52Neal Norwitz PyObject *message_object; 898d3654db2228b11b7fbfac49ebffbe85a69e9a52Neal Norwitz const char *message; 90ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum int priority = LOG_INFO; 9143a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw 928d3654db2228b11b7fbfac49ebffbe85a69e9a52Neal Norwitz if (!PyArg_ParseTuple(args, "iU;[priority,] message string", 93fa06e5f00f3e5f54ad97fbc93a3e9d199dc01fe8Neal Norwitz &priority, &message_object)) { 9443a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw PyErr_Clear(); 958d3654db2228b11b7fbfac49ebffbe85a69e9a52Neal Norwitz if (!PyArg_ParseTuple(args, "U;[priority,] message string", 96fa06e5f00f3e5f54ad97fbc93a3e9d199dc01fe8Neal Norwitz &message_object)) 9743a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw return NULL; 9843a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw } 99ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum 1008d3654db2228b11b7fbfac49ebffbe85a69e9a52Neal Norwitz message = PyUnicode_AsString(message_object); 1018d3654db2228b11b7fbfac49ebffbe85a69e9a52Neal Norwitz if (message == NULL) 1028d3654db2228b11b7fbfac49ebffbe85a69e9a52Neal Norwitz return NULL; 10305e8be17fd15d8e649e026600f5ab20e1154599fChristian Heimes Py_BEGIN_ALLOW_THREADS; 10443a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw syslog(priority, "%s", message); 10505e8be17fd15d8e649e026600f5ab20e1154599fChristian Heimes Py_END_ALLOW_THREADS; 10605e8be17fd15d8e649e026600f5ab20e1154599fChristian Heimes Py_RETURN_NONE; 107e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum} 108e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum 109f6971e2958a162298885b6069cc137d973fac356Guido van Rossumstatic PyObject * 1104d70c3d9dded0f0fa7a73c67217a71111d05df4dThomas Wouterssyslog_closelog(PyObject *self, PyObject *unused) 111e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum{ 112e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum closelog(); 113ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum Py_XDECREF(S_ident_o); 114ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum S_ident_o = NULL; 115f6971e2958a162298885b6069cc137d973fac356Guido van Rossum Py_INCREF(Py_None); 116f6971e2958a162298885b6069cc137d973fac356Guido van Rossum return Py_None; 117e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum} 118e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum 119f6971e2958a162298885b6069cc137d973fac356Guido van Rossumstatic PyObject * 12041c36ffe83d22e84cc072130b3914d66d9d722f0Peter Schneider-Kampsyslog_setlogmask(PyObject *self, PyObject *args) 121e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum{ 12243a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw long maskpri, omaskpri; 123c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum 12443a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw if (!PyArg_ParseTuple(args, "l;mask for priority", &maskpri)) 12543a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw return NULL; 12643a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw omaskpri = setlogmask(maskpri); 127217cfd1c86c59ed8a55ce6d6b88bbe37309e7ba2Christian Heimes return PyLong_FromLong(omaskpri); 128e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum} 129e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum 130f6971e2958a162298885b6069cc137d973fac356Guido van Rossumstatic PyObject * 13141c36ffe83d22e84cc072130b3914d66d9d722f0Peter Schneider-Kampsyslog_log_mask(PyObject *self, PyObject *args) 132e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum{ 13343a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw long mask; 13443a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw long pri; 13543713e5a2899930a8698e244b0d0fef59a676d17Guido van Rossum if (!PyArg_ParseTuple(args, "l:LOG_MASK", &pri)) 13643a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw return NULL; 13743a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw mask = LOG_MASK(pri); 138217cfd1c86c59ed8a55ce6d6b88bbe37309e7ba2Christian Heimes return PyLong_FromLong(mask); 139e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum} 140e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum 141f6971e2958a162298885b6069cc137d973fac356Guido van Rossumstatic PyObject * 14241c36ffe83d22e84cc072130b3914d66d9d722f0Peter Schneider-Kampsyslog_log_upto(PyObject *self, PyObject *args) 143e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum{ 14443a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw long mask; 14543a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw long pri; 14643713e5a2899930a8698e244b0d0fef59a676d17Guido van Rossum if (!PyArg_ParseTuple(args, "l:LOG_UPTO", &pri)) 14743a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw return NULL; 14843a476ac002186c28ceccf36009fffe43ce68b0cBarry Warsaw mask = LOG_UPTO(pri); 149217cfd1c86c59ed8a55ce6d6b88bbe37309e7ba2Christian Heimes return PyLong_FromLong(mask); 150e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum} 151e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum 152e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum/* List of functions defined in the module */ 153e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum 154f6971e2958a162298885b6069cc137d973fac356Guido van Rossumstatic PyMethodDef syslog_methods[] = { 155c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum {"openlog", syslog_openlog, METH_VARARGS}, 1564d70c3d9dded0f0fa7a73c67217a71111d05df4dThomas Wouters {"closelog", syslog_closelog, METH_NOARGS}, 157c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum {"syslog", syslog_syslog, METH_VARARGS}, 158c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum {"setlogmask", syslog_setlogmask, METH_VARARGS}, 159c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum {"LOG_MASK", syslog_log_mask, METH_VARARGS}, 160c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum {"LOG_UPTO", syslog_log_upto, METH_VARARGS}, 161c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum {NULL, NULL, 0} 162e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum}; 163e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum 164ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum/* Initialization function for the module */ 165c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum 1661a21451b1d73b65af949193208372e86bf308411Martin v. Löwis 1671a21451b1d73b65af949193208372e86bf308411Martin v. Löwisstatic struct PyModuleDef syslogmodule = { 1681a21451b1d73b65af949193208372e86bf308411Martin v. Löwis PyModuleDef_HEAD_INIT, 1691a21451b1d73b65af949193208372e86bf308411Martin v. Löwis "syslog", 1701a21451b1d73b65af949193208372e86bf308411Martin v. Löwis NULL, 1711a21451b1d73b65af949193208372e86bf308411Martin v. Löwis -1, 1721a21451b1d73b65af949193208372e86bf308411Martin v. Löwis syslog_methods, 1731a21451b1d73b65af949193208372e86bf308411Martin v. Löwis NULL, 1741a21451b1d73b65af949193208372e86bf308411Martin v. Löwis NULL, 1751a21451b1d73b65af949193208372e86bf308411Martin v. Löwis NULL, 1761a21451b1d73b65af949193208372e86bf308411Martin v. Löwis NULL 1771a21451b1d73b65af949193208372e86bf308411Martin v. Löwis}; 1781a21451b1d73b65af949193208372e86bf308411Martin v. Löwis 179fe51c6d66e0fbf6a142036bee2c448bd7fe8fefcMark HammondPyMODINIT_FUNC 1801a21451b1d73b65af949193208372e86bf308411Martin v. LöwisPyInit_syslog(void) 181e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum{ 1824baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyObject *m; 183e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum 184e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum /* Create the module and add the functions */ 1851a21451b1d73b65af949193208372e86bf308411Martin v. Löwis m = PyModule_Create(&syslogmodule); 1861ac754fa10f5d199d19911e21185d0970cb3073fNeal Norwitz if (m == NULL) 1871a21451b1d73b65af949193208372e86bf308411Martin v. Löwis return NULL; 188e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum 189e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum /* Add some symbolic constants to the module */ 190c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum 191c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum /* Priorities */ 1924baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_EMERG", LOG_EMERG); 1934baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_ALERT", LOG_ALERT); 1944baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_CRIT", LOG_CRIT); 1954baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_ERR", LOG_ERR); 1964baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_WARNING", LOG_WARNING); 1974baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_NOTICE", LOG_NOTICE); 1984baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_INFO", LOG_INFO); 1994baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_DEBUG", LOG_DEBUG); 200c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum 201c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum /* openlog() option flags */ 2024baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_PID", LOG_PID); 2034baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_CONS", LOG_CONS); 2044baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_NDELAY", LOG_NDELAY); 205bcc207484a0f8f27a684e11194e7430c0710f66dGuido van Rossum#ifdef LOG_NOWAIT 2064baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_NOWAIT", LOG_NOWAIT); 207bcc207484a0f8f27a684e11194e7430c0710f66dGuido van Rossum#endif 208c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum#ifdef LOG_PERROR 2094baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_PERROR", LOG_PERROR); 210c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum#endif 211c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum 212c1822a4dd1b5276211be041c7ac216c549c787a4Guido van Rossum /* Facilities */ 2134baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_KERN", LOG_KERN); 2144baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_USER", LOG_USER); 2154baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_MAIL", LOG_MAIL); 2164baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_DAEMON", LOG_DAEMON); 2174baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_AUTH", LOG_AUTH); 2184baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_LPR", LOG_LPR); 2194baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_LOCAL0", LOG_LOCAL0); 2204baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_LOCAL1", LOG_LOCAL1); 2214baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_LOCAL2", LOG_LOCAL2); 2224baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_LOCAL3", LOG_LOCAL3); 2234baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_LOCAL4", LOG_LOCAL4); 2244baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_LOCAL5", LOG_LOCAL5); 2254baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_LOCAL6", LOG_LOCAL6); 2264baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_LOCAL7", LOG_LOCAL7); 227e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum 228ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum#ifndef LOG_SYSLOG 229ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum#define LOG_SYSLOG LOG_DAEMON 230ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum#endif 231ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum#ifndef LOG_NEWS 232ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum#define LOG_NEWS LOG_MAIL 233ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum#endif 234ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum#ifndef LOG_UUCP 235ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum#define LOG_UUCP LOG_MAIL 236ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum#endif 237ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum#ifndef LOG_CRON 238ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum#define LOG_CRON LOG_DAEMON 239ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum#endif 240ae94cf292ba0317ac70a5eca3004a2fa5bcaad80Guido van Rossum 2414baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_SYSLOG", LOG_SYSLOG); 2424baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_CRON", LOG_CRON); 2434baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_UUCP", LOG_UUCP); 2444baedc1d9be6e5308d73439db54b58e51fb30dfcFred Drake PyModule_AddIntConstant(m, "LOG_NEWS", LOG_NEWS); 2451a21451b1d73b65af949193208372e86bf308411Martin v. Löwis return m; 246e44e373cbc311e211d379e0633d53af4210d29faGuido van Rossum} 247