diff options
author | Tim Potter <tpot@samba.org> | 2004-09-05 04:05:45 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:58:33 -0500 |
commit | 65b5a2297c766f5dcaf087800993554729aa6c69 (patch) | |
tree | 82bb664dfff06945ea2d707565fe830a92f4c1ba | |
parent | 86bf5cefa9798378ffb881a9a668c852fe56b2e2 (diff) | |
download | samba-65b5a2297c766f5dcaf087800993554729aa6c69.tar.gz samba-65b5a2297c766f5dcaf087800993554729aa6c69.tar.bz2 samba-65b5a2297c766f5dcaf087800993554729aa6c69.zip |
r2230: Wrapper for dcerpc_samr_Connect2(). All this glue code should be
automatically generated but at the moment it's hand coded.
(This used to be commit e1a368050d3abb6a6ca6529315dc4228e8590c7f)
-rw-r--r-- | source4/scripting/swig/dcerpc.i | 28 | ||||
-rw-r--r-- | source4/scripting/swig/samr.i | 13 |
2 files changed, 39 insertions, 2 deletions
diff --git a/source4/scripting/swig/dcerpc.i b/source4/scripting/swig/dcerpc.i index 6130f85a60..c843ec3c36 100644 --- a/source4/scripting/swig/dcerpc.i +++ b/source4/scripting/swig/dcerpc.i @@ -50,6 +50,26 @@ void set_ntstatus_exception(int status) PyErr_SetObject(ntstatus_exception, obj); } +char *get_string_property(PyObject *dict, char *key) +{ + PyObject *item = PyDict_GetItem(dict, PyString_FromString(key)); + + if (!item) + return 0; /* TODO: throw exception */ + + return PyString_AsString(item); +} + +uint32 get_uint32_property(PyObject *dict, char *key) +{ + PyObject *item = PyDict_GetItem(dict, PyString_FromString(key)); + + if (!item) + return 0; /* TODO: throw exception */ + + return (uint32)PyInt_AsLong(item); +} + %} %include "samba.i" @@ -61,8 +81,12 @@ void set_ntstatus_exception(int status) ntstatus_exception = PyErr_NewException("dcerpc.NTSTATUS", NULL, NULL); %} -%typemap(in, numinputs=0) struct dcerpc_pipe **OUT (struct dcerpc_pipe *temp) { - $1 = &temp; +%typemap(in, numinputs=0) struct dcerpc_pipe **OUT (struct dcerpc_pipe *temp_dcerpc_pipe) { + $1 = &temp_dcerpc_pipe; +} + +%typemap(in, numinputs=0) TALLOC_CTX * { + $1 = talloc_init("foo"); } %typemap(argout) struct dcerpc_pipe ** { diff --git a/source4/scripting/swig/samr.i b/source4/scripting/swig/samr.i index ceb21db17a..030f5defc2 100644 --- a/source4/scripting/swig/samr.i +++ b/source4/scripting/swig/samr.i @@ -23,3 +23,16 @@ #define DCERPC_SAMR_UUID "12345778-1234-abcd-ef00-0123456789ac" const int DCERPC_SAMR_VERSION = 1.0; #define DCERPC_SAMR_NAME "samr" + +%typemap(in) struct samr_Connect2 * (struct samr_Connect2 temp) { + if (!PyDict_Check($input)) { + PyErr_SetString(PyExc_TypeError, "dict arg expected"); + return NULL; + } + temp.in.system_name = get_string_property($input, "system_name"); + temp.in.access_mask = get_uint32_property($input, "access_mask"); + $1 = &temp; +} + +%rename(samr_Connect2) dcerpc_samr_Connect2; +NTSTATUS dcerpc_samr_Connect2(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct samr_Connect2 *r); |