[ovs-dev] [ovs-ofctl 05/10] ofp-parse: Factor out parse_ofp_add_flow_file() into new function.
Ethan Jackson
ethan at nicira.com
Wed Mar 16 01:37:12 UTC 2011
>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 <blp at nicira.com> 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
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
>
More information about the dev
mailing list