summaryrefslogtreecommitdiffstats
path: root/libutil
diff options
context:
space:
mode:
authorAndrew <forkk@forkk.net>2013-04-22 17:15:18 -0500
committerAndrew <forkk@forkk.net>2013-04-22 17:15:18 -0500
commit1626fa013c86dc9f30254f57b3518211f6d0c65a (patch)
tree7f5a1b09916f55587c282ff7ffb51d792ceefd08 /libutil
parentff3078b3a652316eef760386f665d152cbeb8db9 (diff)
downloadMultiMC-1626fa013c86dc9f30254f57b3518211f6d0c65a.tar
MultiMC-1626fa013c86dc9f30254f57b3518211f6d0c65a.tar.gz
MultiMC-1626fa013c86dc9f30254f57b3518211f6d0c65a.tar.lz
MultiMC-1626fa013c86dc9f30254f57b3518211f6d0c65a.tar.xz
MultiMC-1626fa013c86dc9f30254f57b3518211f6d0c65a.zip
Implement instance creation.
Diffstat (limited to 'libutil')
-rw-r--r--libutil/include/pathutils.h4
-rw-r--r--libutil/src/pathutils.cpp30
2 files changed, 34 insertions, 0 deletions
diff --git a/libutil/include/pathutils.h b/libutil/include/pathutils.h
index be6c8917..c04330a9 100644
--- a/libutil/include/pathutils.h
+++ b/libutil/include/pathutils.h
@@ -25,4 +25,8 @@ LIBUTIL_EXPORT QString PathCombine(QString path1, QString path2, QString path3);
LIBUTIL_EXPORT QString AbsolutePath(QString path);
+LIBUTIL_EXPORT QString RemoveInvalidFilenameChars(QString string, QChar replaceWith = '-');
+
+LIBUTIL_EXPORT QString DirNameFromString(QString string, QString inDir = ".");
+
#endif // PATHUTILS_H
diff --git a/libutil/src/pathutils.cpp b/libutil/src/pathutils.cpp
index 8e91bf31..7ba7397c 100644
--- a/libutil/src/pathutils.cpp
+++ b/libutil/src/pathutils.cpp
@@ -35,3 +35,33 @@ QString AbsolutePath(QString path)
{
return QFileInfo(path).absolutePath();
}
+
+QString badFilenameChars = "\"\\/?<>:*|!";
+
+QString RemoveInvalidFilenameChars(QString string, QChar replaceWith)
+{
+ for (int i = 0; i < string.length(); i++)
+ {
+ if (badFilenameChars.contains(string[i]))
+ {
+ string[i] = replaceWith;
+ }
+ }
+ return string;
+}
+
+QString DirNameFromString(QString string, QString inDir)
+{
+ int num = 0;
+ QString dirName = RemoveInvalidFilenameChars(string, '-');
+ while (QFileInfo(PathCombine(inDir, dirName)).exists())
+ {
+ num++;
+ dirName = RemoveInvalidFilenameChars(dirName, '-') + QString::number(num);
+
+ // If it's over 9000
+ if (num > 9000)
+ return "";
+ }
+ return dirName;
+}