Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 92a98ed

Browse filesBrowse files
authored
bpo-1635741: Port syslog module to multiphase initialization (GH-19907)
1 parent 9d74658 commit 92a98ed
Copy full SHA for 92a98ed

File tree

2 files changed

+64
-59
lines changed
Filter options

2 files changed

+64
-59
lines changed
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Port :mod:`syslog` to multiphase initialization (:pep:`489`).

‎Modules/syslogmodule.c

Copy file name to clipboardExpand all lines: Modules/syslogmodule.c
+63-59Lines changed: 63 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.