aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--builtin.cpp2
-rw-r--r--path.cpp15
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() )
diff --git a/path.cpp b/path.cpp
index 7580d46b..4003644c 100644
--- a/path.cpp
+++ b/path.cpp
@@ -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() );