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

Re: [PATCH v4 11/17] trailer: add new_trailer_item() function

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Feb 2, 2014, 10:10 UTC
Message-ID
<CAPig+cQ6J1nEJhecmS_T8L5mxJj9WcSBQ7hFA=XKcDChGHNSnQ@mail.gmail.com>
In-Reply-To
<20140130064921.7504.42810.chriscool@tuxfamily.org>

On Thu, Jan 30, 2014 at 1:49 AM, Christian Couder <chriscool@tuxfamily.org> wrote:

> This is a small refactoring to prepare for the next steps.

Since this is all brand new code, wouldn't it make more sense to structure it in this fashion in the first place when introduced in patch 4/17? It's not clear why it should be introduced with poorer structure and then later cleaned up.

Show 66 quoted lines
> Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
> ---
>  trailer.c | 31 +++++++++++++++++++------------
>  1 file changed, 19 insertions(+), 12 deletions(-)
>
> diff --git a/trailer.c b/trailer.c
> index 73a65e0..430ff39 100644
> --- a/trailer.c
> +++ b/trailer.c
> @@ -399,11 +399,27 @@ static void parse_trailer(struct strbuf *tok, struct strbuf *val, const char *tr
>         }
>  }
>
> +static struct trailer_item *new_trailer_item(struct trailer_item *conf_item,
> +                                            const char* tok, const char* val)
> +{
> +       struct trailer_item *new = xcalloc(sizeof(struct trailer_item), 1);
> +       new->value = val;
> +
> +       if (conf_item) {
> +               new->conf = conf_item->conf;
> +               new->token = xstrdup(conf_item->conf->key);
> +       } else {
> +               new->conf = xcalloc(sizeof(struct conf_info), 1);
> +               new->token = tok;
> +       }
> +
> +       return new;
> +}
> +
>  static struct trailer_item *create_trailer_item(const char *string)
>  {
>         struct strbuf tok = STRBUF_INIT;
>         struct strbuf val = STRBUF_INIT;
> -       struct trailer_item *new;
>         struct trailer_item *item;
>         int tok_alnum_len;
>
> @@ -415,21 +431,12 @@ static struct trailer_item *create_trailer_item(const char *string)
>         for (item = first_conf_item; item; item = item->next) {
>                 if (!strncasecmp(tok.buf, item->conf->key, tok_alnum_len) ||
>                     !strncasecmp(tok.buf, item->conf->name, tok_alnum_len)) {
> -                       new = xcalloc(sizeof(struct trailer_item), 1);
> -                       new->conf = item->conf;
> -                       new->token = xstrdup(item->conf->key);
> -                       new->value = strbuf_detach(&val, NULL);
>                         strbuf_release(&tok);
> -                       return new;
> +                       return new_trailer_item(item, NULL, strbuf_detach(&val, NULL));
>                 }
>         }
>
> -       new = xcalloc(sizeof(struct trailer_item), 1);
> -       new->conf = xcalloc(sizeof(struct conf_info), 1);
> -       new->token = strbuf_detach(&tok, NULL);
> -       new->value = strbuf_detach(&val, NULL);
> -
> -       return new;
> +       return new_trailer_item(NULL, strbuf_detach(&tok, NULL), strbuf_detach(&val, NULL));;
>  }
>
>  static void add_trailer_item(struct trailer_item **first,
> --
> 1.8.5.2.201.gacc5987
>
>
Previous: Christian CouderNext: Christian Couder
Message 26 of 33 in “Add interpret-trailers builtin”
  1. 00/17 Add interpret-trailers builtinChristian Couder, Jan 30, 2014
  2. 01/17 Add data structures and basic functions for commit trailersChristian Couder, Jan 30, 2014
  3. Eric SunshineJan 30, 2014
  4. 02/17 trailer: process trailers from file and argumentsChristian Couder, Jan 30, 2014
  5. Eric SunshineJan 31, 2014
  6. 03/17 trailer: read and process config informationChristian Couder, Jan 30, 2014
  7. Eric SunshineJan 31, 2014
  8. 04/17 trailer: process command line trailer argumentsChristian Couder, Jan 30, 2014
  9. Eric SunshineJan 31, 2014
  10. 05/17 strbuf: add strbuf_isspace()Christian Couder, Jan 30, 2014
  11. Eric SunshineJan 31, 2014
  12. Eric SunshineJan 31, 2014
  13. 06/17 trailer: parse trailers from input fileChristian Couder, Jan 30, 2014
  14. Eric SunshineJan 31, 2014
  15. 07/17 trailer: put all the processing together and printChristian Couder, Jan 30, 2014
  16. 08/17 trailer: add interpret-trailers commandChristian Couder, Jan 30, 2014
  17. Eric SunshineJan 31, 2014
  18. Christian CouderFeb 6, 2014
  19. 09/17 trailer: add tests for "git interpret-trailers"Christian Couder, Jan 30, 2014
  20. 10/17 trailer: if no input file is passed, read from stdinChristian Couder, Jan 30, 2014
  21. Eric SunshineFeb 2, 2014
  22. Christian CouderFeb 6, 2014
  23. Junio C HamanoFeb 6, 2014
  24. Christian CouderFeb 9, 2014
  25. 11/17 trailer: add new_trailer_item() functionChristian Couder, Jan 30, 2014
  26. Eric SunshineFeb 2, 2014
  27. 12/17 strbuf: add strbuf_replace()Christian Couder, Jan 30, 2014
  28. Eric SunshineJan 31, 2014
  29. 13/17 trailer: execute command from 'trailer.<name>.command'Christian Couder, Jan 30, 2014
  30. 14/17 trailer: add tests for trailer commandChristian Couder, Jan 30, 2014
  31. 15/17 trailer: set author and committer env variablesChristian Couder, Jan 30, 2014
  32. 16/17 trailer: add tests for commands using env variablesChristian Couder, Jan 30, 2014
  33. 17/17 Documentation: add documentation for 'git interpret-trailers'Christian Couder, Jan 30, 2014

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.