summaryrefslogtreecommitdiffstats
path: root/source/core/slang-io.cpp
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2019-01-21 15:33:59 -0500
committerTim Foley <tfoleyNV@users.noreply.github.com>2019-01-21 12:33:59 -0800
commit0a3ef7b4ae02983ea3f986ba8211e7c6af9d254b (patch)
tree86c84c7b20be86827c047cd82918f7f47537a338 /source/core/slang-io.cpp
parentc55b462bf993dcd65ec17ffeeab97ac138e6d206 (diff)
Path simplification/hash mode, plus bug fixes (#788)
* * Fix memory bug around expanding va_args - needed buffer to have space for terminating 0 * Fix problem with FileWriter defaults being globals, as memory they allocate, will only be freed after return from main - work around by making StdWriters RefObject derived, and kept in scope such the writers are destroyed before checks for leaks is found * Added SimplifyPathAndHash mode for CacheFileSystem - will simplify the path and see if simplified path is in cache before reading file (limiting amout of underlying file requests) * * Added calcReplaceChar * Renamed DefaultFileSystem to OSFileSystem * Made OSFileSystem convert windows \ to / on linux * Simplified logic for caching in CacheFileSystem. * Added pragma-once-c to add extra test, but also so there is an 'include' directory in preprocessor tests. * Small fixes in pragma once test. * Simplified cache handling path, so that paths/simplified paths area always added. * Improve naming of methods for different caches.
Diffstat (limited to 'source/core/slang-io.cpp')
-rw-r--r--source/core/slang-io.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/source/core/slang-io.cpp b/source/core/slang-io.cpp
index f1948200c..cf099aa04 100644
--- a/source/core/slang-io.cpp
+++ b/source/core/slang-io.cpp
@@ -174,6 +174,21 @@ namespace Slang
}
}
+ /* static */bool Path::IsRelative(const UnownedStringSlice& path)
+ {
+ List<UnownedStringSlice> split;
+ Split(path, split);
+
+ for (const auto& cur : split)
+ {
+ if (cur == "." || cur == "..")
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
/* static */String Path::Simplify(const UnownedStringSlice& path)
{
List<UnownedStringSlice> split;
@@ -208,7 +223,7 @@ namespace Slang
{
split.Add(UnownedStringSlice::fromLiteral("."));
}
-
+
// Reconstruct the string
StringBuilder builder;
for (int i = 0; i < int(split.Count()); i++)
@@ -219,6 +234,7 @@ namespace Slang
}
builder.Append(split[i]);
}
+
return builder;
}