Detlef Riekenberg : winspool: Use CUPS for printing.

Alexandre Julliard julliard at winehq.org
Wed Oct 13 11:43:08 CDT 2010


Module: wine
Branch: master
Commit: f69a4ef07f7b1b0017e1bf335db27751c59b6d85
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f69a4ef07f7b1b0017e1bf335db27751c59b6d85

Author: Detlef Riekenberg <wine.dev at web.de>
Date:   Wed Oct 13 00:27:20 2010 +0200

winspool: Use CUPS for printing.

---

 dlls/winspool.drv/info.c |   10 +++++-----
 include/winspool.h       |    4 ++++
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c
index 2f3c347..135f8a3 100644
--- a/dlls/winspool.drv/info.c
+++ b/dlls/winspool.drv/info.c
@@ -458,9 +458,8 @@ static BOOL CUPS_LoadPrinters(void)
     nrofdests = pcupsGetDests(&dests);
     TRACE("Found %d CUPS %s:\n", nrofdests, (nrofdests == 1) ? "printer" : "printers");
     for (i=0;i<nrofdests;i++) {
-        /* FIXME: replace "LPR:" with "CUPS:". Fix printing output first */
-        port = HeapAlloc(GetProcessHeap(), 0, strlen("LPR:") + strlen(dests[i].name)+1);
-        sprintf(port,"LPR:%s", dests[i].name);
+        port = HeapAlloc(GetProcessHeap(), 0, strlen("CUPS:") + strlen(dests[i].name)+1);
+        sprintf(port,"CUPS:%s", dests[i].name);
         /* FIXME: remove extension. Fix gdi32/drivers and comdlg32/printdlg first */
         devline = HeapAlloc(GetProcessHeap(), 0, sizeof("WINEPS.DRV,,15,45") + strlen(port));
         sprintf(devline, "WINEPS.DRV,%s", port);
@@ -484,6 +483,7 @@ static BOOL CUPS_LoadPrinters(void)
             /* Printer already in registry, delete the tag added in WINSPOOL_LoadSystemPrinters
                and continue */
             TRACE("Printer already exists\n");
+            RegSetValueExA(hkeyPrinter, "Port", 0, REG_SZ, (LPBYTE)port, strlen(port) + 1); /* overwrite LPR:* port */
             RegDeleteValueW(hkeyPrinter, May_Delete_Value);
             RegCloseKey(hkeyPrinter);
         } else {
@@ -518,12 +518,12 @@ static BOOL CUPS_LoadPrinters(void)
 
         hadprinter = TRUE;
         if (dests[i].is_default) {
-            WINSPOOL_SetDefaultPrinter(dests[i].name, dests[i].name, TRUE);
+            SetDefaultPrinterA(dests[i].name);
             haddefault = TRUE;
         }
     }
     if (hadprinter & !haddefault)
-        WINSPOOL_SetDefaultPrinter(dests[0].name, dests[0].name, TRUE);
+        SetDefaultPrinterA(dests[0].name);
     pcupsFreeDests(nrofdests, dests);
     RegCloseKey(hkeyPrinters);
     return hadprinter;
diff --git a/include/winspool.h b/include/winspool.h
index fcbcd0a..f436bea 100644
--- a/include/winspool.h
+++ b/include/winspool.h
@@ -1541,6 +1541,10 @@ BOOL WINAPI GetDefaultPrinterA(LPSTR pName, LPDWORD pcbNameSize);
 BOOL WINAPI GetDefaultPrinterW(LPWSTR pName, LPDWORD pcbNameSize);
 #define GetDefaultPrinter WINELIB_NAME_AW(GetDefaultPrinter)
 
+BOOL WINAPI SetDefaultPrinterA(LPCSTR);
+BOOL WINAPI SetDefaultPrinterW(LPCWSTR);
+#define SetDefaultPrinter WINELIB_NAME_AW(SetDefaultPrinter)
+
 BOOL WINAPI DeletePrinterDriverA(LPSTR pName, LPSTR pEnvironment,
 				 LPSTR pDriverName);
 BOOL WINAPI DeletePrinterDriverW(LPWSTR pName, LPWSTR pEnvironment,




More information about the wine-cvs mailing list