summaryrefslogtreecommitdiff
path: root/src/utils/paths.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2012-02-19 15:49:45 +0300
committerAndrei Karas <akaras@inbox.ru>2012-02-19 15:49:45 +0300
commitb30a5d2289a0b68410dee5343e148aba88ea4839 (patch)
tree9d756785b9166ced76675ad3ebe398c09b494a3c /src/utils/paths.cpp
parent9a3a196dbf633a699c26d0227802a42f025c8bfd (diff)
parent164e4ed5a153ce06badb52f3a5a4dff16c58d7e6 (diff)
downloadplus-b30a5d2289a0b68410dee5343e148aba88ea4839.tar.gz
plus-b30a5d2289a0b68410dee5343e148aba88ea4839.tar.bz2
plus-b30a5d2289a0b68410dee5343e148aba88ea4839.tar.xz
plus-b30a5d2289a0b68410dee5343e148aba88ea4839.zip
Merge branch 'master' into stripped
Diffstat (limited to 'src/utils/paths.cpp')
-rw-r--r--src/utils/paths.cpp22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/utils/paths.cpp b/src/utils/paths.cpp
index 8decb6e95..04f553ca9 100644
--- a/src/utils/paths.cpp
+++ b/src/utils/paths.cpp
@@ -20,10 +20,12 @@
#include "utils/paths.h"
+#include "utils/stringutils.h"
+
#include <string.h>
#include <cstdarg>
#include <cstdio>
-
+#include <physfs.h>
#include <stdlib.h>
#ifdef WIN32
@@ -55,3 +57,21 @@ bool isRealPath(const std::string &str)
std::string path = getRealPath(str);
return str == path;
}
+
+bool checkPath(std::string path)
+{
+ if (path.empty())
+ return true;
+ return path.find("../") == std::string::npos
+ && path.find("..\\") == std::string::npos
+ && path.find("/..") == std::string::npos
+ && path.find("\\..") == std::string::npos;
+}
+
+std::string &fixDirSeparators(std::string &str)
+{
+ if (*PHYSFS_getDirSeparator() == '/')
+ return str;
+
+ return replaceAll(str, "/", "\\");
+}