diff options
-rw-r--r-- | builtin.cpp | 2 | ||||
-rw-r--r-- | path.cpp | 15 |
2 files changed, 13 insertions, 4 deletions
diff --git a/builtin.cpp b/builtin.cpp index 7e96a460..a926f436 100644 --- a/builtin.cpp +++ b/builtin.cpp @@ -2573,7 +2573,7 @@ static int builtin_cd( parser_t &parser, wchar_t **argv ) int res=STATUS_BUILTIN_OK; - if( argv[1] == 0 ) + if (argv[1] == NULL) { dir_in = env_get_string( L"HOME" ); if( dir_in.missing_or_empty() ) @@ -289,9 +289,16 @@ bool path_get_cdpath_string(const wcstring &dir_str, wcstring &result, const env } else { - - const wchar_t *path = L"."; + + const wchar_t *path = L"."; + // Respect CDPATH + env_var_t cdpath = env_get_string(L"CDPATH"); + if (! cdpath.missing_or_empty()) { + path = cdpath.c_str(); + printf("CDPATH: %ls\n", path); + } + wcstokenizer tokenizer(path, ARRAY_SEP_STR); wcstring next_path; while (tokenizer.next(next_path)) @@ -368,7 +375,9 @@ wchar_t *path_allocate_cdpath( const wchar_t *dir, const wchar_t *wd ) wchar_t *state; wchar_t *whole_path; - env_var_t path = L"."; + // Respect CDPATH + env_var_t path = env_get_string(L"CDPATH"); + if (path.missing_or_empty()) path = L"."; path_cpy = wcsdup( path.c_str() ); |