X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Ffile_system.cpp;h=447c21e2c1c3e9e5a403574fac0bb723a6fe3e32;hb=e126dd8c3da286ab759dc36f3f59f3955e16ed09;hp=e5721dc8e62fb5cc7fcc0bc416d13c436e04a6b4;hpb=07ddaed2a657e4d2a3d038fed223fc5827159caf;p=supertux.git diff --git a/src/file_system.cpp b/src/file_system.cpp index e5721dc8e..447c21e2c 100644 --- a/src/file_system.cpp +++ b/src/file_system.cpp @@ -32,9 +32,9 @@ namespace FileSystem std::string dirname(const std::string& filename) { std::string::size_type p = filename.find_last_of('/'); - if(p == std::string::npos) + if(p == std::string::npos) return ""; - + return filename.substr(0, p+1); } @@ -47,6 +47,15 @@ std::string basename(const std::string& filename) return filename.substr(p+1, filename.size()-p-1); } +std::string strip_extension(const std::string& filename) +{ + std::string::size_type p = filename.find_last_of('.'); + if(p == std::string::npos) + return filename; + + return filename.substr(0, p); +} + std::string normalize(const std::string& filename) { std::vector path_stack; @@ -67,16 +76,16 @@ std::string normalize(const std::string& filename) size_t len = p - pstart; if(len == 0) break; - + std::string pathelem(pstart, p-pstart); if(pathelem == ".") continue; - + if(pathelem == "..") { if(path_stack.empty()) { log_warning << "Invalid '..' in path '" << filename << "'" << std::endl; - // push it into the result path so that the users sees his error... + // push it into the result path so that the user sees his error... path_stack.push_back(pathelem); } else { path_stack.pop_back(); @@ -99,4 +108,3 @@ std::string normalize(const std::string& filename) } } -