Module: wine Branch: master Commit: 06b64a1a2ec163b7a03a7515f0efa16db24e0c90 URL: http://source.winehq.org/git/wine.git/?a=commit;h=06b64a1a2ec163b7a03a7515f0...
Author: Stefan Leichter Stefan.Leichter@camline.com Date: Tue Jun 5 18:47:17 2007 +0200
winspool.drv: Replace WINSPOOL_SHDeleteKeyW with RegDeleteTreeW.
---
dlls/winspool.drv/info.c | 58 ++------------------------------------------- 1 files changed, 3 insertions(+), 55 deletions(-)
diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c index 162f6c3..3086d00 100644 --- a/dlls/winspool.drv/info.c +++ b/dlls/winspool.drv/info.c @@ -246,58 +246,6 @@ static const WCHAR default_doc_title[] = {'L','o','c','a','l',' ','D','o','w','n 'D','o','c','u','m','e','n','t',0};
-/***************************************************************************** - * WINSPOOL_SHRegDeleteKey - * - * Recursively delete subkeys. - * Cut & paste from shlwapi. - * - */ -static DWORD WINSPOOL_SHDeleteKeyW(HKEY hKey, LPCWSTR lpszSubKey) -{ - DWORD dwRet, dwKeyCount = 0, dwMaxSubkeyLen = 0, dwSize, i; - WCHAR szNameBuf[MAX_PATH], *lpszName = szNameBuf; - HKEY hSubKey = 0; - - dwRet = RegOpenKeyExW(hKey, lpszSubKey, 0, KEY_READ, &hSubKey); - if(!dwRet) - { - /* Find how many subkeys there are */ - dwRet = RegQueryInfoKeyW(hSubKey, NULL, NULL, NULL, &dwKeyCount, - &dwMaxSubkeyLen, NULL, NULL, NULL, NULL, NULL, NULL); - if(!dwRet) - { - dwMaxSubkeyLen++; - if (dwMaxSubkeyLen > sizeof(szNameBuf)/sizeof(WCHAR)) - /* Name too big: alloc a buffer for it */ - lpszName = HeapAlloc(GetProcessHeap(), 0, dwMaxSubkeyLen*sizeof(WCHAR)); - - if(!lpszName) - dwRet = ERROR_NOT_ENOUGH_MEMORY; - else - { - /* Recursively delete all the subkeys */ - for(i = 0; i < dwKeyCount && !dwRet; i++) - { - dwSize = dwMaxSubkeyLen; - dwRet = RegEnumKeyExW(hSubKey, i, lpszName, &dwSize, NULL, NULL, NULL, NULL); - if(!dwRet) - dwRet = WINSPOOL_SHDeleteKeyW(hSubKey, lpszName); - } - - if (lpszName != szNameBuf) - HeapFree(GetProcessHeap(), 0, lpszName); /* Free buffer if allocated */ - } - } - - RegCloseKey(hSubKey); - if(!dwRet) - dwRet = RegDeleteKeyW(hKey, lpszSubKey); - } - return dwRet; -} - - /****************************************************************** * validate the user-supplied printing-environment [internal] * @@ -2323,7 +2271,7 @@ BOOL WINAPI DeleteMonitorW (LPWSTR pName, LPWSTR pEnvironment, LPWSTR pMonitorNa }
/* change this, when advapi32.dll/RegDeleteTree is implemented */ - if(WINSPOOL_SHDeleteKeyW(hroot, pMonitorName) == ERROR_SUCCESS) { + if(RegDeleteTreeW(hroot, pMonitorName) == ERROR_SUCCESS) { TRACE("monitor %s deleted\n", debugstr_w(pMonitorName)); RegCloseKey(hroot); return TRUE; @@ -3044,7 +2992,7 @@ BOOL WINAPI DeletePrinter(HANDLE hPrinter) return FALSE; } if(RegOpenKeyW(HKEY_LOCAL_MACHINE, PrintersW, &hkeyPrinters) == ERROR_SUCCESS) { - WINSPOOL_SHDeleteKeyW(hkeyPrinters, lpNameW); + RegDeleteTreeW(hkeyPrinters, lpNameW); RegCloseKey(hkeyPrinters); } WriteProfileStringW(devicesW, lpNameW, NULL); @@ -6432,7 +6380,7 @@ BOOL WINAPI DeletePrinterDriverExW( LPWSTR pName, LPWSTR pEnvironment, return FALSE; }
- if(WINSPOOL_SHDeleteKeyW(hkey_drivers, pDriverName) == ERROR_SUCCESS) + if(RegDeleteTreeW(hkey_drivers, pDriverName) == ERROR_SUCCESS) ret = TRUE;
RegCloseKey(hkey_drivers);