From: Roger Dingledine Date: Wed, 12 Nov 2003 19:34:19 +0000 (+0000) Subject: break out the string manipulation routines X-Git-Tag: tor-0.0.2pre14~46 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9358381d83d0d27db58c94cf01ab45c16292d378;p=thirdparty%2Ftor.git break out the string manipulation routines svn:r804 --- diff --git a/src/common/util.c b/src/common/util.c index c81d0fe876..af0f32231a 100644 --- a/src/common/util.c +++ b/src/common/util.c @@ -48,6 +48,43 @@ char *tor_strdup(const char *s) { return dup; } +/* + * String manipulation + */ + +/* return the first char of s that is not whitespace and not a comment */ +char *eat_whitespace(char *s) { + assert(s); + + while(isspace(*s) || *s == '#') { + while(isspace(*s)) + s++; + if(*s == '#') { /* read to a \n or \0 */ + while(*s && *s != '\n') + s++; + if(!*s) + return s; + } + } + return s; +} + +char *eat_whitespace_no_nl(char *s) { + while(*s == ' ' || *s == '\t') + ++s; + return s; +} + +/* return the first char of s that is whitespace or '#' or '\0 */ +char *find_whitespace(char *s) { + assert(s); + + while(*s && !isspace(*s) && *s != '#') + s++; + + return s; +} + /* * Time */ @@ -653,3 +690,4 @@ int switch_id(char *user, char *group) { return -1; } + diff --git a/src/common/util.h b/src/common/util.h index 15893f1608..f1c744b01b 100644 --- a/src/common/util.h +++ b/src/common/util.h @@ -37,6 +37,10 @@ void *tor_realloc(void *ptr, size_t size); char *tor_strdup(const char *s); #define tor_free(p) do {if(p) {free(p); (p)=NULL;}} while(0) +char *eat_whitespace(char *s); +char *eat_whitespace_no_nl(char *s); +char *find_whitespace(char *s); + void tor_gettimeofday(struct timeval *timeval); long tv_udiff(struct timeval *start, struct timeval *end); void tv_addms(struct timeval *a, long ms);