Add strip_unprintable, a function that strips all unprintable characters from a string.
This commit is contained in:
parent
5c3014d0eb
commit
87d38e8cf1
1 changed files with 44 additions and 0 deletions
|
@ -78,4 +78,48 @@ strip_colour(char *string)
|
||||||
return 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
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue