Mercurial > octave-nkf
diff libinterp/corefcn/load-path.cc @ 20616:fd0efcdb3718
use new string_value method to handle value extraction errors
* dirfns.cc, file-io.cc, gammainc.cc, help.cc, load-path.cc,
octave-link.cc, qz.cc, regexp.cc, strfns.cc, syscalls.cc, time.cc,
variables.cc: Use new string_value method.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 08 Oct 2015 19:00:51 -0400 |
parents | f90c8372b7ba |
children |
line wrap: on
line diff
--- a/libinterp/corefcn/load-path.cc Thu Oct 08 17:55:57 2015 -0400 +++ b/libinterp/corefcn/load-path.cc Thu Oct 08 19:00:51 2015 -0400 @@ -2239,26 +2239,20 @@ if (nargin == 1) { - std::string dirname = args(0).string_value (); - - if (! error_state) - retval = genpath (dirname); - else - error ("genpath: DIR must be a string"); + std::string dirname = args(0).string_value ("genpath: DIR must be a string"); + + retval = genpath (dirname); } else if (nargin > 1) { - std::string dirname = args(0).string_value (); + std::string dirname = args(0).string_value ("genpath: all arguments must be strings"); string_vector skip (nargin - 1); for (octave_idx_type i = 1; i < nargin; i++) - skip[i-1] = args(i).string_value (); - - if (! error_state) - retval = genpath (dirname, skip); - else - error ("genpath: all arguments must be strings"); + skip[i-1] = args(i).string_value ("genpath: all arguments must be strings"); + + retval = genpath (dirname, skip); } else print_usage (); @@ -2461,34 +2455,29 @@ for (int i = 0; i < nargin; i++) { - if (args(i).is_string ()) + std::string arg = args(i).string_value ("addpath: all arguments must be strings"); + + std::list<std::string> dir_elts = split_path (arg); + + if (! append) + std::reverse (dir_elts.begin (), dir_elts.end ()); + + for (std::list<std::string>::const_iterator p = dir_elts.begin (); + p != dir_elts.end (); + p++) { - std::string arg = args(i).string_value (); - - std::list<std::string> dir_elts = split_path (arg); - - if (! append) - std::reverse (dir_elts.begin (), dir_elts.end ()); - - for (std::list<std::string>::const_iterator p = dir_elts.begin (); - p != dir_elts.end (); - p++) - { - std::string dir = *p; - - //dir = regexprep (dir_elts{j}, '//+', "/"); - //dir = regexprep (dir, '/$', ""); - - if (append) - load_path::append (dir, true); - else - load_path::prepend (dir, true); - - need_to_update = true; - } + std::string dir = *p; + + //dir = regexprep (dir_elts{j}, '//+', "/"); + //dir = regexprep (dir, '/$', ""); + + if (append) + load_path::append (dir, true); + else + load_path::prepend (dir, true); + + need_to_update = true; } - else - error ("addpath: all arguments must be strings"); } if (need_to_update) @@ -2530,28 +2519,23 @@ for (int i = 0; i < nargin; i++) { - if (args(i).is_string ()) + std::string arg = args(i).string_value ("rmpath: all arguments must be strings"); + std::list<std::string> dir_elts = split_path (arg); + + for (std::list<std::string>::const_iterator p = dir_elts.begin (); + p != dir_elts.end (); + p++) { - std::string arg = args(i).string_value (); - std::list<std::string> dir_elts = split_path (arg); - - for (std::list<std::string>::const_iterator p = dir_elts.begin (); - p != dir_elts.end (); - p++) - { - std::string dir = *p; - - //dir = regexprep (dir_elts{j}, '//+', "/"); - //dir = regexprep (dir, '/$', ""); - - if (! load_path::remove (dir)) - warning ("rmpath: %s: not found", dir.c_str ()); - else - need_to_update = true; - } + std::string dir = *p; + + //dir = regexprep (dir_elts{j}, '//+', "/"); + //dir = regexprep (dir, '/$', ""); + + if (! load_path::remove (dir)) + warning ("rmpath: %s: not found", dir.c_str ()); + else + need_to_update = true; } - else - error ("addpath: all arguments must be strings"); } if (need_to_update)