Mercurial > hg > octave-lyh
diff src/dirfns.cc @ 13912:8d19194c4b1f
cd: behave like unixy shells for "cd" alone, but be Matlab compatible if doing "current_dir = cd"
* dirfns.cc (Fcd): Return current directory instead of changing to
home directory if nargin == 0 and nargout > 0.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 22 Nov 2011 17:43:30 -0500 |
parents | c09ed93d1a8b |
children | 79aa00a94e9e |
line wrap: on
line diff
--- a/src/dirfns.cc +++ b/src/dirfns.cc @@ -87,7 +87,7 @@ return cd_ok; } -DEFUN (cd, args, , +DEFUN (cd, args, nargout, "-*- texinfo -*-\n\ @deftypefn {Command} {} cd dir\n\ @deftypefnx {Command} {} chdir dir\n\ @@ -127,10 +127,18 @@ } else { - std::string home_dir = octave_env::get_home_directory (); + // Behave like Unixy shells for "cd" by itself, but be Matlab + // compatible if doing "current_dir = cd". - if (home_dir.empty () || ! octave_change_to_directory (home_dir)) - return retval; + if (nargout == 0) + { + std::string home_dir = octave_env::get_home_directory (); + + if (home_dir.empty () || ! octave_change_to_directory (home_dir)) + return retval; + } + else + retval = octave_value (octave_env::get_current_directory ()); } return retval;