]> git.tdb.fi Git - libs/core.git/blobdiff - source/utils.cpp
Add relative() to utils
[libs/core.git] / source / utils.cpp
index bae91cc50898ad83838749f58987a9c3a182d61a..204f33bfdedcf841e6b4b4e0e090d9caa1824d67 100644 (file)
@@ -149,12 +149,29 @@ Filename splitext(const string &fn)
        return result;
 }
 
-#ifndef WIN32
 int fnmatch(const string &pat, const Path &fn)
 {
+#ifdef WIN32
+       return -1;
+#else
        return ::fnmatch(pat.c_str(), fn.str().c_str(), FNM_PATHNAME);
-}
 #endif
+}
+
+Path relative(const Path &path, const Path &base)
+{
+       Path::iterator i=path.begin();
+       Path::iterator j=base.begin();
+       for(; (i!=path.end() && j!=base.end() && *i==*j); ++i,++j);
+
+       Path result;
+       for(; j!=base.end(); ++j)
+               result/="..";
+       for(; i!=path.end(); ++i)
+               result/=*i;
+
+       return result;
+}
 
 } // namespace Path
 } // namespace Msp