diff options
author | Christian Couder <christian.couder@gmail.com> | 2016-08-08 23:03:17 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-08-11 12:41:47 -0700 |
commit | 6e8df314692105e7d3e69f548440e4b817bf3211 (patch) | |
tree | a33417bf38a20331e92d67ec5f89d002d7c2cf8d /builtin/apply.c | |
parent | fe41b8022560e24c1617cc8b3bd11b72bd1ff4bd (diff) | |
download | git-6e8df314692105e7d3e69f548440e4b817bf3211.tar.gz |
builtin/apply: make remove_file() return -1 on error
To libify `git apply` functionality we have to signal errors to the
caller instead of die()ing.
To do that in a compatible manner with the rest of the error handling
in "builtin/apply.c", remove_file() should return -1 instead of
calling die().
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.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/builtin/apply.c b/builtin/apply.c index 575981bd03..27fb6e20ab 100644 --- a/builtin/apply.c +++ b/builtin/apply.c @@ -4085,17 +4085,18 @@ static void patch_stats(struct apply_state *state, struct patch *patch) } } -static void remove_file(struct apply_state *state, struct patch *patch, int rmdir_empty) +static int remove_file(struct apply_state *state, struct patch *patch, int rmdir_empty) { if (state->update_index) { if (remove_file_from_cache(patch->old_name) < 0) - die(_("unable to remove %s from index"), patch->old_name); + return error(_("unable to remove %s from index"), patch->old_name); } if (!state->cached) { if (!remove_or_warn(patch->old_mode, patch->old_name) && rmdir_empty) { remove_path(patch->old_name); } } + return 0; } static void add_index_file(struct apply_state *state, @@ -4274,8 +4275,10 @@ static void write_out_one_result(struct apply_state *state, int phase) { if (patch->is_delete > 0) { - if (phase == 0) - remove_file(state, patch, 1); + if (phase == 0) { + if (remove_file(state, patch, 1)) + exit(128); + } return; } if (patch->is_new > 0 || patch->is_copy) { @@ -4287,8 +4290,10 @@ static void write_out_one_result(struct apply_state *state, * Rename or modification boils down to the same * thing: remove the old, write the new */ - if (phase == 0) - remove_file(state, patch, patch->is_rename); + if (phase == 0) { + if (remove_file(state, patch, patch->is_rename)) + exit(128); + } if (phase == 1) create_file(state, patch); } |