2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS net command
4 * FILE: base/applications/network/net/cmdUse.c
7 * PROGRAMMERS: Pierre Schweitzer
14 EnumerateConnections(LPCWSTR Local
)
23 printf("%S\t\t\t%S\t\t\t\t%S\n", L
"Local", L
"Remote", L
"Provider");
25 dRet
= WNetOpenEnum(RESOURCE_CONNECTED
, RESOURCETYPE_DISK
, 0, NULL
, &hEnum
);
26 if (dRet
!= WN_SUCCESS
)
31 lpRes
= HeapAlloc(GetProcessHeap(), 0, dSize
);
43 memset(lpRes
, 0, dSize
);
44 dRet
= WNetEnumResource(hEnum
, &dCount
, lpRes
, &dSize
);
45 if (dRet
== WN_SUCCESS
|| dRet
== WN_MORE_DATA
)
48 for (; dCount
; dCount
--)
50 if (!Local
|| wcsicmp(lpCur
->lpLocalName
, Local
) == 0)
52 printf("%S\t\t\t%S\t\t%S\n", lpCur
->lpLocalName
, lpCur
->lpRemoteName
, lpCur
->lpProvider
);
58 } while (dRet
!= WN_NO_MORE_ENTRIES
);
60 HeapFree(GetProcessHeap(), 0, lpRes
);
75 Status
= EnumerateConnections(NULL
);
76 printf("Status: %lu\n", Status
);
81 Len
= wcslen(argv
[2]);
84 PrintResourceString(IDS_ERROR_INVALID_OPTION_VALUE
, L
"DeviceName");
88 if (!iswalpha(argv
[2][0]) || argv
[2][1] != L
':')
90 PrintResourceString(IDS_ERROR_INVALID_OPTION_VALUE
, L
"DeviceName");
94 Status
= EnumerateConnections(argv
[2]);
95 printf("Status: %lu\n", Status
);
99 Len
= wcslen(argv
[2]);
100 if (Len
!= 1 && Len
!= 2)
102 PrintResourceString(IDS_ERROR_INVALID_OPTION_VALUE
, L
"DeviceName");
103 printf("Len: %lu\n", Len
);
107 if (Len
== 2 && argv
[2][1] != L
':')
109 PrintResourceString(IDS_ERROR_INVALID_OPTION_VALUE
, L
"DeviceName");
113 if (argv
[2][0] != L
'*' && !iswalpha(argv
[2][0]))
115 PrintResourceString(IDS_ERROR_INVALID_OPTION_VALUE
, L
"DeviceName");
119 if (wcsicmp(argv
[3], L
"/DELETE") == 0)
121 if (argv
[2][0] == L
'*')
123 PrintResourceString(IDS_ERROR_INVALID_OPTION_VALUE
, L
"DeviceName");
127 return WNetCancelConnection(argv
[2], FALSE
);
131 BOOL Persist
= FALSE
;
134 Len
= wcslen(argv
[3]);
137 PrintResourceString(IDS_ERROR_INVALID_OPTION_VALUE
, L
"Name");
141 if (argv
[3][0] != L
'\\' || argv
[3][1] != L
'\\')
143 PrintResourceString(IDS_ERROR_INVALID_OPTION_VALUE
, L
"Name");
150 Len
= wcslen(argv
[4]);
153 Cpy
= HeapAlloc(GetProcessHeap(), 0, (Len
+ 1) * sizeof(WCHAR
));
157 for (i
= 0; i
< Len
; ++i
)
158 Cpy
[i
] = towupper(argv
[4][i
]);
160 if (wcsstr(Cpy
, L
"/PERSISTENT:") == Cpy
)
162 LPWSTR Arg
= Cpy
+ 12;
163 if (Len
== 14 && Arg
[0] == 'N' && Arg
[1] == 'O')
167 else if (Len
== 15 && Arg
[0] == 'Y' && Arg
[1] == 'E' && Arg
[2] == 'S')
173 HeapFree(GetProcessHeap(), 0, Cpy
);
174 PrintResourceString(IDS_ERROR_INVALID_OPTION_VALUE
, L
"Persistent");
178 HeapFree(GetProcessHeap(), 0, Cpy
);
184 lpNet
.dwType
= RESOURCETYPE_DISK
;
185 lpNet
.lpLocalName
= (argv
[2][0] != L
'*') ? argv
[2] : NULL
;
186 lpNet
.lpRemoteName
= argv
[3];
187 lpNet
.lpProvider
= NULL
;
189 return WNetAddConnection2(&lpNet
, NULL
, NULL
, CONNECT_REDIRECT
| (Persist
? CONNECT_UPDATE_PROFILE
: 0));