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