Mercurial > hg > octave-nkf
diff src/load-path.cc @ 6838:5e3350bdd91d
[project @ 2007-08-28 02:59:58 by jwe]
author | jwe |
---|---|
date | Tue, 28 Aug 2007 02:59:59 +0000 |
parents | 59e22e30aff8 |
children | 9398f6a81bdf |
line wrap: on
line diff
--- a/src/load-path.cc +++ b/src/load-path.cc @@ -743,39 +743,48 @@ { std::string retval; - if (octave_env::absolute_pathname (file)) + if (file.find ('/') != NPOS) { - file_stat fs (file); - - if (fs.exists ()) - return file; - } - - std::string dir_name; + if (octave_env::absolute_pathname (file) + || octave_env::rooted_relative_pathname (file)) + { + file_stat fs (file); - for (const_dir_info_list_iterator p = dir_info_list.begin (); - p != dir_info_list.end (); - p++) - { - string_vector all_files = p->all_files; - - octave_idx_type len = all_files.length (); + if (fs.exists ()) + return file; + } + else + { + for (const_dir_info_list_iterator p = dir_info_list.begin (); + p != dir_info_list.end (); + p++) + { + std::string tfile = p->dir_name + file_ops::dir_sep_str + file; - for (octave_idx_type i = 0; i < len; i++) - { - if (all_files[i] == file) - { - dir_name = p->dir_name; + file_stat fs (tfile); - goto done; + if (fs.exists ()) + return tfile; } } } - - done: + else + { + for (const_dir_info_list_iterator p = dir_info_list.begin (); + p != dir_info_list.end (); + p++) + { + string_vector all_files = p->all_files; - if (! dir_name.empty ()) - retval = dir_name + file_ops::dir_sep_str + file; + octave_idx_type len = all_files.length (); + + for (octave_idx_type i = 0; i < len; i++) + { + if (all_files[i] == file) + return p->dir_name + file_ops::dir_sep_str + file; + } + } + } return retval; }