From 114406d021bf5de1ef34b16e0a0d22c8a83a900f Mon Sep 17 00:00:00 2001 From: "B.Greenham" Date: Sat, 20 Mar 2010 12:39:39 -0400 Subject: [PATCH] Add strip_unprintable, a function that strips all unprintable characters from a string. --- include/inline/stringops.h | 44 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/include/inline/stringops.h b/include/inline/stringops.h index 594109d..07f04db 100644 --- a/include/inline/stringops.h +++ b/include/inline/stringops.h @@ -77,4 +77,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