diff options
Diffstat (limited to 'Source/kwsys/SystemTools.cxx')
-rw-r--r-- | Source/kwsys/SystemTools.cxx | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx index 4c4a941..d15181b 100644 --- a/Source/kwsys/SystemTools.cxx +++ b/Source/kwsys/SystemTools.cxx @@ -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; |