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

Re: [PATCH v8 4/4] cat-file: add --batch-command mode

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Feb 16, 2022, 17:25 UTC
Message-ID
<CAPig+cQKRytC0xQBCMss0S6tAoVft8XhcPCws9x4PMx_STfcHA@mail.gmail.com>
In-Reply-To
<xmqqwnhuu410.fsf@gitster.g>
On Wed, Feb 16, 2022 at 12:15 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 34 quoted lines
> "John Cai via GitGitGadget" <gitgitgadget@gmail.com> writes:
> As it seems that this code structure and division of responsibility
> between the caller and the callee is confusing even to the author of
> this code, it may make sense to make the caller responsible for
> freeing.
>
> Then the caller becomes
>
> > +             if (!strcmp(cmd->name, "flush")) {
> > +                     dispatch_calls(opt, output, data, queued_cmd, nr);
>
>                         for (i = 0; i < nr; i++)
>                                 free(queued_cmd[i].line);
>
> > +                     nr = 0;
> > +                     continue;
> > +             }
>
> which is not too bad.  And then we'd free the array itself at the
> end ...
>
> > ...
> > +             call.line = xstrdup_or_null(p);
> > +             queued_cmd[nr++] = call;
> > +     }
> > +
> > +     if (opt->buffer_output &&
> > +         nr &&
> > +         !git_env_bool("GIT_TEST_CAT_FILE_NO_FLUSH_ON_EXIT", 0))
> > +             dispatch_calls(opt, output, data, queued_cmd, nr);
> > +
> > +     free(queued_cmd);
>
> ... which may be easier to see what is going on.

I agree that it is easier to see what is going on when the caller is responsible for freeing `line`. It _may_ make sense to factor out the free-line-loop to a separate function since the caller will have to do so after both calls to dispatch_calls(), not just the one inside the strbuf_getline() loop, but also the one after the loop. A separate function might be overkill for this two-line loop; on the other hand, it may clue in future readers that resource management needs to be taken into account.

Previous: Junio C HamanoNext: John Cai
Message 77 of 97 in “Add cat-file --batch-command flag”
  1. 0/2 Add cat-file --batch-command flagJohn Cai via GitGitGadget, Feb 3, 2022
  2. 1/2 cat-file.c: rename cmdmode to modeJohn Cai via GitGitGadget, Feb 3, 2022
  3. Junio C HamanoFeb 3, 2022
  4. Ævar Arnfjörð BjarmasonFeb 4, 2022
  5. 2/2 catfile.c: add --batch-command modeJohn Cai via GitGitGadget, Feb 3, 2022
  6. Junio C HamanoFeb 3, 2022
  7. John CaiFeb 4, 2022
  8. Phillip WoodFeb 4, 2022
  9. Eric SunshineFeb 4, 2022
  10. John CaiFeb 4, 2022
  11. Eric SunshineFeb 5, 2022
  12. Ævar Arnfjörð BjarmasonFeb 4, 2022
  13. Phillip WoodFeb 4, 2022
  14. 0/2 Add cat-file --batch-command flagJohn Cai via GitGitGadget, Feb 7, 2022
  15. 1/2 cat-file: rename cmdmode to transform_modeJohn Cai via GitGitGadget, Feb 7, 2022
  16. Junio C HamanoFeb 7, 2022
  17. 2/2 cat-file: add --batch-command modeJohn Cai via GitGitGadget, Feb 7, 2022
  18. Jonathan TanFeb 7, 2022
  19. Phillip WoodFeb 8, 2022
  20. Jonathan TanFeb 8, 2022
  21. Junio C HamanoFeb 8, 2022
  22. Jonathan TanFeb 9, 2022
  23. Junio C HamanoFeb 8, 2022
  24. Phillip WoodFeb 8, 2022
  25. 0/3 Add cat-file --batch-command flagJohn Cai via GitGitGadget, Feb 8, 2022
  26. 1/3 cat-file: rename cmdmode to transform_modeJohn Cai via GitGitGadget, Feb 8, 2022
  27. 3/3 cat-file: add --batch-command modeJohn Cai via GitGitGadget, Feb 8, 2022
  28. Junio C HamanoFeb 8, 2022
  29. 2/3 cat-file: introduce batch_command enum to replace print_contentsJohn Cai via GitGitGadget, Feb 8, 2022
  30. Junio C HamanoFeb 8, 2022
  31. Junio C HamanoFeb 9, 2022
  32. John CaiFeb 9, 2022
  33. John CaiFeb 9, 2022
  34. 0/3 Add cat-file --batch-command flagJohn Cai via GitGitGadget, Feb 10, 2022
  35. 1/3 cat-file: rename cmdmode to transform_modeJohn Cai via GitGitGadget, Feb 10, 2022
  36. 2/3 cat-file: introduce batch_mode enum to replace print_contentsJohn Cai via GitGitGadget, Feb 10, 2022
  37. Christian CouderFeb 10, 2022
  38. 3/3 cat-file: add --batch-command modeJohn Cai via GitGitGadget, Feb 10, 2022
  39. Phillip WoodFeb 10, 2022
  40. Junio C HamanoFeb 10, 2022
  41. John CaiFeb 11, 2022
  42. Junio C HamanoFeb 11, 2022
  43. John CaiFeb 11, 2022
  44. John CaiFeb 10, 2022
  45. Eric SunshineFeb 10, 2022
  46. Junio C HamanoFeb 10, 2022
  47. 0/3 Add cat-file --batch-command flagJohn Cai via GitGitGadget, Feb 11, 2022
  48. 1/3 cat-file: rename cmdmode to transform_modeJohn Cai via GitGitGadget, Feb 11, 2022
  49. 2/3 cat-file: introduce batch_mode enum to replace print_contentsJohn Cai via GitGitGadget, Feb 11, 2022
  50. 3/3 cat-file: add --batch-command modeJohn Cai via GitGitGadget, Feb 11, 2022
  51. Phillip WoodFeb 14, 2022
  52. John CaiFeb 14, 2022
  53. 0/4 Add cat-file --batch-command flagJohn Cai via GitGitGadget, Feb 14, 2022
  54. 1/4 cat-file: rename cmdmode to transform_modeJohn Cai via GitGitGadget, Feb 14, 2022
  55. 2/4 cat-file: introduce batch_mode enum to replace print_contentsJohn Cai via GitGitGadget, Feb 14, 2022
  56. 3/4 cat-file: add remove_timestamp helperJohn Cai via GitGitGadget, Feb 14, 2022
  57. 4/4 cat-file: add --batch-command modeJohn Cai via GitGitGadget, Feb 14, 2022
  58. Eric SunshineFeb 15, 2022
  59. John CaiFeb 15, 2022
  60. Eric SunshineFeb 15, 2022
  61. 0/4 Add cat-file --batch-command flagJohn Cai via GitGitGadget, Feb 16, 2022
  62. 1/4 cat-file: rename cmdmode to transform_modeJohn Cai via GitGitGadget, Feb 16, 2022
  63. 2/4 cat-file: introduce batch_mode enum to replace print_contentsJohn Cai via GitGitGadget, Feb 16, 2022
  64. 3/4 cat-file: add remove_timestamp helperJohn Cai via GitGitGadget, Feb 16, 2022
  65. 4/4 cat-file: add --batch-command modeJohn Cai via GitGitGadget, Feb 16, 2022
  66. Junio C HamanoFeb 16, 2022
  67. John CaiFeb 16, 2022
  68. Junio C HamanoFeb 16, 2022
  69. Eric SunshineFeb 16, 2022
  70. Eric SunshineFeb 16, 2022
  71. 0/4 Add cat-file --batch-command flagJohn Cai via GitGitGadget, Feb 16, 2022
  72. 2/4 cat-file: introduce batch_mode enum to replace print_contentsJohn Cai via GitGitGadget, Feb 16, 2022
  73. 1/4 cat-file: rename cmdmode to transform_modeJohn Cai via GitGitGadget, Feb 16, 2022
  74. 3/4 cat-file: add remove_timestamp helperJohn Cai via GitGitGadget, Feb 16, 2022
  75. 4/4 cat-file: add --batch-command modeJohn Cai via GitGitGadget, Feb 16, 2022
  76. Junio C HamanoFeb 16, 2022
  77. Eric SunshineFeb 16, 2022
  78. John CaiFeb 16, 2022
  79. 0/4 Add cat-file --batch-command flagJohn Cai via GitGitGadget, Feb 16, 2022
  80. 1/4 cat-file: rename cmdmode to transform_modeJohn Cai via GitGitGadget, Feb 16, 2022
  81. 2/4 cat-file: introduce batch_mode enum to replace print_contentsJohn Cai via GitGitGadget, Feb 16, 2022
  82. 3/4 cat-file: add remove_timestamp helperJohn Cai via GitGitGadget, Feb 16, 2022
  83. 4/4 cat-file: add --batch-command modeJohn Cai via GitGitGadget, Feb 16, 2022
  84. Phillip WoodFeb 18, 2022
  85. John CaiFeb 18, 2022
  86. Junio C HamanoFeb 18, 2022
  87. Junio C HamanoFeb 18, 2022
  88. 0/4 Add cat-file --batch-command flagJohn Cai via GitGitGadget, Feb 18, 2022
  89. 1/4 cat-file: rename cmdmode to transform_modeJohn Cai via GitGitGadget, Feb 18, 2022
  90. 2/4 cat-file: introduce batch_mode enum to replace print_contentsJohn Cai via GitGitGadget, Feb 18, 2022
  91. 3/4 cat-file: add remove_timestamp helperJohn Cai via GitGitGadget, Feb 18, 2022
  92. Ævar Arnfjörð BjarmasonFeb 19, 2022
  93. John CaiFeb 22, 2022
  94. 4/4 cat-file: add --batch-command modeJohn Cai via GitGitGadget, Feb 18, 2022
  95. Ævar Arnfjörð BjarmasonFeb 19, 2022
  96. Junio C HamanoFeb 18, 2022
  97. Phillip WoodFeb 22, 2022

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.