reactos/base/applications/network/net/cmdHelpMsg.c

113 lines
2.9 KiB
C

/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS net command
* FILE: base/applications/network/net/cmdHelpMsg.c
* PURPOSE:
*
* PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
*/
#include "net.h"
#include <stdlib.h>
INT cmdHelpMsg(INT argc, WCHAR **argv)
{
WCHAR szBuffer[MAX_PATH];
HMODULE hMsgDll = NULL;
INT i;
LONG errNum;
PWSTR endptr;
PWSTR pBuffer;
PWSTR pInserts[10] = {L"***", L"***", L"***", L"***",
L"***", L"***", L"***", L"***",
L"***", NULL};
if (argc < 3)
{
ConResPuts(StdOut, IDS_GENERIC_SYNTAX);
ConResPuts(StdOut, IDS_HELPMSG_SYNTAX);
return 1;
}
for (i = 2; i < argc; i++)
{
if (_wcsicmp(argv[i], L"/help") == 0)
{
ConResPuts(StdOut, IDS_GENERIC_SYNTAX);
ConResPuts(StdOut, IDS_HELPMSG_SYNTAX);
ConResPuts(StdOut, IDS_HELPMSG_HELP_1);
ConResPuts(StdOut, IDS_HELPMSG_HELP_2);
return 1;
}
}
errNum = wcstol(argv[2], &endptr, 10);
if (*endptr != 0)
{
ConResPuts(StdOut, IDS_GENERIC_SYNTAX);
ConResPuts(StdOut, IDS_HELPMSG_SYNTAX);
return 1;
}
if (errNum >= MIN_LANMAN_MESSAGE_ID && errNum <= MAX_LANMAN_MESSAGE_ID)
{
/* Load netmsg.dll */
GetSystemDirectoryW(szBuffer, ARRAYSIZE(szBuffer));
wcscat(szBuffer, L"\\netmsg.dll");
hMsgDll = LoadLibrary(szBuffer);
if (hMsgDll == NULL)
{
ConPrintf(StdOut, L"Failed to load netmsg.dll\n");
return 0;
}
FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_HMODULE |
FORMAT_MESSAGE_ARGUMENT_ARRAY,
hMsgDll,
errNum,
LANG_USER_DEFAULT,
(LPWSTR)&pBuffer,
0,
(va_list *)pInserts);
if (pBuffer)
{
ConPrintf(StdOut, L"\n%s\n", pBuffer);
LocalFree(pBuffer);
}
else
{
PrintErrorMessage(3871);
}
FreeLibrary(hMsgDll);
}
else
{
/* Retrieve the message string without appending extra newlines */
FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_ARGUMENT_ARRAY,
NULL,
errNum,
LANG_USER_DEFAULT,
(LPWSTR)&pBuffer,
0,
(va_list *)pInserts);
if (pBuffer)
{
ConPrintf(StdOut, L"\n%s\n", pBuffer);
LocalFree(pBuffer);
}
else
{
PrintErrorMessage(3871);
}
}
return 0;
}
/* EOF */