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

Re: [PATCH 01/41] usage.c: move format processing out of die_errno()

From
Eric Sunshine <sunshine@sunshineco.com>
Date
May 1, 2016, 18:23 UTC
Message-ID
<CAPig+cQhQ2C-gOuQwJ9RBXM7HBBJkWORfRkq-t-PY=vvxgAonA@mail.gmail.com>
In-Reply-To
<1462101297-8610-2-git-send-email-pclouds@gmail.com>
On Sun, May 1, 2016 at 7:14 AM, Nguyễn Thái Ngọc Duy <pclouds@gmail.com> wrote:
Show 13 quoted lines
> fmt_with_err() will be shared with the coming error_errno() and
> warning_errno().
>
> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
> ---
> diff --git a/usage.c b/usage.c
> @@ -109,19 +109,12 @@ void NORETURN die(const char *err, ...)
> -void NORETURN die_errno(const char *fmt, ...)
> +static const char *fmt_with_err(const char *fmt)
>  {
> -       va_list params;
> -       char fmt_with_err[1024];
> +       static char fmt_with_err[1024];

Rather than this static buffer, did you consider having the caller pass in the buffer?

    static const char *fmt_with_err(char *buf, size_t n, const char *fmt)
    {
        ...
        snprintf(buf, n, "%s: %s", fmt, str_error);
        return buf;
    }
    void die_errno(const char *fmt, ...)
    {
        char fmtbuf[1024];
        ...
        die_routine(fmt_with_err(fmtbuf, sizeof(fmtbuf), fmt),
            params);
        ...
    }
Better? Worse? Indifferent?
Show 34 quoted lines
>         char str_error[256], *err;
>         int i, j;
>
> -       if (die_is_recursing()) {
> -               fputs("fatal: recursion detected in die_errno handler\n",
> -                       stderr);
> -               exit(128);
> -       }
> -
>         err = strerror(errno);
>         for (i = j = 0; err[i] && j < sizeof(str_error) - 1; ) {
>                 if ((str_error[j++] = err[i++]) != '%')
> @@ -137,9 +130,21 @@ void NORETURN die_errno(const char *fmt, ...)
>         }
>         str_error[j] = 0;
>         snprintf(fmt_with_err, sizeof(fmt_with_err), "%s: %s", fmt, str_error);
> +       return fmt_with_err;
> +}
> +
> +void NORETURN die_errno(const char *fmt, ...)
> +{
> +       va_list params;
> +
> +       if (die_is_recursing()) {
> +               fputs("fatal: recursion detected in die_errno handler\n",
> +                       stderr);
> +               exit(128);
> +       }
>
>         va_start(params, fmt);
> -       die_routine(fmt_with_err, params);
> +       die_routine(fmt_with_err(fmt), params);
>         va_end(params);
>  }
Previous: Nguyễn Thái Ngọc DuyNext: Junio C Hamano
Message 3 of 145 in “Add and use error_errno() and warning_errno()”
  1. 00/41 Add and use error_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  2. 01/41 usage.c: move format processing out of die_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  3. Eric SunshineMay 1, 2016
  4. Junio C HamanoMay 2, 2016
  5. Jeff KingMay 3, 2016
  6. Duy NguyenMay 3, 2016
  7. Jeff KingMay 3, 2016
  8. 02/41 usage.c: add warning_errno() and error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  9. 03/41 bisect.c: use die_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  10. 04/41 builtin/am.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  11. 05/41 builtin/branch.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  12. 06/41 builtin/fetch.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  13. 07/41 builtin/help.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  14. 08/41 builtin/mailsplit.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  15. Eric SunshineMay 1, 2016
  16. 09/41 builtin/merge-file.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  17. 10/41 builtin/pack-objects.c: use die_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  18. 11/41 builtin/rm.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  19. 12/41 builtin/update-index.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  20. Eric SunshineMay 1, 2016
  21. Duy NguyenMay 2, 2016
  22. 13/41 builtin/upload-archive.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  23. 14/41 builtin/worktree.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  24. 15/41 check-racy.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  25. 16/41 combine-diff.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  26. 17/41 compat/win32/syslog.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  27. Eric SunshineMay 1, 2016
  28. 18/41 config.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  29. 19/41 connected.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  30. 20/41 copy.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  31. 21/41 credential-cache--daemon.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  32. 22/41 diff-no-index.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  33. 23/41 editor.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  34. 24/41 entry.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  35. 25/41 fast-import.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  36. 26/41 gpg-interface.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  37. 27/41 grep.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  38. Eric SunshineMay 1, 2016
  39. 28/41 http.c: use error_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  40. 29/41 ident.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  41. 30/41 mailmap.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  42. 31/41 reachable.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  43. 32/41 rerere.c: use error_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  44. 33/41 run-command.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  45. 34/41 sequencer.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  46. 35/41 server-info.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  47. 36/41 sha1_file.c: use {error,die,warning}_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  48. 37/41 transport-helper.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  49. 38/41 unpack-trees.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  50. 39/41 upload-pack.c: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  51. 40/41 vcs-svn: use error_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  52. 41/41 wrapper.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 1, 2016
  53. Duy NguyenMay 1, 2016
  54. 00/41 Add and use error_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  55. 01/41 usage.c: move format processing out of die_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  56. 02/41 usage.c: add warning_errno() and error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  57. 03/41 bisect.c: use die_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  58. 04/41 builtin/am.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  59. 05/41 builtin/branch.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  60. 06/41 builtin/fetch.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  61. Junio C HamanoMay 3, 2016
  62. 07/41 builtin/help.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  63. 08/41 builtin/mailsplit.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  64. Junio C HamanoMay 3, 2016
  65. 09/41 builtin/merge-file.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  66. 10/41 builtin/pack-objects.c: use die_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  67. Junio C HamanoMay 3, 2016
  68. 11/41 builtin/rm.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  69. Junio C HamanoMay 3, 2016
  70. 12/41 builtin/update-index.c: prefer "err" to "errno" in process_lstat_errorNguyễn Thái Ngọc Duy, May 3, 2016
  71. Eric SunshineMay 3, 2016
  72. 13/41 builtin/upload-archive.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  73. 14/41 builtin/worktree.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  74. Junio C HamanoMay 3, 2016
  75. 15/41 check-racy.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  76. 16/41 combine-diff.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  77. 17/41 compat/win32/syslog.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  78. 18/41 config.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  79. 19/41 connected.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  80. 20/41 copy.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  81. 21/41 credential-cache--daemon.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  82. 22/41 diff-no-index.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  83. 23/41 editor.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  84. 24/41 entry.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  85. 25/41 fast-import.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  86. 26/41 gpg-interface.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  87. 27/41 grep.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  88. 28/41 http.c: use error_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  89. 29/41 ident.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  90. 30/41 mailmap.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  91. 31/41 reachable.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  92. 32/41 rerere.c: use error_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  93. 33/41 run-command.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  94. 34/41 sequencer.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  95. 35/41 server-info.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  96. 36/41 sha1_file.c: use {error,die,warning}_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  97. 37/41 transport-helper.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  98. 38/41 unpack-trees.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  99. 39/41 upload-pack.c: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  100. 40/41 vcs-svn: use error_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  101. 41/41 wrapper.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 3, 2016
  102. Eric SunshineMay 3, 2016
  103. Junio C HamanoMay 3, 2016
  104. 00/41 Add and use error_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  105. 01/41 usage.c: move format processing out of die_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  106. 02/41 usage.c: add warning_errno() and error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  107. 03/41 bisect.c: use die_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  108. 04/41 builtin/am.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  109. 05/41 builtin/branch.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  110. 06/41 builtin/fetch.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  111. 07/41 builtin/help.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  112. 08/41 builtin/mailsplit.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  113. 09/41 builtin/merge-file.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  114. 10/41 builtin/pack-objects.c: use die_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  115. 11/41 builtin/rm.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  116. 12/41 builtin/update-index.c: prefer "err" to "errno" in process_lstat_errorNguyễn Thái Ngọc Duy, May 8, 2016
  117. 13/41 builtin/upload-archive.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  118. 14/41 builtin/worktree.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  119. 15/41 check-racy.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  120. 16/41 combine-diff.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  121. 17/41 compat/win32/syslog.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  122. 18/41 config.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  123. 19/41 connected.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  124. 20/41 copy.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  125. 21/41 credential-cache--daemon.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  126. 22/41 diff-no-index.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  127. 23/41 editor.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  128. 24/41 entry.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  129. 25/41 fast-import.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  130. 26/41 gpg-interface.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  131. 27/41 grep.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  132. 28/41 http.c: use error_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  133. 29/41 ident.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  134. 30/41 mailmap.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  135. 31/41 reachable.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  136. 32/41 rerere.c: use error_errno() and warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  137. 33/41 run-command.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  138. 34/41 sequencer.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  139. 35/41 server-info.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  140. 36/41 sha1_file.c: use {error,die,warning}_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  141. 37/41 transport-helper.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  142. 38/41 unpack-trees.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  143. 39/41 upload-pack.c: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  144. 40/41 vcs-svn: use error_errno()Nguyễn Thái Ngọc Duy, May 8, 2016
  145. 41/41 wrapper.c: use warning_errno()Nguyễn Thái Ngọc Duy, May 8, 2016

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.