X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=base%2Fapplications%2Fnetwork%2Fnet%2Fmain.c;h=298b875caf96245d770a8eff43c6ceacaf417da2;hp=1b489cc493cfc3196e3cde798d80e08871bd5140;hb=23a90aab5a5b4eb323a9ca0b0a267dc156528422;hpb=4fc224434a25e663728a53b3ba7415f40406a5ea diff --git a/base/applications/network/net/main.c b/base/applications/network/net/main.c index 1b489cc493c..298b875caf9 100644 --- a/base/applications/network/net/main.c +++ b/base/applications/network/net/main.c @@ -1,7 +1,7 @@ /* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS net command - * FILE: + * FILE: base/applications/network/net/main.c * PURPOSE: * * PROGRAMMERS: Magnus Olsen (greatlord@reactos.org) @@ -22,10 +22,10 @@ COMMAND cmds[] = { {L"accounts", cmdAccounts}, {L"computer", unimplemented}, - {L"config", unimplemented}, + {L"config", cmdConfig}, {L"continue", cmdContinue}, {L"file", unimplemented}, - {L"group", unimplemented}, + {L"group", cmdGroup}, {L"help", cmdHelp}, {L"helpmsg", cmdHelpMsg}, {L"localgroup", cmdLocalGroup}, @@ -36,85 +36,80 @@ COMMAND cmds[] = {L"session", unimplemented}, {L"share", unimplemented}, {L"start", cmdStart}, - {L"statistics", unimplemented}, + {L"statistics", cmdStatistics}, {L"stop", cmdStop}, {L"time", unimplemented}, - {L"use", unimplemented}, + {L"use", cmdUse}, {L"user", cmdUser}, {L"view", unimplemented}, {NULL, NULL} }; + VOID -PrintResourceString( - INT resID, - ...) +PrintPaddedResourceString( + UINT uID, + INT nPaddedLength) { - WCHAR szMsgBuffer[MAX_BUFFER_SIZE]; - WCHAR szOutBuffer[MAX_BUFFER_SIZE]; - va_list arg_ptr; + INT nLength; - va_start(arg_ptr, resID); - LoadStringW(GetModuleHandle(NULL), resID, szMsgBuffer, MAX_BUFFER_SIZE); - _vsnwprintf(szOutBuffer, MAX_BUFFER_SIZE, szMsgBuffer, arg_ptr); - va_end(arg_ptr); - - WriteToConsole(szOutBuffer); + nLength = ConResPuts(StdOut, uID); + if (nLength < nPaddedLength) + PrintPadding(L' ', nPaddedLength - nLength); } VOID -PrintToConsole( - LPWSTR lpFormat, - ...) +PrintPadding( + WCHAR chr, + INT nPaddedLength) { - WCHAR szBuffer[MAX_BUFFER_SIZE]; - va_list arg_ptr; + INT i; + WCHAR szMsgBuffer[MAX_BUFFER_SIZE]; - va_start(arg_ptr, lpFormat); - _vsnwprintf(szBuffer, MAX_BUFFER_SIZE, lpFormat, arg_ptr); - va_end(arg_ptr); + for (i = 0; i < nPaddedLength; i++) + szMsgBuffer[i] = chr; + szMsgBuffer[nPaddedLength] = UNICODE_NULL; - WriteToConsole(szBuffer); + ConPuts(StdOut, szMsgBuffer); } VOID -WriteToConsole( - LPWSTR lpString) +ReadFromConsole( + LPWSTR lpInput, + DWORD dwLength, + BOOL bEcho) { - CHAR szOemBuffer[MAX_BUFFER_SIZE * 2]; - HANDLE hOutput; - DWORD dwLength; + DWORD dwOldMode; + DWORD dwRead = 0; + HANDLE hFile; + LPWSTR p; + PCHAR pBuf; - dwLength = wcslen(lpString); + pBuf = HeapAlloc(GetProcessHeap(), 0, dwLength - 1); + ZeroMemory(lpInput, dwLength * sizeof(WCHAR)); + hFile = GetStdHandle(STD_INPUT_HANDLE); + GetConsoleMode(hFile, &dwOldMode); - hOutput = GetStdHandle(STD_OUTPUT_HANDLE); - if ((GetFileType(hOutput) & ~FILE_TYPE_REMOTE) == FILE_TYPE_CHAR) - { - WriteConsoleW(hOutput, - lpString, - dwLength, - &dwLength, - NULL); - } - else + SetConsoleMode(hFile, ENABLE_LINE_INPUT | (bEcho ? ENABLE_ECHO_INPUT : 0)); + + ReadFile(hFile, (PVOID)pBuf, dwLength - 1, &dwRead, NULL); + + MultiByteToWideChar(CP_OEMCP, 0, pBuf, dwRead, lpInput, dwLength - 1); + HeapFree(GetProcessHeap(), 0, pBuf); + + for (p = lpInput; *p; p++) { - dwLength = WideCharToMultiByte(CP_OEMCP, - 0, - lpString, - dwLength, - szOemBuffer, - MAX_BUFFER_SIZE * 2, - NULL, - NULL); - WriteFile(hOutput, - szOemBuffer, - dwLength, - &dwLength, - NULL); + if (*p == L'\x0d') + { + *p = L'\0'; + break; + } } + + SetConsoleMode(hFile, dwOldMode); } @@ -122,9 +117,12 @@ int wmain(int argc, WCHAR **argv) { PCOMMAND cmdptr; + /* Initialize the Console Standard Streams */ + ConInitStdStreams(); + if (argc < 2) { - PrintResourceString(IDS_NET_SYNTAX); + ConResPuts(StdOut, IDS_NET_SYNTAX); return 1; } @@ -137,13 +135,13 @@ int wmain(int argc, WCHAR **argv) } } - PrintResourceString(IDS_NET_SYNTAX); + ConResPuts(StdOut, IDS_NET_SYNTAX); return 1; } INT unimplemented(INT argc, WCHAR **argv) { - puts("This command is not implemented yet"); + ConPuts(StdOut, L"This command is not implemented yet\n"); return 1; }