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

[PATCH 00/41] use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status

From
Elia Pinto <gitter.spiros@gmail.com>
Date
Mar 21, 2022, 22:54 UTC
Message-ID
<20220321225523.724509-1-gitter.spiros@gmail.com>

The C standard specifies two constants, EXIT_SUCCESS and EXIT_FAILURE, that may be passed to exit() to indicate successful or unsuccessful termination, respectively. The value of status in exit(status) may be EXIT_SUCCESS, EXIT_FAILURE, or any other value, though only the least significant 8 bits (that is, status & 0377) shall be available to a waiting parent proces. So exit(-1) return 255.

EXIT_SUCCESS or EXIT_FAILURE are already used in some functions in git but not everywhere. Also in branch.c there is a returns exit(-1), ie 255, when exit(1) might be more appropriate.

T$his patch series adds a coccinelle semantic patch exit.cocci in
contrib/coccinelle to rewrite:
- exit(0) in exit(EXIT_SUCCESS)
- exit(1) in exit(EXIT_FAILURE)
- exit(-1) in exit(EXIT_FAILURE)
The patch treats the status code in _exit equivalently.
Elia Pinto (41):
  archive.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  branch.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  am.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  blame.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  commit.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  credential-cache--daemon.c: use the stdlib EXIT_SUCCESS or
    EXIT_FAILURE exit status
  help.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  init-db.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  mailsplit.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  merge-index.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  merge.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  pull.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  rebase.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  remote-ext.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  rev-parse.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  rm.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  shortlog.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  show-branch.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  stash.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  tag.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  unpack-objects.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit
    status
  update-index.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit
    status
  obstack.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  git-credential-osxkeychain.c: use the stdlib EXIT_SUCCESS or
    EXIT_FAILURE exit status
  git-credential-wincred.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE
    exit status
  daemon.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  git.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  help.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  http-backend.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit
    status
  parse-options.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit
    status
  path.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  remote-curl.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  run-command.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  setup.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  shell.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  test-json-writer.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit
    status
  test-reach.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  test-submodule-config.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE
    exit status
  test-submodule-nested-repo-config.c: use the stdlib EXIT_SUCCESS or
    EXIT_FAILURE exit status
  upload-pack.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
  exit.cocci: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status
 archive.c                                     |  2 +-
 branch.c                                      |  4 ++--
 builtin/am.c                                  |  4 ++--
 builtin/blame.c                               |  2 +-
 builtin/commit.c                              | 10 ++++----
 builtin/credential-cache--daemon.c            |  2 +-
 builtin/help.c                                |  2 +-
 builtin/init-db.c                             |  2 +-
 builtin/mailsplit.c                           |  2 +-
 builtin/merge-index.c                         |  2 +-
 builtin/merge.c                               |  4 ++--
 builtin/pull.c                                |  2 +-
 builtin/rebase.c                              | 12 +++++-----
 builtin/remote-ext.c                          |  2 +-
 builtin/rev-parse.c                           |  2 +-
 builtin/rm.c                                  |  2 +-
 builtin/shortlog.c                            |  2 +-
 builtin/show-branch.c                         |  4 ++--
 builtin/stash.c                               |  2 +-
 builtin/tag.c                                 |  2 +-
 builtin/unpack-objects.c                      |  6 ++---
 builtin/update-index.c                        |  4 ++--
 compat/obstack.c                              |  2 +-
 contrib/coccinelle/exit.cocci                 | 24 +++++++++++++++++++
 .../osxkeychain/git-credential-osxkeychain.c  |  4 ++--
 .../wincred/git-credential-wincred.c          |  2 +-
 daemon.c                                      |  2 +-
 git.c                                         | 14 +++++------
 help.c                                        |  8 +++----
 http-backend.c                                | 12 +++++-----
 parse-options.c                               |  2 +-
 path.c                                        |  2 +-
 remote-curl.c                                 |  2 +-
 run-command.c                                 |  2 +-
 setup.c                                       |  2 +-
 shell.c                                       |  2 +-
 t/helper/test-json-writer.c                   |  2 +-
 t/helper/test-reach.c                         |  2 +-
 t/helper/test-submodule-config.c              |  2 +-
 t/helper/test-submodule-nested-repo-config.c  |  2 +-
 upload-pack.c                                 |  2 +-
 41 files changed, 95 insertions(+), 71 deletions(-)
 create mode 100644 contrib/coccinelle/exit.cocci
-- 
2.35.1
Next: Elia Pinto
Message 1 of 48 in “use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit status”
  1. 00/41 use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  2. 07/41 help.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  3. 13/41 rebase.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  4. 34/41 setup.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  5. 05/41 commit.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  6. 02/41 branch.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  7. 40/41 upload-pack.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  8. 32/41 remote-curl.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  9. 27/41 git.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  10. 26/41 daemon.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  11. 41/41 exit.cocci: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  12. 01/41 archive.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  13. 24/41 git-credential-osxkeychain.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  14. 20/41 tag.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  15. 09/41 mailsplit.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  16. 38/41 test-submodule-config.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  17. 11/41 merge.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  18. 17/41 shortlog.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  19. 12/41 pull.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  20. 37/41 test-reach.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  21. 33/41 run-command.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  22. 16/41 rm.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  23. 31/41 path.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  24. 04/41 blame.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  25. 15/41 rev-parse.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  26. 29/41 http-backend.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  27. 18/41 show-branch.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  28. 03/41 am.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  29. 36/41 test-json-writer.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  30. 28/41 help.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  31. 39/41 test-submodule-nested-repo-config.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  32. 06/41 credential-cache--daemon.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  33. 14/41 remote-ext.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  34. 10/41 merge-index.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  35. 25/41 git-credential-wincred.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  36. 22/41 update-index.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  37. 08/41 init-db.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  38. 23/41 obstack.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  39. 21/41 unpack-objects.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  40. 30/41 parse-options.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  41. 19/41 stash.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  42. 35/41 shell.c: use the stdlib EXIT_SUCCESS or EXIT_FAILURE exit statusElia Pinto, Mar 21, 2022
  43. Bagas SanjayaMar 22, 2022
  44. Elia PintoMar 22, 2022
  45. Bagas SanjayaMar 22, 2022
  46. Ævar Arnfjörð BjarmasonMar 22, 2022
  47. Elia PintoMar 22, 2022
  48. Junio C HamanoMar 23, 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.