ReactOS  0.4.12-dev-714-gfaac916
main.c File Reference
#include "net.h"
Include dependency graph for main.c:

Go to the source code of this file.

Classes

struct  _COMMAND
 

Macros

#define MAX_BUFFER_SIZE   4096
 

Typedefs

typedef struct _COMMAND COMMAND
 
typedef struct _COMMANDPCOMMAND
 

Functions

VOID PrintPaddedResourceString (UINT uID, INT nPaddedLength)
 
VOID PrintPadding (WCHAR chr, INT nPaddedLength)
 
VOID PrintErrorMessage (DWORD dwError)
 
VOID PrintNetMessage (DWORD dwMessage)
 
VOID ReadFromConsole (LPWSTR lpInput, DWORD dwLength, BOOL bEcho)
 
int wmain (int argc, WCHAR **argv)
 
INT unimplemented (INT argc, WCHAR **argv)
 

Variables

COMMAND cmds []
 
HMODULE hModuleNetMsg = NULL
 

Macro Definition Documentation

◆ MAX_BUFFER_SIZE

#define MAX_BUFFER_SIZE   4096

Definition at line 12 of file main.c.

Typedef Documentation

◆ COMMAND

◆ PCOMMAND

Function Documentation

◆ PrintErrorMessage()

VOID PrintErrorMessage ( DWORD  dwError)

Definition at line 81 of file main.c.

83 {
84  WCHAR szErrorBuffer[16];
85  PWSTR pBuffer;
86  PWSTR pErrorInserts[2] = {NULL, NULL};
87 
88  if (dwError >= MIN_LANMAN_MESSAGE_ID && dwError <= MAX_LANMAN_MESSAGE_ID)
89  {
93  dwError,
95  (LPWSTR)&pBuffer,
96  0,
97  NULL);
98  if (pBuffer)
99  {
100  ConPrintf(StdErr, L"%s\n", pBuffer);
102  pBuffer = NULL;
103  }
104  }
105  else
106  {
109  NULL,
110  dwError,
112  (LPWSTR)&pBuffer,
113  0,
114  NULL);
115  if (pBuffer)
116  {
117  ConPrintf(StdErr, L"%s\n", pBuffer);
119  pBuffer = NULL;
120  }
121  }
122 
123  if (dwError != ERROR_SUCCESS)
124  {
125  /* Format insert for the 3514 message */
126  swprintf(szErrorBuffer, L"%lu", dwError);
127  pErrorInserts[0] = szErrorBuffer;
128 
129  /* Format and print the 3514 message */
133  3514,
135  (LPWSTR)&pBuffer,
136  0,
137  (va_list *)pErrorInserts);
138  if (pBuffer)
139  {
140  ConPrintf(StdErr, L"%s\n", pBuffer);
142  pBuffer = NULL;
143  }
144  }
145 }
#define ERROR_SUCCESS
Definition: deptool.c:10
__wchar_t WCHAR
Definition: xmlstorage.h:180
uint16_t * PWSTR
Definition: typedefs.h:54
#define FORMAT_MESSAGE_ARGUMENT_ARRAY
Definition: winbase.h:405
DWORD WINAPI FormatMessageW(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPWSTR lpBuffer, DWORD nSize, __ms_va_list *args)
Definition: format_msg.c:583
#define MIN_LANMAN_MESSAGE_ID
Definition: lmcons.h:10
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
Definition: winbase.h:400
INT __cdecl ConPrintf(IN PCON_STREAM Stream, IN LPWSTR szStr,...)
Definition: outstream.c:520
smooth NULL
Definition: ftsmooth.c:416
PVOID pBuffer
char * va_list
Definition: acmsvcex.h:78
#define FORMAT_MESSAGE_FROM_SYSTEM
Definition: winbase.h:404
#define FORMAT_MESSAGE_FROM_HMODULE
Definition: winbase.h:403
#define MAX_LANMAN_MESSAGE_ID
Definition: lmcons.h:11
#define swprintf(buf, format,...)
Definition: sprintf.c:56
#define StdErr
Definition: stream.h:77
static const WCHAR L[]
Definition: oid.c:1250
#define FORMAT_MESSAGE_IGNORE_INSERTS
Definition: winbase.h:401
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1577
HMODULE hModuleNetMsg
Definition: main.c:48
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define LANG_USER_DEFAULT
Definition: tnerror.cpp:50

◆ PrintNetMessage()

VOID PrintNetMessage ( DWORD  dwMessage)

Definition at line 149 of file main.c.

151 {
152  PWSTR pBuffer;
153 
158  dwMessage,
160  (LPWSTR)&pBuffer,
161  0,
162  NULL);
163  if (pBuffer)
164  {
165  ConPrintf(StdOut, L"%s\n", pBuffer);
167  pBuffer = NULL;
168  }
169 }
uint16_t * PWSTR
Definition: typedefs.h:54
DWORD WINAPI FormatMessageW(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPWSTR lpBuffer, DWORD nSize, __ms_va_list *args)
Definition: format_msg.c:583
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
Definition: winbase.h:400
INT __cdecl ConPrintf(IN PCON_STREAM Stream, IN LPWSTR szStr,...)
Definition: outstream.c:520
smooth NULL
Definition: ftsmooth.c:416
PVOID pBuffer
#define FORMAT_MESSAGE_FROM_HMODULE
Definition: winbase.h:403
static const WCHAR L[]
Definition: oid.c:1250
#define FORMAT_MESSAGE_IGNORE_INSERTS
Definition: winbase.h:401
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1577
#define StdOut
Definition: stream.h:76
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
Definition: loader.c:845
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define LANG_USER_DEFAULT
Definition: tnerror.cpp:50

Referenced by cmdAccounts(), cmdComputer(), cmdConfig(), cmdContinue(), cmdGroup(), cmdHelp(), cmdHelpMsg(), cmdLocalGroup(), cmdPause(), cmdStart(), cmdStatistics(), cmdStop(), cmdUser(), and wmain().

◆ PrintPaddedResourceString()

VOID PrintPaddedResourceString ( UINT  uID,
INT  nPaddedLength 
)

Definition at line 52 of file main.c.

55 {
56  INT nLength;
57 
58  nLength = ConResPuts(StdOut, uID);
59  if (nLength < nPaddedLength)
60  PrintPadding(L' ', nPaddedLength - nLength);
61 }
_In_ DWORD nLength
Definition: wincon.h:461
int32_t INT
Definition: typedefs.h:56
INT ConResPuts(IN PCON_STREAM Stream, IN UINT uID)
Definition: outstream.c:610
static const WCHAR L[]
Definition: oid.c:1250
VOID PrintPadding(WCHAR chr, INT nPaddedLength)
Definition: main.c:65
#define StdOut
Definition: stream.h:76

Referenced by cmdAccounts(), DisplayGroup(), DisplayLocalGroup(), DisplayServerConfig(), DisplayServerStatistics(), DisplayUser(), DisplayWorkstationConfig(), and DisplayWorkstationStatistics().

◆ PrintPadding()

VOID PrintPadding ( WCHAR  chr,
INT  nPaddedLength 
)

Definition at line 65 of file main.c.

68 {
69  INT i;
70  WCHAR szMsgBuffer[MAX_BUFFER_SIZE];
71 
72  for (i = 0; i < nPaddedLength; i++)
73  szMsgBuffer[i] = chr;
74  szMsgBuffer[nPaddedLength] = UNICODE_NULL;
75 
76  ConPuts(StdOut, szMsgBuffer);
77 }
__wchar_t WCHAR
Definition: xmlstorage.h:180
int32_t INT
Definition: typedefs.h:56
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define UNICODE_NULL
#define MAX_BUFFER_SIZE
Definition: main.c:12
int chr(char *serport)
Definition: gdblib.c:152
INT ConPuts(IN PCON_STREAM Stream, IN LPWSTR szStr)
Definition: outstream.c:427
#define StdOut
Definition: stream.h:76

Referenced by DisplayGroup(), DisplayLocalGroup(), DisplayUser(), EnumerateGroups(), EnumerateLocalGroups(), EnumerateUsers(), and PrintPaddedResourceString().

◆ ReadFromConsole()

VOID ReadFromConsole ( LPWSTR  lpInput,
DWORD  dwLength,
BOOL  bEcho 
)

Definition at line 173 of file main.c.

177 {
178  DWORD dwOldMode;
179  DWORD dwRead = 0;
180  HANDLE hFile;
181  LPWSTR p;
182  PCHAR pBuf;
183 
184  pBuf = HeapAlloc(GetProcessHeap(), 0, dwLength - 1);
185  ZeroMemory(lpInput, dwLength * sizeof(WCHAR));
187  GetConsoleMode(hFile, &dwOldMode);
188 
190 
191  ReadFile(hFile, (PVOID)pBuf, dwLength - 1, &dwRead, NULL);
192 
193  MultiByteToWideChar(CP_OEMCP, 0, pBuf, dwRead, lpInput, dwLength - 1);
194  HeapFree(GetProcessHeap(), 0, pBuf);
195 
196  for (p = lpInput; *p; p++)
197  {
198  if (*p == L'\x0d')
199  {
200  *p = L'\0';
201  break;
202  }
203  }
204 
205  SetConsoleMode(hFile, dwOldMode);
206 }
signed char * PCHAR
Definition: retypes.h:7
__wchar_t WCHAR
Definition: xmlstorage.h:180
BOOL WINAPI GetConsoleMode(HANDLE hConsoleHandle, LPDWORD lpMode)
Definition: console.c:1571
BOOL bEcho
Definition: batch.c:68
#define ZeroMemory
Definition: winbase.h:1635
HANDLE WINAPI GetStdHandle(IN DWORD nStdHandle)
Definition: console.c:152
#define ENABLE_ECHO_INPUT
Definition: wincon.h:77
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleMode(HANDLE hConsoleHandle, DWORD dwMode)
Definition: console.c:1608
smooth NULL
Definition: ftsmooth.c:416
#define STD_INPUT_HANDLE
Definition: winbase.h:264
#define GetProcessHeap()
Definition: compat.h:395
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
static DWORD DWORD * dwLength
Definition: fusion.c:83
unsigned long DWORD
Definition: ntddk_ex.h:95
#define ENABLE_LINE_INPUT
Definition: wincon.h:76
static const WCHAR L[]
Definition: oid.c:1250
_In_ HANDLE hFile
Definition: mswsock.h:90
#define MultiByteToWideChar
Definition: compat.h:100
GLfloat GLfloat p
Definition: glext.h:8902
WCHAR * LPWSTR
Definition: xmlstorage.h:184
BOOL WINAPI ReadFile(IN HANDLE hFile, IN LPVOID lpBuffer, IN DWORD nNumberOfBytesToRead, OUT LPDWORD lpNumberOfBytesRead OPTIONAL, IN LPOVERLAPPED lpOverlapped OPTIONAL)
Definition: rw.c:123
#define CP_OEMCP
Definition: winnls.h:228
#define HeapFree(x, y, z)
Definition: compat.h:394

Referenced by ReadPassword().

◆ unimplemented()

INT unimplemented ( INT  argc,
WCHAR **  argv 
)

Definition at line 257 of file main.c.

258 {
259  ConPuts(StdOut, L"This command is not implemented yet\n");
260  return 1;
261 }
static const WCHAR L[]
Definition: oid.c:1250
INT ConPuts(IN PCON_STREAM Stream, IN LPWSTR szStr)
Definition: outstream.c:427
#define StdOut
Definition: stream.h:76

◆ wmain()

int wmain ( int  argc,
WCHAR **  argv 
)

Definition at line 209 of file main.c.

210 {
211  WCHAR szDllBuffer[MAX_PATH];
212  PCOMMAND cmdptr;
213  int nResult = 0;
214  BOOL bRun = FALSE;
215 
216  /* Initialize the Console Standard Streams */
218 
219  /* Load netmsg.dll */
220  GetSystemDirectoryW(szDllBuffer, ARRAYSIZE(szDllBuffer));
221  wcscat(szDllBuffer, L"\\netmsg.dll");
222 
223  hModuleNetMsg = LoadLibrary(szDllBuffer);
224  if (hModuleNetMsg == NULL)
225  {
226  ConPrintf(StdErr, L"Failed to load netmsg.dll\n");
227  return 1;
228  }
229 
230  if (argc < 2)
231  {
232  nResult = 1;
233  goto done;
234  }
235 
236  /* Scan the command table */
237  for (cmdptr = cmds; cmdptr->name; cmdptr++)
238  {
239  if (_wcsicmp(argv[1], cmdptr->name) == 0)
240  {
241  nResult = cmdptr->func(argc, argv);
242  bRun = TRUE;
243  break;
244  }
245  }
246 
247 done:
248  if (bRun == FALSE)
249  PrintNetMessage(MSG_NET_SYNTAX);
250 
251  if (hModuleNetMsg != NULL)
253 
254  return nResult;
255 }
static int argc
Definition: ServiceArgs.c:12
#define TRUE
Definition: types.h:120
#define LoadLibrary
Definition: winbase.h:3676
__wchar_t WCHAR
Definition: xmlstorage.h:180
COMMAND cmds[]
Definition: main.c:21
#define ARRAYSIZE(array)
Definition: filtermapper.c:47
INT(* func)(INT, WCHAR **)
Definition: main.c:17
VOID PrintNetMessage(DWORD dwMessage)
Definition: main.c:149
#define argv
Definition: mplay32.c:18
#define ConInitStdStreams()
Definition: stream.h:122
INT __cdecl ConPrintf(IN PCON_STREAM Stream, IN LPWSTR szStr,...)
Definition: outstream.c:520
smooth NULL
Definition: ftsmooth.c:416
#define FreeLibrary(x)
Definition: compat.h:405
unsigned int BOOL
Definition: ntddk_ex.h:94
#define MAX_PATH
Definition: compat.h:26
#define StdErr
Definition: stream.h:77
static const WCHAR L[]
Definition: oid.c:1250
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: path.c:2312
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
HMODULE hModuleNetMsg
Definition: main.c:48
Definition: main.c:14
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
WCHAR * name
Definition: main.c:16

Variable Documentation

◆ cmds

COMMAND cmds[]
Initial value:
=
{
{L"accounts", cmdAccounts},
{L"computer", cmdComputer},
{L"config", cmdConfig},
{L"continue", cmdContinue},
{L"file", unimplemented},
{L"group", cmdGroup},
{L"help", cmdHelp},
{L"helpmsg", cmdHelpMsg},
{L"localgroup", cmdLocalGroup},
{L"name", unimplemented},
{L"pause", cmdPause},
{L"print", unimplemented},
{L"send", unimplemented},
{L"session", unimplemented},
{L"share", unimplemented},
{L"start", cmdStart},
{L"statistics", cmdStatistics},
{L"stop", cmdStop},
{L"time", unimplemented},
{L"use", cmdUse},
{L"user", cmdUser},
{L"view", unimplemented},
}
INT unimplemented(INT argc, WCHAR **argv)
Definition: main.c:257
INT cmdStart(INT argc, WCHAR **argv)
Definition: cmdStart.c:163
INT cmdComputer(INT argc, WCHAR **argv)
Definition: cmdComputer.c:11
INT cmdConfig(INT argc, WCHAR **argv)
Definition: cmdConfig.c:151
smooth NULL
Definition: ftsmooth.c:416
INT cmdHelp(INT argc, WCHAR **argv)
Definition: cmdHelp.c:12
INT cmdHelpMsg(INT argc, WCHAR **argv)
Definition: cmdHelpMsg.c:14
INT cmdAccounts(INT argc, WCHAR **argv)
Definition: cmdAccounts.c:13
INT cmdContinue(INT argc, WCHAR **argv)
Definition: cmdContinue.c:12
static const WCHAR L[]
Definition: oid.c:1250
INT cmdUse(INT argc, WCHAR **argv)
Definition: cmdUse.c:102
INT cmdUser(INT argc, WCHAR **argv)
Definition: cmdUser.c:616
INT cmdStop(INT argc, WCHAR **argv)
Definition: cmdStop.c:12
INT cmdStatistics(INT argc, WCHAR **argv)
INT cmdLocalGroup(INT argc, WCHAR **argv)
INT cmdPause(INT argc, WCHAR **argv)
Definition: cmdPause.c:12
INT cmdGroup(INT argc, WCHAR **argv)
Definition: cmdGroup.c:154

Definition at line 21 of file main.c.

Referenced by DoCommand(), handle_arrow_key(), handle_edit_event(), help_cmdlist(), help_main(), test_ioctlsocket(), test_OleCommandTarget(), and wmain().

◆ hModuleNetMsg

HMODULE hModuleNetMsg = NULL

Definition at line 48 of file main.c.

Referenced by cmdHelpMsg(), PrintErrorMessage(), and wmain().