]> git.tdb.fi Git - libs/core.git/commitdiff
Add basename function
authorMikko Rasa <tdb@tdb.fi>
Tue, 29 Aug 2006 11:17:11 +0000 (11:17 +0000)
committerMikko Rasa <tdb@tdb.fi>
Tue, 29 Aug 2006 11:17:11 +0000 (11:17 +0000)
source/utils.cpp
source/utils.h

index 204f33bfdedcf841e6b4b4e0e090d9caa1824d67..af8ea8a37008eca04ce6d5e5403e53f09b1fdea3 100644 (file)
@@ -55,6 +55,14 @@ Path fix_case(const Path &path)
        return result;
 }
 
+/**
+Creates the given directory and any parent directories if needed.
+
+@param   path  The path to create
+@param   mode  Access mode for new directories
+
+@return  0 on success, -1 on error
+*/
 int mkpath(const Path &path, int mode)
 {
        Path p;
@@ -173,5 +181,18 @@ Path relative(const Path &path, const Path &base)
        return result;
 }
 
+/**
+Extracts the basename from the given path.  Same thing as Path::Path(p)[-1],
+but faster.
+*/
+string basename(const std::string &p);
+{
+       unsigned slash=p.rfind(DIRCHAR);
+       if(slash==string::npos)
+               return p;
+       else
+               return p.substr(slash+1);
+}
+
 } // namespace Path
 } // namespace Msp
index faf5ef7f261e038e2e1d688ec013d150b93369cd..2b2f23cba6cc2168ccd0c61a4a4bfe92f58bf60a 100644 (file)
@@ -29,6 +29,7 @@ extern bool exists(const Path &);
 extern Filename splitext(const std::string &);
 extern int fnmatch(const std::string &, const Path &);
 extern Path relative(const Path &, const Path &);
+extern std::string basename(const std::string &);
 
 inline int stat(const Path &fn, struct stat &st)
 { return ::stat(fn.str().c_str(), &st); }