winspool: Strings can be NULL in AddPrinterDriverExA.
[wine] / dlls / wineps.drv / init.c
index 1bd56ca..a794bec 100644 (file)
 
 WINE_DEFAULT_DEBUG_CHANNEL(psdrv);
 
-#ifndef SONAME_LIBCUPS
-#define SONAME_LIBCUPS "libcups.so"
-#endif
-
-#ifdef HAVE_CUPS_CUPS_H
+#ifdef SONAME_LIBCUPS
 static void *cupshandle = NULL;
 #endif
 
@@ -144,7 +140,7 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved )
                HeapDestroy(PSDRV_Heap);
                return FALSE;
            }
-#ifdef HAVE_CUPS_CUPS_H
+#ifdef SONAME_LIBCUPS
            /* dynamically load CUPS if not yet loaded */
            if (!cupshandle) {
                cupshandle = wine_dlopen(SONAME_LIBCUPS, RTLD_NOW, NULL, 0);
@@ -157,7 +153,7 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved )
 
            DeleteObject( PSDRV_DefaultFont );
            HeapDestroy( PSDRV_Heap );
-#ifdef HAVE_CUPS_CUPS_H
+#ifdef SONAME_LIBCUPS
            if (cupshandle && (cupshandle != (void*)-1)) {
                wine_dlclose(cupshandle, NULL, 0);
                cupshandle = NULL;
@@ -176,7 +172,7 @@ static void PSDRV_UpdateDevCaps( PSDRV_PDEVICE *physDev )
     INT width = 0, height = 0;
 
     if(physDev->Devmode->dmPublic.dmFields & DM_PAPERSIZE) {
-        for(page = physDev->pi->ppd->PageSizes; page; page = page->next) {
+        LIST_FOR_EACH_ENTRY(page, &physDev->pi->ppd->PageSizes, PAGESIZE, entry) {
            if(page->WinPage == physDev->Devmode->dmPublic.u1.s1.dmPaperSize)
                break;
        }
@@ -426,11 +422,13 @@ INT PSDRV_GetDeviceCaps( PSDRV_PDEVICE *physDev, INT cap )
         return MulDiv(physDev->vertSize, 100,
                      physDev->Devmode->dmPublic.dmScale);
     case HORZRES:
+    case DESKTOPHORZRES:
         return physDev->horzRes;
     case VERTRES:
+    case DESKTOPVERTRES:
         return physDev->vertRes;
     case BITSPIXEL:
-        return physDev->pi->ppd->ColorDevice ? 8 : 1;
+        return (physDev->pi->ppd->ColorDevice != CD_False) ? 8 : 1;
     case PLANES:
         return 1;
     case NUMBRUSHES:
@@ -442,7 +440,7 @@ INT PSDRV_GetDeviceCaps( PSDRV_PDEVICE *physDev, INT cap )
     case NUMFONTS:
         return 39;
     case NUMCOLORS:
-        return (physDev->pi->ppd->ColorDevice ? 256 : -1);
+        return (physDev->pi->ppd->ColorDevice != CD_False) ? 256 : -1;
     case PDEVICESIZE:
         return sizeof(PSDRV_PDEVICE);
     case CURVECAPS:
@@ -508,8 +506,6 @@ INT PSDRV_GetDeviceCaps( PSDRV_PDEVICE *physDev, INT cap )
     case SCALINGFACTORX:
     case SCALINGFACTORY:
     case VREFRESH:
-    case DESKTOPVERTRES:
-    case DESKTOPHORZRES:
     case BLTALIGNMENT:
         return 0;
     default:
@@ -580,7 +576,7 @@ PRINTERINFO *PSDRV_FindPrinterInfo(LPCSTR name)
        goto cleanup;
     }
 
-#ifdef HAVE_CUPS_CUPS_H
+#ifdef SONAME_LIBCUPS
     if (cupshandle != (void*)-1) {
        typeof(cupsGetPPD) * pcupsGetPPD = NULL;