X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/7e8e21a41af94ee0865c71f61c7ba2ee3d4b1b4a..a0a6c0dd39965021e3bd4920f720349debc53e55:/include/inline/stringops.h diff --git a/include/inline/stringops.h b/include/inline/stringops.h index 594109d..a2792c9 100644 --- a/include/inline/stringops.h +++ b/include/inline/stringops.h @@ -58,6 +58,7 @@ strip_colour(char *string) case 22: case 23: case 27: + case 29: case 31: break; case 32: @@ -77,4 +78,48 @@ strip_colour(char *string) return string; } +static inline char * +strip_unprintable(char *string) +{ + char *c = string; + char *c2 = string; + char *last_non_space = NULL; + + /* c is source, c2 is target */ + for(; c && *c; c++) + switch (*c) + { + case 3: + if(isdigit(c[1])) + { + c++; + if(isdigit(c[1])) + c++; + if(c[1] == ',' && isdigit(c[2])) + { + c += 2; + if(isdigit(c[1])) + c++; + } + } + break; + case 32: + *c2++ = *c; + break; + default: + if (*c < 32) + break; + *c2++ = *c; + last_non_space = c2; + break; + } + + *c2 = '\0'; + + if(last_non_space) + *last_non_space = '\0'; + + return string; +} + #endif