winspool: [4/5] Return the full Path in DRIVER_INFO_2 and 3

Detlef Riekenberg wine.dev at web.de
Thu Jul 26 17:04:43 CDT 2007


winspool: Return the full Path in DRIVER_INFO_2 and 3


(Level 5 need REG_BINARY)

-- 
 
By by ... Detlef

-------------- next part --------------
>From 3d9910f13ee54a3d99b12a47d7714c044ef173b4 Mon Sep 17 00:00:00 2001
From: Detlef Riekenberg <wine.dev at web.de>
Date: Thu, 26 Jul 2007 23:24:31 +0200
Subject: [PATCH] winspool: Return the full Path in DRIVER_INFO_2 + 3
---
 dlls/winspool.drv/info.c |   84 +++++++++++++++++++++++-----------------------
 1 files changed, 42 insertions(+), 42 deletions(-)

diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c
index d9fa673..d33c251 100644
--- a/dlls/winspool.drv/info.c
+++ b/dlls/winspool.drv/info.c
@@ -4451,75 +4451,75 @@ static BOOL WINSPOOL_GetDriverInfoFromRe
         strPtr = (pDriverStrings) ? (pDriverStrings + (*pcbNeeded)) : NULL;
     }
 
-    if(WINSPOOL_GetStringFromReg(hkeyDriver, Data_FileW, strPtr, 0, &size,
-			         unicode)) {
+    /* .pDataFile: For postscript-drivers, this is the ppd-file */
+    if (get_filename_from_reg(hkeyDriver, driverdir, dirlen, Data_FileW, strPtr, 0, &size, unicode)) {
         *pcbNeeded += size;
-        if(*pcbNeeded <= cbBuf)
-            WINSPOOL_GetStringFromReg(hkeyDriver, Data_FileW, strPtr, size,
-                                      &tmp, unicode);
-        if(ptr)
-            ((PDRIVER_INFO_2W) ptr)->pDataFile = (LPWSTR)strPtr;
+        if (*pcbNeeded <= cbBuf)
+            get_filename_from_reg(hkeyDriver, driverdir, dirlen, Data_FileW, strPtr, size, &size, unicode);
+
+        if (di) di->pDataFile = (LPWSTR)strPtr;
         strPtr = (pDriverStrings) ? pDriverStrings + (*pcbNeeded) : NULL;
     }
 
-    if(WINSPOOL_GetStringFromReg(hkeyDriver, Configuration_FileW, strPtr,
-                                 0, &size, unicode)) {
+    /* .pConfigFile is the Driver user Interface */
+    if (get_filename_from_reg(hkeyDriver, driverdir, dirlen, Configuration_FileW, strPtr, 0, &size, unicode)) {
         *pcbNeeded += size;
-        if(*pcbNeeded <= cbBuf)
-            WINSPOOL_GetStringFromReg(hkeyDriver, Configuration_FileW, strPtr,
-                                      size, &tmp, unicode);
-        if(ptr)
-            ((PDRIVER_INFO_2W) ptr)->pConfigFile = (LPWSTR)strPtr;
+        if (*pcbNeeded <= cbBuf)
+            get_filename_from_reg(hkeyDriver, driverdir, dirlen, Configuration_FileW, strPtr, size, &size, unicode);
+
+        if (di) di->pConfigFile = (LPWSTR)strPtr;
         strPtr = (pDriverStrings) ? pDriverStrings + (*pcbNeeded) : NULL;
     }
 
-    if(Level == 2 ) {
+    if (Level == 2 ) {
         RegCloseKey(hkeyDriver);
         TRACE("buffer space %d required %d\n", cbBuf, *pcbNeeded);
         return TRUE;
     }
 
-    if (Level != 5 && WINSPOOL_GetStringFromReg(hkeyDriver, Help_FileW, strPtr, 0, &size,
-                                 unicode)) {
+    if (Level == 5 ) {
+        RegCloseKey(hkeyDriver);
+        FIXME("level 5: incomplete\n");
+        return TRUE;
+    }
+
+    /* .pHelpFile */
+    if (get_filename_from_reg(hkeyDriver, driverdir, dirlen, Help_FileW, strPtr, 0, &size, unicode)) {
         *pcbNeeded += size;
-        if(*pcbNeeded <= cbBuf)
-            WINSPOOL_GetStringFromReg(hkeyDriver, Help_FileW, strPtr,
-                                      size, &tmp, unicode);
-        if(ptr)
-            ((PDRIVER_INFO_3W) ptr)->pHelpFile = (LPWSTR)strPtr;
+        if (*pcbNeeded <= cbBuf)
+            get_filename_from_reg(hkeyDriver, driverdir, dirlen, Help_FileW, strPtr, size, &size, unicode);
+
+        if (di) di->pHelpFile = (LPWSTR)strPtr;
         strPtr = (pDriverStrings) ? pDriverStrings + (*pcbNeeded) : NULL;
     }
 
-    if (Level != 5 && WINSPOOL_GetStringFromReg(hkeyDriver, Dependent_FilesW, strPtr, 0,
-			     &size, unicode)) {
+    /* .pDependentFiles */
+    if (get_filename_from_reg(hkeyDriver, driverdir, dirlen, Dependent_FilesW, strPtr, 0, &size, unicode)) {
         *pcbNeeded += size;
-        if(*pcbNeeded <= cbBuf)
-            WINSPOOL_GetStringFromReg(hkeyDriver, Dependent_FilesW, strPtr,
-                                      size, &tmp, unicode);
-        if(ptr)
-            ((PDRIVER_INFO_3W) ptr)->pDependentFiles = (LPWSTR)strPtr;
+        if (*pcbNeeded <= cbBuf)
+            get_filename_from_reg(hkeyDriver, driverdir, dirlen, Dependent_FilesW, strPtr, size, &size, unicode);
+
+        if (di) di->pDependentFiles = (LPWSTR)strPtr;
         strPtr = (pDriverStrings) ? pDriverStrings + (*pcbNeeded) : NULL;
     }
 
-    if (Level != 5 && WINSPOOL_GetStringFromReg(hkeyDriver, MonitorW, strPtr, 0, &size,
-                                 unicode)) {
+    /* .pMonitorName is the optional Language Monitor */
+    if (WINSPOOL_GetStringFromReg(hkeyDriver, MonitorW, strPtr, 0, &size, unicode)) {
         *pcbNeeded += size;
-        if(*pcbNeeded <= cbBuf)
-            WINSPOOL_GetStringFromReg(hkeyDriver, MonitorW, strPtr,
-                                      size, &tmp, unicode);
-        if(ptr)
-            ((PDRIVER_INFO_3W) ptr)->pMonitorName = (LPWSTR)strPtr;
+        if (*pcbNeeded <= cbBuf)
+            WINSPOOL_GetStringFromReg(hkeyDriver, MonitorW, strPtr, size, &size, unicode);
+
+        if (di) di->pMonitorName = (LPWSTR)strPtr;
         strPtr = (pDriverStrings) ? pDriverStrings + (*pcbNeeded) : NULL;
     }
 
-    if (Level != 5 && WINSPOOL_GetStringFromReg(hkeyDriver, DatatypeW, strPtr, 0, &size,
-                                 unicode)) {
+    /* .pDefaultDataType */
+    if (WINSPOOL_GetStringFromReg(hkeyDriver, DatatypeW, strPtr, 0, &size, unicode)) {
         *pcbNeeded += size;
         if(*pcbNeeded <= cbBuf)
-            WINSPOOL_GetStringFromReg(hkeyDriver, DatatypeW, strPtr,
-                                      size, &tmp, unicode);
-        if(ptr)
-            ((PDRIVER_INFO_3W) ptr)->pDefaultDataType = (LPWSTR)strPtr;
+            WINSPOOL_GetStringFromReg(hkeyDriver, DatatypeW, strPtr, size, &size, unicode);
+
+        if (di) di->pDefaultDataType = (LPWSTR)strPtr;
         strPtr = (pDriverStrings) ? pDriverStrings + (*pcbNeeded) : NULL;
     }
 
-- 
1.4.1



More information about the wine-patches mailing list