diff options
author | Jack <66967891+ASpoonPlaysGames@users.noreply.github.com> | 2023-12-27 00:32:01 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-27 01:32:01 +0100 |
commit | f5ab6fb5e8be7b73e6003d4145081d5e0c0ce287 (patch) | |
tree | 90f2c6a4885dbd181799e2325cf33588697674e1 /NorthstarDLL/util/utils.cpp | |
parent | bb8ed59f6891b1196c5f5bbe7346cd171c8215fa (diff) | |
download | NorthstarLauncher-f5ab6fb5e8be7b73e6003d4145081d5e0c0ce287.tar.gz NorthstarLauncher-f5ab6fb5e8be7b73e6003d4145081d5e0c0ce287.zip |
Folder restructuring from primedev (#624)v1.21.2-rc3v1.21.2
Copies of over the primedev folder structure for easier cherry-picking of further changes
Co-authored-by: F1F7Y <filip.bartos07@proton.me>
Diffstat (limited to 'NorthstarDLL/util/utils.cpp')
-rw-r--r-- | NorthstarDLL/util/utils.cpp | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/NorthstarDLL/util/utils.cpp b/NorthstarDLL/util/utils.cpp deleted file mode 100644 index c3f90cfa..00000000 --- a/NorthstarDLL/util/utils.cpp +++ /dev/null @@ -1,82 +0,0 @@ -#include <ctype.h> -#include "utils.h" - -bool skip_valid_ansi_csi_sgr(char*& str) -{ - if (*str++ != '\x1B') - return false; - if (*str++ != '[') // CSI - return false; - for (char* c = str; *c; c++) - { - if (*c >= '0' && *c <= '9') - continue; - if (*c == ';' || *c == ':') - continue; - if (*c == 'm') // SGR - break; - return false; - } - return true; -} - -void RemoveAsciiControlSequences(char* str, bool allow_color_codes) -{ - for (char *pc = str, c = *pc; c = *pc; pc++) - { - // skip UTF-8 characters - int bytesToSkip = 0; - if ((c & 0xE0) == 0xC0) - bytesToSkip = 1; // skip 2-byte UTF-8 sequence - else if ((c & 0xF0) == 0xE0) - bytesToSkip = 2; // skip 3-byte UTF-8 sequence - else if ((c & 0xF8) == 0xF0) - bytesToSkip = 3; // skip 4-byte UTF-8 sequence - else if ((c & 0xFC) == 0xF8) - bytesToSkip = 4; // skip 5-byte UTF-8 sequence - else if ((c & 0xFE) == 0xFC) - bytesToSkip = 5; // skip 6-byte UTF-8 sequence - - bool invalid = false; - char* orgpc = pc; - for (int i = 0; i < bytesToSkip; i++) - { - char next = pc[1]; - - // valid UTF-8 part - if ((next & 0xC0) == 0x80) - { - pc++; - continue; - } - - // invalid UTF-8 part or encountered \0 - invalid = true; - break; - } - if (invalid) - { - // erase the whole "UTF-8" sequence - for (char* x = orgpc; x <= pc; x++) - if (*x != '\0') - *x = ' '; - else - break; - } - if (bytesToSkip > 0) - continue; // this byte was already handled as UTF-8 - - // an invalid control character or an UTF-8 part outside of UTF-8 sequence - if ((iscntrl(c) && c != '\n' && c != '\r' && c != '\x1B') || (c & 0x80) != 0) - { - *pc = ' '; - continue; - } - - if (c == '\x1B') // separate handling for this escape sequence... - if (allow_color_codes && skip_valid_ansi_csi_sgr(pc)) // ...which we allow for color codes... - pc--; - else // ...but remove it otherwise - *pc = ' '; - } -} |