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