From b86e565077225c4c580598a9e7ead07fc4a1fddc Mon Sep 17 00:00:00 2001 From: Timerix22 Date: Wed, 22 Mar 2023 14:22:25 +0600 Subject: [PATCH] ReplaceRestrictedChars --- DTLib.Dtsod/DTLib.Dtsod.csproj | 4 ++-- DTLib.Logging/DTLib.Logging.csproj | 4 ++-- DTLib.Network/DTLib.Network.csproj | 4 ++-- DTLib.Tests/DTLib.Tests.csproj | 8 +++---- DTLib/DTLib.csproj | 2 +- DTLib/Filesystem/Path.cs | 35 +++++++++++++++++------------- 6 files changed, 31 insertions(+), 26 deletions(-) diff --git a/DTLib.Dtsod/DTLib.Dtsod.csproj b/DTLib.Dtsod/DTLib.Dtsod.csproj index 9cb539b..0ffde1d 100644 --- a/DTLib.Dtsod/DTLib.Dtsod.csproj +++ b/DTLib.Dtsod/DTLib.Dtsod.csproj @@ -2,7 +2,7 @@ DTLib.Dtsod - 1.1.4 + 1.1.5 Timerix Definitely not json GIT @@ -33,7 +33,7 @@ - + diff --git a/DTLib.Logging/DTLib.Logging.csproj b/DTLib.Logging/DTLib.Logging.csproj index 1d5c6a9..340fdde 100644 --- a/DTLib.Logging/DTLib.Logging.csproj +++ b/DTLib.Logging/DTLib.Logging.csproj @@ -2,7 +2,7 @@ DTLib.Logging - 1.1.4 + 1.1.5 Timerix Loggers with dependency injection GIT @@ -30,7 +30,7 @@ - + diff --git a/DTLib.Network/DTLib.Network.csproj b/DTLib.Network/DTLib.Network.csproj index 846ce08..6200986 100644 --- a/DTLib.Network/DTLib.Network.csproj +++ b/DTLib.Network/DTLib.Network.csproj @@ -2,7 +2,7 @@ DTLib.Network - 1.1.4 + 1.1.5 Timerix Some sick network protocols GIT @@ -32,6 +32,6 @@ - + diff --git a/DTLib.Tests/DTLib.Tests.csproj b/DTLib.Tests/DTLib.Tests.csproj index 2b0444f..ab97987 100644 --- a/DTLib.Tests/DTLib.Tests.csproj +++ b/DTLib.Tests/DTLib.Tests.csproj @@ -27,10 +27,10 @@ - - - - + + + + diff --git a/DTLib/DTLib.csproj b/DTLib/DTLib.csproj index 445b909..0ba8f78 100644 --- a/DTLib/DTLib.csproj +++ b/DTLib/DTLib.csproj @@ -2,7 +2,7 @@ DTLib - 1.1.8 + 1.1.9 Timerix Library for all my C# projects GIT diff --git a/DTLib/Filesystem/Path.cs b/DTLib/Filesystem/Path.cs index e066c52..571489f 100644 --- a/DTLib/Filesystem/Path.cs +++ b/DTLib/Filesystem/Path.cs @@ -19,33 +19,38 @@ public static class Path throw new Exception($"path <{path}> uses <..>, that's not allowed"); } - /// Replaces restricted characters in string + /// Replaces characters restricted in filesystem path public static IOPath ReplaceRestrictedChars(string str) { char[] r = str.ToCharArray(); - + StringBuilder b = new(r.Length); for (int i = 0; i < str.Length; i++) { - switch (r[i]) + char c = r[i]; + switch (c) { - case '/': case '\\': + case '\n': case '\r': case ':': case ';': - r[i] = '-'; break; - case '\n': case '\r': case '\'': - case '"': case '`': + case '/': case '\\': + b.Append('-'); break; - case ' ': case '&': case '{': case '}': - case '<': case '>': case '*': case '?': - case '$': case '%': case '@': case '|': - // case '!': - // case '#': - r[i] = '_'; + case '<': case '>': + case '?': case '|': + b.Append('_'); + break; + case '"': + b.Append('\''); + break; + case '*': + b.Append('X'); + break; + default: + b.Append(c); break; } } - - return new IOPath(r); + return new IOPath(b.ToString(), true); } #if !USE_SPAN