From 1c3d89463e55844de7b22ca80f72ed7fabda66e7 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Fri, 15 Jul 2005 12:56:42 +0000 Subject: [PATCH] windows-config-cache-path-20050715 FIXES 20007 Update AFS Control Panel to display the default cache location based upon the SYSTEM %TEMP% environment variable. --- src/WINNT/client_config/config.cpp | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/WINNT/client_config/config.cpp b/src/WINNT/client_config/config.cpp index 842b73b..747dd61 100644 --- a/src/WINNT/client_config/config.cpp +++ b/src/WINNT/client_config/config.cpp @@ -780,11 +780,30 @@ BOOL Config_GetCacheInUse (ULONG *pckCacheInUse, ULONG *pStatus) void Config_GetCachePath (LPTSTR pszCachePath) { if (!Config_ReadGlobalString (TEXT("CachePath"), pszCachePath, MAX_PATH)) { - TCHAR szPath[MAX_PATH]; - GetWindowsDirectory(szPath, sizeof(szPath)); - szPath[2] = 0; /* get drive letter only */ - strcat(szPath, "\\AFSCache"); + HKEY hk; + TCHAR szPath[ MAX_PATH ] = TEXT(""); + if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, TEXT("System\\CurrentControlSet\\Control\\Session Manager\\Environment"), 0, KEY_QUERY_VALUE, &hk) == ERROR_SUCCESS) + { + DWORD dwSize = sizeof(szPath); + DWORD dwType = 0; + + if (RegQueryValueEx (hk, TEXT("TEMP"), NULL, &dwType, (PBYTE)szPath, &dwSize) == ERROR_SUCCESS) + { + if ( dwType == REG_EXPAND_SZ ) { + TCHAR szTemp[ MAX_PATH ]; + lstrcpy(szTemp, szPath); + ExpandEnvironmentStrings(szTemp, szPath, MAX_PATH); + } + } + RegCloseKey (hk); + lstrcat(szPath, "\\AFSCache"); + } + + if ( !szPath[0] ) { + GetWindowsDirectory(szPath, sizeof(szPath)); + lstrcat(szPath, "\\TEMP\\AFSCache"); + } lstrcpy (pszCachePath, szPath); } } -- 1.9.4