Add python extensions for dom_sid.
[kai/samba.git] / source4 / librpc / ndr / py_security.c
1 /* 
2    Unix SMB/CIFS implementation.
3    Samba utility functions
4    Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2008
5    
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 3 of the License, or
9    (at your option) any later version.
10    
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15    
16    You should have received a copy of the GNU General Public License
17    along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 */
19 #include "libcli/security/security.h"
20
21 static PyObject *py_dom_sid_eq(PyObject *self, PyObject *args)
22 {
23         struct dom_sid *this = py_talloc_get_ptr(self), *other;
24         PyObject *py_other;
25
26         if (!PyArg_ParseTuple(args, "O", &py_other)) 
27                 return NULL;
28
29         other = py_talloc_get_type(py_other, struct dom_sid);
30         if (other == NULL)
31                 return Py_False;
32
33         return dom_sid_equal(this, other)?Py_True:Py_False;
34 }
35
36 static PyObject *py_dom_sid_str(PyObject *self)
37 {
38         struct dom_sid *this = py_talloc_get_ptr(self);
39         char *str = dom_sid_string(NULL, this);
40         PyObject *ret = PyString_FromString(str);
41         talloc_free(str);
42         return ret;
43 }
44
45 static PyObject *py_dom_sid_repr(PyObject *self)
46 {
47         struct dom_sid *this = py_talloc_get_ptr(self);
48         char *str = dom_sid_string(NULL, this);
49         PyObject *ret = PyString_FromFormat("dom_sid('%s')", str);
50         talloc_free(str);
51         return ret;
52 }
53
54 #define PY_DOM_SID_REPR py_dom_sid_repr
55
56 #define PY_DOM_SID_EXTRA_METHODS \
57         { "__eq__", (PyCFunction)py_dom_sid_eq, METH_VARARGS, "S.__eq__(x) -> S == x" }, \
58         { "__str__", (PyCFunction)py_dom_sid_str, METH_NOARGS, "S.__str__() -> str(S)" }, \