summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
c8ee4f6)
On dismount, you can either use: net use /delete <drive>: or net use <drive>: /delete
CORE-13517
svn path=/trunk/; revision=75271
+static
+BOOL
+ValidateDeviceName(PWSTR DevName)
+{
+ DWORD Len;
+
+ Len = wcslen(DevName);
+ if (Len != 2)
+ {
+ return FALSE;
+ }
+
+ if (!iswalpha(DevName[0]) || DevName[1] != L':')
+ {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
INT
cmdUse(
INT argc,
WCHAR **argv)
{
INT
cmdUse(
INT argc,
WCHAR **argv)
{
+ DWORD Status, Len, Delete;
- Len = wcslen(argv[2]);
- if (Len != 2)
- {
- ConResPrintf(StdErr, IDS_ERROR_INVALID_OPTION_VALUE, L"DeviceName");
- return 1;
- }
-
- if (!iswalpha(argv[2][0]) || argv[2][1] != L':')
+ if (!ValidateDeviceName(argv[2]))
{
ConResPrintf(StdErr, IDS_ERROR_INVALID_OPTION_VALUE, L"DeviceName");
return 1;
{
ConResPrintf(StdErr, IDS_ERROR_INVALID_OPTION_VALUE, L"DeviceName");
return 1;
- Len = wcslen(argv[2]);
- if (Len != 1 && Len != 2)
+ Delete = 0;
+ if (wcsicmp(argv[2], L"/DELETE") == 0)
- ConResPrintf(StdErr, IDS_ERROR_INVALID_OPTION_VALUE, L"DeviceName");
- return 1;
-
- if (Len == 2 && argv[2][1] != L':')
- ConResPrintf(StdErr, IDS_ERROR_INVALID_OPTION_VALUE, L"DeviceName");
- return 1;
+ if ((argv[2][0] != '*' && argv[2][1] != 0) &&
+ !ValidateDeviceName(argv[2]))
+ {
+ ConResPrintf(StdErr, IDS_ERROR_INVALID_OPTION_VALUE, L"DeviceName");
+ return 1;
+ }
- if (argv[2][0] != L'*' && !iswalpha(argv[2][0]))
+ if (wcsicmp(argv[3], L"/DELETE") == 0)
- ConResPrintf(StdErr, IDS_ERROR_INVALID_OPTION_VALUE, L"DeviceName");
- return 1;
- if (wcsicmp(argv[3], L"/DELETE") == 0)
- if (argv[2][0] == L'*')
+ if (!ValidateDeviceName(argv[Delete]) || argv[Delete][0] == L'*')
{
ConResPrintf(StdErr, IDS_ERROR_INVALID_OPTION_VALUE, L"DeviceName");
return 1;
}
{
ConResPrintf(StdErr, IDS_ERROR_INVALID_OPTION_VALUE, L"DeviceName");
return 1;
}
- return WNetCancelConnection2(argv[2], CONNECT_UPDATE_PROFILE, FALSE);
+ Status = WNetCancelConnection2(argv[Delete], CONNECT_UPDATE_PROFILE, FALSE);
+ if (Status != NO_ERROR)
+ PrintError(Status);
+
+ return Status;