[Py3] Fix C extension: use Unicode/Long.
Replaces String(Bytes) and Int.
This commit is contained in:
		 Raphaël Barrois
					Raphaël Barrois
				
			
				
					committed by
					
						 Christian Heimes
						Christian Heimes
					
				
			
			
				
	
			
			
			 Christian Heimes
						Christian Heimes
					
				
			
						parent
						
							5248df94d3
						
					
				
				
					commit
					9fa6cd4168
				
			| @@ -105,7 +105,7 @@ Tuple_to_LDAPMod( PyObject* tup, int no_op ) | |||||||
| { | { | ||||||
|     int op; |     int op; | ||||||
|     char *type; |     char *type; | ||||||
|     PyObject *list, *item; |     PyObject *list, *item, *bytes; | ||||||
|     LDAPMod *lm = NULL; |     LDAPMod *lm = NULL; | ||||||
|     Py_ssize_t i, len, nstrs; |     Py_ssize_t i, len, nstrs; | ||||||
|  |  | ||||||
| @@ -139,7 +139,7 @@ Tuple_to_LDAPMod( PyObject* tup, int no_op ) | |||||||
|  |  | ||||||
|     if (list == Py_None) { |     if (list == Py_None) { | ||||||
|         /* None indicates a NULL mod_bvals */ |         /* None indicates a NULL mod_bvals */ | ||||||
|     } else if (PyString_Check(list)) { |     } else if (PyUnicode_Check(list)) { | ||||||
|         /* Single string is a singleton list */ |         /* Single string is a singleton list */ | ||||||
|         lm->mod_bvalues = PyMem_NEW(struct berval *, 2); |         lm->mod_bvalues = PyMem_NEW(struct berval *, 2); | ||||||
|         if (lm->mod_bvalues == NULL) |         if (lm->mod_bvalues == NULL) | ||||||
| @@ -147,9 +147,10 @@ Tuple_to_LDAPMod( PyObject* tup, int no_op ) | |||||||
|         lm->mod_bvalues[0] = PyMem_NEW(struct berval, 1); |         lm->mod_bvalues[0] = PyMem_NEW(struct berval, 1); | ||||||
|         if (lm->mod_bvalues[0] == NULL) |         if (lm->mod_bvalues[0] == NULL) | ||||||
|             goto nomem; |             goto nomem; | ||||||
|  |         bytes = PyUnicode_AsUTF8String(list); | ||||||
|         lm->mod_bvalues[1] = NULL; |         lm->mod_bvalues[1] = NULL; | ||||||
|         lm->mod_bvalues[0]->bv_len = PyString_Size(list); |         lm->mod_bvalues[0]->bv_len = PyBytes_Size(bytes); | ||||||
|         lm->mod_bvalues[0]->bv_val = PyString_AsString(list); |         lm->mod_bvalues[0]->bv_val = PyBytes_AsString(bytes); | ||||||
|     } else if (PySequence_Check(list)) { |     } else if (PySequence_Check(list)) { | ||||||
|         nstrs = PySequence_Length(list); |         nstrs = PySequence_Length(list); | ||||||
|         lm->mod_bvalues = PyMem_NEW(struct berval *, nstrs + 1); |         lm->mod_bvalues = PyMem_NEW(struct berval *, nstrs + 1); | ||||||
| @@ -163,14 +164,15 @@ Tuple_to_LDAPMod( PyObject* tup, int no_op ) | |||||||
|           item = PySequence_GetItem(list, i); |           item = PySequence_GetItem(list, i); | ||||||
|           if (item == NULL) |           if (item == NULL) | ||||||
|               goto error; |               goto error; | ||||||
|           if (!PyString_Check(item)) { |           if (!PyUnicode_Check(item)) { | ||||||
|               PyErr_SetObject( PyExc_TypeError, Py_BuildValue( "sO", |               PyErr_SetObject( PyExc_TypeError, Py_BuildValue( "sO", | ||||||
|                   "expected a string in the list", item)); |                   "expected a string in the list", item)); | ||||||
|               Py_DECREF(item); |               Py_DECREF(item); | ||||||
|               goto error; |               goto error; | ||||||
|           } |           } | ||||||
|           lm->mod_bvalues[i]->bv_len = PyString_Size(item); |           bytes = PyUnicode_AsUTF8String(item); | ||||||
|           lm->mod_bvalues[i]->bv_val = PyString_AsString(item); |           lm->mod_bvalues[i]->bv_len = PyBytes_Size(bytes); | ||||||
|  |           lm->mod_bvalues[i]->bv_val = PyBytes_AsString(bytes); | ||||||
|           Py_DECREF(item); |           Py_DECREF(item); | ||||||
|         } |         } | ||||||
|         if (nstrs == 0) |         if (nstrs == 0) | ||||||
| @@ -260,11 +262,11 @@ attrs_from_List( PyObject *attrlist, char***attrsp ) { | |||||||
|  |  | ||||||
|     char **attrs = NULL; |     char **attrs = NULL; | ||||||
|     Py_ssize_t i, len; |     Py_ssize_t i, len; | ||||||
|     PyObject *item; |     PyObject *item, *bytes; | ||||||
|  |  | ||||||
|     if (attrlist == Py_None) { |     if (attrlist == Py_None) { | ||||||
|         /* None means a NULL attrlist */ |         /* None means a NULL attrlist */ | ||||||
|     } else if (PyString_Check(attrlist)) { |     } else if (PyUnicode_Check(attrlist)) { | ||||||
|         /* caught by John Benninghoff <johnb@netscape.com> */ |         /* caught by John Benninghoff <johnb@netscape.com> */ | ||||||
|         PyErr_SetObject( PyExc_TypeError, Py_BuildValue("sO", |         PyErr_SetObject( PyExc_TypeError, Py_BuildValue("sO", | ||||||
|                   "expected *list* of strings, not a string", attrlist )); |                   "expected *list* of strings, not a string", attrlist )); | ||||||
| @@ -280,13 +282,14 @@ attrs_from_List( PyObject *attrlist, char***attrsp ) { | |||||||
|             item = PySequence_GetItem(attrlist, i); |             item = PySequence_GetItem(attrlist, i); | ||||||
|             if (item == NULL) |             if (item == NULL) | ||||||
|                 goto error; |                 goto error; | ||||||
|             if (!PyString_Check(item)) { |             if (!PyUnicode_Check(item)) { | ||||||
|                 PyErr_SetObject(PyExc_TypeError, Py_BuildValue("sO", |                 PyErr_SetObject(PyExc_TypeError, Py_BuildValue("sO", | ||||||
|                                 "expected string in list", item)); |                                 "expected string in list", item)); | ||||||
|                 Py_DECREF(item); |                 Py_DECREF(item); | ||||||
|                 goto error; |                 goto error; | ||||||
|             } |             } | ||||||
|             attrs[i] = PyString_AsString(item); |             bytes = PyUnicode_AsUTF8String(item); | ||||||
|  |             attrs[i] = PyBytes_AsString(bytes); | ||||||
|             Py_DECREF(item); |             Py_DECREF(item); | ||||||
|         } |         } | ||||||
|         attrs[len] = NULL; |         attrs[len] = NULL; | ||||||
| @@ -445,7 +448,7 @@ l_ldap_add_ext( LDAPObject* self, PyObject *args ) | |||||||
|     if ( ldaperror!=LDAP_SUCCESS ) |     if ( ldaperror!=LDAP_SUCCESS ) | ||||||
|         return LDAPerror( self->ldap, "ldap_add_ext" ); |         return LDAPerror( self->ldap, "ldap_add_ext" ); | ||||||
|  |  | ||||||
|     return PyInt_FromLong(msgid); |     return PyLong_FromLong(msgid); | ||||||
| } | } | ||||||
|  |  | ||||||
| /* ldap_simple_bind */ | /* ldap_simple_bind */ | ||||||
| @@ -488,7 +491,7 @@ l_ldap_simple_bind( LDAPObject* self, PyObject* args ) | |||||||
|     if ( ldaperror!=LDAP_SUCCESS ) |     if ( ldaperror!=LDAP_SUCCESS ) | ||||||
|         return LDAPerror( self->ldap, "ldap_simple_bind" ); |         return LDAPerror( self->ldap, "ldap_simple_bind" ); | ||||||
|  |  | ||||||
|     return PyInt_FromLong( msgid ); |     return PyLong_FromLong( msgid ); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -567,7 +570,7 @@ static int interaction ( unsigned flags, | |||||||
|   if (result == NULL)  |   if (result == NULL)  | ||||||
|     /*searching for a better error code */ |     /*searching for a better error code */ | ||||||
|     return LDAP_OPERATIONS_ERROR;  |     return LDAP_OPERATIONS_ERROR;  | ||||||
|   c_result = PyString_AsString(result); /*xxx Error checking?? */ |   c_result = PyBytes_AsString(result); /*xxx Error checking?? */ | ||||||
|    |    | ||||||
|   /* according to the sasl docs, we should malloc() the returned |   /* according to the sasl docs, we should malloc() the returned | ||||||
|      string only for calls where interact->id == SASL_CB_PASS, so we |      string only for calls where interact->id == SASL_CB_PASS, so we | ||||||
| @@ -715,7 +718,7 @@ l_ldap_sasl_interactive_bind_s( LDAPObject* self, PyObject* args ) | |||||||
|     /* now we extract the sasl mechanism from the SASL Object */ |     /* now we extract the sasl mechanism from the SASL Object */ | ||||||
|     mechanism = PyObject_GetAttrString(SASLObject, "mech"); |     mechanism = PyObject_GetAttrString(SASLObject, "mech"); | ||||||
|     if (mechanism == NULL) return NULL; |     if (mechanism == NULL) return NULL; | ||||||
|     c_mechanism = PyString_AsString(mechanism); |     c_mechanism = PyBytes_AsString(mechanism); | ||||||
|     Py_DECREF(mechanism); |     Py_DECREF(mechanism); | ||||||
|     mechanism = NULL; |     mechanism = NULL; | ||||||
|  |  | ||||||
| @@ -738,7 +741,7 @@ l_ldap_sasl_interactive_bind_s( LDAPObject* self, PyObject* args ) | |||||||
|  |  | ||||||
|     if (msgid != LDAP_SUCCESS) |     if (msgid != LDAP_SUCCESS) | ||||||
|         return LDAPerror( self->ldap, "ldap_sasl_interactive_bind_s" ); |         return LDAPerror( self->ldap, "ldap_sasl_interactive_bind_s" ); | ||||||
|     return PyInt_FromLong( msgid ); |     return PyLong_FromLong( msgid ); | ||||||
| } | } | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| @@ -782,7 +785,7 @@ l_ldap_cancel( LDAPObject* self, PyObject* args ) | |||||||
|     if ( ldaperror!=LDAP_SUCCESS ) |     if ( ldaperror!=LDAP_SUCCESS ) | ||||||
|         return LDAPerror( self->ldap, "ldap_cancel" ); |         return LDAPerror( self->ldap, "ldap_cancel" ); | ||||||
|  |  | ||||||
|     return PyInt_FromLong( msgid ); |     return PyLong_FromLong( msgid ); | ||||||
| } | } | ||||||
|  |  | ||||||
| #endif | #endif | ||||||
| @@ -828,7 +831,7 @@ l_ldap_compare_ext( LDAPObject* self, PyObject *args ) | |||||||
|     if ( ldaperror!=LDAP_SUCCESS ) |     if ( ldaperror!=LDAP_SUCCESS ) | ||||||
|         return LDAPerror( self->ldap, "ldap_compare_ext" ); |         return LDAPerror( self->ldap, "ldap_compare_ext" ); | ||||||
|  |  | ||||||
|     return PyInt_FromLong( msgid ); |     return PyLong_FromLong( msgid ); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -869,7 +872,7 @@ l_ldap_delete_ext( LDAPObject* self, PyObject *args ) | |||||||
|     if ( ldaperror!=LDAP_SUCCESS ) |     if ( ldaperror!=LDAP_SUCCESS ) | ||||||
|         return LDAPerror( self->ldap, "ldap_delete_ext" ); |         return LDAPerror( self->ldap, "ldap_delete_ext" ); | ||||||
|  |  | ||||||
|     return PyInt_FromLong(msgid); |     return PyLong_FromLong(msgid); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -917,7 +920,7 @@ l_ldap_modify_ext( LDAPObject* self, PyObject *args ) | |||||||
|     if ( ldaperror!=LDAP_SUCCESS ) |     if ( ldaperror!=LDAP_SUCCESS ) | ||||||
|         return LDAPerror( self->ldap, "ldap_modify_ext" ); |         return LDAPerror( self->ldap, "ldap_modify_ext" ); | ||||||
|  |  | ||||||
|     return PyInt_FromLong( msgid ); |     return PyLong_FromLong( msgid ); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -961,7 +964,7 @@ l_ldap_rename( LDAPObject* self, PyObject *args ) | |||||||
|     if ( ldaperror!=LDAP_SUCCESS ) |     if ( ldaperror!=LDAP_SUCCESS ) | ||||||
|         return LDAPerror( self->ldap, "ldap_rename" ); |         return LDAPerror( self->ldap, "ldap_rename" ); | ||||||
|  |  | ||||||
|     return PyInt_FromLong( msgid ); |     return PyLong_FromLong( msgid ); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -1156,7 +1159,7 @@ l_ldap_search_ext( LDAPObject* self, PyObject* args ) | |||||||
|     if ( ldaperror!=LDAP_SUCCESS ) |     if ( ldaperror!=LDAP_SUCCESS ) | ||||||
|         return LDAPerror( self->ldap, "ldap_search_ext" ); |         return LDAPerror( self->ldap, "ldap_search_ext" ); | ||||||
|  |  | ||||||
|     return PyInt_FromLong( msgid ); |     return PyLong_FromLong( msgid ); | ||||||
| }        | }        | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -1310,7 +1313,7 @@ l_ldap_passwd( LDAPObject* self, PyObject *args ) | |||||||
|     if ( ldaperror!=LDAP_SUCCESS ) |     if ( ldaperror!=LDAP_SUCCESS ) | ||||||
|         return LDAPerror( self->ldap, "ldap_passwd" ); |         return LDAPerror( self->ldap, "ldap_passwd" ); | ||||||
|  |  | ||||||
|     return PyInt_FromLong( msgid ); |     return PyLong_FromLong( msgid ); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -1358,7 +1361,7 @@ l_ldap_extended_operation( LDAPObject* self, PyObject *args ) | |||||||
|     if ( ldaperror!=LDAP_SUCCESS ) |     if ( ldaperror!=LDAP_SUCCESS ) | ||||||
|         return LDAPerror( self->ldap, "ldap_extended_operation" ); |         return LDAPerror( self->ldap, "ldap_extended_operation" ); | ||||||
|  |  | ||||||
|     return PyInt_FromLong( msgid ); |     return PyLong_FromLong( msgid ); | ||||||
| } | } | ||||||
|  |  | ||||||
| /* methods */ | /* methods */ | ||||||
|   | |||||||
| @@ -90,7 +90,7 @@ LDAPberval_to_object(const struct berval *bv) | |||||||
|         Py_INCREF(ret); |         Py_INCREF(ret); | ||||||
|     } |     } | ||||||
|     else { |     else { | ||||||
|         ret = PyString_FromStringAndSize(bv->bv_val, bv->bv_len); |         ret = PyUnicode_FromStringAndSize(bv->bv_val, bv->bv_len); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     return ret; |     return ret; | ||||||
|   | |||||||
| @@ -35,5 +35,12 @@ typedef int Py_ssize_t; | |||||||
| void LDAPadd_methods( PyObject*d, PyMethodDef*methods ); | void LDAPadd_methods( PyObject*d, PyMethodDef*methods ); | ||||||
| #define PyNone_Check(o) ((o) == Py_None) | #define PyNone_Check(o) ((o) == Py_None) | ||||||
|  |  | ||||||
|  | /* Py2/3 compatibility */ | ||||||
|  | #if PY_VERSION_HEX < 0x03000000 | ||||||
|  | #define PyBytes_Check PyString_Check | ||||||
|  | #define PyBytes_Size PyString_Size | ||||||
|  | #define PyBytes_AsString PyString_AsString | ||||||
|  | #endif | ||||||
|  |  | ||||||
| #endif /* __h_common_ */ | #endif /* __h_common_ */ | ||||||
|  |  | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ static PyObject* forward; | |||||||
|  |  | ||||||
| PyObject* | PyObject* | ||||||
| LDAPconstant( int val ) { | LDAPconstant( int val ) { | ||||||
|     PyObject *i = PyInt_FromLong( val ); |     PyObject *i = PyLong_FromLong( val ); | ||||||
|     PyObject *s = PyObject_GetItem( reverse, i ); |     PyObject *s = PyObject_GetItem( reverse, i ); | ||||||
|     if (s == NULL) { |     if (s == NULL) { | ||||||
|       PyErr_Clear(); |       PyErr_Clear(); | ||||||
| @@ -39,7 +39,7 @@ LDAPinit_constants( PyObject* d ) | |||||||
|  |  | ||||||
| #define add_int(d, name) \ | #define add_int(d, name) \ | ||||||
|   { \ |   { \ | ||||||
|     PyObject *i = PyInt_FromLong(LDAP_##name); \ |     PyObject *i = PyLong_FromLong(LDAP_##name); \ | ||||||
|     PyDict_SetItemString( d, #name, i ); \ |     PyDict_SetItemString( d, #name, i ); \ | ||||||
|     Py_DECREF(i); \ |     Py_DECREF(i); \ | ||||||
|   } |   } | ||||||
| @@ -92,7 +92,7 @@ LDAPinit_constants( PyObject* d ) | |||||||
|  |  | ||||||
|   /* reversibles */ |   /* reversibles */ | ||||||
|  |  | ||||||
|   zero = PyInt_FromLong( 0 ); |   zero = PyLong_FromLong( 0 ); | ||||||
|   PyDict_SetItem( reverse, zero, Py_None ); |   PyDict_SetItem( reverse, zero, Py_None ); | ||||||
|   Py_DECREF( zero ); |   Py_DECREF( zero ); | ||||||
|  |  | ||||||
| @@ -266,11 +266,11 @@ LDAPinit_constants( PyObject* d ) | |||||||
|   add_int(d,AVA_NONPRINTABLE); |   add_int(d,AVA_NONPRINTABLE); | ||||||
|    |    | ||||||
|   /*add_int(d,OPT_ON);*/ |   /*add_int(d,OPT_ON);*/ | ||||||
|   obj = PyInt_FromLong(1); |   obj = PyLong_FromLong(1); | ||||||
|   PyDict_SetItemString( d, "OPT_ON", obj ); |   PyDict_SetItemString( d, "OPT_ON", obj ); | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|   /*add_int(d,OPT_OFF);*/ |   /*add_int(d,OPT_OFF);*/ | ||||||
|   obj = PyInt_FromLong(0); |   obj = PyLong_FromLong(0); | ||||||
|   PyDict_SetItemString( d, "OPT_OFF", obj );       |   PyDict_SetItemString( d, "OPT_OFF", obj );       | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|    |    | ||||||
| @@ -283,102 +283,102 @@ LDAPinit_constants( PyObject* d ) | |||||||
|  |  | ||||||
|   /* author */ |   /* author */ | ||||||
|  |  | ||||||
|   author = PyString_FromString("python-ldap Project"); |   author = PyUnicode_FromString("python-ldap Project"); | ||||||
|   PyDict_SetItemString(d, "__author__", author); |   PyDict_SetItemString(d, "__author__", author); | ||||||
|   Py_DECREF(author); |   Py_DECREF(author); | ||||||
|  |  | ||||||
|   /* add_int(d,LIBLDAP_R); */ |   /* add_int(d,LIBLDAP_R); */ | ||||||
| #ifdef HAVE_LIBLDAP_R | #ifdef HAVE_LIBLDAP_R | ||||||
|   obj = PyInt_FromLong(1); |   obj = PyLong_FromLong(1); | ||||||
| #else | #else | ||||||
|   obj = PyInt_FromLong(0); |   obj = PyLong_FromLong(0); | ||||||
| #endif | #endif | ||||||
|   PyDict_SetItemString( d, "LIBLDAP_R", obj ); |   PyDict_SetItemString( d, "LIBLDAP_R", obj ); | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|  |  | ||||||
|   /* add_int(d,SASL); */ |   /* add_int(d,SASL); */ | ||||||
| #ifdef HAVE_SASL | #ifdef HAVE_SASL | ||||||
|   obj = PyInt_FromLong(1); |   obj = PyLong_FromLong(1); | ||||||
| #else | #else | ||||||
|   obj = PyInt_FromLong(0); |   obj = PyLong_FromLong(0); | ||||||
| #endif | #endif | ||||||
|   PyDict_SetItemString( d, "SASL_AVAIL", obj ); |   PyDict_SetItemString( d, "SASL_AVAIL", obj ); | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|  |  | ||||||
|   /* add_int(d,TLS); */ |   /* add_int(d,TLS); */ | ||||||
| #ifdef HAVE_TLS | #ifdef HAVE_TLS | ||||||
|   obj = PyInt_FromLong(1); |   obj = PyLong_FromLong(1); | ||||||
| #else | #else | ||||||
|   obj = PyInt_FromLong(0); |   obj = PyLong_FromLong(0); | ||||||
| #endif | #endif | ||||||
|   PyDict_SetItemString( d, "TLS_AVAIL", obj ); |   PyDict_SetItemString( d, "TLS_AVAIL", obj ); | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|  |  | ||||||
|   obj = PyString_FromString(LDAP_CONTROL_MANAGEDSAIT); |   obj = PyUnicode_FromString(LDAP_CONTROL_MANAGEDSAIT); | ||||||
|   PyDict_SetItemString( d, "CONTROL_MANAGEDSAIT", obj ); |   PyDict_SetItemString( d, "CONTROL_MANAGEDSAIT", obj ); | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|  |  | ||||||
|   obj = PyString_FromString(LDAP_CONTROL_PROXY_AUTHZ); |   obj = PyUnicode_FromString(LDAP_CONTROL_PROXY_AUTHZ); | ||||||
|   PyDict_SetItemString( d, "CONTROL_PROXY_AUTHZ", obj ); |   PyDict_SetItemString( d, "CONTROL_PROXY_AUTHZ", obj ); | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|  |  | ||||||
|   obj = PyString_FromString(LDAP_CONTROL_SUBENTRIES); |   obj = PyUnicode_FromString(LDAP_CONTROL_SUBENTRIES); | ||||||
|   PyDict_SetItemString( d, "CONTROL_SUBENTRIES", obj ); |   PyDict_SetItemString( d, "CONTROL_SUBENTRIES", obj ); | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|  |  | ||||||
|   obj = PyString_FromString(LDAP_CONTROL_VALUESRETURNFILTER); |   obj = PyUnicode_FromString(LDAP_CONTROL_VALUESRETURNFILTER); | ||||||
|   PyDict_SetItemString( d, "CONTROL_VALUESRETURNFILTER", obj ); |   PyDict_SetItemString( d, "CONTROL_VALUESRETURNFILTER", obj ); | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|  |  | ||||||
|   obj = PyString_FromString(LDAP_CONTROL_ASSERT); |   obj = PyUnicode_FromString(LDAP_CONTROL_ASSERT); | ||||||
|   PyDict_SetItemString( d, "CONTROL_ASSERT", obj ); |   PyDict_SetItemString( d, "CONTROL_ASSERT", obj ); | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|  |  | ||||||
|   obj = PyString_FromString(LDAP_CONTROL_PRE_READ); |   obj = PyUnicode_FromString(LDAP_CONTROL_PRE_READ); | ||||||
|   PyDict_SetItemString( d, "CONTROL_PRE_READ", obj ); |   PyDict_SetItemString( d, "CONTROL_PRE_READ", obj ); | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|  |  | ||||||
|   obj = PyString_FromString(LDAP_CONTROL_POST_READ); |   obj = PyUnicode_FromString(LDAP_CONTROL_POST_READ); | ||||||
|   PyDict_SetItemString( d, "CONTROL_POST_READ", obj ); |   PyDict_SetItemString( d, "CONTROL_POST_READ", obj ); | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|  |  | ||||||
|   obj = PyString_FromString(LDAP_CONTROL_SORTREQUEST); |   obj = PyUnicode_FromString(LDAP_CONTROL_SORTREQUEST); | ||||||
|   PyDict_SetItemString( d, "CONTROL_SORTREQUEST", obj ); |   PyDict_SetItemString( d, "CONTROL_SORTREQUEST", obj ); | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|  |  | ||||||
|   obj = PyString_FromString(LDAP_CONTROL_SORTRESPONSE); |   obj = PyUnicode_FromString(LDAP_CONTROL_SORTRESPONSE); | ||||||
|   PyDict_SetItemString( d, "CONTROL_SORTRESPONSE", obj ); |   PyDict_SetItemString( d, "CONTROL_SORTRESPONSE", obj ); | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|  |  | ||||||
|   obj = PyString_FromString(LDAP_CONTROL_PAGEDRESULTS); |   obj = PyUnicode_FromString(LDAP_CONTROL_PAGEDRESULTS); | ||||||
|   PyDict_SetItemString( d, "CONTROL_PAGEDRESULTS", obj ); |   PyDict_SetItemString( d, "CONTROL_PAGEDRESULTS", obj ); | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|  |  | ||||||
|   obj = PyString_FromString(LDAP_CONTROL_SYNC); |   obj = PyUnicode_FromString(LDAP_CONTROL_SYNC); | ||||||
|   PyDict_SetItemString( d, "CONTROL_SYNC", obj ); |   PyDict_SetItemString( d, "CONTROL_SYNC", obj ); | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|  |  | ||||||
|   obj = PyString_FromString(LDAP_CONTROL_SYNC_STATE); |   obj = PyUnicode_FromString(LDAP_CONTROL_SYNC_STATE); | ||||||
|   PyDict_SetItemString( d, "CONTROL_SYNC_STATE", obj ); |   PyDict_SetItemString( d, "CONTROL_SYNC_STATE", obj ); | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|  |  | ||||||
|   obj = PyString_FromString(LDAP_CONTROL_SYNC_DONE); |   obj = PyUnicode_FromString(LDAP_CONTROL_SYNC_DONE); | ||||||
|   PyDict_SetItemString( d, "CONTROL_SYNC_DONE", obj ); |   PyDict_SetItemString( d, "CONTROL_SYNC_DONE", obj ); | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|  |  | ||||||
|   obj = PyString_FromString(LDAP_SYNC_INFO); |   obj = PyUnicode_FromString(LDAP_SYNC_INFO); | ||||||
|   PyDict_SetItemString( d, "SYNC_INFO", obj ); |   PyDict_SetItemString( d, "SYNC_INFO", obj ); | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|  |  | ||||||
|   obj = PyString_FromString(LDAP_CONTROL_PASSWORDPOLICYREQUEST); |   obj = PyUnicode_FromString(LDAP_CONTROL_PASSWORDPOLICYREQUEST); | ||||||
|   PyDict_SetItemString( d, "CONTROL_PASSWORDPOLICYREQUEST", obj ); |   PyDict_SetItemString( d, "CONTROL_PASSWORDPOLICYREQUEST", obj ); | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|  |  | ||||||
|   obj = PyString_FromString(LDAP_CONTROL_PASSWORDPOLICYRESPONSE); |   obj = PyUnicode_FromString(LDAP_CONTROL_PASSWORDPOLICYRESPONSE); | ||||||
|   PyDict_SetItemString( d, "CONTROL_PASSWORDPOLICYRESPONSE", obj ); |   PyDict_SetItemString( d, "CONTROL_PASSWORDPOLICYRESPONSE", obj ); | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|  |  | ||||||
|   obj = PyString_FromString(LDAP_CONTROL_RELAX); |   obj = PyUnicode_FromString(LDAP_CONTROL_RELAX); | ||||||
|   PyDict_SetItemString( d, "CONTROL_RELAX", obj ); |   PyDict_SetItemString( d, "CONTROL_RELAX", obj ); | ||||||
|   Py_DECREF(obj); |   Py_DECREF(obj); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -75,7 +75,7 @@ LDAPerror( LDAP *l, char *msg ) | |||||||
|     if (info == NULL) |     if (info == NULL) | ||||||
|       return NULL; |       return NULL; | ||||||
|  |  | ||||||
|     str = PyString_FromString(ldap_err2string(errnum)); |     str = PyUnicode_FromString(ldap_err2string(errnum)); | ||||||
|     if (str) |     if (str) | ||||||
|       PyDict_SetItemString( info, "desc", str ); |       PyDict_SetItemString( info, "desc", str ); | ||||||
|     Py_XDECREF(str); |     Py_XDECREF(str); | ||||||
| @@ -83,7 +83,7 @@ LDAPerror( LDAP *l, char *msg ) | |||||||
|     if (ldap_get_option(l, LDAP_OPT_MATCHED_DN, &matched) >= 0 |     if (ldap_get_option(l, LDAP_OPT_MATCHED_DN, &matched) >= 0 | ||||||
|       && matched != NULL) { |       && matched != NULL) { | ||||||
|         if (*matched != '\0') { |         if (*matched != '\0') { | ||||||
|       str = PyString_FromString(matched); |       str = PyUnicode_FromString(matched); | ||||||
|       if (str) |       if (str) | ||||||
|           PyDict_SetItemString( info, "matched", str ); |           PyDict_SetItemString( info, "matched", str ); | ||||||
|       Py_XDECREF(str); |       Py_XDECREF(str); | ||||||
| @@ -92,14 +92,14 @@ LDAPerror( LDAP *l, char *msg ) | |||||||
|     } |     } | ||||||
|      |      | ||||||
|     if (errnum == LDAP_REFERRAL) { |     if (errnum == LDAP_REFERRAL) { | ||||||
|         str = PyString_FromString(msg); |         str = PyUnicode_FromString(msg); | ||||||
|         if (str) |         if (str) | ||||||
|       PyDict_SetItemString( info, "info", str ); |       PyDict_SetItemString( info, "info", str ); | ||||||
|         Py_XDECREF(str); |         Py_XDECREF(str); | ||||||
|     } else if (ldap_get_option(l, LDAP_OPT_ERROR_STRING, &error) >= 0 |     } else if (ldap_get_option(l, LDAP_OPT_ERROR_STRING, &error) >= 0 | ||||||
|       && error != NULL) { |       && error != NULL) { | ||||||
|         if (error != '\0') { |         if (error != '\0') { | ||||||
|       str = PyString_FromString(error); |       str = PyUnicode_FromString(error); | ||||||
|       if (str) |       if (str) | ||||||
|           PyDict_SetItemString( info, "info", str ); |           PyDict_SetItemString( info, "info", str ); | ||||||
|       Py_XDECREF(str); |       Py_XDECREF(str); | ||||||
|   | |||||||
| @@ -69,6 +69,7 @@ Tuple_to_LDAPControl( PyObject* tup ) | |||||||
|     char iscritical; |     char iscritical; | ||||||
|     struct berval berbytes; |     struct berval berbytes; | ||||||
|     PyObject *bytes; |     PyObject *bytes; | ||||||
|  |     PyObject *bytes_utf8; | ||||||
|     LDAPControl *lc = NULL; |     LDAPControl *lc = NULL; | ||||||
|     Py_ssize_t len; |     Py_ssize_t len; | ||||||
|  |  | ||||||
| @@ -103,9 +104,10 @@ Tuple_to_LDAPControl( PyObject* tup ) | |||||||
|         berbytes.bv_len = 0; |         berbytes.bv_len = 0; | ||||||
|         berbytes.bv_val = NULL; |         berbytes.bv_val = NULL; | ||||||
|     } |     } | ||||||
|     else if (PyString_Check(bytes)) { |     else if (PyUnicode_Check(bytes)) { | ||||||
|         berbytes.bv_len = PyString_Size(bytes); |         bytes_utf8 = PyUnicode_AsUTF8String(bytes); | ||||||
|         berbytes.bv_val = PyString_AsString(bytes); |         berbytes.bv_len = PyBytes_Size(bytes); | ||||||
|  |         berbytes.bv_val = PyBytes_AsString(bytes); | ||||||
|     } |     } | ||||||
|     else { |     else { | ||||||
| 	PyErr_SetObject(PyExc_TypeError, Py_BuildValue("sO", | 	PyErr_SetObject(PyExc_TypeError, Py_BuildValue("sO", | ||||||
|   | |||||||
| @@ -192,7 +192,7 @@ LDAPmessage_to_python(LDAP *ld, LDAPMessage *m, int add_ctrls, int add_intermedi | |||||||
| 	 if (refs) { | 	 if (refs) { | ||||||
| 	     Py_ssize_t i; | 	     Py_ssize_t i; | ||||||
| 	     for (i=0; refs[i] != NULL; i++) { | 	     for (i=0; refs[i] != NULL; i++) { | ||||||
| 		 PyObject *refstr = PyString_FromString(refs[i]); | 		 PyObject *refstr = PyUnicode_FromString(refs[i]); | ||||||
| 		 PyList_Append(reflist, refstr); | 		 PyList_Append(reflist, refstr); | ||||||
| 		 Py_DECREF(refstr); | 		 Py_DECREF(refstr); | ||||||
| 	     } | 	     } | ||||||
|   | |||||||
| @@ -205,7 +205,7 @@ LDAP_get_option(LDAPObject *self, int option) | |||||||
| 	    extensions = PyTuple_New(num_extensions); | 	    extensions = PyTuple_New(num_extensions); | ||||||
| 	    for (i = 0; i < num_extensions; i++) | 	    for (i = 0; i < num_extensions; i++) | ||||||
| 		PyTuple_SET_ITEM(extensions, i, | 		PyTuple_SET_ITEM(extensions, i, | ||||||
| 		    PyString_FromString(apiinfo.ldapai_extensions[i])); | 		    PyUnicode_FromString(apiinfo.ldapai_extensions[i])); | ||||||
|  |  | ||||||
| 	    /* return api info as a dictionary */ | 	    /* return api info as a dictionary */ | ||||||
| 	    v = Py_BuildValue("{s:i, s:i, s:i, s:s, s:i, s:O}", | 	    v = Py_BuildValue("{s:i, s:i, s:i, s:s, s:i, s:O}", | ||||||
| @@ -272,7 +272,7 @@ LDAP_get_option(LDAPObject *self, int option) | |||||||
| 	    if (self) LDAP_END_ALLOW_THREADS(self); | 	    if (self) LDAP_END_ALLOW_THREADS(self); | ||||||
| 	    if (res != LDAP_OPT_SUCCESS) | 	    if (res != LDAP_OPT_SUCCESS) | ||||||
| 		return option_error(res, "ldap_get_option"); | 		return option_error(res, "ldap_get_option"); | ||||||
| 	    return PyInt_FromLong(intval); | 	    return PyLong_FromLong(intval); | ||||||
|  |  | ||||||
|     case LDAP_OPT_HOST_NAME: |     case LDAP_OPT_HOST_NAME: | ||||||
|     case LDAP_OPT_URI: |     case LDAP_OPT_URI: | ||||||
| @@ -322,7 +322,7 @@ LDAP_get_option(LDAPObject *self, int option) | |||||||
| 		Py_INCREF(Py_None); | 		Py_INCREF(Py_None); | ||||||
| 		return Py_None; | 		return Py_None; | ||||||
| 	    } | 	    } | ||||||
| 	    v = PyString_FromString(strval); | 	    v = PyUnicode_FromString(strval); | ||||||
| 	    ldap_memfree(strval); | 	    ldap_memfree(strval); | ||||||
| 	    return v; | 	    return v; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -22,7 +22,7 @@ PyObject* c_string_array_to_python(char **string_array) | |||||||
|     py_list = PyList_New(count); |     py_list = PyList_New(count); | ||||||
|     count = 0; |     count = 0; | ||||||
|     for (s=string_array; *s != 0; s++){ |     for (s=string_array; *s != 0; s++){ | ||||||
|       PyList_SetItem(py_list, count, PyString_FromString(*s)); |       PyList_SetItem(py_list, count, PyUnicode_FromString(*s)); | ||||||
|       count++; |       count++; | ||||||
|     } |     } | ||||||
|   } else py_list=PyList_New(0); |   } else py_list=PyList_New(0); | ||||||
| @@ -52,7 +52,7 @@ PyObject* schema_extension_to_python(LDAPSchemaExtensionItem **extensions) | |||||||
|     for (e = extensions; *e !=0; e++) { |     for (e = extensions; *e !=0; e++) { | ||||||
|       item_tuple = PyTuple_New(2); |       item_tuple = PyTuple_New(2); | ||||||
|       PyTuple_SetItem(item_tuple, 0,  |       PyTuple_SetItem(item_tuple, 0,  | ||||||
| 		      PyString_FromString((*e)->lsei_name)); | 		      PyUnicode_FromString((*e)->lsei_name)); | ||||||
|       PyTuple_SetItem(item_tuple, 1,  |       PyTuple_SetItem(item_tuple, 1,  | ||||||
| 		      c_string_array_to_python((*e)->lsei_values)); | 		      c_string_array_to_python((*e)->lsei_values)); | ||||||
|       PyList_SetItem(py_list, count, item_tuple); |       PyList_SetItem(py_list, count, item_tuple); | ||||||
| @@ -89,7 +89,7 @@ l_ldap_str2objectclass(PyObject* self, PyObject *args) | |||||||
| 	return NULL; | 	return NULL; | ||||||
|   o = ldap_str2objectclass( oc_string, &ret, &errp, flag); |   o = ldap_str2objectclass( oc_string, &ret, &errp, flag); | ||||||
|   if (ret) { |   if (ret) { | ||||||
|     py_ret = PyInt_FromLong(ret); |     py_ret = PyLong_FromLong(ret); | ||||||
|     return py_ret; |     return py_ret; | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @@ -98,16 +98,16 @@ l_ldap_str2objectclass(PyObject* self, PyObject *args) | |||||||
|   oc_at_oids_must = c_string_array_to_python(o->oc_at_oids_must); |   oc_at_oids_must = c_string_array_to_python(o->oc_at_oids_must); | ||||||
|   oc_at_oids_may  = c_string_array_to_python(o->oc_at_oids_may); |   oc_at_oids_may  = c_string_array_to_python(o->oc_at_oids_may); | ||||||
|   py_ret = PyList_New(9); |   py_ret = PyList_New(9); | ||||||
|   PyList_SetItem(py_ret, 0, PyString_FromString(o->oc_oid)); |   PyList_SetItem(py_ret, 0, PyUnicode_FromString(o->oc_oid)); | ||||||
|   PyList_SetItem(py_ret, 1, oc_names); |   PyList_SetItem(py_ret, 1, oc_names); | ||||||
|   if (o->oc_desc) { |   if (o->oc_desc) { | ||||||
|     PyList_SetItem(py_ret, 2, PyString_FromString(o->oc_desc));  |     PyList_SetItem(py_ret, 2, PyUnicode_FromString(o->oc_desc));  | ||||||
|   } else { |   } else { | ||||||
|     PyList_SetItem(py_ret, 2, PyString_FromString("")); |     PyList_SetItem(py_ret, 2, PyUnicode_FromString("")); | ||||||
|   } |   } | ||||||
|   PyList_SetItem(py_ret, 3, PyInt_FromLong(o->oc_obsolete)); |   PyList_SetItem(py_ret, 3, PyLong_FromLong(o->oc_obsolete)); | ||||||
|   PyList_SetItem(py_ret, 4, oc_sup_oids); |   PyList_SetItem(py_ret, 4, oc_sup_oids); | ||||||
|   PyList_SetItem(py_ret, 5, PyInt_FromLong(o->oc_kind)); |   PyList_SetItem(py_ret, 5, PyLong_FromLong(o->oc_kind)); | ||||||
|   PyList_SetItem(py_ret, 6, oc_at_oids_must); |   PyList_SetItem(py_ret, 6, oc_at_oids_must); | ||||||
|   PyList_SetItem(py_ret, 7, oc_at_oids_may); |   PyList_SetItem(py_ret, 7, oc_at_oids_may); | ||||||
|  |  | ||||||
| @@ -136,50 +136,50 @@ l_ldap_str2attributetype(PyObject* self, PyObject *args) | |||||||
|     return NULL; |     return NULL; | ||||||
|   a = ldap_str2attributetype( at_string, &ret, &errp, flag); |   a = ldap_str2attributetype( at_string, &ret, &errp, flag); | ||||||
|   if (ret) { |   if (ret) { | ||||||
|     py_ret = PyInt_FromLong(ret); |     py_ret = PyLong_FromLong(ret); | ||||||
|     return py_ret; |     return py_ret; | ||||||
|   } |   } | ||||||
|    |    | ||||||
|   py_ret = PyList_New(15); |   py_ret = PyList_New(15); | ||||||
|   PyList_SetItem(py_ret, 0, PyString_FromString(a->at_oid)); |   PyList_SetItem(py_ret, 0, PyUnicode_FromString(a->at_oid)); | ||||||
|   at_names = c_string_array_to_python(a->at_names); |   at_names = c_string_array_to_python(a->at_names); | ||||||
|   PyList_SetItem(py_ret, 1, at_names); |   PyList_SetItem(py_ret, 1, at_names); | ||||||
|   if (a->at_desc) { |   if (a->at_desc) { | ||||||
|     PyList_SetItem(py_ret, 2, PyString_FromString(a->at_desc));  |     PyList_SetItem(py_ret, 2, PyUnicode_FromString(a->at_desc));  | ||||||
|   } else { |   } else { | ||||||
|     PyList_SetItem(py_ret, 2, PyString_FromString("")); |     PyList_SetItem(py_ret, 2, PyUnicode_FromString("")); | ||||||
|   } |   } | ||||||
|   PyList_SetItem(py_ret, 3, PyInt_FromLong(a->at_obsolete)); |   PyList_SetItem(py_ret, 3, PyLong_FromLong(a->at_obsolete)); | ||||||
|   if (a->at_sup_oid) { |   if (a->at_sup_oid) { | ||||||
|     PyList_SetItem(py_ret, 4, PyString_FromString(a->at_sup_oid));  |     PyList_SetItem(py_ret, 4, PyUnicode_FromString(a->at_sup_oid));  | ||||||
|   } else { |   } else { | ||||||
|     PyList_SetItem(py_ret, 4, PyString_FromString("")); |     PyList_SetItem(py_ret, 4, PyUnicode_FromString("")); | ||||||
|   } |   } | ||||||
|   if (a->at_equality_oid) { |   if (a->at_equality_oid) { | ||||||
|     PyList_SetItem(py_ret, 5, PyString_FromString(a->at_equality_oid));  |     PyList_SetItem(py_ret, 5, PyUnicode_FromString(a->at_equality_oid));  | ||||||
|   } else { |   } else { | ||||||
|     PyList_SetItem(py_ret, 5, PyString_FromString("")); |     PyList_SetItem(py_ret, 5, PyUnicode_FromString("")); | ||||||
|   } |   } | ||||||
|   if (a->at_ordering_oid) { |   if (a->at_ordering_oid) { | ||||||
|     PyList_SetItem(py_ret, 6, PyString_FromString(a->at_ordering_oid));  |     PyList_SetItem(py_ret, 6, PyUnicode_FromString(a->at_ordering_oid));  | ||||||
|   } else { |   } else { | ||||||
|     PyList_SetItem(py_ret, 6, PyString_FromString("")); |     PyList_SetItem(py_ret, 6, PyUnicode_FromString("")); | ||||||
|   } |   } | ||||||
|   if (a->at_substr_oid) { |   if (a->at_substr_oid) { | ||||||
|     PyList_SetItem(py_ret, 7, PyString_FromString(a->at_substr_oid));  |     PyList_SetItem(py_ret, 7, PyUnicode_FromString(a->at_substr_oid));  | ||||||
|   } else { |   } else { | ||||||
|     PyList_SetItem(py_ret, 7, PyString_FromString("")); |     PyList_SetItem(py_ret, 7, PyUnicode_FromString("")); | ||||||
|   } |   } | ||||||
|   if (a->at_syntax_oid) { |   if (a->at_syntax_oid) { | ||||||
|     PyList_SetItem(py_ret, 8, PyString_FromString(a->at_syntax_oid));  |     PyList_SetItem(py_ret, 8, PyUnicode_FromString(a->at_syntax_oid));  | ||||||
|   } else { |   } else { | ||||||
|     PyList_SetItem(py_ret, 8, PyString_FromString("")); |     PyList_SetItem(py_ret, 8, PyUnicode_FromString("")); | ||||||
|   } |   } | ||||||
|   PyList_SetItem(py_ret, 9, PyInt_FromLong(a->at_syntax_len)); |   PyList_SetItem(py_ret, 9, PyLong_FromLong(a->at_syntax_len)); | ||||||
|   PyList_SetItem(py_ret,10, PyInt_FromLong(a->at_single_value)); |   PyList_SetItem(py_ret,10, PyLong_FromLong(a->at_single_value)); | ||||||
|   PyList_SetItem(py_ret,11, PyInt_FromLong(a->at_collective)); |   PyList_SetItem(py_ret,11, PyLong_FromLong(a->at_collective)); | ||||||
|   PyList_SetItem(py_ret,12, PyInt_FromLong(a->at_no_user_mod)); |   PyList_SetItem(py_ret,12, PyLong_FromLong(a->at_no_user_mod)); | ||||||
|   PyList_SetItem(py_ret,13, PyInt_FromLong(a->at_usage)); |   PyList_SetItem(py_ret,13, PyLong_FromLong(a->at_usage)); | ||||||
|    |    | ||||||
|   PyList_SetItem(py_ret, 14,  |   PyList_SetItem(py_ret, 14,  | ||||||
| 		 schema_extension_to_python(a->at_extensions)); | 		 schema_extension_to_python(a->at_extensions)); | ||||||
| @@ -204,17 +204,17 @@ l_ldap_str2syntax(PyObject* self, PyObject *args) | |||||||
|     return NULL; |     return NULL; | ||||||
|   s = ldap_str2syntax(syn_string, &ret, &errp, flag); |   s = ldap_str2syntax(syn_string, &ret, &errp, flag); | ||||||
|   if (ret) { |   if (ret) { | ||||||
|     py_ret = PyInt_FromLong(ret); |     py_ret = PyLong_FromLong(ret); | ||||||
|     return py_ret; |     return py_ret; | ||||||
|   } |   } | ||||||
|   py_ret = PyList_New(4); |   py_ret = PyList_New(4); | ||||||
|   PyList_SetItem(py_ret, 0, PyString_FromString(s->syn_oid)); |   PyList_SetItem(py_ret, 0, PyUnicode_FromString(s->syn_oid)); | ||||||
|   syn_names = c_string_array_to_python(s->syn_names); |   syn_names = c_string_array_to_python(s->syn_names); | ||||||
|   PyList_SetItem(py_ret, 1, syn_names); |   PyList_SetItem(py_ret, 1, syn_names); | ||||||
|   if (s->syn_desc) { |   if (s->syn_desc) { | ||||||
|     PyList_SetItem(py_ret, 2, PyString_FromString(s->syn_desc));  |     PyList_SetItem(py_ret, 2, PyUnicode_FromString(s->syn_desc));  | ||||||
|   } else { |   } else { | ||||||
|     PyList_SetItem(py_ret, 2, PyString_FromString("")); |     PyList_SetItem(py_ret, 2, PyUnicode_FromString("")); | ||||||
|   } |   } | ||||||
|   PyList_SetItem(py_ret, 3,  |   PyList_SetItem(py_ret, 3,  | ||||||
| 		 schema_extension_to_python(s->syn_extensions)); | 		 schema_extension_to_python(s->syn_extensions)); | ||||||
| @@ -238,23 +238,23 @@ l_ldap_str2matchingrule(PyObject* self, PyObject *args) | |||||||
|     return NULL; |     return NULL; | ||||||
|   m = ldap_str2matchingrule(mr_string, &ret, &errp, flag); |   m = ldap_str2matchingrule(mr_string, &ret, &errp, flag); | ||||||
|   if (ret) { |   if (ret) { | ||||||
|     py_ret = PyInt_FromLong(ret); |     py_ret = PyLong_FromLong(ret); | ||||||
|     return py_ret; |     return py_ret; | ||||||
|   } |   } | ||||||
|   py_ret = PyList_New(6); |   py_ret = PyList_New(6); | ||||||
|   PyList_SetItem(py_ret, 0, PyString_FromString(m->mr_oid)); |   PyList_SetItem(py_ret, 0, PyUnicode_FromString(m->mr_oid)); | ||||||
|   mr_names = c_string_array_to_python(m->mr_names); |   mr_names = c_string_array_to_python(m->mr_names); | ||||||
|   PyList_SetItem(py_ret, 1, mr_names); |   PyList_SetItem(py_ret, 1, mr_names); | ||||||
|   if (m->mr_desc) { |   if (m->mr_desc) { | ||||||
|     PyList_SetItem(py_ret, 2, PyString_FromString(m->mr_desc));  |     PyList_SetItem(py_ret, 2, PyUnicode_FromString(m->mr_desc));  | ||||||
|   } else { |   } else { | ||||||
|     PyList_SetItem(py_ret, 2, PyString_FromString("")); |     PyList_SetItem(py_ret, 2, PyUnicode_FromString("")); | ||||||
|   } |   } | ||||||
|   PyList_SetItem(py_ret, 3, PyInt_FromLong(m->mr_obsolete)); |   PyList_SetItem(py_ret, 3, PyLong_FromLong(m->mr_obsolete)); | ||||||
|   if (m->mr_syntax_oid) { |   if (m->mr_syntax_oid) { | ||||||
|     PyList_SetItem(py_ret, 4, PyString_FromString(m->mr_syntax_oid));  |     PyList_SetItem(py_ret, 4, PyUnicode_FromString(m->mr_syntax_oid));  | ||||||
|   } else { |   } else { | ||||||
|     PyList_SetItem(py_ret, 4, PyString_FromString("")); |     PyList_SetItem(py_ret, 4, PyUnicode_FromString("")); | ||||||
|   }   |   }   | ||||||
|   PyList_SetItem(py_ret, 5,  |   PyList_SetItem(py_ret, 5,  | ||||||
| 		 schema_extension_to_python(m->mr_extensions)); | 		 schema_extension_to_python(m->mr_extensions)); | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ LDAPinit_version( PyObject* d ) | |||||||
| { | { | ||||||
| 	PyObject *version; | 	PyObject *version; | ||||||
|  |  | ||||||
| 	version = PyString_FromString(version_str); | 	version = PyUnicode_FromString(version_str); | ||||||
| 	PyDict_SetItemString( d, "__version__", version ); | 	PyDict_SetItemString( d, "__version__", version ); | ||||||
| 	Py_DECREF(version); | 	Py_DECREF(version); | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user