Browse Source

break out the string manipulation routines

svn:r804
Roger Dingledine 21 years ago
parent
commit
9358381d83
2 changed files with 42 additions and 0 deletions
  1. 38 0
      src/common/util.c
  2. 4 0
      src/common/util.h

+ 38 - 0
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;
 }
+

+ 4 - 0
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);