aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2003-11-12 19:34:19 +0000
committerRoger Dingledine <arma@torproject.org>2003-11-12 19:34:19 +0000
commit9358381d83d0d27db58c94cf01ab45c16292d378 (patch)
tree594c28dd884e936dec33f7e87deb7921523c53a8
parent3b392717e00d07aa12ab07432bf28d55bb86b3e5 (diff)
downloadtor-9358381d83d0d27db58c94cf01ab45c16292d378.tar
tor-9358381d83d0d27db58c94cf01ab45c16292d378.tar.gz
break out the string manipulation routines
svn:r804
-rw-r--r--src/common/util.c38
-rw-r--r--src/common/util.h4
2 files changed, 42 insertions, 0 deletions
diff --git a/src/common/util.c b/src/common/util.c
index c81d0fe87..af0f32231 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -49,6 +49,43 @@ char *tor_strdup(const char *s) {
}
/*
+ * 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 15893f160..f1c744b01 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);