#include "drivemap.h"
#include <time.h>
#include <adssts.h>
+#ifdef DEBUG
#define DEBUG_VERBOSE
+#endif
#include <osilog.h>
#include <lanahelper.h>
return FALSE;
for ( ; *pszSubmount; ++pszSubmount)
- {
- if (!isprint(*pszSubmount))
- return FALSE;
- if (*pszSubmount == TEXT(' '))
- return FALSE;
- if (*pszSubmount == TEXT('\t'))
- return FALSE;
- }
+ {
+ if (!isprint(*pszSubmount))
+ return FALSE;
+ if (*pszSubmount == TEXT(' '))
+ return FALSE;
+ if (*pszSubmount == TEXT('/'))
+ return FALSE;
+ if (*pszSubmount == TEXT('\\'))
+ return FALSE;
+ if (*pszSubmount == TEXT('\t'))
+ return FALSE;
+ }
return TRUE;
}
{
HKEY hkMappings;
RegCreateKeyEx( HKEY_CURRENT_USER,
- "SOFTWARE\\OpenAFS\\Client\\Mappings",
+ cszSECTION_MAPPINGS,
0,
"AFS",
REG_OPTION_NON_VOLATILE,
RegEnumValue( hkMappings, dwIndex, drive, &driveLen, NULL,
&dwType, (LPBYTE)mapping, &mappingLen);
+ if ( dwType == REG_EXPAND_SZ ) {
+ TCHAR buf[MAX_PATH];
+ DWORD dummyLen = ExpandEnvironmentStrings(buf, mapping, MAX_PATH);
+ if (dummyLen > MAX_PATH)
+ continue;
+ _tcsncpy(mapping, buf, MAX_PATH);
+ }
- DRIVEMAP DriveMap;
- memset (&DriveMap, 0x00, sizeof(DRIVEMAP));
- DriveMap.chDrive = toupper(*drive);
- DriveMap.fPersistent = TRUE;
- if ((DriveMap.chDrive < chDRIVE_A) || (DriveMap.chDrive > chDRIVE_Z))
- continue;
+ DRIVEMAP DriveMap;
+ memset (&DriveMap, 0x00, sizeof(DRIVEMAP));
+ DriveMap.chDrive = toupper(*drive);
+ DriveMap.fPersistent = TRUE;
+ if ((DriveMap.chDrive < chDRIVE_A) || (DriveMap.chDrive > chDRIVE_Z))
+ continue;
if (mapping[0] != TEXT('\0'))
{
{
HKEY hkMappings;
RegCreateKeyEx( HKEY_CURRENT_USER,
- "SOFTWARE\\OpenAFS\\Client\\Mappings",
+ cszSECTION_MAPPINGS,
0,
"AFS",
REG_OPTION_NON_VOLATILE,
if (!pList->aDriveMap[iDrive].fPersistent)
lstrcat (szRHS, TEXT("*"));
- RegSetValueEx( hkMappings, szLHS, 0, REG_SZ, (const BYTE *)szRHS, lstrlen(szRHS) + 1);
+ RegSetValueEx( hkMappings, szLHS, 0, REG_EXPAND_SZ, (const BYTE *)szRHS, lstrlen(szRHS) + 1);
}
}
RegCloseKey( hkMappings );
nr.dwType=RESOURCETYPE_DISK;
nr.lpLocalName=szDrive;
nr.lpRemoteName=szPath;
- nr.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE;
+ nr.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE; /* ignored parameter */
DWORD res=WNetAddConnection2(&nr,NULL,pUsername,(bPersistent)?CONNECT_UPDATE_PROFILE:0);
DEBUG_EVENT5("AFS DriveMap","Mount %s Local[%s] Remote[%s] User[%s]=%x",
(bPersistent)?"Persistant" : "NonPresistant",