mirror of
https://github.com/reactos/reactos.git
synced 2024-11-18 13:01:40 +00:00
94 lines
2.1 KiB
C
94 lines
2.1 KiB
C
/*
|
|
* PATH.C - path internal command.
|
|
*
|
|
*
|
|
* History:
|
|
*
|
|
* 17 Jul 1998 (John P Price)
|
|
* Separated commands into individual files.
|
|
*
|
|
* 27-Jul-1998 (John P Price <linux-guru@gcfl.net>)
|
|
* added config.h include
|
|
*
|
|
* 09-Dec-1998 (Eric Kohl)
|
|
* Added help text ("/?").
|
|
*
|
|
* 18-Jan-1999 (Eric Kohl)
|
|
* Unicode ready!
|
|
*
|
|
* 18-Jan-1999 (Eric Kohl)
|
|
* Redirection safe!
|
|
*
|
|
* 24-Jan-1999 (Eric Kohl)
|
|
* Fixed Win32 environment handling.
|
|
*
|
|
* 30-Apr-2005 (Magnus Olsen <magnus@greatlord.com>)
|
|
* Remove all hardcoded strings in En.rc
|
|
*/
|
|
#include "precomp.h"
|
|
|
|
#ifdef INCLUDE_CMD_PATH
|
|
|
|
/* size of environment variable buffer */
|
|
#define ENV_BUFFER_SIZE 1024
|
|
|
|
|
|
INT cmd_path (LPTSTR param)
|
|
{
|
|
if (!_tcsncmp (param, _T("/?"), 2))
|
|
{
|
|
ConOutResPaging(TRUE,STRING_PATH_HELP1);
|
|
return 0;
|
|
}
|
|
|
|
nErrorLevel = 0;
|
|
|
|
/* if param is empty, display the PATH environment variable */
|
|
if (!param || !*param)
|
|
{
|
|
DWORD dwBuffer;
|
|
LPTSTR pszBuffer;
|
|
|
|
pszBuffer = (LPTSTR)cmd_alloc (ENV_BUFFER_SIZE * sizeof(TCHAR));
|
|
dwBuffer = GetEnvironmentVariable (_T("PATH"), pszBuffer, ENV_BUFFER_SIZE);
|
|
if (dwBuffer == 0)
|
|
{
|
|
cmd_free(pszBuffer);
|
|
ConOutResPrintf(STRING_VOL_HELP2, _T("PATH"));
|
|
return 0;
|
|
}
|
|
else if (dwBuffer > ENV_BUFFER_SIZE)
|
|
{
|
|
LPTSTR pszOldBuffer = pszBuffer;
|
|
pszBuffer = (LPTSTR)cmd_realloc (pszBuffer, dwBuffer * sizeof (TCHAR));
|
|
if (pszBuffer == NULL)
|
|
{
|
|
cmd_free(pszOldBuffer);
|
|
return 1;
|
|
}
|
|
GetEnvironmentVariable (_T("PATH"), pszBuffer, dwBuffer);
|
|
}
|
|
|
|
ConOutPrintf(_T("PATH=%s\n"), pszBuffer);
|
|
cmd_free (pszBuffer);
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* skip leading '=' */
|
|
if (*param == _T('='))
|
|
param++;
|
|
|
|
/* set PATH environment variable */
|
|
if (!SetEnvironmentVariable (_T("PATH"), param))
|
|
{
|
|
nErrorLevel = 1;
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
#endif
|
|
|
|
/* EOF */
|