> On Aug 14, 2016, at 3:24 PM, Ben Pfaff <[email protected]> wrote:
>
> diff --git a/ovn/lib/actions.c b/ovn/lib/actions.c
> index b56fcd5..b6350ae 100644
> --- a/ovn/lib/actions.c
> +++ b/ovn/lib/actions.c
> @@ -1,4 +1,4 @@
> -/*
> + /*
> * Copyright (c) 2015, 2016 Nicira, Inc.
My guess is that this change to the beginning of the comment was in error.
> @@ -1835,7 +1725,7 @@ parse_actions(struct action_context *ctx)
> * '*prereqsp' is set to NULL, but some tokens may have been consumed from
> * 'lexer'.
> */
> -char * OVS_WARN_UNUSED_RESULT
> +bool
> ovnacts_parse(struct lexer *lexer, const struct ovnact_parse_params *pp,
> struct ofpbuf *ovnacts, struct expr **prereqsp)
> {
The comment describing ovnacts_parse() needs to be updated about the return
value.
> diff --git a/ovn/lib/expr.c b/ovn/lib/expr.c
> index 25281e0..c3a26f5 100644
> --- a/ovn/lib/expr.c
> +++ b/ovn/lib/expr.c
...
> @@ -842,10 +777,14 @@ parse_constant_set(struct expr_context *ctx, struct
> expr_constant_set *cs)
> * type of 'f' into 'c'. On success, returns NULL. On failure, returns an
> * xmalloc()'ed error message that the caller must free and 'c' is
> * indeterminate. */
> -char * OVS_WARN_UNUSED_RESULT
> +bool
> expr_constant_parse(struct lexer *lexer, const struct expr_field *f,
> union expr_constant *c)
The return value and error handling changed in this function, but the comment
wasn't updated to match.
> @@ -900,12 +839,14 @@ expr_constant_destroy(const union expr_constant *c,
> * Returns NULL on success, in which case the caller owns 'cs', otherwise a
> * xmalloc()'ed error message owned by the caller, in which case 'cs' is
> * indeterminate. */
> -char * OVS_WARN_UNUSED_RESULT
> +bool
> expr_constant_set_parse(struct lexer *lexer, struct expr_constant_set *cs)
Same here.
>
> @@ -1183,15 +1127,12 @@ expr_parse__(struct expr_context *ctx)
> * expr_destroy()) or error (with free()). */
> struct expr *
> expr_parse(struct lexer *lexer, const struct shash *symtab,
> - const struct shash *macros, char **errorp)
> + const struct shash *macros)
The 'errorp' argument in expr_parse() is no longer present, but the comment
style documents it.
> {
> struct expr_context ctx = { .lexer = lexer,
> .symtab = symtab,
> .macros = macros };
> - struct expr *e = expr_parse__(&ctx);
> - *errorp = ctx.error;
> - ovs_assert((ctx.error != NULL) != (e != NULL));
> - return e;
> + return lexer->error ? NULL : expr_parse__(&ctx);
> }
>
> /* Like expr_parse(), but the expression is taken from 's'. */
> @@ -1200,13 +1141,13 @@ expr_parse_string(const char *s, const struct shash
> *symtab,
> const struct shash *macros, char **errorp)
> {
expr_parse_string() still uses 'errorp', but it's no longer documented, since
before the only reference was from expr_parse().
> @@ -1218,23 +1159,25 @@ expr_parse_string(const char *s, const struct shash
> *symtab,
> /* Parses a field or subfield from 'lexer' into 'field', obtaining field names
> * from 'symtab'. Returns NULL if successful, otherwise an error message
> owned
> * by the caller. */
> -char * OVS_WARN_UNUSED_RESULT
> +bool
> expr_field_parse(struct lexer *lexer, const struct shash *symtab,
> struct expr_field *field, struct expr **prereqsp)
The comment for expr_field_parse() needs to be updated, too.
> {
> struct expr_context ctx = { .lexer = lexer, .symtab = symtab };
> if (parse_field(&ctx, field) && field->symbol->predicate) {
> - ctx.error = xasprintf("Predicate symbol %s used where lvalue "
> - "required.", field->symbol->name);
> + lexer_error(lexer, "Predicate symbol %s used where lvalue required.",
> + field->symbol->name);
> }
> - if (!ctx.error) {
> + if (!lexer->error) {
> const struct expr_symbol *symbol = field->symbol;
> while (symbol) {
> if (symbol->prereqs) {
> + char *error;
> struct ovs_list nesting = OVS_LIST_INITIALIZER(&nesting);
> struct expr *e = parse_and_annotate(symbol->prereqs, symtab,
> - &nesting, &ctx.error);
> - if (ctx.error) {
> + &nesting, &error);
> + if (error) {
> + lexer_error(lexer, "%s", error);
> break;
Don't we need to free 'error'?
> diff --git a/ovn/lib/lex.c b/ovn/lib/lex.c
> index 95edeaf..a05edfa 100644
> --- a/ovn/lib/lex.c
> +++ b/ovn/lib/lex.c
> ...
> +bool
> +lexer_force_match(struct lexer *lexer, enum lex_type t)
> +{
> + if (lexer_match(lexer, t)) {
> + return true;
> + } else {
> + struct lex_token token = { .type = t };
> + struct ds s = DS_EMPTY_INITIALIZER;
> + lex_token_format(&token, &s);
> +
> + lexer_syntax_error(lexer, "expecting `%s'", ds_cstr(&s));
Not a big deal at all, but using different left and right quotes looks a little
odd to me in an error message.
Acked-by: Justin Pettit <[email protected]>
--Justin
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev