git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v4 2/5] ref-filter: add return value && strbuf to handlers

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Mar 20, 2018, 18:18 UTC
Message-ID
<CAPig+cT5jh0y9Rmw0E6ns0k5mSwaxAqdaN8oWCayCE8V+jYZow@mail.gmail.com>
In-Reply-To
<010201624428190c-441272b2-bc7d-42af-82f8-6a805bb27f6c-000000@eu-west-1.amazonses.com>

On Tue, Mar 20, 2018 at 12:05 PM, Olga Telezhnaya <olyatelezhnaya@gmail.com> wrote:

Show 31 quoted lines
> Continue removing die() calls from ref-filter formatting logic,
> so that it could be used by other commands.
> [...]
> Signed-off-by: Olga Telezhnaia <olyatelezhnaya@gmail.com>
> ---
> diff --git a/ref-filter.c b/ref-filter.c
> @@ -596,19 +603,24 @@ static int is_empty(const char *s)
> +static int then_atom_handler(struct atom_value *atomv, struct ref_formatting_state *state,
> +                            struct strbuf *err)
>  {
>         struct ref_formatting_stack *cur = state->stack;
>         struct if_then_else *if_then_else = NULL;
>
>         if (cur->at_end == if_then_else_handler)
>                 if_then_else = (struct if_then_else *)cur->at_end_data;
> -       if (!if_then_else)
> -               die(_("format: %%(then) atom used without an %%(if) atom"));
> -       if (if_then_else->then_atom_seen)
> -               die(_("format: %%(then) atom used more than once"));
> -       if (if_then_else->else_atom_seen)
> -               die(_("format: %%(then) atom used after %%(else)"));
> +       if (!if_then_else) {
> +               strbuf_addstr(err, _("format: %(then) atom used without an %(if) atom"));
> +               return -1;
> +       } else if (if_then_else->then_atom_seen) {
> +               strbuf_addstr(err, _("format: %(then) atom used more than once"));
> +               return -1;
> +       } else if (if_then_else->else_atom_seen) {
> +               strbuf_addstr(err, _("format: %(then) atom used after %(else)"));
> +               return -1;
> +       }
This pattern of transforming:
    if (cond)
        die("...");
to:
    if (cond) {
        strbuf_add*(...);
        return -1;
    }

is repeated many, many times throughout this patch series and makes for quite noisy diffs. Such repetition and noise suggests that this patch series (and other similar ones) could benefit from a convenience function similar to the existing error() function. For instance:

    int strbuf_error(struct strbuf *buf, const char *fmt, ...);

which appends the formatted message to 'buf' and unconditionally returns -1. Thus, the above transformation simplifies to:

    if (cond)
        return strbuf_error(&err, "...", ...);
which makes for a much less noisy diff, thus is easier to review.

A new patch introducing such a function at the head of this patch series might be welcome.

Previous: Olga TelezhnayaNext: Olga Telezhnaya
Message 29 of 30 in “ref-filter: start adding strbufs with errors”
  1. 1/5 ref-filter: start adding strbufs with errorsOlga Telezhnaya, Mar 14, 2018
  2. 5/5 ref-filter: get_ref_atom_value() error handlingOlga Telezhnaya, Mar 14, 2018
  3. Martin ÅgrenMar 15, 2018
  4. Eric SunshineMar 15, 2018
  5. Оля ТележнаяMar 16, 2018
  6. Junio C HamanoMar 15, 2018
  7. Оля ТележнаяMar 16, 2018
  8. 3/5 ref-filter: change parsing function error handlingOlga Telezhnaya, Mar 14, 2018
  9. Junio C HamanoMar 15, 2018
  10. Оля ТележнаяMar 16, 2018
  11. 4/5 ref-filter: add return value to parsersOlga Telezhnaya, Mar 14, 2018
  12. 2/5 ref-filter: add return value && strbuf to handlersOlga Telezhnaya, Mar 14, 2018
  13. 1/5 ref-filter: start adding strbufs with errorsOlga Telezhnaya, Mar 19, 2018
  14. 3/5 ref-filter: change parsing function error handlingOlga Telezhnaya, Mar 19, 2018
  15. Junio C HamanoMar 19, 2018
  16. 5/5 ref-filter: get_ref_atom_value() error handlingOlga Telezhnaya, Mar 19, 2018
  17. 2/5 ref-filter: add return value && strbuf to handlersOlga Telezhnaya, Mar 19, 2018
  18. Junio C HamanoMar 19, 2018
  19. 4/5 ref-filter: add return value to parsersOlga Telezhnaya, Mar 19, 2018
  20. 1/5 ref-filter: start adding strbufs with errorsOlga Telezhnaya, Mar 20, 2018
  21. 5/5 ref-filter: get_ref_atom_value() error handlingOlga Telezhnaya, Mar 20, 2018
  22. Eric SunshineMar 20, 2018
  23. Junio C HamanoMar 20, 2018
  24. Eric SunshineMar 20, 2018
  25. Junio C HamanoMar 21, 2018
  26. Eric SunshineMar 21, 2018
  27. 3/5 ref-filter: change parsing function error handlingOlga Telezhnaya, Mar 20, 2018
  28. 2/5 ref-filter: add return value && strbuf to handlersOlga Telezhnaya, Mar 20, 2018
  29. Eric SunshineMar 20, 2018
  30. 4/5 ref-filter: add return value to parsersOlga Telezhnaya, Mar 20, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.