builtin/apply: move 'patch_input_file' global into 'struct apply_state'

To libify the apply functionality the 'patch_input_file' variable should
not be static and global to the file. Let's move it into
'struct apply_state'.

Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Christian Couder 2016-05-24 10:11:06 +02:00 committed by Junio C Hamano
parent 574f5a59d8
commit b802355863

View File

@ -49,6 +49,7 @@ struct apply_state {
/* Other non boolean parameters */
const char *fake_ancestor;
const char *patch_input_file;
int line_termination;
unsigned int p_context;
};
@ -79,7 +80,6 @@ static enum ws_ignore {
} ws_ignore_action = ignore_ws_none;
static const char *patch_input_file;
static struct strbuf root = STRBUF_INIT;
static void parse_whitespace_option(const char *option)
@ -1525,7 +1525,11 @@ static int find_header(struct apply_state *state,
return -1;
}
static void record_ws_error(unsigned result, const char *line, int len, int linenr)
static void record_ws_error(struct apply_state *state,
unsigned result,
const char *line,
int len,
int linenr)
{
char *err;
@ -1539,15 +1543,18 @@ static void record_ws_error(unsigned result, const char *line, int len, int line
err = whitespace_error_string(result);
fprintf(stderr, "%s:%d: %s.\n%.*s\n",
patch_input_file, linenr, err, len, line);
state->patch_input_file, linenr, err, len, line);
free(err);
}
static void check_whitespace(const char *line, int len, unsigned ws_rule)
static void check_whitespace(struct apply_state *state,
const char *line,
int len,
unsigned ws_rule)
{
unsigned result = ws_check(line + 1, len - 1, ws_rule);
record_ws_error(result, line + 1, len - 2, state_linenr);
record_ws_error(state, result, line + 1, len - 2, state_linenr);
}
/*
@ -1602,12 +1609,12 @@ static int parse_fragment(struct apply_state *state,
trailing++;
if (!state->apply_in_reverse &&
ws_error_action == correct_ws_error)
check_whitespace(line, len, patch->ws_rule);
check_whitespace(state, line, len, patch->ws_rule);
break;
case '-':
if (state->apply_in_reverse &&
ws_error_action != nowarn_ws_error)
check_whitespace(line, len, patch->ws_rule);
check_whitespace(state, line, len, patch->ws_rule);
deleted++;
oldlines--;
trailing = 0;
@ -1615,7 +1622,7 @@ static int parse_fragment(struct apply_state *state,
case '+':
if (!state->apply_in_reverse &&
ws_error_action != nowarn_ws_error)
check_whitespace(line, len, patch->ws_rule);
check_whitespace(state, line, len, patch->ws_rule);
added++;
newlines--;
trailing = 0;
@ -2904,7 +2911,7 @@ static int apply_one_fragment(struct apply_state *state,
preimage.nr + applied_pos >= img->nr &&
(ws_rule & WS_BLANK_AT_EOF) &&
ws_error_action != nowarn_ws_error) {
record_ws_error(WS_BLANK_AT_EOF, "+", 1,
record_ws_error(state, WS_BLANK_AT_EOF, "+", 1,
found_new_blank_lines_at_end);
if (ws_error_action == correct_ws_error) {
while (new_blank_lines_at_end--)
@ -4427,7 +4434,7 @@ static int apply_patch(struct apply_state *state,
struct patch *list = NULL, **listp = &list;
int skipped_patch = 0;
patch_input_file = filename;
state->patch_input_file = filename;
read_patch_file(&buf, fd);
offset = 0;
while (offset < buf.len) {