X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Ftool%2Ftool.c;h=27051ced632cdc5e8280bb11f35c37a79b059082;hp=2792c7edf63acea5e932b410aaa8ccd2e37b159b;hb=bebfbedf3fdf801a028c17a5b4395f705391462d;hpb=39f1ddd9d08cdf04bbf67b6e95f0c1ab655d77f4 diff --git a/src/tool/tool.c b/src/tool/tool.c index 2792c7ed..27051ced 100644 --- a/src/tool/tool.c +++ b/src/tool/tool.c @@ -14,7 +14,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: tool.c,v 1.2 2005/01/25 16:16:48 alex Exp $"; +static char UNUSED id[] = "$Id: tool.c,v 1.5 2006/03/24 23:25:39 fw Exp $"; #include "imp.h" #include @@ -26,39 +26,49 @@ static char UNUSED id[] = "$Id: tool.c,v 1.2 2005/01/25 16:16:48 alex Exp $"; #include "tool.h" -GLOBAL VOID -ngt_TrimStr( CHAR *String ) +/** + * Removes all leading and trailing whitespaces of a string. + * @param String The string to remove whitespaces from. + */ +GLOBAL void +ngt_TrimStr(char *String) { - /* Mit ngt_TrimStr() werden fuehrende und folgende Leerzeichen, - * Tabulatoren und Zeilenumbrueche (ASCII 10 und ASCII 13) aus - * dem String entfernt. */ - - CHAR *start, *ptr; + char *start, *end; - assert( String != NULL ); + assert(String != NULL); start = String; - - /* Zeichen am Anfang pruefen ... */ - while(( *start == ' ' ) || ( *start == 9 )) start++; - - /* Zeichen am Ende pruefen ... */ - ptr = strchr( start, '\0' ) - 1; - while((( *ptr == ' ' ) || ( *ptr == 9 ) || ( *ptr == 10 ) || ( *ptr == 13 )) && ptr >= start ) ptr--; - *(++ptr) = '\0'; - memmove( String, start, strlen( start ) + 1 ); + /* Remove whitespaces at the beginning of the string ... */ + while (*start == ' ' || *start == '\t') + start++; + + if (!*start) { + *String = 0; + return; + } + /* ... and at the end: */ + end = strchr(start, '\0'); + end--; + while ((*end == ' ' || *end == '\t' || *end == '\n' || *end == '\r') + && end > start) + end--; + + /* New trailing NULL byte */ + *(++end) = '\0'; + + memmove(String, start, (size_t)(end - start)+1); } /* ngt_TrimStr */ -GLOBAL CHAR * -ngt_LowerStr( CHAR *String ) +GLOBAL char * +ngt_LowerStr( char *String ) { /* String in Kleinbuchstaben konvertieren. Der uebergebene * Speicherbereich wird durch das Ergebnis ersetzt, zusaetzlich * wird dieser auch als Pointer geliefert. */ - CHAR *ptr; + char *ptr; assert( String != NULL ); @@ -74,13 +84,13 @@ ngt_LowerStr( CHAR *String ) } /* ngt_LowerStr */ -GLOBAL VOID -ngt_TrimLastChr( CHAR *String, CONST CHAR Chr) +GLOBAL void +ngt_TrimLastChr( char *String, const char Chr) { /* If last character in the string matches Chr, remove it. * Empty strings are handled correctly. */ - UINT len; + unsigned int len; assert( String != NULL );