From 3be07cc64506477e2bf195b7c297b8d6d3050173 Mon Sep 17 00:00:00 2001 From: ridiculousfish Date: Sat, 5 May 2012 14:30:20 -0700 Subject: [PATCH] Fix to start re-respecting CDPATH --- builtin.cpp | 2 +- path.cpp | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/builtin.cpp b/builtin.cpp index 7e96a460f..a926f436e 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 7580d46b7..4003644c6 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() );