# HG changeset patch # User John W. Eaton # Date 1243372807 14400 # Node ID 1d3b91166b9cea5576439e705efe44c536b2f8d6 # Parent 7f3a1a90f4f48ea3ac3e93ac216d29f6ad328751 allow pathsep to be set diff -r 7f3a1a90f4f4 -r 1d3b91166b9c ChangeLog --- a/ChangeLog Tue May 26 14:57:46 2009 -0400 +++ b/ChangeLog Tue May 26 17:20:07 2009 -0400 @@ -1,3 +1,7 @@ +2009-05-26 John W. Eaton + + * src/dirfns.cc (Fpathsep): Allow path separator to be set. + 2009-03-17 Thomas Weber * configure.in: fix typo with regards to termios.h diff -r 7f3a1a90f4f4 -r 1d3b91166b9c liboctave/pathsearch.h --- a/liboctave/pathsearch.h Tue May 26 14:57:46 2009 -0400 +++ b/liboctave/pathsearch.h Tue May 26 17:20:07 2009 -0400 @@ -88,6 +88,11 @@ return static_members::path_sep_char (); } + static void path_sep_char (char c) + { + static_members::path_sep_char (c); + } + static std::string path_sep_str (void) { return static_members::path_sep_str (); @@ -131,6 +136,15 @@ return instance_ok () ? instance->xpath_sep_char : 0; } + static void path_sep_char (char c) + { + if (instance_ok ()) + { + instance->xpath_sep_char = c; + instance->xpath_sep_str = std::string (1, c); + } + } + static std::string path_sep_str (void) { return instance_ok () ? instance->xpath_sep_str : std::string (); diff -r 7f3a1a90f4f4 -r 1d3b91166b9c src/dirfns.cc --- a/src/dirfns.cc Tue May 26 14:57:46 2009 -0400 +++ b/src/dirfns.cc Tue May 26 17:20:07 2009 -0400 @@ -671,19 +671,47 @@ return retval; } -DEFUN (pathsep, args, , +DEFUN (pathsep, args, nargout, "-*- texinfo -*-\n\ -@deftypefn {Built-in Function} {} pathsep ()\n\ -Return the system-dependent character used to separate directories in\n\ +@deftypefn {Built-in Function} {@var{val} =} pathsep ()\n\ +@deftypefn {Built-in Function} {@var{old_val} =} pathsep (@var{new_val})\n\ +Query or set the character used to separate directories in\n\ a path.\n\ @seealso{filesep, dir, ls}\n\ @end deftypefn") { octave_value retval; - if (args.length () == 0) + int nargin = args.length (); + + if (nargout > 0 || nargin == 0) retval = dir_path::path_sep_str (); - else + + if (nargin == 1) + { + std::string sval = args(0).string_value (); + + if (! error_state) + { + switch (sval.length ()) + { + case 1: + dir_path::path_sep_char (sval[0]); + break; + + case 0: + dir_path::path_sep_char ('\0'); + break; + + default: + error ("pathsep: argument must be a single character"); + break; + } + } + else + error ("pathsep: argument must be a single character"); + } + else if (nargin > 1) print_usage (); return retval;