>ofp-parse: Factor out parse_ofp_add_flow_file() into new function. This subject line doesn't make sense to me. Shouldn't it read: "Factor out ds_get_preprocessed_line() into new function"?
Doesn't really matter, you can merge this patch when ready. Ethan On Fri, Mar 11, 2011 at 1:20 PM, Ben Pfaff <[email protected]> wrote: > The new function ds_get_preprocessed_line() will be useful elsewhere in > an upcoming commit. > --- > lib/dynamic-string.c | 28 +++++++++++++++++++++++++++- > lib/dynamic-string.h | 3 ++- > lib/ofp-parse.c | 26 ++++++-------------------- > 3 files changed, 35 insertions(+), 22 deletions(-) > > diff --git a/lib/dynamic-string.c b/lib/dynamic-string.c > index 3af7fc9..dbb33a3 100644 > --- a/lib/dynamic-string.c > +++ b/lib/dynamic-string.c > @@ -1,5 +1,5 @@ > /* > - * Copyright (c) 2008, 2009, 2010 Nicira Networks. > + * Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks. > * > * Licensed under the Apache License, Version 2.0 (the "License"); > * you may not use this file except in compliance with the License. > @@ -207,6 +207,32 @@ ds_get_line(struct ds *ds, FILE *file) > } > } > > +/* Reads a line from 'file' into 'ds', clearing anything initially in 'ds'. > + * Deletes comments introduced by "#" and skips lines that contains only > white > + * space (after deleting comments). > + * > + * Returns 0 if successful, EOF if no non-blank line was found. */ > +int > +ds_get_preprocessed_line(struct ds *ds, FILE *file) > +{ > + while (!ds_get_line(ds, file)) { > + char *line = ds_cstr(ds); > + char *comment; > + > + /* Delete comments. */ > + comment = strchr(line, '#'); > + if (comment) { > + *comment = '\0'; > + } > + > + /* Return successfully unless the line is all spaces. */ > + if (line[strspn(line, " \t\n")] != '\0') { > + return 0; > + } > + } > + return EOF; > +} > + > char * > ds_cstr(struct ds *ds) > { > diff --git a/lib/dynamic-string.h b/lib/dynamic-string.h > index db033c9..2961a01 100644 > --- a/lib/dynamic-string.h > +++ b/lib/dynamic-string.h > @@ -1,5 +1,5 @@ > /* > - * Copyright (c) 2008, 2009, 2010 Nicira Networks. > + * Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks. > * > * Licensed under the Apache License, Version 2.0 (the "License"); > * you may not use this file except in compliance with the License. > @@ -54,6 +54,7 @@ void ds_put_strftime(struct ds *, const char *, const > struct tm *) > void ds_put_hex_dump(struct ds *ds, const void *buf_, size_t size, > uintptr_t ofs, bool ascii); > int ds_get_line(struct ds *, FILE *); > +int ds_get_preprocessed_line(struct ds *, FILE *); > > char *ds_cstr(struct ds *); > const char *ds_cstr_ro(const struct ds *); > diff --git a/lib/ofp-parse.c b/lib/ofp-parse.c > index 73c3ebc..f1a4cb4 100644 > --- a/lib/ofp-parse.c > +++ b/lib/ofp-parse.c > @@ -874,27 +874,13 @@ bool > parse_ofp_add_flow_file(struct list *packets, enum nx_flow_format *cur, > FILE *stream) > { > - struct ds s = DS_EMPTY_INITIALIZER; > - bool ok = false; > + struct ds s; > + bool ok; > > - while (!ds_get_line(&s, stream)) { > - char *line = ds_cstr(&s); > - char *comment; > - > - /* Delete comments. */ > - comment = strchr(line, '#'); > - if (comment) { > - *comment = '\0'; > - } > - > - /* Drop empty lines. */ > - if (line[strspn(line, " \t\n")] == '\0') { > - continue; > - } > - > - parse_ofp_flow_mod_str(packets, cur, line, OFPFC_ADD); > - ok = true; > - break; > + ds_init(&s); > + ok = ds_get_preprocessed_line(&s, stream) == 0; > + if (ok) { > + parse_ofp_flow_mod_str(packets, cur, ds_cstr(&s), OFPFC_ADD); > } > ds_destroy(&s); > > -- > 1.7.1 > > _______________________________________________ > dev mailing list > [email protected] > http://openvswitch.org/mailman/listinfo/dev > _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
