winspool: Add always the Win9x and the NT printerdriver

Detlef Riekenberg wine.dev at web.de
Wed Aug 22 13:32:46 CDT 2007


Changelog:
winspool: Add always the Win9x and the NT printerdriver

Fixes bug 9411


Things to do:
- Use UNICODE (see bug 6437)
- Use the ppd-file from CUPS for di.pDataFile

-- 
 
By by ... Detlef

-------------- next part --------------
>From d9a9a8b21e3af3f5c891500ce09e8fa4e4960002 Mon Sep 17 00:00:00 2001
From: Detlef Riekenberg <wine.dev at web.de>
Date: Wed, 22 Aug 2007 20:24:35 +0200
Subject: [PATCH] winspool: Add always the Win9x and the NT printerdriver
---
 dlls/winspool.drv/info.c |   38 +++++++++++++++++++++-----------------
 1 files changed, 21 insertions(+), 17 deletions(-)

diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c
index 56203da..1ed05fd 100644
--- a/dlls/winspool.drv/info.c
+++ b/dlls/winspool.drv/info.c
@@ -470,31 +470,35 @@ static BOOL add_printer_driver(const cha
 {
     DRIVER_INFO_3A di3a;
 
-    static char driver_path[]       = "wineps16",
-                data_file[]         = "<datafile?>",
-                config_file[]       = "wineps16",
-                help_file[]         = "<helpfile?>",
-                dep_file[]          = "<dependent files?>\0",
-                monitor_name[]      = "<monitor name?>",
+    static char driver_9x[]         = "wineps16.drv",
+                driver_nt[]         = "wineps.drv",
+                env_9x[]            = "Windows 4.0",
+                env_nt[]            = "Windows NT x86",
+                data_file[]         = "generic.ppd",
                 default_data_type[] = "RAW";
 
-    di3a.cVersion = (GetVersion() & 0x80000000) ? 0 : 3; /* FIXME: add 1, 2 */
+    ZeroMemory(&di3a, sizeof(DRIVER_INFO_3A));
+    di3a.cVersion         = 3;
     di3a.pName            = (char *)name;
-    di3a.pEnvironment     = NULL;      /* NULL means auto */
-    di3a.pDriverPath      = driver_path;
+    di3a.pEnvironment     = env_nt;
+    di3a.pDriverPath      = driver_nt;
     di3a.pDataFile        = data_file;
-    di3a.pConfigFile      = config_file;
-    di3a.pHelpFile        = help_file;
-    di3a.pDependentFiles  = dep_file;
-    di3a.pMonitorName     = monitor_name;
+    di3a.pConfigFile      = driver_nt;
     di3a.pDefaultDataType = default_data_type;
 
-    if (!AddPrinterDriverA(NULL, 3, (LPBYTE)&di3a))
+    if (AddPrinterDriverA(NULL, 3, (LPBYTE)&di3a))
     {
-        ERR("Failed adding driver (%d)\n", GetLastError());
-        return FALSE;
+        di3a.cVersion     = 0;
+        di3a.pEnvironment = env_9x;
+        di3a.pDriverPath  = driver_9x;
+        di3a.pConfigFile  = driver_9x;
+        if (AddPrinterDriverA(NULL, 3, (LPBYTE)&di3a))
+        {
+            return TRUE;
+        }
     }
-    return TRUE;
+    ERR("Failed adding driver %s: %u\n", debugstr_a(di3a.pDriverPath), GetLastError());
+    return FALSE;
 }
 
 #ifdef SONAME_LIBCUPS
-- 
1.4.1



More information about the wine-patches mailing list