# HG changeset patch # User John W. Eaton # Date 1295511854 18000 # Node ID 06cfda4c07e5419e7908e7442fdac3d220b3c4f4 # Parent b124b83e5626e73692f1966c778cca5625998842 load_path::do_add, load_path::do_remove: strip trailing directory separators diff --git a/src/ChangeLog b/src/ChangeLog --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2011-01-20 John W. Eaton + + * load-path.cc (strip_trailing_separators): New static function. + (load_path::do_add, load_path::do_remove): Call it on directory arg. + 2011-01-20 John W. Eaton * gl-render.h, graphics.cc, gl-render.cc, graphics.h.in: diff --git a/src/load-path.cc b/src/load-path.cc --- a/src/load-path.cc +++ b/src/load-path.cc @@ -606,6 +606,23 @@ do_add (dir, false, warn); } +// Strip trailing directory separators. + +static std::string +strip_trailing_separators (const std::string& dir_arg) +{ + std::string dir = dir_arg; + + octave_idx_type k = dir.length (); + while (k > 1 && file_ops::is_dir_sep (dir[k-1])) + k--; + + if (k < dir.length ()) + dir.resize (k); + + return dir; +} + void load_path::do_add (const std::string& dir_arg, bool at_end, bool warn) { @@ -617,6 +634,8 @@ std::string dir = file_ops::tilde_expand (dir_arg); + dir = strip_trailing_separators (dir); + dir_info_list_iterator i = find_dir_info (dir); if (i != dir_info_list.end ()) @@ -774,6 +793,8 @@ { std::string dir = file_ops::tilde_expand (dir_arg); + dir = strip_trailing_separators (dir); + dir_info_list_iterator i = find_dir_info (dir); if (i != dir_info_list.end ())