diff options
-rw-r--r-- | shell/ash.c | 3 | ||||
-rw-r--r-- | shell/cmdedit.c | 14 | ||||
-rw-r--r-- | shell/cmdedit.h | 4 |
3 files changed, 18 insertions, 3 deletions
diff --git a/shell/ash.c b/shell/ash.c index b34f0583f..80145dae5 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -4117,6 +4117,9 @@ changepath(const char *newval) firstchange = 0; clearcmdentry(firstchange); builtinloc = idx_bltin; +#ifdef CONFIG_FEATURE_COMMAND_EDITING + cmdedit_path_lookup = newval; +#endif } diff --git a/shell/cmdedit.c b/shell/cmdedit.c index 884489b45..ec861df54 100644 --- a/shell/cmdedit.c +++ b/shell/cmdedit.c @@ -43,6 +43,8 @@ #include "busybox.h" +#include "../shell/cmdedit.h" + #ifdef CONFIG_LOCALE_SUPPORT #define Isprint(c) isprint((c)) #else @@ -609,14 +611,20 @@ enum { FIND_FILE_ONLY = 2, }; +#ifdef CONFIG_ASH +const char *cmdedit_path_lookup; +#else +#define cmdedit_path_lookup getenv("PATH") +#endif + static int path_parse(char ***p, int flags) { int npth; - char *tmp; - char *pth; + const char *tmp; + const char *pth; /* if not setenv PATH variable, to search cur dir "." */ - if (flags != FIND_EXE_ONLY || (pth = getenv("PATH")) == 0 || + if (flags != FIND_EXE_ONLY || (pth = cmdedit_path_lookup) == 0 || /* PATH=<empty> or PATH=:<empty> */ *pth == 0 || (*pth == ':' && *(pth + 1) == 0)) { return 1; diff --git a/shell/cmdedit.h b/shell/cmdedit.h index 991dafcd1..4c0c09d76 100644 --- a/shell/cmdedit.h +++ b/shell/cmdedit.h @@ -3,6 +3,10 @@ int cmdedit_read_input(char* promptStr, char* command); +#ifdef CONFIG_ASH +extern const char *cmdedit_path_lookup; +#endif + #ifdef CONFIG_FEATURE_COMMAND_SAVEHISTORY void load_history ( const char *fromfile ); void save_history ( const char *tofile ); |