X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Ffile_system.cpp;h=266da812f6be7a712190976a22d4533e2507eaa7;hb=af79f0712f972a0730f8a0220f927b22d568a196;hp=0f9778356ac4543b96f415b8b14f1cc7dde7fbaa;hpb=e6a940db5904743e8220491ce10b5107e119a44c;p=supertux.git diff --git a/src/file_system.cpp b/src/file_system.cpp index 0f9778356..266da812f 100644 --- a/src/file_system.cpp +++ b/src/file_system.cpp @@ -1,3 +1,22 @@ +// $Id$ +// +// SuperTux +// Copyright (C) 2006 Matthias Braun +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + #include #include "log.hpp" @@ -13,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); } @@ -28,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; @@ -48,11 +76,11 @@ 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()) { @@ -80,4 +108,3 @@ std::string normalize(const std::string& filename) } } -