summaryrefslogtreecommitdiff
path: root/source3/python/py_spoolss_printers.c
diff options
context:
space:
mode:
authorTim Potter <tpot@samba.org>2002-04-18 03:35:05 +0000
committerTim Potter <tpot@samba.org>2002-04-18 03:35:05 +0000
commitb0fbd72b41dda039d4fd1036998721ee7387cd45 (patch)
treeaba55f37665e6389cc443023f86f00a55aacf829 /source3/python/py_spoolss_printers.c
parenteaf7e2b374d6a77e573195da1d7617bea97b1a94 (diff)
downloadsamba-b0fbd72b41dda039d4fd1036998721ee7387cd45.tar.gz
samba-b0fbd72b41dda039d4fd1036998721ee7387cd45.tar.bz2
samba-b0fbd72b41dda039d4fd1036998721ee7387cd45.zip
Started working on setprinter code.
(This used to be commit 38d2b1794a0942ac4c2787f06bc5e546508c2515)
Diffstat (limited to 'source3/python/py_spoolss_printers.c')
-rw-r--r--source3/python/py_spoolss_printers.c42
1 files changed, 14 insertions, 28 deletions
diff --git a/source3/python/py_spoolss_printers.c b/source3/python/py_spoolss_printers.c
index 69b2733cfb..48321500e7 100644
--- a/source3/python/py_spoolss_printers.c
+++ b/source3/python/py_spoolss_printers.c
@@ -181,12 +181,8 @@ PyObject *spoolss_setprinter(PyObject *self, PyObject *args, PyObject *kw)
uint32 level;
static char *kwlist[] = {"dict", NULL};
union {
- PRINTER_INFO_0 printers_0;
- PRINTER_INFO_1 printers_1;
PRINTER_INFO_2 printers_2;
PRINTER_INFO_3 printers_3;
- PRINTER_INFO_4 printers_4;
- PRINTER_INFO_5 printers_5;
} pinfo;
/* Parse parameters */
@@ -199,12 +195,22 @@ PyObject *spoolss_setprinter(PyObject *self, PyObject *args, PyObject *kw)
if ((level_obj = PyDict_GetItemString(info, "level"))) {
- if (!PyInt_Check(level_obj))
+ if (!PyInt_Check(level_obj)) {
+ DEBUG(0, ("** level not an integer\n"));
goto error;
+ }
level = PyInt_AsLong(level_obj);
+ /* Only level 2, 3 supported by NT */
+
+ if (level != 2 && level != 3) {
+ DEBUG(0, ("** unsupported info level\n"));
+ goto error;
+ }
+
} else {
+ DEBUG(0, ("** no level info\n"));
error:
PyErr_SetString(spoolss_error, "invalid info");
return NULL;
@@ -215,34 +221,14 @@ PyObject *spoolss_setprinter(PyObject *self, PyObject *args, PyObject *kw)
ZERO_STRUCT(ctr);
switch (level) {
- case 2: {
- PyObject *devmode_obj;
-
+ case 2:
ctr.printers_2 = &pinfo.printers_2;
- if (!py_to_PRINTER_INFO_2(&pinfo.printers_2, info))
+ if (!py_to_PRINTER_INFO_2(&pinfo.printers_2, info,
+ hnd->mem_ctx))
goto error;
-#if 0
- devmode_obj = PyDict_GetItemString(info, "device_mode");
-
- pinfo.printers_2.devmode = talloc(
- hnd->mem_ctx, sizeof(DEVICEMODE));
-
- PyDEVICEMODE_AsDEVICEMODE(pinfo.printers_2.devmode,
- devmode_obj);
-
-#else
-
- /* FIXME: can we actually set the security descriptor using
- a setprinter level 2? */
-
- pinfo.printers_2.secdesc = NULL;
- pinfo.printers_2.secdesc = NULL;
-
-#endif
break;
- }
default:
PyErr_SetString(spoolss_error, "unsupported info level");
return NULL;