From d72b0cd2a76ee5c095553e4cf43fe1ef5f7a3f8d Mon Sep 17 00:00:00 2001 From: "Rob Swindell (on Debian Linux)" <rob@synchro.net> Date: Tue, 22 Oct 2024 22:01:54 -0700 Subject: [PATCH] Add contains_invalid_attr() - checks string for invalid attr Ctrl-A codes Other Ctrl-A codes (e.g. ^A\) might be valid, but they're not attribute control codes, so their existence would cause this function to return true. --- src/sbbs3/str_util.c | 18 ++++++++++++++++++ src/sbbs3/str_util.h | 1 + 2 files changed, 19 insertions(+) diff --git a/src/sbbs3/str_util.c b/src/sbbs3/str_util.c index 64abb5b128..8fc66853f0 100644 --- a/src/sbbs3/str_util.c +++ b/src/sbbs3/str_util.c @@ -534,6 +534,24 @@ size_t strip_invalid_attr(char *str) return(a); } +/****************************************************************************/ +/* Detects invalid Ctrl-Ax "attribute" sequences in str */ +/* Returns number of ^A's in line */ +/****************************************************************************/ +bool contains_invalid_attr(const char *str) +{ + + while(*str != '\0') { + if(*str == CTRL_A) { + ++str; + if(!valid_ctrl_a_attr(*str)) + return true; + } + ++str; + } + return false; +} + /****************************************************************************/ /****************************************************************************/ char exascii_to_ascii_char(uchar ch) diff --git a/src/sbbs3/str_util.h b/src/sbbs3/str_util.h index 12af547ff0..2864f809dc 100644 --- a/src/sbbs3/str_util.h +++ b/src/sbbs3/str_util.h @@ -57,6 +57,7 @@ DLLEXPORT char * strip_char(const char* str, char* dest, char); DLLEXPORT bool valid_ctrl_a_attr(char a); DLLEXPORT bool valid_ctrl_a_code(char a); DLLEXPORT size_t strip_invalid_attr(char *str); +DLLEXPORT bool contains_invalid_attr(const char*); DLLEXPORT char * u32toac(uint32_t, char*, char sep); DLLEXPORT char * u64toac(uint64_t, char*, char sep); DLLEXPORT char * rot13(char* str); -- GitLab