diff --git a/src/sbbs3/str_util.c b/src/sbbs3/str_util.c index 64abb5b128bff3c4eb2ba13f250fa4c9dfa88da9..8fc66853f0d4674d039d7a91e5a4d1edc7e8db8c 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 12af547ff0388e95658cea0b001b99c54a26a167..2864f809dce04ca088929427c96580d8f14b2623 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);