summaryrefslogtreecommitdiff
path: root/builtin/apply.c
diff options
context:
space:
mode:
authorChristian Couder <christian.couder@gmail.com>2016-08-08 21:03:20 (GMT)
committerJunio C Hamano <gitster@pobox.com>2016-08-11 19:41:47 (GMT)
commit8f5b5445d7c015dc5f2bbf65d23779d355c0c36e (patch)
tree686900c4155ebe34050c8303cf488b396a297fde /builtin/apply.c
parent69e1609f812d5accc1b54f737faba354f5bd85db (diff)
downloadgit-8f5b5445d7c015dc5f2bbf65d23779d355c0c36e.zip
git-8f5b5445d7c015dc5f2bbf65d23779d355c0c36e.tar.gz
git-8f5b5445d7c015dc5f2bbf65d23779d355c0c36e.tar.bz2
builtin/apply: make create_file() return -1 on error
To libify `git apply` functionality we have to signal errors to the caller instead of exit()ing. To do that in a compatible manner with the rest of the error handling in "builtin/apply.c", create_file() should just return what add_conflicted_stages_file() and add_index_file() are returning instead of calling exit(). Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/apply.c')
-rw-r--r--builtin/apply.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/builtin/apply.c b/builtin/apply.c
index a646900..fdfeab0 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -4269,7 +4269,7 @@ static int add_conflicted_stages_file(struct apply_state *state,
return 0;
}
-static void create_file(struct apply_state *state, struct patch *patch)
+static int create_file(struct apply_state *state, struct patch *patch)
{
char *path = patch->new_name;
unsigned mode = patch->new_mode;
@@ -4280,13 +4280,10 @@ static void create_file(struct apply_state *state, struct patch *patch)
mode = S_IFREG | 0644;
create_one_file(state, path, mode, buf, size);
- if (patch->conflicted_threeway) {
- if (add_conflicted_stages_file(state, patch))
- exit(128);
- } else {
- if (add_index_file(state, path, mode, buf, size))
- exit(128);
- }
+ if (patch->conflicted_threeway)
+ return add_conflicted_stages_file(state, patch);
+ else
+ return add_index_file(state, path, mode, buf, size);
}
/* phase zero is to remove, phase one is to create */
@@ -4302,8 +4299,10 @@ static void write_out_one_result(struct apply_state *state,
return;
}
if (patch->is_new > 0 || patch->is_copy) {
- if (phase == 1)
- create_file(state, patch);
+ if (phase == 1) {
+ if (create_file(state, patch))
+ exit(128);
+ }
return;
}
/*
@@ -4314,8 +4313,10 @@ static void write_out_one_result(struct apply_state *state,
if (remove_file(state, patch, patch->is_rename))
exit(128);
}
- if (phase == 1)
- create_file(state, patch);
+ if (phase == 1) {
+ if (create_file(state, patch))
+ exit(128);
+ }
}
static int write_out_one_reject(struct apply_state *state, struct patch *patch)