Author: jelmer Date: 2007-12-24 11:02:45 +0000 (Mon, 24 Dec 2007) New Revision: 26584
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=26584 Log: Fix exception handling in ldb constructor. Modified: branches/SAMBA_4_0/ branches/SAMBA_4_0/source/lib/ldb/ldb.i branches/SAMBA_4_0/source/lib/ldb/ldb.py branches/SAMBA_4_0/source/lib/ldb/ldb_wrap.c Changeset: Property changes on: branches/SAMBA_4_0 ___________________________________________________________________ Name: bzr:revision-info ...skipped... Name: bzr:revision-id:v3-trunk0 ...skipped... Modified: branches/SAMBA_4_0/source/lib/ldb/ldb.i =================================================================== --- branches/SAMBA_4_0/source/lib/ldb/ldb.i 2007-12-24 11:02:32 UTC (rev 26583) +++ branches/SAMBA_4_0/source/lib/ldb/ldb.i 2007-12-24 11:02:45 UTC (rev 26584) @@ -463,26 +463,8 @@ /* Top-level ldb operations */ typedef struct ldb_context { %extend { - ldb(const char *url=NULL, unsigned int flags = 0, - const char *options[] = NULL) - { - ldb *ldb_ctx = ldb_init(NULL); - - if (url != NULL) { - int ret; + ldb(void) { return ldb_init(NULL); } - ret = ldb_connect(ldb_ctx, url, flags, options); - if (ret != LDB_SUCCESS) - SWIG_exception(SWIG_ValueError, ldb_errstring(ldb_ctx)); - } - - return ldb_ctx; - -fail: - talloc_free(ldb_ctx); - return NULL; - } - ldb_error connect(const char *url, unsigned int flags = 0, const char *options[] = NULL); @@ -576,6 +558,13 @@ #endif } + %pythoncode { + def __init__(self, url=None, flags=0, options=None): + _ldb.Ldb_swiginit(self,_ldb.new_Ldb()) + if url is not None: + self.connect(url, flags, options) + } + } ldb; %typemap(in,noblock=1) struct ldb_dn *; Modified: branches/SAMBA_4_0/source/lib/ldb/ldb.py =================================================================== --- branches/SAMBA_4_0/source/lib/ldb/ldb.py 2007-12-24 11:02:32 UTC (rev 26583) +++ branches/SAMBA_4_0/source/lib/ldb/ldb.py 2007-12-24 11:02:45 UTC (rev 26584) @@ -176,6 +176,11 @@ def __init__(self, *args, **kwargs): _ldb.Ldb_swiginit(self,_ldb.new_Ldb(*args, **kwargs)) __swig_destroy__ = _ldb.delete_Ldb + def __init__(self, url=None, flags=0, options=None): + _ldb.Ldb_swiginit(self,_ldb.new_Ldb()) + if url is not None: + self.connect(url, flags, options) + Ldb.connect = new_instancemethod(_ldb.Ldb_connect,None,Ldb) Ldb.search = new_instancemethod(_ldb.Ldb_search,None,Ldb) Ldb.delete = new_instancemethod(_ldb.Ldb_delete,None,Ldb) Modified: branches/SAMBA_4_0/source/lib/ldb/ldb_wrap.c =================================================================== --- branches/SAMBA_4_0/source/lib/ldb/ldb_wrap.c 2007-12-24 11:02:32 UTC (rev 26583) +++ branches/SAMBA_4_0/source/lib/ldb/ldb_wrap.c 2007-12-24 11:02:45 UTC (rev 26584) @@ -2971,6 +2971,7 @@ PyObject *PyExc_LdbError; +SWIGINTERN ldb *new_ldb(){ return ldb_init(NULL); } SWIGINTERN int SWIG_AsVal_unsigned_SS_long (PyObject *obj, unsigned long *val) @@ -3031,23 +3032,6 @@ return res; } -SWIGINTERN ldb *new_ldb(char const *url,unsigned int flags,char const *options[]){ - ldb *ldb_ctx = ldb_init(NULL); - - if (url != NULL) { - int ret; - - ret = ldb_connect(ldb_ctx, url, flags, options); - if (ret != 0) - SWIG_exception(SWIG_ValueError, ldb_errstring(ldb_ctx)); - } - - return ldb_ctx; - -fail: - talloc_free(ldb_ctx); - return NULL; - } SWIGINTERN void delete_ldb(ldb *self){ talloc_free(self); } SWIGINTERN ldb_error ldb_add__SWIG_1(ldb *self,PyObject *py_msg){ ldb_error ret; @@ -4189,54 +4173,15 @@ } -SWIGINTERN PyObject *_wrap_new_Ldb(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { +SWIGINTERN PyObject *_wrap_new_Ldb(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; - char *arg1 = (char *) NULL ; - unsigned int arg2 = (unsigned int) 0 ; - char **arg3 = (char **) (char **)NULL ; ldb *result = 0 ; - int res1 ; - char *buf1 = 0 ; - int alloc1 = 0 ; - unsigned int val2 ; - int ecode2 = 0 ; - void *argp3 = 0 ; - int res3 = 0 ; - PyObject * obj0 = 0 ; - PyObject * obj1 = 0 ; - PyObject * obj2 = 0 ; - char * kwnames[] = { - (char *) "url",(char *) "flags",(char *) "options", NULL - }; - if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"|OOO:new_Ldb",kwnames,&obj0,&obj1,&obj2)) SWIG_fail; - if (obj0) { - res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Ldb" "', argument " "1"" of type '" "char const *""'"); - } - arg1 = (char *)(buf1); - } - if (obj1) { - ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); - if (!SWIG_IsOK(ecode2)) { - SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Ldb" "', argument " "2"" of type '" "unsigned int""'"); - } - arg2 = (unsigned int)(val2); - } - if (obj2) { - res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_p_char, 0 | 0 ); - if (!SWIG_IsOK(res3)) { - SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_Ldb" "', argument " "3"" of type '" "char const *[]""'"); - } - arg3 = (char **)(argp3); - } - result = (ldb *)new_ldb((char const *)arg1,arg2,(char const *(*))arg3); + if (!SWIG_Python_UnpackTuple(args,"new_Ldb",0,0,0)) SWIG_fail; + result = (ldb *)new_ldb(); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ldb_context, SWIG_POINTER_NEW | 0 ); - if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); return resultobj; fail: - if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); return NULL; } @@ -5338,7 +5283,7 @@ { (char *)"Message_swigregister", Message_swigregister, METH_VARARGS, NULL}, { (char *)"Message_swiginit", Message_swiginit, METH_VARARGS, NULL}, { (char *)"ldb_ldif_to_pyobject", (PyCFunction) _wrap_ldb_ldif_to_pyobject, METH_VARARGS | METH_KEYWORDS, NULL}, - { (char *)"new_Ldb", (PyCFunction) _wrap_new_Ldb, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"new_Ldb", (PyCFunction)_wrap_new_Ldb, METH_NOARGS, NULL}, { (char *)"Ldb_connect", (PyCFunction) _wrap_Ldb_connect, METH_VARARGS | METH_KEYWORDS, NULL}, { (char *)"delete_Ldb", (PyCFunction)_wrap_delete_Ldb, METH_O, NULL}, { (char *)"Ldb_search", (PyCFunction) _wrap_Ldb_search, METH_VARARGS | METH_KEYWORDS, NULL},
