summaryrefslogtreecommitdiff
path: root/source4/librpc
diff options
context:
space:
mode:
authorGary Lockyer <gary@catalyst.net.nz>2017-05-29 16:04:14 +1200
committerAndrew Bartlett <abartlet@samba.org>2017-06-22 08:56:22 +0200
commit7539595c4807a0396feb90b2dedb1001162dda74 (patch)
tree85e8edc2552eaeb552913be22df29e94b2deca02 /source4/librpc
parent4cc979aba71d5480b0db2dd421f0ccdc6893e693 (diff)
downloadsamba-7539595c4807a0396feb90b2dedb1001162dda74.tar.gz
lsa.String: add String constructor, str and repr
Add a String constructor, str and repr methods to the samba.dcerpc.lsa.String python object Signed-off-by: Gary Lockyer <gary@catalyst.net.nz> Reviewed-by: Garming Sam <garming@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'source4/librpc')
-rw-r--r--source4/librpc/ndr/py_lsa.c77
1 files changed, 77 insertions, 0 deletions
diff --git a/source4/librpc/ndr/py_lsa.c b/source4/librpc/ndr/py_lsa.c
new file mode 100644
index 00000000000..f9857a56957
--- /dev/null
+++ b/source4/librpc/ndr/py_lsa.c
@@ -0,0 +1,77 @@
+/*
+ Unix SMB/CIFS implementation.
+ Samba utility functions
+
+ Copyright (C) Catalyst IT 2017
+
+ 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 <http://www.gnu.org/licenses/>.
+*/
+#include <Python.h>
+#include "librpc/gen_ndr/lsa.h"
+
+static PyObject *py_lsa_String_str(PyObject *py_self)
+{
+ struct lsa_String *self = pytalloc_get_ptr(py_self);
+ PyObject *ret = NULL;
+ if (self->string == NULL) {
+ const char *empty = "";
+ ret = PyStr_FromString(empty);
+ } else {
+ ret = PyStr_FromString(self->string);
+ }
+ return ret;
+}
+
+static PyObject *py_lsa_String_repr(PyObject *py_self)
+{
+ struct lsa_String *self = pytalloc_get_ptr(py_self);
+ PyObject *ret = NULL;
+ if (self->string == NULL) {
+ const char *empty = "lsaString(None)";
+ ret = PyStr_FromString(empty);
+ } else {
+ ret = PyStr_FromFormat("lsaString('%s')", self->string);
+ }
+ return ret;
+}
+
+static int py_lsa_String_init(PyObject *self, PyObject *args, PyObject *kwargs)
+{
+ struct lsa_String *string = pytalloc_get_ptr(self);
+ const char *str = NULL;
+ const char *kwnames[] = { "str", NULL };
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|s", discard_const_p(char *, kwnames), &str))
+ return -1;
+
+ string->string = talloc_strdup(string, str);
+
+ if (str != NULL && string->string == NULL) {
+ PyErr_NoMemory();
+ return -1;
+ }
+
+ return 0;
+}
+
+
+static void py_lsa_String_patch(PyTypeObject *type)
+{
+ type->tp_init = py_lsa_String_init;
+ type->tp_str = py_lsa_String_str;
+ type->tp_repr = py_lsa_String_repr;
+}
+
+#define PY_STRING_PATCH py_lsa_String_patch
+