|
|
@@ -2071,6 +2071,29 @@ bool SystemTools::IsSubDirectory(const char* cSubdir, const char* cDir)
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+kwsys_stl::string SystemTools::FileExistsInParentDirectories(const char* fname,
|
|
|
+ const char* directory, const char* toplevel)
|
|
|
+{
|
|
|
+ kwsys_stl::string file = fname;
|
|
|
+ SystemTools::ConvertToUnixSlashes(file);
|
|
|
+ kwsys_stl::string dir = directory;
|
|
|
+ SystemTools::ConvertToUnixSlashes(dir);
|
|
|
+ while ( 1 )
|
|
|
+ {
|
|
|
+ kwsys_stl::string path = dir + "/" + file;
|
|
|
+ if ( SystemTools::FileExists(path.c_str()) )
|
|
|
+ {
|
|
|
+ return path;
|
|
|
+ }
|
|
|
+ if ( dir.size() < strlen(toplevel) )
|
|
|
+ {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ dir = SystemTools::GetParentDirectory(dir.c_str());
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+}
|
|
|
+
|
|
|
// These must NOT be initialized. Default initialization to zero is
|
|
|
// necessary.
|
|
|
unsigned int SystemToolsManagerCount;
|