diff options
Diffstat (limited to 'gold')
-rw-r--r-- | gold/ChangeLog | 5 | ||||
-rw-r--r-- | gold/fileread.cc | 35 | ||||
-rw-r--r-- | gold/fileread.h | 14 |
3 files changed, 39 insertions, 15 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index 8d75269..6dbbced 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,8 @@ +2010-07-13 Rafael Espindola <espindola@google.com> + + * fileread.cc (try_extra_search_path, find_file): Move to Input_file. + * fileread.h (Input_file): Add try_extra_search_path and find_file. + 2010-07-13 Philip Herron <herron.philip@googlemail.com> Ian Lance Taylor <iant@google.com> diff --git a/gold/fileread.cc b/gold/fileread.cc index bfab1a4..0c3cb95 100644 --- a/gold/fileread.cc +++ b/gold/fileread.cc @@ -841,17 +841,19 @@ File_read::get_mtime() #endif } -// Try to find a file in the extra search dirs. Returns true on success. +// Try to find a file in the extra search dirs. Returns true on success. -static bool -try_extra_search_path(int* pindex, const Input_file_argument* input_argument, - std::string filename, std::string* found_name, - std::string* namep) { +bool +Input_file::try_extra_search_path(int* pindex, + const Input_file_argument* input_argument, + std::string filename, std::string* found_name, + std::string* namep) +{ if (input_argument->extra_search_path() == NULL) return false; std::string name = input_argument->extra_search_path(); - if (!IS_DIR_SEPARATOR (name[name.length() - 1])) + if (!IS_DIR_SEPARATOR(name[name.length() - 1])) name += '/'; name += filename; @@ -873,10 +875,11 @@ try_extra_search_path(int* pindex, const Input_file_argument* input_argument, // In each, we look in extra_search_path + library_path to find // the file location, rather than the current directory. -static bool -find_file(const Dirsearch& dirpath, int* pindex, - const Input_file_argument* input_argument, bool* is_in_sysroot, - std::string* found_name, std::string* namep) +bool +Input_file::find_file(const Dirsearch& dirpath, int* pindex, + const Input_file_argument* input_argument, + bool* is_in_sysroot, + std::string* found_name, std::string* namep) { std::string name; @@ -914,11 +917,13 @@ find_file(const Dirsearch& dirpath, int* pindex, else n1 = input_argument->name(); - if (try_extra_search_path(pindex, input_argument, n1, found_name, namep)) + if (Input_file::try_extra_search_path(pindex, input_argument, n1, + found_name, namep)) return true; - if (!n2.empty() && try_extra_search_path(pindex, input_argument, n2, - found_name, namep)) + if (!n2.empty() && Input_file::try_extra_search_path(pindex, + input_argument, n2, + found_name, namep)) return true; // It is not in the extra_search_path. @@ -969,8 +974,8 @@ bool Input_file::open(const Dirsearch& dirpath, const Task* task, int *pindex) { std::string name; - if (!find_file(dirpath, pindex, this->input_argument_, &this->is_in_sysroot_, - &this->found_name_, &name)) + if (!Input_file::find_file(dirpath, pindex, this->input_argument_, + &this->is_in_sysroot_, &this->found_name_, &name)) return false; // Now that we've figured out where the file lives, try to open it. diff --git a/gold/fileread.h b/gold/fileread.h index a81b5fe..3a8f932 100644 --- a/gold/fileread.h +++ b/gold/fileread.h @@ -565,6 +565,20 @@ class Input_file format() const { return this->format_; } + // Try to find a file in the extra search dirs. Returns true on success. + static bool + try_extra_search_path(int* pindex, + const Input_file_argument* input_argument, + std::string filename, std::string* found_name, + std::string* namep); + + // Find the actual file. + static bool + find_file(const Dirsearch& dirpath, int* pindex, + const Input_file_argument* input_argument, + bool* is_in_sysroot, + std::string* found_name, std::string* namep); + private: Input_file(const Input_file&); Input_file& operator=(const Input_file&); |