- Remove hard-coded reference to cmdstart.bat and load it from registry (Software...
[reactos.git] / reactos / base / shell / cmd / path.c
1 /*
2 * PATH.C - path internal command.
3 *
4 *
5 * History:
6 *
7 * 17 Jul 1998 (John P Price)
8 * Separated commands into individual files.
9 *
10 * 27-Jul-1998 (John P Price <linux-guru@gcfl.net>)
11 * added config.h include
12 *
13 * 09-Dec-1998 (Eric Kohl)
14 * Added help text ("/?").
15 *
16 * 18-Jan-1999 (Eric Kohl)
17 * Unicode ready!
18 *
19 * 18-Jan-1999 (Eric Kohl)
20 * Redirection safe!
21 *
22 * 24-Jan-1999 (Eric Kohl)
23 * Fixed Win32 environment handling.
24 *
25 * 30-Apr-2005 (Magnus Olsen) <magnus@greatlord.com>)
26 * Remove all hardcode string to En.rc
27 */
28 #include <precomp.h>
29
30 #ifdef INCLUDE_CMD_PATH
31
32 /* size of environment variable buffer */
33 #define ENV_BUFFER_SIZE 1024
34
35
36 INT cmd_path (LPTSTR cmd, LPTSTR param)
37 {
38
39 if (!_tcsncmp (param, _T("/?"), 2))
40 {
41 ConOutResPaging(TRUE,STRING_PATH_HELP1);
42 return 0;
43 }
44
45 nErrorLevel = 0;
46
47 /* if param is empty, display the PATH environment variable */
48 if (!param || !*param)
49 {
50 DWORD dwBuffer;
51 LPTSTR pszBuffer;
52 TCHAR szMsg[RC_STRING_MAX_SIZE];
53
54 pszBuffer = (LPTSTR)cmd_alloc (ENV_BUFFER_SIZE * sizeof(TCHAR));
55 dwBuffer = GetEnvironmentVariable (_T("PATH"), pszBuffer, ENV_BUFFER_SIZE);
56 if (dwBuffer == 0)
57 {
58 LoadString(CMD_ModuleHandle, STRING_VOL_HELP2, szMsg, RC_STRING_MAX_SIZE);
59 ConOutPrintf(szMsg, _T("PATH"));
60 return 0;
61 }
62 else if (dwBuffer > ENV_BUFFER_SIZE)
63 {
64 pszBuffer = (LPTSTR)cmd_realloc (pszBuffer, dwBuffer * sizeof (TCHAR));
65 GetEnvironmentVariable (_T("PATH"), pszBuffer, ENV_BUFFER_SIZE);
66 }
67
68 ConOutPrintf (_T("PATH=%s\n"), pszBuffer);
69 cmd_free (pszBuffer);
70
71 return 0;
72 }
73
74 /* skip leading '=' */
75 if (*param == _T('='))
76 param++;
77
78 /* set PATH environment variable */
79 if (!SetEnvironmentVariable (_T("PATH"), param))
80 {
81 nErrorLevel = 1;
82 return 1;
83 }
84
85 return 0;
86 }
87
88 #endif
89
90 /* EOF */