diff --git a/src/sbbs3/str_util.c b/src/sbbs3/str_util.c index d67caf834606d7c35c0003b0a5833ef5dc4e51bd..8918635dfc81484b0b41973b4d4e4cafb55c960f 100644 --- a/src/sbbs3/str_util.c +++ b/src/sbbs3/str_util.c @@ -68,7 +68,7 @@ char* strip_ctrl(const char *str, char* dest) if(str[i]=='<' && j) j--; } - else if((uchar)str[i]>=' ') + else if((uchar)str[i]>=' ' && str[i] != DEL) dest[j++]=str[i]; } dest[j]=0; @@ -215,6 +215,20 @@ char* strip_exascii(const char *str, char* dest) return dest; } +char* strip_cp437_graphics(const char *str, char* dest) +{ + int i,j; + + if(dest==NULL && (dest=strdup(str))==NULL) + return NULL; + for(i=j=0;str[i];i++) + if((uchar)str[i] <= (uchar)CP437_INVERTED_EXCLAMATION_MARK + || (uchar)str[i] >= (uchar)CP437_GREEK_SMALL_LETTER_ALPHA) + dest[j++]=str[i]; + dest[j]=0; + return dest; +} + char* strip_space(const char *str, char* dest) { int i,j; diff --git a/src/sbbs3/str_util.h b/src/sbbs3/str_util.h index a772c591f8c2817b991a79c8013ae1ba023fb825..24bd3f1d2e28c109764a28496064d4995da991bb 100644 --- a/src/sbbs3/str_util.h +++ b/src/sbbs3/str_util.h @@ -55,6 +55,7 @@ DLLEXPORT str_list_t trashcan_list(scfg_t* cfg, const char* name); DLLEXPORT char * convert_ansi(const char* src, char* dest, size_t, int width, BOOL ice_color); DLLEXPORT char * strip_ansi(char* str); DLLEXPORT char * strip_exascii(const char *str, char* dest); +DLLEXPORT char * strip_cp437_graphics(const char *str, char* dest); DLLEXPORT char * strip_space(const char *str, char* dest); DLLEXPORT char * strip_ctrl(const char *str, char* dest); DLLEXPORT char * strip_char(const char* str, char* dest, char);