[pywin32-checkins] pywin32/win32/src/win32print win32print.cpp,1.17,1.18
OLD project page for the Python extensions for Windows
Brought to you by:
mhammond
From: Roger U. <ru...@us...> - 2005-02-13 22:43:05
|
Update of /cvsroot/pywin32/pywin32/win32/src/win32print In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32655/win32/src/win32print Modified Files: win32print.cpp Log Message: Make Devmode and DataType optional for PRINTER_DEFAULTS Return empty tuple from EnumJobs and EnumPrinters instead of throwing an error when there are none to enumerate Index: win32print.cpp =================================================================== RCS file: /cvsroot/pywin32/pywin32/win32/src/win32print/win32print.cpp,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** win32print.cpp 11 Feb 2005 16:38:29 -0000 1.17 --- win32print.cpp 13 Feb 2005 22:42:41 -0000 1.18 *************** *** 46,57 **** // @object PRINTER_DEFAULTS|A dictionary representing a PRINTER_DEFAULTS structure ! // @prop string|pDatatype|Data type to be used for print jobs, see <om win32print.EnumPrintProcessorDatatypes>, can be None ! // @prop <o PyDEVMODE>|pDevMode|A PyDEVMODE that specifies default printer parameters, can be None // @prop int|DesiredAccess|An ACCESS_MASK specifying what level of access is needed, eg PRINTER_ACCESS_ADMINISTER, PRINTER_ACCESS_USE BOOL PyWinObject_AsPRINTER_DEFAULTS(PyObject *obdefaults, PPRINTER_DEFAULTS pdefaults) { ! static char *printer_default_keys[]={"pDataType","pDevMode","DesiredAccess",NULL}; ! static char *printer_default_format="zOl"; ! PyObject *obdevmode; if (!PyDict_Check(obdefaults)){ PyErr_SetString(PyExc_TypeError, "PRINTER_DEFAULTS must be a dictionary"); --- 46,57 ---- // @object PRINTER_DEFAULTS|A dictionary representing a PRINTER_DEFAULTS structure ! // @prop string|pDatatype|Data type to be used for print jobs, see <om win32print.EnumPrintProcessorDatatypes>, optional, can be None ! // @prop <o PyDEVMODE>|pDevMode|A PyDEVMODE that specifies default printer parameters, optional, can be None // @prop int|DesiredAccess|An ACCESS_MASK specifying what level of access is needed, eg PRINTER_ACCESS_ADMINISTER, PRINTER_ACCESS_USE BOOL PyWinObject_AsPRINTER_DEFAULTS(PyObject *obdefaults, PPRINTER_DEFAULTS pdefaults) { ! static char *printer_default_keys[]={"DesiredAccess","pDataType","pDevMode",NULL}; ! static char *printer_default_format="l|zO"; ! PyObject *obdevmode=Py_None; if (!PyDict_Check(obdefaults)){ PyErr_SetString(PyExc_TypeError, "PRINTER_DEFAULTS must be a dictionary"); *************** *** 60,64 **** ZeroMemory(pdefaults,sizeof(PRINTER_DEFAULTS)); return PyArg_ParseTupleAndKeywords(dummy_tuple,obdefaults,printer_default_format,printer_default_keys, ! &pdefaults->pDatatype, &obdevmode, &pdefaults->DesiredAccess) &&PyWinObject_AsDEVMODE(obdevmode, &pdefaults->pDevMode, TRUE); } --- 60,64 ---- ZeroMemory(pdefaults,sizeof(PRINTER_DEFAULTS)); return PyArg_ParseTupleAndKeywords(dummy_tuple,obdefaults,printer_default_format,printer_default_keys, ! &pdefaults->DesiredAccess, &pdefaults->pDatatype, &obdevmode) &&PyWinObject_AsDEVMODE(obdevmode, &pdefaults->pDevMode, TRUE); } *************** *** 502,506 **** return NULL; } ! EnumPrinters(flags, name, level, NULL, 0, &bufneeded, &printersreturned); if (GetLastError()!=ERROR_INSUFFICIENT_BUFFER) return PyWin_SetAPIError("EnumPrinters"); --- 502,508 ---- return NULL; } ! // if call with NULL buffer succeeds, there's nothing to enumerate ! if (EnumPrinters(flags, name, level, NULL, 0, &bufneeded, &printersreturned)) ! return PyTuple_New(0); if (GetLastError()!=ERROR_INSUFFICIENT_BUFFER) return PyWin_SetAPIError("EnumPrinters"); *************** *** 850,854 **** if ((level < 1)||(level > 3)) return PyErr_Format(PyExc_ValueError, "Information level %d is not supported", level); ! EnumJobs(hprinter, firstjob, nojobs, level, NULL, 0, &bufneeded_size, &jobsreturned); if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) return PyWin_SetAPIError("EnumJobs"); --- 852,857 ---- if ((level < 1)||(level > 3)) return PyErr_Format(PyExc_ValueError, "Information level %d is not supported", level); ! if (EnumJobs(hprinter, firstjob, nojobs, level, NULL, 0, &bufneeded_size, &jobsreturned)) ! return PyTuple_New(0); if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) return PyWin_SetAPIError("EnumJobs"); *************** *** 1240,1244 **** goto done; ! EnumPrinterDriversW(servername, environment, level, buf, bufsize, &bytes_needed, &return_cnt); if (bytes_needed==0){ PyWin_SetAPIError("EnumPrinterDrivers"); --- 1243,1250 ---- goto done; ! if (EnumPrinterDriversW(servername, environment, level, buf, bufsize, &bytes_needed, &return_cnt)){ ! ret=PyTuple_New(0); ! goto done; ! } if (bytes_needed==0){ PyWin_SetAPIError("EnumPrinterDrivers"); *************** *** 1252,1256 **** bufsize=bytes_needed; if (!EnumPrinterDriversW(servername, environment, level, buf, bufsize, &bytes_needed, &return_cnt)){ ! PyWin_SetAPIError("EnumPrintProcessors"); goto done; } --- 1258,1262 ---- bufsize=bytes_needed; if (!EnumPrinterDriversW(servername, environment, level, buf, bufsize, &bytes_needed, &return_cnt)){ ! PyWin_SetAPIError("EnumPrinterDrivers"); goto done; } *************** *** 1317,1321 **** di4=(DRIVER_INFO_4W *)buf; for (i=0; i<return_cnt; i++){ ! tuple_item=Py_BuildValue("{s:l,s:u,s:u,s:u,s:u,s:u,s:u,s:u,s:u,s:u,s:u}", "Version",di4->cVersion, "Name",di4->pName, --- 1323,1327 ---- di4=(DRIVER_INFO_4W *)buf; for (i=0; i<return_cnt; i++){ ! tuple_item=Py_BuildValue("{s:l,s:u,s:u,s:u,s:u,s:u,s:u,s:O&,s:u,s:u,s:u}", "Version",di4->cVersion, "Name",di4->pName, *************** *** 1325,1329 **** "ConfigFile",di4->pConfigFile, "HelpFile", di4->pHelpFile, ! "DependentFiles",di4->pDependentFiles, "MonitorName",di4->pMonitorName, "DefaultDataType",di4->pDefaultDataType, --- 1331,1335 ---- "ConfigFile",di4->pConfigFile, "HelpFile", di4->pHelpFile, ! "DependentFiles",PyWinObject_FromWCHARMultiple,di4->pDependentFiles, "MonitorName",di4->pMonitorName, "DefaultDataType",di4->pDefaultDataType, *************** *** 1363,1367 **** di6=(DRIVER_INFO_6W *)buf; for (i=0; i<return_cnt; i++){ ! tuple_item=Py_BuildValue("{s:l,s:u,s:u,s:u,s:u,s:u,s:u,s:u,s:u,s:u,s:u,s:O&,s:L,s:u,s:u,s:u}", "Version",di6->cVersion, "Name",di6->pName, --- 1369,1373 ---- di6=(DRIVER_INFO_6W *)buf; for (i=0; i<return_cnt; i++){ ! tuple_item=Py_BuildValue("{s:l,s:u,s:u,s:u,s:u,s:u,s:u,s:O&,s:u,s:u,s:u,s:O&,s:L,s:u,s:u,s:u}", "Version",di6->cVersion, "Name",di6->pName, *************** *** 1371,1375 **** "ConfigFile",di6->pConfigFile, "HelpFile", di6->pHelpFile, ! "DependentFiles",di6->pDependentFiles, "MonitorName",di6->pMonitorName, "DefaultDataType",di6->pDefaultDataType, --- 1377,1381 ---- "ConfigFile",di6->pConfigFile, "HelpFile", di6->pHelpFile, ! "DependentFiles",PyWinObject_FromWCHARMultiple,di6->pDependentFiles, "MonitorName",di6->pMonitorName, "DefaultDataType",di6->pDefaultDataType, |