From e6a393c3adae9e822cff7a8ed2457e2104f5bf9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Wed, 31 Oct 2007 09:10:20 +0000 Subject: [PATCH] Replace drive letter by a root path svn path=/trunk/; revision=30001 --- reactos/dll/win32/shell32/recyclebin.c | 2 +- reactos/lib/recyclebin/recyclebin.c | 29 +++++++++++++++++++++++--- reactos/lib/recyclebin/recyclebin.h | 8 +++---- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/reactos/dll/win32/shell32/recyclebin.c b/reactos/dll/win32/shell32/recyclebin.c index f599b74701b..898d04d2e50 100644 --- a/reactos/dll/win32/shell32/recyclebin.c +++ b/reactos/dll/win32/shell32/recyclebin.c @@ -273,7 +273,7 @@ static HRESULT WINAPI RecycleBin_EnumObjects(IShellFolder2 *iface, HWND hwnd, SH { RecycleBin *This = (RecycleBin *)iface; IEnumIDList *list; - static const WCHAR szDrive = L'C'; + static LPCWSTR szDrive = L"C:\\"; TRACE("(%p, %p, %x, %p)\n", This, hwnd, (unsigned int)grfFlags, ppenumIDList); diff --git a/reactos/lib/recyclebin/recyclebin.c b/reactos/lib/recyclebin/recyclebin.c index ebc2717a3a7..dd5807f3626 100644 --- a/reactos/lib/recyclebin/recyclebin.c +++ b/reactos/lib/recyclebin/recyclebin.c @@ -141,16 +141,39 @@ cleanup: BOOL WINAPI EnumerateRecycleBinA( - IN CHAR driveLetter, + IN LPCSTR pszRoot OPTIONAL, IN PENUMERATE_RECYCLEBIN_CALLBACK pFnCallback, IN PVOID Context OPTIONAL) { - return EnumerateRecycleBinW((WCHAR)driveLetter, pFnCallback, Context); + int len; + LPWSTR szRootW = NULL; + BOOL ret = FALSE; + + if (pszRoot) + { + len = MultiByteToWideChar(CP_ACP, 0, pszRoot, -1, NULL, 0); + if (len == 0) + goto cleanup; + szRootW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + if (!szRootW) + { + SetLastError(ERROR_NOT_ENOUGH_MEMORY); + goto cleanup; + } + if (MultiByteToWideChar(CP_ACP, 0, pszRoot, -1, szRootW, len) == 0) + goto cleanup; + } + + ret = EnumerateRecycleBinW(szRootW, pFnCallback, Context); + +cleanup: + HeapFree(GetProcessHeap(), 0, szRootW); + return ret; } BOOL WINAPI EnumerateRecycleBinW( - IN WCHAR driveLetter, + IN LPCWSTR pszRoot OPTIONAL, IN PENUMERATE_RECYCLEBIN_CALLBACK pFnCallback, IN PVOID Context OPTIONAL) { diff --git a/reactos/lib/recyclebin/recyclebin.h b/reactos/lib/recyclebin/recyclebin.h index 0c55cce78e1..c6575d172cf 100644 --- a/reactos/lib/recyclebin/recyclebin.h +++ b/reactos/lib/recyclebin/recyclebin.h @@ -54,10 +54,10 @@ DeleteFileToRecycleBinW( BOOL WINAPI EmptyRecycleBinA( - IN LPCSTR pszRoot); + IN LPCSTR pszRoot OPTIONAL); BOOL WINAPI EmptyRecycleBinW( - IN LPCWSTR pszRoot); + IN LPCWSTR pszRoot OPTIONAL); #ifdef UNICODE #define EmptyRecycleBin EmptyRecycleBinW #else @@ -66,12 +66,12 @@ EmptyRecycleBinW( BOOL WINAPI EnumerateRecycleBinA( - IN CHAR driveLetter, + IN LPCSTR pszRoot OPTIONAL, IN PENUMERATE_RECYCLEBIN_CALLBACK pFnCallback, IN PVOID Context OPTIONAL); BOOL WINAPI EnumerateRecycleBinW( - IN WCHAR driveLetter, + IN LPCWSTR pszRoot OPTIONAL, IN PENUMERATE_RECYCLEBIN_CALLBACK pFnCallback, IN PVOID Context OPTIONAL); #ifdef UNICODE