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 2 of the License, or
+ 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,
*/
#include "python/py_spoolss.h"
+#include "python/py_conv.h"
static BOOL py_from_printerdata(PyObject **dict, char *key, char *value,
uint16 data_type, uint8 *data,
static char *kwlist[] = { "value", NULL };
char *valuename;
WERROR werror;
- uint32 needed;
PyObject *result;
REGISTRY_VALUE value;
/* Call rpc function */
- werror = cli_spoolss_getprinterdata(
- hnd->cli, hnd->mem_ctx, 0, &needed, &hnd->pol, valuename,
+ werror = rpccli_spoolss_getprinterdata(
+ hnd->cli, hnd->mem_ctx, &hnd->pol, valuename,
&value);
- if (W_ERROR_V(werror) == ERRmoredata)
- werror = cli_spoolss_getprinterdata(
- hnd->cli, hnd->mem_ctx, needed, NULL, &hnd->pol,
- valuename, &value);
-
if (!W_ERROR_IS_OK(werror)) {
PyErr_SetObject(spoolss_werror, py_werror_tuple(werror));
return NULL;
/* Call rpc function */
- werror = cli_spoolss_setprinterdata(
+ werror = rpccli_spoolss_setprinterdata(
hnd->cli, hnd->mem_ctx, &hnd->pol, &value);
if (!W_ERROR_IS_OK(werror)) {
/* Get max buffer sizes for value and data */
- werror = cli_spoolss_enumprinterdata(
+ werror = rpccli_spoolss_enumprinterdata(
hnd->cli, hnd->mem_ctx, &hnd->pol, ndx, 0, 0,
&value_needed, &data_needed, NULL);
while (W_ERROR_IS_OK(werror)) {
PyObject *obj;
- werror = cli_spoolss_enumprinterdata(
+ werror = rpccli_spoolss_enumprinterdata(
hnd->cli, hnd->mem_ctx, &hnd->pol, ndx,
value_needed, data_needed, NULL, NULL, &value);
/* Call rpc function */
- werror = cli_spoolss_deleteprinterdata(
+ werror = rpccli_spoolss_deleteprinterdata(
hnd->cli, hnd->mem_ctx, &hnd->pol, value);
if (!W_ERROR_IS_OK(werror)) {
static char *kwlist[] = { "key", "value", NULL };
char *key, *valuename;
WERROR werror;
- uint32 needed;
PyObject *result;
REGISTRY_VALUE value;
/* Call rpc function */
- werror = cli_spoolss_getprinterdataex(
- hnd->cli, hnd->mem_ctx, 0, &needed, &hnd->pol, key,
+ werror = rpccli_spoolss_getprinterdataex(
+ hnd->cli, hnd->mem_ctx, &hnd->pol, key,
valuename, &value);
- if (W_ERROR_V(werror) == ERRmoredata)
- werror = cli_spoolss_getprinterdataex(
- hnd->cli, hnd->mem_ctx, needed, NULL, &hnd->pol, key,
- valuename, &value);
-
if (!W_ERROR_IS_OK(werror)) {
PyErr_SetObject(spoolss_werror, py_werror_tuple(werror));
return NULL;
/* Call rpc function */
- werror = cli_spoolss_setprinterdataex(
+ werror = rpccli_spoolss_setprinterdataex(
hnd->cli, hnd->mem_ctx, &hnd->pol, keyname, &value);
if (!W_ERROR_IS_OK(werror)) {
{
spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self;
static char *kwlist[] = { "key", NULL };
- uint32 needed, i;
+ uint32 i;
char *key;
WERROR werror;
PyObject *result;
- REGVAL_CTR ctr;
+ REGVAL_CTR *ctr;
if (!PyArg_ParseTupleAndKeywords(args, kw, "s", kwlist, &key))
return NULL;
- /* Get max buffer sizes for value and data */
+ if (!(ctr = TALLOC_ZERO_P(hnd->mem_ctx, REGVAL_CTR))) {
+ PyErr_SetString(spoolss_error, "talloc failed");
+ return NULL;
+ }
- werror = cli_spoolss_enumprinterdataex(
- hnd->cli, hnd->mem_ctx, 0, &needed, &hnd->pol, key, &ctr);
+ /* Get max buffer sizes for value and data */
- if (W_ERROR_V(werror) == ERRmoredata)
- werror = cli_spoolss_enumprinterdataex(
- hnd->cli, hnd->mem_ctx, needed, NULL, &hnd->pol, key,
- &ctr);
+ werror = rpccli_spoolss_enumprinterdataex(
+ hnd->cli, hnd->mem_ctx, &hnd->pol, key, &ctr);
if (!W_ERROR_IS_OK(werror)) {
PyErr_SetObject(spoolss_werror, py_werror_tuple(werror));
/* Call rpc function */
- werror = cli_spoolss_deleteprinterdataex(
+ werror = rpccli_spoolss_deleteprinterdataex(
hnd->cli, hnd->mem_ctx, &hnd->pol, key, value);
if (!W_ERROR_IS_OK(werror)) {
Py_INCREF(Py_None);
return Py_None;
}
+
+PyObject *spoolss_hnd_enumprinterkey(PyObject *self, PyObject *args,
+ PyObject *kw)
+{
+ spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self;
+ static char *kwlist[] = { "key", NULL };
+ char *keyname;
+ WERROR werror;
+ uint32 keylist_len;
+ uint16 *keylist;
+ PyObject *result;
+
+ /* Parse parameters */
+
+ if (!PyArg_ParseTupleAndKeywords(args, kw, "s", kwlist, &keyname))
+ return NULL;
+
+ /* Call rpc function */
+
+ werror = rpccli_spoolss_enumprinterkey(
+ hnd->cli, hnd->mem_ctx, &hnd->pol, keyname, &keylist,
+ &keylist_len);
+
+ if (!W_ERROR_IS_OK(werror)) {
+ PyErr_SetObject(spoolss_werror, py_werror_tuple(werror));
+ return NULL;
+ }
+
+ result = from_unistr_list(keylist);
+
+ return result;
+}
+
+#if 0
+
+PyObject *spoolss_hnd_deleteprinterkey(PyObject *self, PyObject *args,
+ PyObject *kw)
+{
+ spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self;
+ static char *kwlist[] = { "key", NULL };
+ char *keyname;
+ WERROR werror;
+
+ if (!PyArg_ParseTupleAndKeywords(args, kw, "s", kwlist, &keyname))
+ return NULL;
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+#endif