8
8
9
9
#include "LDAPObject.h"
10
10
11
+ #if PY_MAJOR_VERSION >= 3
12
+ PyMODINIT_FUNC PyInit__ldap (void );
13
+ #else
14
+ PyMODINIT_FUNC init_ldap (void );
15
+ #endif
16
+
11
17
#define _STR (x ) #x
12
18
#define STR (x ) _STR(x)
13
19
14
20
static char version_str [] = STR (LDAPMODULE_VERSION );
15
21
static char author_str [] = STR (LDAPMODULE_AUTHOR );
16
22
static char license_str [] = STR (LDAPMODULE_LICENSE );
17
23
18
- void
19
- LDAPinit_pkginfo ( PyObject * d )
24
+ static void
25
+ init_pkginfo ( PyObject * m )
20
26
{
21
- PyObject * version ;
22
- PyObject * author ;
23
- PyObject * license ;
24
-
25
- version = PyString_FromString (version_str );
26
- author = PyString_FromString (author_str );
27
- license = PyString_FromString (license_str );
28
-
29
- PyDict_SetItemString ( d , "__version__" , version );
30
- PyDict_SetItemString (d , "__author__" , author );
31
- PyDict_SetItemString (d , "__license__" , license );
32
-
33
- Py_DECREF (version );
34
- Py_DECREF (author );
35
- Py_DECREF (license );
27
+ PyModule_AddStringConstant (m , "__version__" , version_str );
28
+ PyModule_AddStringConstant (m , "__author__" , author_str );
29
+ PyModule_AddStringConstant (m , "__license__" , license_str );
36
30
}
37
31
38
- DL_EXPORT (void ) init_ldap (void );
39
-
40
32
/* dummy module methods */
41
-
42
33
static PyMethodDef methods [] = {
43
34
{ NULL , NULL }
44
35
};
45
36
46
37
/* module initialisation */
47
38
48
- DL_EXPORT (void )
49
- init_ldap ()
39
+
40
+ /* Common initialization code */
41
+ PyObject * init_ldap_module ()
50
42
{
51
43
PyObject * m , * d ;
52
44
@@ -55,12 +47,26 @@ init_ldap()
55
47
#endif
56
48
57
49
/* Create the module and add the functions */
50
+ #if PY_MAJOR_VERSION >= 3
51
+ static struct PyModuleDef ldap_moduledef = {
52
+ PyModuleDef_HEAD_INIT ,
53
+ "_ldap" , /* m_name */
54
+ "" , /* m_doc */
55
+ -1 , /* m_size */
56
+ methods , /* m_methods */
57
+ };
58
+ m = PyModule_Create (& ldap_moduledef );
59
+ #else
58
60
m = Py_InitModule ("_ldap" , methods );
61
+ #endif
62
+
63
+ PyType_Ready (& LDAP_Type );
59
64
60
65
/* Add some symbolic constants to the module */
61
66
d = PyModule_GetDict (m );
62
67
63
- LDAPinit_pkginfo (d );
68
+ init_pkginfo (m );
69
+
64
70
LDAPinit_constants (d );
65
71
LDAPinit_errors (d );
66
72
LDAPinit_functions (d );
@@ -69,4 +75,17 @@ init_ldap()
69
75
/* Check for errors */
70
76
if (PyErr_Occurred ())
71
77
Py_FatalError ("can't initialize module _ldap" );
78
+
79
+ return m ;
80
+ }
81
+
82
+
83
+ #if PY_MAJOR_VERSION < 3
84
+ PyMODINIT_FUNC init_ldap () {
85
+ init_ldap_module ();
72
86
}
87
+ #else
88
+ PyMODINIT_FUNC PyInit__ldap () {
89
+ return init_ldap_module ();
90
+ }
91
+ #endif
0 commit comments