aboutsummaryrefslogtreecommitdiff
path: root/receive-pack.c
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2007-03-10 03:28:11 -0500
committerJunio C Hamano <junkio@cox.net>2007-03-11 22:49:43 -0700
commit6c319a22e47e6b49d799f5893aeac92e723a5e6f (patch)
tree8949b9a7b162990524f76aa71a6d1500991aaaf7 /receive-pack.c
parent4919bf0354e2a1cfb948c320d45d51319ada30eb (diff)
downloadgit-6c319a22e47e6b49d799f5893aeac92e723a5e6f.tar.gz
git-6c319a22e47e6b49d799f5893aeac92e723a5e6f.tar.xz
Refactor run_command error handling in receive-pack
I'm pulling the error handling used to decode the result of run_command up into a new function so that I can reuse it. No changes, just a simple code movement. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'receive-pack.c')
-rw-r--r--receive-pack.c43
1 files changed, 24 insertions, 19 deletions
diff --git a/receive-pack.c b/receive-pack.c
index 675c88f49..e14707605 100644
--- a/receive-pack.c
+++ b/receive-pack.c
@@ -71,6 +71,29 @@ static const char update_hook[] = "hooks/update";
static const char pre_receive_hook[] = "hooks/pre-receive";
static const char post_receive_hook[] = "hooks/post-receive";
+static int hook_status(int code, const char *hook_name)
+{
+ switch (code) {
+ case 0:
+ return 0;
+ case -ERR_RUN_COMMAND_FORK:
+ return error("hook fork failed");
+ case -ERR_RUN_COMMAND_EXEC:
+ return error("hook execute failed");
+ case -ERR_RUN_COMMAND_WAITPID:
+ return error("waitpid failed");
+ case -ERR_RUN_COMMAND_WAITPID_WRONG_PID:
+ return error("waitpid is confused");
+ case -ERR_RUN_COMMAND_WAITPID_SIGNAL:
+ return error("%s died of signal", hook_name);
+ case -ERR_RUN_COMMAND_WAITPID_NOEXIT:
+ return error("%s died strangely", hook_name);
+ default:
+ error("%s exited with error code %d", hook_name, -code);
+ return -code;
+ }
+}
+
static int run_hook(const char *hook_name,
struct command *first_cmd,
int single)
@@ -108,25 +131,7 @@ static int run_hook(const char *hook_name,
free((char*)argv[argc]);
free(argv);
- switch (code) {
- case 0:
- return 0;
- case -ERR_RUN_COMMAND_FORK:
- return error("hook fork failed");
- case -ERR_RUN_COMMAND_EXEC:
- return error("hook execute failed");
- case -ERR_RUN_COMMAND_WAITPID:
- return error("waitpid failed");
- case -ERR_RUN_COMMAND_WAITPID_WRONG_PID:
- return error("waitpid is confused");
- case -ERR_RUN_COMMAND_WAITPID_SIGNAL:
- return error("%s died of signal", hook_name);
- case -ERR_RUN_COMMAND_WAITPID_NOEXIT:
- return error("%s died strangely", hook_name);
- default:
- error("%s exited with error code %d", hook_name, -code);
- return -code;
- }
+ return hook_status(code, hook_name);
}
static const char *update(struct command *cmd)