Wine Postscript driver not finding printers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The attached patch fixes a bug in the Wine Postscript driver that keeps it from finding printers in an LPRng type environment. The problem was that AddPrinterW will not work if the printer name is not NULL, but AddPrinterA calls AddPrinterA, which ALWAYS passes a name pointer into AddPrinterW (thus AddPrinterA will NEVER work).

The attached patch changes AddPrinterA to pass a NULL down to AddPrinterW if the name passed to AddPrinterA is NULL.

Additionally, I found that I must create the printer driver entry under
System\\CurrentControlSet\\Control\\Print\\Environments\\Drivers\\PS Driver, as for some reason the system is not filling in the operating system name. I have my windows version set as follows:

[Version]
; Windows version to imitate (win95,win98,winme,nt351,nt40,win2k,winxp,win20,win30,win31)" },
"Windows" = "win2k"
;"Windows" = "win98"
; DOS version to imitate
;"DOS" = "6.22"

So perhaps there is a bug in that section of the logic too. I cheated and just copied the driver entry from ..\\Print\\Environments\\Windows 4.0\\Drivers\\PS Driver to ..\\Print\\Environments\\Drivers\\PS Driver and that seems to have fixed it.
? New Folder
? log
? debugger/Makefile
? debugger/lex.yy.c
? debugger/winedbg.exe.dbg.c
? debugger/winedbg.exe.spec.c
? debugger/y.tab.c
? debugger/y.tab.h
? dlls/msrle32/Makefile
? dlls/msrle32/msrle32.dll.dbg.c
? dlls/msrle32/msrle32.spec.c
? graphics/win16drv/prtdrv.glue.c
? if1632/relay16.s
? programs/winetest/Makefile
? tools/mingwrap
? tools/winelauncher
? tools/wrc/lex.ppl.c
? tools/wrc/ppy.tab.c
? tools/wrc/ppy.tab.h
? tsx11/Makefile
? tsx11/libwine_tsx11.so.1.0
? windows/x11drv/wineclipsrv
Index: dlls/winspool/info.c
===================================================================
RCS file: /home/wine/wine/dlls/winspool/info.c,v
retrieving revision 1.70
diff -u -r1.70 info.c
--- dlls/winspool/info.c	23 Jan 2003 23:07:39 -0000	1.70
+++ dlls/winspool/info.c	8 Feb 2003 19:35:00 -0000
@@ -1182,7 +1182,6 @@
  */
 HANDLE WINAPI AddPrinterA(LPSTR pName, DWORD Level, LPBYTE pPrinter)
 {
-    UNICODE_STRING pNameW;
     PRINTER_INFO_2W *piW;
     PRINTER_INFO_2A *piA = (PRINTER_INFO_2A*)pPrinter;
     HANDLE ret;
@@ -1193,13 +1192,18 @@
 	SetLastError(ERROR_INVALID_LEVEL);
 	return 0;
     }
-    RtlCreateUnicodeStringFromAsciiz(&pNameW,pName);
     piW = PRINTER_INFO_2AtoW(GetProcessHeap(), piA);
+    if (pName) {
+       UNICODE_STRING pNameW;
+       RtlCreateUnicodeStringFromAsciiz(&pNameW,pName);
 
-    ret = AddPrinterW(pNameW.Buffer, Level, (LPBYTE)piW);
+       ret = AddPrinterW(pNameW.Buffer, Level, (LPBYTE)piW);
+       RtlFreeUnicodeString(&pNameW);
+    }
+    else
+       ret = AddPrinterW(NULL, Level, (LPBYTE)piW);
 
     FREE_PRINTER_INFO_2W(GetProcessHeap(), piW);
-    RtlFreeUnicodeString(&pNameW);
     return ret;
 }
 

[Index of Archives]     [Gimp for Windows]     [Red Hat]     [Samba]     [Yosemite Camping]     [Graphics Cards]     [Wine Home]

  Powered by Linux