From 4cb790b768755b1eb1623296aa752e5d64b5137c Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Wed, 21 Nov 2007 12:31:29 +0100 Subject: r26074: Add SWIG magic for NTSTATUS and WERROR return codes. (This used to be commit 0bee7cb92e8ae1b80a957dd8fe32c36db1c32032) --- source4/libcli/util/errors.i | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 source4/libcli/util/errors.i (limited to 'source4/libcli/util/errors.i') diff --git a/source4/libcli/util/errors.i b/source4/libcli/util/errors.i new file mode 100644 index 0000000000..61cb7a090a --- /dev/null +++ b/source4/libcli/util/errors.i @@ -0,0 +1,39 @@ +/* + Unix SMB/CIFS implementation. + Copyright (C) Jelmer Vernooij 2007 + Copyright (C) Tim Potter 2004 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef SWIGPYTHON +%typemap(out) WERROR { + if (!W_ERROR_IS_OK($1)) { + PyObject *obj = Py_BuildValue("(i,s)", $1.v, win_errstr($1)); + PyErr_SetObject(PyExc_RuntimeError, obj); + } else if ($result == NULL) { + $result = Py_None; + } +}; + +%typemap(out) NTSTATUS { + if (NT_STATUS_IS_ERR($1)) { + PyObject *obj = Py_BuildValue("(i,s)", $1.v, nt_errstr($1)); + PyErr_SetObject(PyExc_RuntimeError, obj); + } else if ($result == NULL) { + $result = Py_None; + } +}; + +#endif -- cgit From 39adc2418a0586261c6c4aea36f72596c6cf8897 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Wed, 21 Nov 2007 13:07:16 +0100 Subject: r26088: Import some native-python python modules and move original python swig torture code to common python directory as well. (This used to be commit cbf656ff054ab2b0b5ca81e1d4f16ac54c8098f1) --- source4/libcli/util/errors.i | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'source4/libcli/util/errors.i') diff --git a/source4/libcli/util/errors.i b/source4/libcli/util/errors.i index 61cb7a090a..d51c9e0ded 100644 --- a/source4/libcli/util/errors.i +++ b/source4/libcli/util/errors.i @@ -36,4 +36,15 @@ } }; +%typemap(in) NTSTATUS { + if (PyLong_Check($input)) + $1 = NT_STATUS(PyLong_AsUnsignedLong($input)); + else if (PyInt_Check($input)) + $1 = NT_STATUS(PyInt_AsLong($input)); + else { + PyErr_SetString(PyExc_TypeError, "Expected a long or an int"); + return NULL; + } +} + #endif -- cgit From 249cc734cebfef31320ec10b05dbfaaaa39682ca Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 22 Dec 2007 05:03:02 -0600 Subject: r26565: Fix python registry bindings. 'PROVISION_PYTHON=yes make test' works now. (This used to be commit 485d1fa3d17fe6cc7a0ecd80e8bac42d173bbb19) --- source4/libcli/util/errors.i | 2 ++ 1 file changed, 2 insertions(+) (limited to 'source4/libcli/util/errors.i') diff --git a/source4/libcli/util/errors.i b/source4/libcli/util/errors.i index d51c9e0ded..8d97daf537 100644 --- a/source4/libcli/util/errors.i +++ b/source4/libcli/util/errors.i @@ -22,6 +22,7 @@ if (!W_ERROR_IS_OK($1)) { PyObject *obj = Py_BuildValue("(i,s)", $1.v, win_errstr($1)); PyErr_SetObject(PyExc_RuntimeError, obj); + SWIG_fail; } else if ($result == NULL) { $result = Py_None; } @@ -31,6 +32,7 @@ if (NT_STATUS_IS_ERR($1)) { PyObject *obj = Py_BuildValue("(i,s)", $1.v, nt_errstr($1)); PyErr_SetObject(PyExc_RuntimeError, obj); + SWIG_fail; } else if ($result == NULL) { $result = Py_None; } -- cgit From aa0a06f13c44e0eca0b3f2f0c34f0f7995b87159 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 23 Dec 2007 19:19:41 -0600 Subject: r26570: - Trim size of the swig-generated Python bindings by removing a bunch of {}'s. - Start working on Python equivalents for various EJS tests. - Fix regression in argument order for reg_diff_apply() in EJS bindings. (This used to be commit c550c03372cb260b78f6a6c132e70571bc4cb852) --- source4/libcli/util/errors.i | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source4/libcli/util/errors.i') diff --git a/source4/libcli/util/errors.i b/source4/libcli/util/errors.i index 8d97daf537..3f6efda468 100644 --- a/source4/libcli/util/errors.i +++ b/source4/libcli/util/errors.i @@ -18,7 +18,7 @@ */ #ifdef SWIGPYTHON -%typemap(out) WERROR { +%typemap(out,noblock=1) WERROR { if (!W_ERROR_IS_OK($1)) { PyObject *obj = Py_BuildValue("(i,s)", $1.v, win_errstr($1)); PyErr_SetObject(PyExc_RuntimeError, obj); @@ -28,7 +28,7 @@ } }; -%typemap(out) NTSTATUS { +%typemap(out,noblock=1) NTSTATUS { if (NT_STATUS_IS_ERR($1)) { PyObject *obj = Py_BuildValue("(i,s)", $1.v, nt_errstr($1)); PyErr_SetObject(PyExc_RuntimeError, obj); @@ -38,7 +38,7 @@ } }; -%typemap(in) NTSTATUS { +%typemap(in,noblock=1) NTSTATUS { if (PyLong_Check($input)) $1 = NT_STATUS(PyLong_AsUnsignedLong($input)); else if (PyInt_Check($input)) -- cgit From 3ee442c54f658e0dc9541a492e46fd8f6bf3a7f4 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 23 Dec 2007 20:22:46 -0600 Subject: r26571: Hide warnings about unused macros and casting qualifiers in autogenerated files. (This used to be commit cb76c60007ae1254181c09ba1ab09c419f500bc5) --- source4/libcli/util/errors.i | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source4/libcli/util/errors.i') diff --git a/source4/libcli/util/errors.i b/source4/libcli/util/errors.i index 3f6efda468..ec230a9c18 100644 --- a/source4/libcli/util/errors.i +++ b/source4/libcli/util/errors.i @@ -20,7 +20,7 @@ #ifdef SWIGPYTHON %typemap(out,noblock=1) WERROR { if (!W_ERROR_IS_OK($1)) { - PyObject *obj = Py_BuildValue("(i,s)", $1.v, win_errstr($1)); + PyObject *obj = Py_BuildValue("(i,s)", $1.v, (char *)win_errstr($1)); PyErr_SetObject(PyExc_RuntimeError, obj); SWIG_fail; } else if ($result == NULL) { @@ -30,7 +30,7 @@ %typemap(out,noblock=1) NTSTATUS { if (NT_STATUS_IS_ERR($1)) { - PyObject *obj = Py_BuildValue("(i,s)", $1.v, nt_errstr($1)); + PyObject *obj = Py_BuildValue("(i,s)", $1.v, (char *)nt_errstr($1)); PyErr_SetObject(PyExc_RuntimeError, obj); SWIG_fail; } else if ($result == NULL) { -- cgit From d0ba9f001474bfee9b1e8fb516effab736cd4050 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 23 Dec 2007 20:56:41 -0600 Subject: r26572: Fix warnings in the Python code. (This used to be commit 15038d9586d0b58f301ca8c39c21ef10c4283f28) --- source4/libcli/util/errors.i | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source4/libcli/util/errors.i') diff --git a/source4/libcli/util/errors.i b/source4/libcli/util/errors.i index ec230a9c18..ede536a995 100644 --- a/source4/libcli/util/errors.i +++ b/source4/libcli/util/errors.i @@ -20,7 +20,7 @@ #ifdef SWIGPYTHON %typemap(out,noblock=1) WERROR { if (!W_ERROR_IS_OK($1)) { - PyObject *obj = Py_BuildValue("(i,s)", $1.v, (char *)win_errstr($1)); + PyObject *obj = Py_BuildValue((char *)"(i,s)", $1.v, win_errstr($1)); PyErr_SetObject(PyExc_RuntimeError, obj); SWIG_fail; } else if ($result == NULL) { @@ -30,7 +30,7 @@ %typemap(out,noblock=1) NTSTATUS { if (NT_STATUS_IS_ERR($1)) { - PyObject *obj = Py_BuildValue("(i,s)", $1.v, (char *)nt_errstr($1)); + PyObject *obj = Py_BuildValue((char *)"(i,s)", $1.v, nt_errstr($1)); PyErr_SetObject(PyExc_RuntimeError, obj); SWIG_fail; } else if ($result == NULL) { -- cgit From 25a3eb0436ea7c060eedd6827e5fdc5efd6ab47b Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 14 Mar 2008 14:32:26 +0100 Subject: swig: make the code more portable and use NT_STATUS_V() and W_ERROR_V() metze (This used to be commit d6fd98a307f83fd492ef73bf6ec281f9f11286f2) --- source4/libcli/util/errors.i | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source4/libcli/util/errors.i') diff --git a/source4/libcli/util/errors.i b/source4/libcli/util/errors.i index ede536a995..17efcbf62a 100644 --- a/source4/libcli/util/errors.i +++ b/source4/libcli/util/errors.i @@ -20,7 +20,7 @@ #ifdef SWIGPYTHON %typemap(out,noblock=1) WERROR { if (!W_ERROR_IS_OK($1)) { - PyObject *obj = Py_BuildValue((char *)"(i,s)", $1.v, win_errstr($1)); + PyObject *obj = Py_BuildValue((char *)"(i,s)", W_ERROR_V($1), win_errstr($1)); PyErr_SetObject(PyExc_RuntimeError, obj); SWIG_fail; } else if ($result == NULL) { @@ -30,7 +30,7 @@ %typemap(out,noblock=1) NTSTATUS { if (NT_STATUS_IS_ERR($1)) { - PyObject *obj = Py_BuildValue((char *)"(i,s)", $1.v, nt_errstr($1)); + PyObject *obj = Py_BuildValue((char *)"(i,s)", NT_STATUS_V($1), nt_errstr($1)); PyErr_SetObject(PyExc_RuntimeError, obj); SWIG_fail; } else if ($result == NULL) { -- cgit From f9c36fae757d197ee4de06f0ecf94ae13faad0de Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 24 May 2008 21:38:33 +0200 Subject: Export functions for setting NTSTATUS and WERRORs in python. (This used to be commit 4bcb92d2d49d90863b1e64b15d055517fbfd263c) --- source4/libcli/util/errors.i | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'source4/libcli/util/errors.i') diff --git a/source4/libcli/util/errors.i b/source4/libcli/util/errors.i index 17efcbf62a..1fcde04c85 100644 --- a/source4/libcli/util/errors.i +++ b/source4/libcli/util/errors.i @@ -18,10 +18,13 @@ */ #ifdef SWIGPYTHON +%{ +#include "libcli/util/pyerrors.h" +%} + %typemap(out,noblock=1) WERROR { if (!W_ERROR_IS_OK($1)) { - PyObject *obj = Py_BuildValue((char *)"(i,s)", W_ERROR_V($1), win_errstr($1)); - PyErr_SetObject(PyExc_RuntimeError, obj); + PyErr_SetWERROR($1); SWIG_fail; } else if ($result == NULL) { $result = Py_None; @@ -30,8 +33,7 @@ %typemap(out,noblock=1) NTSTATUS { if (NT_STATUS_IS_ERR($1)) { - PyObject *obj = Py_BuildValue((char *)"(i,s)", NT_STATUS_V($1), nt_errstr($1)); - PyErr_SetObject(PyExc_RuntimeError, obj); + PyErr_SetNTSTATUS($1); SWIG_fail; } else if ($result == NULL) { $result = Py_None; -- cgit