summaryrefslogtreecommitdiff
path: root/builtin/apply.c
diff options
context:
space:
mode:
authorLibravatar Christian Couder <christian.couder@gmail.com>2016-08-08 23:03:20 +0200
committerLibravatar Junio C Hamano <gitster@pobox.com>2016-08-11 12:41:47 -0700
commit8f5b5445d7c015dc5f2bbf65d23779d355c0c36e (patch)
tree686900c4155ebe34050c8303cf488b396a297fde /builtin/apply.c
parentbuiltin/apply: make add_index_file() return -1 on error (diff)
downloadtgif-8f5b5445d7c015dc5f2bbf65d23779d355c0c36e.tar.xz
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 a6469001dd..fdfeab0e45 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)