Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118/* * 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){ INT retval = 0;
if (!_tcsncmp(param, _T("/?"), 2)) { ConOutResPaging(TRUE, STRING_PATH_HELP1); return 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)); if (!pszBuffer) { WARN("Cannot allocate memory for pszBuffer!\n"); error_out_of_memory(); retval = 1; goto Quit; }
dwBuffer = GetEnvironmentVariable(_T("PATH"), pszBuffer, ENV_BUFFER_SIZE); if (dwBuffer == 0) { cmd_free(pszBuffer); ConErrResPrintf(STRING_SET_ENV_ERROR, _T("PATH")); retval = 0; goto Quit; } else if (dwBuffer > ENV_BUFFER_SIZE) { LPTSTR pszOldBuffer = pszBuffer; pszBuffer = (LPTSTR)cmd_realloc(pszBuffer, dwBuffer * sizeof (TCHAR)); if (!pszBuffer) { WARN("Cannot reallocate memory for pszBuffer!\n"); error_out_of_memory(); cmd_free(pszOldBuffer); retval = 1; goto Quit; } GetEnvironmentVariable(_T("PATH"), pszBuffer, dwBuffer); }
ConOutPrintf(_T("PATH=%s\n"), pszBuffer); cmd_free(pszBuffer);
retval = 0; goto Quit; }
/* Skip leading '=' */ if (*param == _T('=')) param++;
/* Set PATH environment variable */ if (!SetEnvironmentVariable(_T("PATH"), param)) { retval = 1; }
Quit: if (BatType != CMD_TYPE) { if (retval != 0) nErrorLevel = retval; } else { nErrorLevel = retval; }
return retval;}
#endif
/* EOF */