robustify find_on_searchpath a bit

This commit is contained in:
David Rose 2005-10-12 15:51:37 +00:00
parent 48c0d216f1
commit 8d7adf5f5c
3 changed files with 19 additions and 2 deletions

View File

@ -120,6 +120,16 @@ DSearchPath(const string &path, const string &separator) {
append_path(path, separator);
}
////////////////////////////////////////////////////////////////////
// Function: DSearchPath::Constructor
// Access: Public
// Description:
////////////////////////////////////////////////////////////////////
DSearchPath::
DSearchPath(const Filename &directory) {
append_directory(directory);
}
////////////////////////////////////////////////////////////////////
// Function: DSearchPath::Copy Constructor
// Access: Public

View File

@ -57,6 +57,7 @@ public:
PUBLISHED:
DSearchPath();
DSearchPath(const string &path, const string &separator = string());
DSearchPath(const Filename &directory);
DSearchPath(const DSearchPath &copy);
void operator = (const DSearchPath &copy);
~DSearchPath();

View File

@ -741,7 +741,11 @@ standardize() {
////////////////////////////////////////////////////////////////////
void Filename::
make_absolute() {
make_absolute(ExecutionEnvironment::get_cwd());
if (is_local()) {
make_absolute(ExecutionEnvironment::get_cwd());
} else {
standardize();
}
}
////////////////////////////////////////////////////////////////////
@ -1266,7 +1270,9 @@ find_on_searchpath(const DSearchPath &searchpath) {
int num_directories = searchpath.get_num_directories();
for (int i = 0; i < num_directories; i++) {
if (make_relative_to(searchpath.get_directory(i), false)) {
Filename directory = searchpath.get_directory(i);
directory.make_absolute();
if (make_relative_to(directory, false)) {
return i;
}
}