~vcs-imports/samba/main

« back to all changes in this revision

Viewing changes to source/python/py_samr_conv.c

  • Committer: jerry
  • Date: 2006-07-14 21:48:39 UTC
  • Revision ID: vcs-imports@canonical.com-20060714214839-586d8c489a8fcead
gutting trunk to move to svn:externals

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* 
2
 
   Python wrappers for DCERPC/SMB client routines.
3
 
 
4
 
   Copyright (C) Tim Potter, 2002
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 2 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, write to the Free Software
18
 
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19
 
*/
20
 
 
21
 
#include "python/py_samr.h"
22
 
#include "python/py_conv.h"
23
 
 
24
 
/*
25
 
 * Convert between SAM_USER_INFO_16 and Python
26
 
 */
27
 
 
28
 
struct pyconv py_SAM_USER_INFO_16[] = {
29
 
        { "acb_info", PY_UINT32, offsetof(SAM_USER_INFO_16, acb_info) },
30
 
        { NULL }
31
 
};
32
 
 
33
 
BOOL py_from_SAM_USER_INFO_16(PyObject **dict, SAM_USER_INFO_16 *info)
34
 
{
35
 
        *dict = from_struct(info, py_SAM_USER_INFO_16);
36
 
        PyDict_SetItemString(*dict, "level", PyInt_FromLong(16));
37
 
        return True;
38
 
}
39
 
 
40
 
BOOL py_to_SAM_USER_INFO_16(SAM_USER_INFO_16 *info, PyObject *dict)
41
 
{
42
 
        PyObject *obj, *dict_copy = PyDict_Copy(dict);
43
 
        BOOL result = False;
44
 
 
45
 
        if (!(obj = PyDict_GetItemString(dict_copy, "level")) ||
46
 
            !PyInt_Check(obj))
47
 
                goto done;
48
 
 
49
 
        PyDict_DelItemString(dict_copy, "level");
50
 
 
51
 
        if (!to_struct(info, dict_copy, py_SAM_USER_INFO_16))
52
 
                goto done;
53
 
 
54
 
        result = True;
55
 
 
56
 
done:
57
 
        Py_DECREF(dict_copy);
58
 
        return result;
59
 
}
60
 
 
61
 
/*
62
 
 * Convert between SAM_USER_INFO_21 and Python
63
 
 */
64
 
 
65
 
struct pyconv py_SAM_USER_INFO_21[] = {
66
 
        { NULL }
67
 
};
68
 
 
69
 
BOOL py_from_SAM_USER_INFO_21(PyObject **dict, SAM_USER_INFO_21 *info)
70
 
{
71
 
        *dict = from_struct(info, py_SAM_USER_INFO_21);
72
 
        PyDict_SetItemString(*dict, "level", PyInt_FromLong(21));
73
 
        return True;
74
 
}
75
 
 
76
 
BOOL py_to_SAM_USER_INFO_21(SAM_USER_INFO_21 *info, PyObject *dict)
77
 
{
78
 
        PyObject *obj, *dict_copy = PyDict_Copy(dict);
79
 
        BOOL result = False;
80
 
 
81
 
        if (!(obj = PyDict_GetItemString(dict_copy, "level")) ||
82
 
            !PyInt_Check(obj))
83
 
                goto done;
84
 
 
85
 
        PyDict_DelItemString(dict_copy, "level");
86
 
 
87
 
        if (!to_struct(info, dict_copy, py_SAM_USER_INFO_21))
88
 
                goto done;
89
 
 
90
 
        result = True;
91
 
 
92
 
done:
93
 
        Py_DECREF(dict_copy);
94
 
        return result;
95
 
}
96
 
 
97
 
/*
98
 
 * Convert between acct_info and Python 
99
 
 */
100
 
 
101
 
BOOL py_from_acct_info(PyObject **array, struct acct_info *info, int num_accts)
102
 
{
103
 
        int i;
104
 
 
105
 
        *array = PyList_New(num_accts);
106
 
 
107
 
        for (i = 0; i < num_accts; i++) {
108
 
                PyObject *obj;  
109
 
 
110
 
                obj = PyDict_New();
111
 
                
112
 
                PyDict_SetItemString(
113
 
                        obj, "name", PyString_FromString(info[i].acct_name));
114
 
 
115
 
                PyDict_SetItemString(
116
 
                        obj, "description", 
117
 
                        PyString_FromString(info[i].acct_desc));
118
 
 
119
 
                PyDict_SetItemString(obj, "rid", PyInt_FromLong(info[i].rid));
120
 
 
121
 
                PyList_SetItem(*array, i, obj);
122
 
        }
123
 
 
124
 
        return True;
125
 
}
126
 
 
127
 
BOOL py_to_acct_info(PRINTER_INFO_3 *info, PyObject *dict,
128
 
                     TALLOC_CTX *mem_ctx)
129
 
{
130
 
        return False;
131
 
}