extern "C" {
#include <afs/param.h>
#include <afs/stds.h>
+#include <afs/fs_utils.h>
}
#include "afs_config.h"
#include <stdio.h>
+#include <lanahelper.h>
/*
* DEFINITIONS ________________________________________________________________
* PROTOTYPES _________________________________________________________________
*
*/
-
void AutoMap_OnInitDialog (HWND hDlg);
void AutoMap_OnAdd (HWND hDlg);
void AutoMap_OnSelect (HWND hDlg);
TCHAR szValueName[128];
HKEY hKey;
LONG result;
+ DWORD dwDispo;
if (!pDrive)
return FALSE;
- _stprintf(szKeyName, TEXT("%s\\GlobalAutoMapper"), AFSConfigKeyName);
+ _stprintf(szKeyName, TEXT("%s\\GlobalAutoMapper"), AFSDConfigKeyName);
- if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, szKeyName, 0, KEY_SET_VALUE, &hKey) != ERROR_SUCCESS)
+ if (RegCreateKeyEx(HKEY_LOCAL_MACHINE, szKeyName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, NULL, &hKey, &dwDispo) != ERROR_SUCCESS)
return FALSE;
_stprintf(szValueName, TEXT("%c:"), pDrive->chDrive);
BOOL DefineDosDrive(DRIVEMAP *pDrive, DDDACTION dddAction)
{
- TCHAR szAfsPath[MAX_PATH];
- TCHAR szDrive[3] = TEXT("?:");
+ // TCHAR szAfsPath[MAX_PATH];
+ // TCHAR szDrive[3] = TEXT("?:");
BOOL fResult = FALSE;
if (!pDrive)
return FALSE;
- szDrive[0] = pDrive->chDrive;
- _stprintf(szAfsPath, TEXT("\\Device\\LanmanRedirector\\%s\\%s-AFS\\%s"), szDrive, szHostName, pDrive->szSubmount);
-
if (dddAction == DDD_REMOVE) {
- fResult = DefineDosDevice(DDD_RAW_TARGET_PATH | DDD_REMOVE_DEFINITION | DDD_EXACT_MATCH_ON_REMOVE, szDrive, szAfsPath);
- if (!fResult)
- Message (MB_OK | MB_ICONHAND, IDS_ERROR_UNMAP, IDS_ERROR_UNMAP_DESC, TEXT("%08lX"), GetLastError());
+ if (!(fResult=(DisMountDOSDrive(pDrive->chDrive)==NO_ERROR)))
+ Message (MB_OK | MB_ICONHAND, IDS_ERROR_UNMAP, IDS_ERROR_UNMAP_DESC, TEXT("%08lX"), GetLastError());
} else if (dddAction == DDD_ADD) {
- fResult = DefineDosDevice(DDD_RAW_TARGET_PATH, szDrive, szAfsPath);
- if (!fResult)
- Message (MB_OK | MB_ICONHAND, IDS_ERROR_MAP, IDS_ERROR_MAP_DESC, TEXT("%08lX"), GetLastError());
+ if (!(fResult=(MountDOSDrive(pDrive->chDrive, pDrive->szSubmount,FALSE)==NO_ERROR)))
+ Message (MB_OK | MB_ICONHAND, IDS_ERROR_MAP, IDS_ERROR_MAP_DESC, TEXT("%08lX"), GetLastError());
}
-
+ /*
+ Replace this code with Drive mapping routine that doesn't require different formats for each OS
+ szDrive[0] = pDrive->chDrive;
+ _stprintf(szAfsPath, TEXT("\\Device\\LanmanRedirector\\%s\\%s-AFS\\%s"), szDrive, szHostName, pDrive->szSubmount);
+
+ if (dddAction == DDD_REMOVE) {
+ fResult = DefineDosDevice(DDD_RAW_TARGET_PATH | DDD_REMOVE_DEFINITION | DDD_EXACT_MATCH_ON_REMOVE, szDrive, szAfsPath);
+ if (!fResult)
+ Message (MB_OK | MB_ICONHAND, IDS_ERROR_UNMAP, IDS_ERROR_UNMAP_DESC, TEXT("%08lX"), GetLastError());
+ } else if (dddAction == DDD_ADD) {
+ fResult = DefineDosDevice(DDD_RAW_TARGET_PATH, szDrive, szAfsPath);
+ if (!fResult)
+ Message (MB_OK | MB_ICONHAND, IDS_ERROR_MAP, IDS_ERROR_MAP_DESC, TEXT("%08lX"), GetLastError());
+ }
+
+ */
if (fResult)
- UpdateRegistry(pDrive, dddAction == DDD_REMOVE);
-
+ UpdateRegistry(pDrive, dddAction == DDD_REMOVE);
+
return fResult;
}
SendMessage (hCombo, CB_SETCURSEL, iItemSel, 0);
TCHAR szMapping[ MAX_PATH ];
- AdjustAfsPath (szMapping, ((pMap->szMapping[0]) ? pMap->szMapping : TEXT("/afs")), TRUE, FALSE);
+ AdjustAfsPath (szMapping, ((pMap->szMapping[0]) ? pMap->szMapping : cm_slash_mount_root), TRUE, FALSE);
SetDlgItemText (hDlg, IDC_PATH, szMapping);
SetDlgItemText (hDlg, IDC_DESC, pMap->szSubmount);
return;
}
- if ( (lstrncmpi (pMap->szMapping, TEXT("/afs"), lstrlen(TEXT("/afs")))) &&
- (lstrncmpi (pMap->szMapping, TEXT("\\afs"), lstrlen(TEXT("\\afs")))) )
- {
- Message (MB_ICONHAND, GetErrorTitle(), IDS_BADMAP_DESC);
- return;
- }
+ if ( (lstrncmpi (pMap->szMapping, cm_slash_mount_root, lstrlen(cm_slash_mount_root))) &&
+ (lstrncmpi (pMap->szMapping, cm_back_slash_mount_root, lstrlen(cm_back_slash_mount_root))) )
+ {
+ Message (MB_ICONHAND, GetErrorTitle(), IDS_BADMAP_DESC);
+ return;
+ }
// First get a proper submount
if (pMap->szSubmount[0]) {