diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2021-04-29 09:01:46 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-29 09:01:46 -0400 |
| commit | 972bd3c4c24b06501c52127416afb763a066b8ad (patch) | |
| tree | e3874d4952ac557d5c323bb1e43be4584c100afc /source/core/slang-string-util.cpp | |
| parent | 541d1cab81d895c406fc33cb476e37ce8a6a9702 (diff) | |
Support for escaped paths in tools (#1823)
* #include an absolute path didn't work - because paths were taken to always be relative.
* Split out StringEscapeUtil.
* Added StringEscapeUtil.
* Fix typo in unix quoting type.
* Small comment improvements.
* Try to fix linux linking issue.
* Fix typo.
* Attempt to fix linux link issue.
* Update VS proj even though nothing really changed.
* Fix another typo issue.
* Fix for windows issue.
Fixed bug.
* Make separate Utils for escaping.
* Fix typo.
* Split out into StringEscapeHandler.
* Windows shell does handle removing quotes (so remove code to remove them).
* Handle unescaping if not initiating using the shell.
* Slight improvement around shell like decoding.
* Simplify command extraction.
* Add shared-library category type.
* Fix bug in command extraction.
* Typo in transcendental category.
* Enable unit-test on in smoke test category.
* Make parsing failing output as a failing test.
* Fixes for transcendental tests. Disable tests that do not work.
* Changed category parsing.
* Removed the TestResult parameter from _gatherTestsForFile.
Made testsList only output.
* Remove testing if all tests were disabled.
* Fix typo.
* Disable path canonical test on linux because CI issue.
Diffstat (limited to 'source/core/slang-string-util.cpp')
| -rw-r--r-- | source/core/slang-string-util.cpp | 75 |
1 files changed, 3 insertions, 72 deletions
diff --git a/source/core/slang-string-util.cpp b/source/core/slang-string-util.cpp index 8108bdc98..cddee4bc4 100644 --- a/source/core/slang-string-util.cpp +++ b/source/core/slang-string-util.cpp @@ -2,6 +2,9 @@ #include "slang-blob.h" +#include "slang-char-util.h" +#include "slang-text-io.h" + namespace Slang { // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! StringUtil !!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -491,76 +494,4 @@ SLANG_FORCE_INLINE static bool _isDigit(char c) return SLANG_OK; } -static char _getHexChar(int v) -{ - return (v <= 9) ? char(v + '0') : char(v - 10 + 'A'); -} - -static char _getEscapedChar(char c) -{ - switch (c) - { - case '\b': return 'b'; - case '\f': return 'f'; - case '\n': return 'n'; - case '\r': return 'r'; - case '\a': return 'a'; - case '\t': return 't'; - case '\v': return 'v'; - case '\'': return '\''; - case '\"': return '"'; - case '\\': return '\\'; - default: return 0; - } -} - -/* static */void StringUtil::appendEscaped(const UnownedStringSlice& slice, StringBuilder& out) -{ - const char* start = slice.begin(); - const char* cur = start; - const char*const end = slice.end(); - - for (; cur < end; ++cur) - { - const char c = *cur; - const char escapedChar = _getEscapedChar(c); - - if (escapedChar) - { - // Flush - if (start < cur) - { - out.append(start, end); - } - out.appendChar('\\'); - out.appendChar(escapedChar); - - start = cur + 1; - } - else if ( c < ' ' || c > 126) - { - // Flush - if (start < cur) - { - out.append(start, end); - } - - char buf[5] = "\\0x0"; - - buf[3] = _getHexChar((int(c) >> 4) & 0xf); - buf[4] = _getHexChar(c & 0xf); - - out.append(buf, buf + 4); - - start = cur + 1; - } - } - - if (start < end) - { - out.append(start, end); - } -} - - } // namespace Slang |
