winspool: Forward AddPrinterDriver to AddPrinterDriverEx

Detlef Riekenberg wine.dev at web.de
Thu Aug 23 17:04:50 CDT 2007



Changelog:
winspool: Forward AddPrinterDriver to AddPrinterDriverEx


-- 
 
By by ... Detlef

-------------- next part --------------
>From 7bab94474cb13cf4c8838fb652a96b0b84561c85 Mon Sep 17 00:00:00 2001
From: Detlef Riekenberg <wine.dev at web.de>
Date: Fri, 24 Aug 2007 00:02:11 +0200
Subject: [PATCH] winspool: Forward AddPrinterDriver to AddPrinterDriverEx
---
 dlls/winspool.drv/info.c |  105 ++++++++++------------------------------------
 1 files changed, 22 insertions(+), 83 deletions(-)

diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c
index fee2210..ce5323b 100644
--- a/dlls/winspool.drv/info.c
+++ b/dlls/winspool.drv/info.c
@@ -4942,96 +4942,35 @@ BOOL WINAPI GetPrinterDriverDirectoryA(L
 
 /*****************************************************************************
  *          AddPrinterDriverA  [WINSPOOL.@]
+ *
+ * See AddPrinterDriverW.
+ *
  */
 BOOL WINAPI AddPrinterDriverA(LPSTR pName, DWORD level, LPBYTE pDriverInfo)
 {
-    DRIVER_INFO_3A di3;
-    HKEY hkeyDrivers, hkeyName;
-    static CHAR empty[]    = "",
-                nullnull[] = "\0";
-
-    TRACE("(%s,%d,%p)\n",debugstr_a(pName),level,pDriverInfo);
-
-    if(level != 2 && level != 3) {
-        SetLastError(ERROR_INVALID_LEVEL);
-	return FALSE;
-    }
-    if ((pName) && (pName[0])) {
-        FIXME("pName= %s - unsupported\n", debugstr_a(pName));
-	SetLastError(ERROR_INVALID_PARAMETER);
-	return FALSE;
-    }
-    if(!pDriverInfo) {
-        WARN("pDriverInfo == NULL\n");
-	SetLastError(ERROR_INVALID_PARAMETER);
-	return FALSE;
-    }
-
-    if(level == 3)
-        di3 = *(DRIVER_INFO_3A *)pDriverInfo;
-    else {
-        memset(&di3, 0, sizeof(di3));
-	memcpy(&di3, pDriverInfo, sizeof(DRIVER_INFO_2A));
-    }
-
-    if(!di3.pName || !di3.pDriverPath || !di3.pConfigFile ||
-       !di3.pDataFile) {
-        SetLastError(ERROR_INVALID_PARAMETER);
-	return FALSE;
-    }
-
-    if(!di3.pDefaultDataType) di3.pDefaultDataType = empty;
-    if(!di3.pDependentFiles) di3.pDependentFiles = nullnull;
-    if(!di3.pHelpFile) di3.pHelpFile = empty;
-    if(!di3.pMonitorName) di3.pMonitorName = empty;
-
-    hkeyDrivers = WINSPOOL_OpenDriverReg(di3.pEnvironment, FALSE);
-
-    if(!hkeyDrivers) {
-        ERR("Can't create Drivers key\n");
-	return FALSE;
-    }
-
-    if(level == 2) { /* apparently can't overwrite with level2 */
-        if(RegOpenKeyA(hkeyDrivers, di3.pName, &hkeyName) == ERROR_SUCCESS) {
-	    RegCloseKey(hkeyName);
-	    RegCloseKey(hkeyDrivers);
-	    WARN("Trying to create existing printer driver %s\n", debugstr_a(di3.pName));
-	    SetLastError(ERROR_PRINTER_DRIVER_ALREADY_INSTALLED);
-	    return FALSE;
-	}
-    }
-    if(RegCreateKeyA(hkeyDrivers, di3.pName, &hkeyName) != ERROR_SUCCESS) {
-	RegCloseKey(hkeyDrivers);
-	ERR("Can't create Name key\n");
-	return FALSE;
-    }
-    RegSetValueExA(hkeyName, "Configuration File", 0, REG_SZ, (LPBYTE) di3.pConfigFile,
-		   lstrlenA(di3.pConfigFile) + 1);
-    RegSetValueExA(hkeyName, "Data File", 0, REG_SZ, (LPBYTE) di3.pDataFile, lstrlenA(di3.pDataFile) + 1);
-    RegSetValueExA(hkeyName, "Driver", 0, REG_SZ, (LPBYTE) di3.pDriverPath, lstrlenA(di3.pDriverPath) + 1);
-    RegSetValueExA(hkeyName, "Version", 0, REG_DWORD, (LPBYTE) &di3.cVersion,
-		   sizeof(DWORD));
-    RegSetValueExA(hkeyName, "Datatype", 0, REG_SZ, (LPBYTE) di3.pDefaultDataType, lstrlenA(di3.pDefaultDataType));
-    RegSetValueExA(hkeyName, "Dependent Files", 0, REG_MULTI_SZ,
-                   (LPBYTE) di3.pDependentFiles, multi_sz_lenA(di3.pDependentFiles));
-    RegSetValueExA(hkeyName, "Help File", 0, REG_SZ, (LPBYTE) di3.pHelpFile, lstrlenA(di3.pHelpFile) + 1);
-    RegSetValueExA(hkeyName, "Monitor", 0, REG_SZ, (LPBYTE) di3.pMonitorName, lstrlenA(di3.pMonitorName) + 1);
-    RegCloseKey(hkeyName);
-    RegCloseKey(hkeyDrivers);
-
-    return TRUE;
+    TRACE("(%s, %d, %p)\n", debugstr_a(pName), level, pDriverInfo);
+    return AddPrinterDriverExA(pName, level, pDriverInfo, APD_COPY_NEW_FILES);
 }
 
-/*****************************************************************************
- *          AddPrinterDriverW  [WINSPOOL.@]
+/******************************************************************************
+ *  AddPrinterDriverW (WINSPOOL.@)
+ *
+ * Install a Printer Driver
+ *
+ * PARAMS
+ *  pName           [I] Servername or NULL (local Computer)
+ *  level           [I] Level for the supplied DRIVER_INFO_*W struct
+ *  pDriverInfo     [I] PTR to DRIVER_INFO_*W struct with the Driver Parameter
+ *
+ * RESULTS
+ *  Success: TRUE
+ *  Failure: FALSE
+ *
  */
-BOOL WINAPI AddPrinterDriverW(LPWSTR printerName,DWORD level,
-				   LPBYTE pDriverInfo)
+BOOL WINAPI AddPrinterDriverW(LPWSTR pName, DWORD level, LPBYTE pDriverInfo)
 {
-    FIXME("(%s,%d,%p): stub\n",debugstr_w(printerName),
-	  level,pDriverInfo);
-    return FALSE;
+    TRACE("(%s, %d, %p)\n", debugstr_w(pName), level, pDriverInfo);
+    return AddPrinterDriverExW(pName, level, pDriverInfo, APD_COPY_NEW_FILES);
 }
 
 /*****************************************************************************
-- 
1.4.1



More information about the wine-patches mailing list