diff --git a/src/calibre/library/sqlite_custom.c b/src/calibre/library/sqlite_custom.c index 114374103b..9ed40a2b61 100644 --- a/src/calibre/library/sqlite_custom.c +++ b/src/calibre/library/sqlite_custom.c @@ -273,22 +273,17 @@ static PyMethodDef sqlite_custom_methods[] = { {NULL, NULL, 0, NULL} }; -static struct PyModuleDef sqlite_custom_module = { - /* m_base */ PyModuleDef_HEAD_INIT, - /* m_name */ "sqlite_custom", - /* m_doc */ sqlite_custom_doc, - /* m_size */ -1, - /* m_methods */ sqlite_custom_methods, - /* m_slots */ 0, - /* m_traverse */ 0, - /* m_clear */ 0, - /* m_free */ 0, +static int +exec_module(PyObject *module) { return 0; } + +static PyModuleDef_Slot slots[] = { {Py_mod_exec, exec_module}, {0, NULL} }; + +static struct PyModuleDef module_def = { + .m_base = PyModuleDef_HEAD_INIT, + .m_name = "sqlite_custom", + .m_doc = sqlite_custom_doc, + .m_methods = sqlite_custom_methods, + .m_slots = slots, }; -CALIBRE_MODINIT_FUNC PyInit_sqlite_custom(void) { - PyObject *m; - m = PyModule_Create(&sqlite_custom_module); - if (m == NULL) { - return NULL; - } - return m; -} + +CALIBRE_MODINIT_FUNC PyInit_sqlite_custom(void) { return PyModuleDef_Init(&module_def); } diff --git a/src/calibre/utils/fonts/freetype.cpp b/src/calibre/utils/fonts/freetype.cpp index 7c8eca408a..afaa65371f 100644 --- a/src/calibre/utils/fonts/freetype.cpp +++ b/src/calibre/utils/fonts/freetype.cpp @@ -288,47 +288,34 @@ static PyTypeObject FreeTypeType = { // {{{ static char freetype_doc[] = "Interface to freetype"; -static PyMethodDef freetype_methods[] = { - {NULL, NULL, 0, NULL} -}; - -static struct PyModuleDef freetype_module = { - /* m_base */ PyModuleDef_HEAD_INIT, - /* m_name */ "freetype", - /* m_doc */ freetype_doc, - /* m_size */ -1, - /* m_methods */ freetype_methods, - /* m_slots */ 0, - /* m_traverse */ 0, - /* m_clear */ 0, - /* m_free */ 0, -}; -CALIBRE_MODINIT_FUNC PyInit_freetype(void) { - PyObject *m; - +static int +exec_module(PyObject *m) { FreeTypeType.tp_new = PyType_GenericNew; - if (PyType_Ready(&FreeTypeType) < 0) { - return NULL; - } + if (PyType_Ready(&FreeTypeType) < 0) return -1; FaceType.tp_new = PyType_GenericNew; - if (PyType_Ready(&FaceType) < 0) { - return NULL; - } - - m = PyModule_Create(&freetype_module); - if (m == NULL) { - return NULL; - } + if (PyType_Ready(&FaceType) < 0) return -1; FreeTypeError = PyErr_NewException((char*)"freetype.FreeTypeError", NULL, NULL); - if (FreeTypeError == NULL) { - return NULL; - } + if (FreeTypeError == NULL) return -1; PyModule_AddObject(m, "FreeTypeError", FreeTypeError); Py_INCREF(&FreeTypeType); PyModule_AddObject(m, "FreeType", (PyObject *)&FreeTypeType); + Py_INCREF(&FaceType); PyModule_AddObject(m, "Face", (PyObject *)&FaceType); - return m; + return 0; +} + +static PyModuleDef_Slot slots[] = { {Py_mod_exec, (void*)exec_module}, {0, NULL} }; + +static struct PyModuleDef module_def = {0}; + +CALIBRE_MODINIT_FUNC PyInit_freetype(void) { + + module_def.m_base = PyModuleDef_HEAD_INIT; + module_def.m_name = "freetype"; + module_def.m_doc = freetype_doc; + module_def.m_slots = slots; + return PyModuleDef_Init(&module_def); } diff --git a/src/calibre/utils/lzx/lzxmodule.c b/src/calibre/utils/lzx/lzxmodule.c index fd19975674..6b8910e563 100644 --- a/src/calibre/utils/lzx/lzxmodule.c +++ b/src/calibre/utils/lzx/lzxmodule.c @@ -203,27 +203,9 @@ static PyMethodDef lzx_methods[] = { { NULL } }; -static struct PyModuleDef lzx_module = { - /* m_base */ PyModuleDef_HEAD_INIT, - /* m_name */ "lzx", - /* m_doc */ lzx_doc, - /* m_size */ -1, - /* m_methods */ lzx_methods, - /* m_slots */ 0, - /* m_traverse */ 0, - /* m_clear */ 0, - /* m_free */ 0, -}; - -CALIBRE_MODINIT_FUNC PyInit_lzx(void) { - if (PyType_Ready(&CompressorType) < 0) { - return NULL; - } - - PyObject *m = PyModule_Create(&lzx_module); - if (m == NULL) { - return NULL; - } +static int +exec_module(PyObject *m) { + if (PyType_Ready(&CompressorType) < 0) return -1; LZXError = PyErr_NewException("lzx.LZXError", NULL, NULL); Py_INCREF(LZXError); @@ -232,5 +214,17 @@ CALIBRE_MODINIT_FUNC PyInit_lzx(void) { Py_INCREF(&CompressorType); PyModule_AddObject(m, "Compressor", (PyObject *)&CompressorType); - return m; + return 0; } + +static PyModuleDef_Slot slots[] = { {Py_mod_exec, exec_module}, {0, NULL} }; + +static struct PyModuleDef module_def = { + .m_base = PyModuleDef_HEAD_INIT, + .m_name = "lzx", + .m_doc = lzx_doc, + .m_methods = lzx_methods, + .m_slots = slots, +}; + +CALIBRE_MODINIT_FUNC PyInit_lzx(void) { return PyModuleDef_Init(&module_def); } diff --git a/src/calibre/utils/msdes/msdesmodule.c b/src/calibre/utils/msdes/msdesmodule.c index 01fd995011..dd9145ac95 100644 --- a/src/calibre/utils/msdes/msdesmodule.c +++ b/src/calibre/utils/msdes/msdesmodule.c @@ -77,29 +77,25 @@ static PyMethodDef msdes_methods[] = { { NULL, NULL } }; -static struct PyModuleDef msdes_module = { - /* m_base */ PyModuleDef_HEAD_INIT, - /* m_name */ "msdes", - /* m_doc */ msdes_doc, - /* m_size */ -1, - /* m_methods */ msdes_methods, - /* m_slots */ 0, - /* m_traverse */ 0, - /* m_clear */ 0, - /* m_free */ 0, -}; - -CALIBRE_MODINIT_FUNC PyInit_msdes(void) { - PyObject *m = PyModule_Create(&msdes_module); - if (m == NULL) { - return NULL; - } - +static int +exec_module(PyObject *m) { MsDesError = PyErr_NewException("msdes.MsDesError", NULL, NULL); Py_INCREF(MsDesError); PyModule_AddObject(m, "MsDesError", MsDesError); PyModule_AddObject(m, "EN0", PyLong_FromLong(EN0)); PyModule_AddObject(m, "DE1", PyLong_FromLong(DE1)); - return m; + return 0; } + +static PyModuleDef_Slot slots[] = { {Py_mod_exec, exec_module}, {0, NULL} }; + +static struct PyModuleDef module_def = { + .m_base = PyModuleDef_HEAD_INIT, + .m_name = "msdes", + .m_doc = msdes_doc, + .m_methods = msdes_methods, + .m_slots = slots, +}; + +CALIBRE_MODINIT_FUNC PyInit_msdes(void) { return PyModuleDef_Init(&module_def); }