Author: pschweitzer Date: Sun Jul 2 20:39:48 2017 New Revision: 75271
URL: http://svn.reactos.org/svn/reactos?rev=75271&view=rev Log: [NET] On dismount, you can either use: net use /delete <drive>: or net use <drive>: /delete
CORE-13517
Modified: trunk/reactos/base/applications/network/net/cmdUse.c
Modified: trunk/reactos/base/applications/network/net/cmdUse.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/network/n... ============================================================================== --- trunk/reactos/base/applications/network/net/cmdUse.c [iso-8859-1] (original) +++ trunk/reactos/base/applications/network/net/cmdUse.c [iso-8859-1] Sun Jul 2 20:39:48 2017 @@ -78,12 +78,32 @@ } }
+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) { - DWORD Status, Len; + DWORD Status, Len, Delete;
if (argc == 2) { @@ -97,14 +117,7 @@ } else if (argc == 3) { - 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; @@ -119,34 +132,39 @@ return 0; }
- Len = wcslen(argv[2]); - if (Len != 1 && Len != 2) - { - 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] != L'*' && !iswalpha(argv[2][0])) - { - ConResPrintf(StdErr, IDS_ERROR_INVALID_OPTION_VALUE, L"DeviceName"); - return 1; + Delete = 0; + if (wcsicmp(argv[2], L"/DELETE") == 0) + { + Delete = 3; + } + else + { + if ((argv[2][0] != '*' && argv[2][1] != 0) && + !ValidateDeviceName(argv[2])) + { + ConResPrintf(StdErr, IDS_ERROR_INVALID_OPTION_VALUE, L"DeviceName"); + return 1; + } }
if (wcsicmp(argv[3], L"/DELETE") == 0) { - if (argv[2][0] == L'*') + Delete = 2; + } + + if (Delete != 0) + { + if (!ValidateDeviceName(argv[Delete]) || argv[Delete][0] == L'*') { 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; } else {