summaryrefslogtreecommitdiff
path: root/Modules/_struct.c
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2008-06-11 05:26:20 +0000
committerMartin v. Löwis <martin@v.loewis.de>2008-06-11 05:26:20 +0000
commitecca9993d71841bcea26988c7aafbeb5d504d7a7 (patch)
tree33f1d23fa7bcf60f3149d179e665aaf09504c450 /Modules/_struct.c
parent4c0cd2b3a9de411cfbc9e81be5ee91506c27e661 (diff)
downloadcpython-ecca9993d71841bcea26988c7aafbeb5d504d7a7.tar.gz
Implement PEP 3121: new module initialization and finalization API.
Diffstat (limited to 'Modules/_struct.c')
-rw-r--r--Modules/_struct.c30
1 files changed, 22 insertions, 8 deletions
diff --git a/Modules/_struct.c b/Modules/_struct.c
index ae8a160434..e7cbd4bf11 100644
--- a/Modules/_struct.c
+++ b/Modules/_struct.c
@@ -2087,28 +2087,41 @@ Whitespace between formats is ignored.\n\
\n\
The variable struct.error is an exception raised on errors.\n");
+
+static struct PyModuleDef _structmodule = {
+ PyModuleDef_HEAD_INIT,
+ "_struct",
+ module_doc,
+ -1,
+ module_functions,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
PyMODINIT_FUNC
-init_struct(void)
+PyInit__struct(void)
{
PyObject *ver, *m;
ver = PyBytes_FromString("0.2");
if (ver == NULL)
- return;
+ return NULL;
- m = Py_InitModule3("_struct", module_functions, module_doc);
+ m = PyModule_Create(&_structmodule);
if (m == NULL)
- return;
+ return NULL;
Py_TYPE(&PyStructType) = &PyType_Type;
if (PyType_Ready(&PyStructType) < 0)
- return;
+ return NULL;
#ifdef PY_STRUCT_OVERFLOW_MASKING
if (pyint_zero == NULL) {
pyint_zero = PyLong_FromLong(0);
if (pyint_zero == NULL)
- return;
+ return NULL;
}
if (pylong_ulong_mask == NULL) {
#if (SIZEOF_LONG == 4)
@@ -2117,7 +2130,7 @@ init_struct(void)
pylong_ulong_mask = PyLong_FromString("FFFFFFFFFFFFFFFF", NULL, 16);
#endif
if (pylong_ulong_mask == NULL)
- return;
+ return NULL;
}
#else
@@ -2168,7 +2181,7 @@ init_struct(void)
if (StructError == NULL) {
StructError = PyErr_NewException("struct.error", NULL, NULL);
if (StructError == NULL)
- return;
+ return NULL;
}
Py_INCREF(StructError);
@@ -2186,5 +2199,6 @@ init_struct(void)
#ifdef PY_STRUCT_FLOAT_COERCE
PyModule_AddIntConstant(m, "_PY_STRUCT_FLOAT_COERCE", 1);
#endif
+ return m;
}