@@ -261,72 +261,55 @@ static PyMethodDef syslog_methods[] = {
261261 {NULL , NULL , 0 }
262262};
263263
264- /* Initialization function for the module */
265-
266-
267- static struct PyModuleDef syslogmodule = {
268- PyModuleDef_HEAD_INIT ,
269- "syslog" ,
270- NULL ,
271- -1 ,
272- syslog_methods ,
273- NULL ,
274- NULL ,
275- NULL ,
276- NULL
277- };
278264
279- PyMODINIT_FUNC
280- PyInit_syslog ( void )
265+ static int
266+ syslog_exec ( PyObject * module )
281267{
282- PyObject * m ;
283-
284- /* Create the module and add the functions */
285- m = PyModule_Create (& syslogmodule );
286- if (m == NULL )
287- return NULL ;
288-
289- /* Add some symbolic constants to the module */
290-
268+ #define ADD_INT_MACRO (module , macro ) \
269+ do { \
270+ if (PyModule_AddIntConstant(module, #macro, macro) < 0) { \
271+ return -1; \
272+ } \
273+ } while (0)
291274 /* Priorities */
292- PyModule_AddIntMacro ( m , LOG_EMERG );
293- PyModule_AddIntMacro ( m , LOG_ALERT );
294- PyModule_AddIntMacro ( m , LOG_CRIT );
295- PyModule_AddIntMacro ( m , LOG_ERR );
296- PyModule_AddIntMacro ( m , LOG_WARNING );
297- PyModule_AddIntMacro ( m , LOG_NOTICE );
298- PyModule_AddIntMacro ( m , LOG_INFO );
299- PyModule_AddIntMacro ( m , LOG_DEBUG );
275+ ADD_INT_MACRO ( module , LOG_EMERG );
276+ ADD_INT_MACRO ( module , LOG_ALERT );
277+ ADD_INT_MACRO ( module , LOG_CRIT );
278+ ADD_INT_MACRO ( module , LOG_ERR );
279+ ADD_INT_MACRO ( module , LOG_WARNING );
280+ ADD_INT_MACRO ( module , LOG_NOTICE );
281+ ADD_INT_MACRO ( module , LOG_INFO );
282+ ADD_INT_MACRO ( module , LOG_DEBUG );
300283
301284 /* openlog() option flags */
302- PyModule_AddIntMacro ( m , LOG_PID );
303- PyModule_AddIntMacro ( m , LOG_CONS );
304- PyModule_AddIntMacro ( m , LOG_NDELAY );
285+ ADD_INT_MACRO ( module , LOG_PID );
286+ ADD_INT_MACRO ( module , LOG_CONS );
287+ ADD_INT_MACRO ( module , LOG_NDELAY );
305288#ifdef LOG_ODELAY
306- PyModule_AddIntMacro ( m , LOG_ODELAY );
289+ ADD_INT_MACRO ( module , LOG_ODELAY );
307290#endif
308291#ifdef LOG_NOWAIT
309- PyModule_AddIntMacro ( m , LOG_NOWAIT );
292+ ADD_INT_MACRO ( module , LOG_NOWAIT );
310293#endif
311294#ifdef LOG_PERROR
312- PyModule_AddIntMacro ( m , LOG_PERROR );
295+ ADD_INT_MACRO ( module , LOG_PERROR );
313296#endif
314297
315298 /* Facilities */
316- PyModule_AddIntMacro ( m , LOG_KERN );
317- PyModule_AddIntMacro ( m , LOG_USER );
318- PyModule_AddIntMacro ( m , LOG_MAIL );
319- PyModule_AddIntMacro ( m , LOG_DAEMON );
320- PyModule_AddIntMacro ( m , LOG_AUTH );
321- PyModule_AddIntMacro ( m , LOG_LPR );
322- PyModule_AddIntMacro ( m , LOG_LOCAL0 );
323- PyModule_AddIntMacro ( m , LOG_LOCAL1 );
324- PyModule_AddIntMacro ( m , LOG_LOCAL2 );
325- PyModule_AddIntMacro ( m , LOG_LOCAL3 );
326- PyModule_AddIntMacro ( m , LOG_LOCAL4 );
327- PyModule_AddIntMacro ( m , LOG_LOCAL5 );
328- PyModule_AddIntMacro ( m , LOG_LOCAL6 );
329- PyModule_AddIntMacro ( m , LOG_LOCAL7 );
299+ ADD_INT_MACRO ( module , LOG_KERN );
300+ ADD_INT_MACRO ( module , LOG_USER );
301+ ADD_INT_MACRO ( module , LOG_MAIL );
302+ ADD_INT_MACRO ( module , LOG_DAEMON );
303+ ADD_INT_MACRO ( module , LOG_AUTH );
304+ ADD_INT_MACRO ( module , LOG_LPR );
305+ ADD_INT_MACRO ( module , LOG_LOCAL0 );
306+ ADD_INT_MACRO ( module , LOG_LOCAL1 );
307+ ADD_INT_MACRO ( module , LOG_LOCAL2 );
308+ ADD_INT_MACRO ( module , LOG_LOCAL3 );
309+ ADD_INT_MACRO ( module , LOG_LOCAL4 );
310+ ADD_INT_MACRO ( module , LOG_LOCAL5 );
311+ ADD_INT_MACRO ( module , LOG_LOCAL6 );
312+ ADD_INT_MACRO ( module , LOG_LOCAL7 );
330313
331314#ifndef LOG_SYSLOG
332315#define LOG_SYSLOG LOG_DAEMON
@@ -341,14 +324,35 @@ PyInit_syslog(void)
341324#define LOG_CRON LOG_DAEMON
342325#endif
343326
344- PyModule_AddIntMacro ( m , LOG_SYSLOG );
345- PyModule_AddIntMacro ( m , LOG_CRON );
346- PyModule_AddIntMacro ( m , LOG_UUCP );
347- PyModule_AddIntMacro ( m , LOG_NEWS );
327+ ADD_INT_MACRO ( module , LOG_SYSLOG );
328+ ADD_INT_MACRO ( module , LOG_CRON );
329+ ADD_INT_MACRO ( module , LOG_UUCP );
330+ ADD_INT_MACRO ( module , LOG_NEWS );
348331
349332#ifdef LOG_AUTHPRIV
350- PyModule_AddIntMacro ( m , LOG_AUTHPRIV );
333+ ADD_INT_MACRO ( module , LOG_AUTHPRIV );
351334#endif
352335
353- return m ;
336+ return 0 ;
354337}
338+
339+ static PyModuleDef_Slot syslog_slots [] = {
340+ {Py_mod_exec , syslog_exec },
341+ {0 , NULL }
342+ };
343+
344+ /* Initialization function for the module */
345+
346+ static struct PyModuleDef syslogmodule = {
347+ PyModuleDef_HEAD_INIT ,
348+ .m_name = "syslog" ,
349+ .m_size = 0 ,
350+ .m_methods = syslog_methods ,
351+ .m_slots = syslog_slots ,
352+ };
353+
354+ PyMODINIT_FUNC
355+ PyInit_syslog (void )
356+ {
357+ return PyModuleDef_Init (& syslogmodule );
358+ }
0 commit comments