/* * PATH.C - path internal command. * * * History: * * 17 Jul 1998 (John P Price) * Separated commands into individual files. * * 27-Jul-1998 (John P Price ) * 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 ) * 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 */