python/py_spoolss_forms.c

説明を見る。
00001 /* 
00002    Python wrappers for DCERPC/SMB client routines.
00003 
00004    Copyright (C) Tim Potter, 2002
00005    
00006    This program is free software; you can redistribute it and/or modify
00007    it under the terms of the GNU General Public License as published by
00008    the Free Software Foundation; either version 2 of the License, or
00009    (at your option) any later version.
00010    
00011    This program is distributed in the hope that it will be useful,
00012    but WITHOUT ANY WARRANTY; without even the implied warranty of
00013    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014    GNU General Public License for more details.
00015    
00016    You should have received a copy of the GNU General Public License
00017    along with this program; if not, write to the Free Software
00018    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00019 */
00020 
00021 #include "python/py_spoolss.h"
00022 
00023 /* Add a form */
00024 
00025 PyObject *spoolss_hnd_addform(PyObject *self, PyObject *args, PyObject *kw)
00026 {
00027         spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self;
00028         WERROR werror;
00029         PyObject *info;
00030         FORM form;
00031         int level;
00032         static char *kwlist[] = {"form", NULL};
00033 
00034         /* Parse parameters */
00035         
00036         if (!PyArg_ParseTupleAndKeywords(
00037                     args, kw, "O!", kwlist, &PyDict_Type, &info))
00038                 return NULL;
00039         
00040         /* Call rpc function */
00041         
00042         if (!py_to_FORM(&form, info)) {
00043                 PyErr_SetString(spoolss_error, "invalid form");
00044                 return NULL;
00045         }
00046 
00047         if (!get_level_value(info, &level)) {
00048                 PyErr_SetString(spoolss_error, "invalid info level");
00049                 return NULL;
00050         }
00051 
00052         if (level != 1) {
00053                 PyErr_SetString(spoolss_error, "unsupported info level");
00054                 return NULL;
00055         }
00056         
00057         switch (level) {
00058         case 1: {
00059                 PyObject *obj = PyDict_GetItemString(info, "name");
00060                 char *form_name = PyString_AsString(obj);
00061 
00062                 init_unistr2(&form.name, form_name, UNI_STR_TERMINATE);
00063                 break;
00064         }
00065         default:
00066                 PyErr_SetString(spoolss_error, "unsupported info level");
00067                 return NULL;
00068         }
00069                 
00070         werror = rpccli_spoolss_addform(hnd->cli, hnd->mem_ctx, &hnd->pol,
00071                                         level, &form);
00072 
00073 
00074         if (!W_ERROR_IS_OK(werror)) {
00075                 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror));
00076                 return NULL;
00077         }
00078 
00079         Py_INCREF(Py_None);
00080         return Py_None;
00081 }
00082 
00083 /* Get form properties */
00084 
00085 PyObject *spoolss_hnd_getform(PyObject *self, PyObject *args, PyObject *kw)
00086 {
00087         spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self;
00088         WERROR werror;
00089         PyObject *result;
00090         char *form_name;
00091         int level = 1;
00092         static char *kwlist[] = {"form_name", "level", NULL};
00093         FORM_1 form;
00094 
00095         /* Parse parameters */
00096 
00097         if (!PyArg_ParseTupleAndKeywords(
00098                     args, kw, "s|i", kwlist, &form_name, &level))
00099                 return NULL;
00100         
00101         /* Call rpc function */
00102 
00103         werror = rpccli_spoolss_getform(
00104                 hnd->cli, hnd->mem_ctx, &hnd->pol, form_name, level, &form);
00105 
00106         if (!W_ERROR_IS_OK(werror)) {
00107                 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror));
00108                 return NULL;
00109         }
00110 
00111         result = Py_None;
00112 
00113         switch(level) {
00114         case 1:
00115                 py_from_FORM_1(&result, &form);
00116                 break;
00117         }
00118 
00119         Py_INCREF(result);
00120         return result;
00121 }
00122 
00123 /* Set form properties */
00124 
00125 PyObject *spoolss_hnd_setform(PyObject *self, PyObject *args, PyObject *kw)
00126 {
00127         spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self;
00128         WERROR werror;
00129         PyObject *info, *form_name;
00130         int level;
00131         static char *kwlist[] = { "form", NULL};
00132         FORM form;
00133 
00134         /* Parse parameters */
00135 
00136         if (!PyArg_ParseTupleAndKeywords(
00137                     args, kw, "O!", kwlist, &PyDict_Type, &info))
00138                 return NULL;
00139 
00140         if (!get_level_value(info, &level)) {
00141                 PyErr_SetString(spoolss_error, "invalid info level");
00142                 return NULL;
00143         }
00144 
00145         if (level != 1) {
00146                 PyErr_SetString(spoolss_error, "unsupported info level");
00147                 return NULL;
00148         }
00149 
00150         /* Call rpc function */
00151 
00152         if (!py_to_FORM(&form, info)) {
00153                 PyErr_SetString(spoolss_error, "invalid form");
00154                 return NULL;
00155         }
00156 
00157         form_name = PyDict_GetItemString(info, "name");
00158 
00159         werror = rpccli_spoolss_setform(
00160                 hnd->cli, hnd->mem_ctx, &hnd->pol, level, 
00161                 PyString_AsString(form_name), &form);
00162 
00163         if (!W_ERROR_IS_OK(werror)) {
00164                 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror));
00165                 return NULL;
00166         }
00167 
00168         Py_INCREF(Py_None);
00169         return Py_None;
00170 }
00171 
00172 /* Delete a form */
00173 
00174 PyObject *spoolss_hnd_deleteform(PyObject *self, PyObject *args, PyObject *kw)
00175 {
00176         spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self;
00177         WERROR werror;
00178         static char *kwlist[] = {"form_name", NULL};
00179         char *form_name;
00180 
00181         /* Parse parameters */
00182         
00183         if (!PyArg_ParseTupleAndKeywords(
00184                     args, kw, "s", kwlist, &form_name))
00185                 return NULL;
00186         
00187         /* Call rpc function */
00188 
00189         werror = rpccli_spoolss_deleteform(
00190                 hnd->cli, hnd->mem_ctx, &hnd->pol, form_name);
00191 
00192         if (!W_ERROR_IS_OK(werror)) {
00193                 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror));
00194                 return NULL;
00195         }
00196 
00197         Py_INCREF(Py_None);
00198         return Py_None;
00199 }
00200 
00201 /* Enumerate forms */
00202 
00203 PyObject *spoolss_hnd_enumforms(PyObject *self, PyObject *args, PyObject *kw)
00204 {
00205         PyObject *result;
00206         spoolss_policy_hnd_object *hnd = (spoolss_policy_hnd_object *)self;
00207         WERROR werror;
00208         uint32 level = 1, num_forms, i;
00209         static char *kwlist[] = {"level", NULL};
00210         FORM_1 *forms;
00211 
00212         /* Parse parameters */
00213         
00214         if (!PyArg_ParseTupleAndKeywords(
00215                     args, kw, "|i", kwlist, &level))
00216                 return NULL;
00217         
00218         /* Call rpc function */
00219 
00220         werror = rpccli_spoolss_enumforms(
00221                 hnd->cli, hnd->mem_ctx, &hnd->pol, level, &num_forms, &forms);
00222 
00223         if (!W_ERROR_IS_OK(werror)) {
00224                 PyErr_SetObject(spoolss_werror, py_werror_tuple(werror));
00225                 return NULL;
00226         }
00227 
00228         switch(level) {
00229         case 1:
00230                 result = PyDict_New();
00231 
00232                 for (i = 0; i < num_forms; i++) {
00233                         PyObject *value;
00234                         fstring name;
00235 
00236                         rpcstr_pull(name, forms[i].name.buffer,
00237                                     sizeof(fstring), -1, STR_TERMINATE);
00238 
00239                         py_from_FORM_1(&value, &forms[i]);
00240 
00241                         PyDict_SetItemString(
00242                                 value, "level", PyInt_FromLong(1));
00243 
00244                         PyDict_SetItemString(result, name, value);
00245                 }
00246 
00247                 break;
00248         default:
00249                 PyErr_SetString(spoolss_error, "unknown info level");
00250                 return NULL;
00251         }
00252 
00253         return result;
00254 }

Sambaに対してSat Aug 29 21:23:14 2009に生成されました。  doxygen 1.4.7