From 331f389cc68b9ca54c50dddb58cb2e7bb3523cf6 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Mon, 6 Oct 2003 23:11:44 +0000 Subject: [PATCH] *** empty log message *** --- parse.cc | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/parse.cc b/parse.cc index 146b93ea..88042828 100644 --- a/parse.cc +++ b/parse.cc @@ -16,25 +16,20 @@ static inline char * skip_ws(char * ptr) static inline char * next_element(char * buf, bool variable = false) { - char * p; + for (char * p = buf; *p; p++) { + if (! (*p == ' ' || *p == '\t')) + continue; - if (variable) { - // Convert any tabs to spaces, for simplicity's sake - for (p = buf; *p; p++) - if (*p == '\t') - *p = ' '; - - p = std::strstr(buf, " "); - } else { - p = std::strchr(buf, ' '); + if (! variable) { + *p = '\0'; + return skip_ws(p + 1); + } + else if (*(p + 1) == ' ' || *(p + 1) == '\t') { + *p = '\0'; + return skip_ws(p + 2); + } } - - if (! p) - return NULL; - - *p++ = '\0'; - - return skip_ws(p); + return NULL; } static const char *formats[] = {