apply: remove `newfd` from `struct apply_state`

Similar to a previous patch, we do not need to use `newfd` to signal
that we have a lockfile to clean up. We can just unconditionally call
`rollback_lock_file`. If we do not hold the lock, it will be a no-op.

Where we check `newfd` to decide whether we need to take the lock, we
can instead use `is_lock_file_locked()`.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Martin Ågren 2017-10-05 22:32:10 +02:00 коммит произвёл Junio C Hamano
Родитель 6d058c8826
Коммит d13cd4c927
2 изменённых файлов: 7 добавлений и 13 удалений

17
apply.c
Просмотреть файл

@ -79,7 +79,6 @@ int init_apply_state(struct apply_state *state,
{
memset(state, 0, sizeof(*state));
state->prefix = prefix;
state->newfd = -1;
state->apply = 1;
state->line_termination = '\n';
state->p_value = 1;
@ -4705,13 +4704,13 @@ static int apply_patch(struct apply_state *state,
state->apply = 0;
state->update_index = state->check_index && state->apply;
if (state->update_index && state->newfd < 0) {
if (state->update_index && !is_lock_file_locked(&state->lock_file)) {
if (state->index_file)
state->newfd = hold_lock_file_for_update(&state->lock_file,
state->index_file,
LOCK_DIE_ON_ERROR);
hold_lock_file_for_update(&state->lock_file,
state->index_file,
LOCK_DIE_ON_ERROR);
else
state->newfd = hold_locked_index(&state->lock_file, LOCK_DIE_ON_ERROR);
hold_locked_index(&state->lock_file, LOCK_DIE_ON_ERROR);
}
if (state->check_index && read_apply_cache(state) < 0) {
@ -4913,16 +4912,12 @@ int apply_all_patches(struct apply_state *state,
res = -128;
goto end;
}
state->newfd = -1;
}
res = !!errs;
end:
if (state->newfd >= 0) {
rollback_lock_file(&state->lock_file);
state->newfd = -1;
}
rollback_lock_file(&state->lock_file);
if (state->apply_verbosity <= verbosity_silent) {
set_error_routine(state->saved_error_routine);

Просмотреть файл

@ -36,9 +36,8 @@ enum apply_verbosity {
struct apply_state {
const char *prefix;
/* These are lock_file related */
/* Lock file */
struct lock_file lock_file;
int newfd;
/* These control what gets looked at and modified */
int apply; /* this is not a dry-run */