Mercurial > octave-nkf
comparison 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 |
comparison
equal
deleted
inserted
replaced
20615:729a85dafba8 | 20616:fd0efcdb3718 |
---|---|
2237 | 2237 |
2238 octave_idx_type nargin = args.length (); | 2238 octave_idx_type nargin = args.length (); |
2239 | 2239 |
2240 if (nargin == 1) | 2240 if (nargin == 1) |
2241 { | 2241 { |
2242 std::string dirname = args(0).string_value (); | 2242 std::string dirname = args(0).string_value ("genpath: DIR must be a string"); |
2243 | 2243 |
2244 if (! error_state) | 2244 retval = genpath (dirname); |
2245 retval = genpath (dirname); | |
2246 else | |
2247 error ("genpath: DIR must be a string"); | |
2248 } | 2245 } |
2249 else if (nargin > 1) | 2246 else if (nargin > 1) |
2250 { | 2247 { |
2251 std::string dirname = args(0).string_value (); | 2248 std::string dirname = args(0).string_value ("genpath: all arguments must be strings"); |
2252 | 2249 |
2253 string_vector skip (nargin - 1); | 2250 string_vector skip (nargin - 1); |
2254 | 2251 |
2255 for (octave_idx_type i = 1; i < nargin; i++) | 2252 for (octave_idx_type i = 1; i < nargin; i++) |
2256 skip[i-1] = args(i).string_value (); | 2253 skip[i-1] = args(i).string_value ("genpath: all arguments must be strings"); |
2257 | 2254 |
2258 if (! error_state) | 2255 retval = genpath (dirname, skip); |
2259 retval = genpath (dirname, skip); | |
2260 else | |
2261 error ("genpath: all arguments must be strings"); | |
2262 } | 2256 } |
2263 else | 2257 else |
2264 print_usage (); | 2258 print_usage (); |
2265 | 2259 |
2266 return retval; | 2260 return retval; |
2459 | 2453 |
2460 bool need_to_update = false; | 2454 bool need_to_update = false; |
2461 | 2455 |
2462 for (int i = 0; i < nargin; i++) | 2456 for (int i = 0; i < nargin; i++) |
2463 { | 2457 { |
2464 if (args(i).is_string ()) | 2458 std::string arg = args(i).string_value ("addpath: all arguments must be strings"); |
2465 { | 2459 |
2466 std::string arg = args(i).string_value (); | 2460 std::list<std::string> dir_elts = split_path (arg); |
2467 | 2461 |
2468 std::list<std::string> dir_elts = split_path (arg); | 2462 if (! append) |
2469 | 2463 std::reverse (dir_elts.begin (), dir_elts.end ()); |
2470 if (! append) | 2464 |
2471 std::reverse (dir_elts.begin (), dir_elts.end ()); | 2465 for (std::list<std::string>::const_iterator p = dir_elts.begin (); |
2472 | 2466 p != dir_elts.end (); |
2473 for (std::list<std::string>::const_iterator p = dir_elts.begin (); | 2467 p++) |
2474 p != dir_elts.end (); | 2468 { |
2475 p++) | 2469 std::string dir = *p; |
2476 { | 2470 |
2477 std::string dir = *p; | 2471 //dir = regexprep (dir_elts{j}, '//+', "/"); |
2478 | 2472 //dir = regexprep (dir, '/$', ""); |
2479 //dir = regexprep (dir_elts{j}, '//+', "/"); | 2473 |
2480 //dir = regexprep (dir, '/$', ""); | 2474 if (append) |
2481 | 2475 load_path::append (dir, true); |
2482 if (append) | 2476 else |
2483 load_path::append (dir, true); | 2477 load_path::prepend (dir, true); |
2484 else | 2478 |
2485 load_path::prepend (dir, true); | 2479 need_to_update = true; |
2486 | 2480 } |
2487 need_to_update = true; | |
2488 } | |
2489 } | |
2490 else | |
2491 error ("addpath: all arguments must be strings"); | |
2492 } | 2481 } |
2493 | 2482 |
2494 if (need_to_update) | 2483 if (need_to_update) |
2495 rehash_internal (); | 2484 rehash_internal (); |
2496 } | 2485 } |
2528 { | 2517 { |
2529 bool need_to_update = false; | 2518 bool need_to_update = false; |
2530 | 2519 |
2531 for (int i = 0; i < nargin; i++) | 2520 for (int i = 0; i < nargin; i++) |
2532 { | 2521 { |
2533 if (args(i).is_string ()) | 2522 std::string arg = args(i).string_value ("rmpath: all arguments must be strings"); |
2534 { | 2523 std::list<std::string> dir_elts = split_path (arg); |
2535 std::string arg = args(i).string_value (); | 2524 |
2536 std::list<std::string> dir_elts = split_path (arg); | 2525 for (std::list<std::string>::const_iterator p = dir_elts.begin (); |
2537 | 2526 p != dir_elts.end (); |
2538 for (std::list<std::string>::const_iterator p = dir_elts.begin (); | 2527 p++) |
2539 p != dir_elts.end (); | 2528 { |
2540 p++) | 2529 std::string dir = *p; |
2541 { | 2530 |
2542 std::string dir = *p; | 2531 //dir = regexprep (dir_elts{j}, '//+', "/"); |
2543 | 2532 //dir = regexprep (dir, '/$', ""); |
2544 //dir = regexprep (dir_elts{j}, '//+', "/"); | 2533 |
2545 //dir = regexprep (dir, '/$', ""); | 2534 if (! load_path::remove (dir)) |
2546 | 2535 warning ("rmpath: %s: not found", dir.c_str ()); |
2547 if (! load_path::remove (dir)) | 2536 else |
2548 warning ("rmpath: %s: not found", dir.c_str ()); | 2537 need_to_update = true; |
2549 else | 2538 } |
2550 need_to_update = true; | |
2551 } | |
2552 } | |
2553 else | |
2554 error ("addpath: all arguments must be strings"); | |
2555 } | 2539 } |
2556 | 2540 |
2557 if (need_to_update) | 2541 if (need_to_update) |
2558 rehash_internal (); | 2542 rehash_internal (); |
2559 } | 2543 } |