Re: parse functions

From: Henrik Nordstrom <hno@dont-contact.us>
Date: Tue, 30 Jan 2001 10:48:04 +0100

But still buggy.. in fact there was two fatal bugs in my code.

The following has now been committed:

--- cache_cf.c 2001/01/28 00:45:45 1.372
+++ cache_cf.c 2001/01/30 09:43:37
@@ -1699,9 +1699,13 @@
 void
 parse_eol(char *volatile *var)
 {
- char *token = strtok(NULL, null_string);
+ unsigned char *token = strtok(NULL, null_string);
     safe_free(*var);
     if (token == NULL)
        self_destruct();
+ while(*token && isspace(*token))
+ token++;
+ if (!*token)
+ self_destruct();
     *var = xstrdup(token);
 }

/Henrik

Henrik Nordstrom wrote:
>
> parse_eol is buggy. It should skip leading whitespace but doesn't.
>
> Simple patch:
> while(isspace((unsigned char)*token))
> token++;
> before the assignment.
>
> Should probably check if there is anything left of the string..
>
> Something like this:
> void
> parse_eol(char *volatile *var)
> {
> | unsigned char *token = strtok(NULL, null_string);
> safe_free(*var);
> + while(isspace(*token))
> + token++;
> | if (token == NULL || strlen(token) == 0)
> self_destruct();
> *var = xstrdup(token);
> }
>
> Robert Collins wrote:
> >
> > Is there any expected problems trimming whitespace at the beginning of
> > the token in functions like parse_eol?
> >
> > I'm finding that if I have two spaces on a config line:
> > filter_config onunload search string
> > the parsed string is " string", rather thatn "string"
> >
> > Rob
Received on Tue Jan 30 2001 - 03:09:48 MST

This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:13:26 MST