ws.c: remove implicit dependency on the_index

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Nguyễn Thái Ngọc Duy committed Sep 21, 2018 at 17:57 UTC 26d024ecf0e2e5bd697714b95930bb6008d85f3f
4 files changed +11 -10
apply.c
+5 -3
@@ -2131,10 +2131,12 @@ static int parse_chunk(struct apply_state *state, char *buffer, unsigned long si
2131
2132 if (!use_patch(state, patch))
2133 patch->ws_rule = 0;
2134 + else if (patch->new_name)
2135 + patch->ws_rule = whitespace_rule(state->repo->index,
2136 + patch->new_name);
2137 else
2135 - patch->ws_rule = whitespace_rule(patch->new_name
2136 - ? patch->new_name
2137 - : patch->old_name);
2138 + patch->ws_rule = whitespace_rule(state->repo->index,
2139 + patch->old_name);
2140
2141 patchsize = parse_single_patch(state,
2142 buffer + offset + hdrsize,
cache.h
+1 -1
@@ -1694,7 +1694,7 @@ void shift_tree_by(const struct object_id *, const struct object_id *, struct ob
1694 /* All WS_* -- when extended, adapt diff.c emit_symbol */
1695 #define WS_RULE_MASK 07777
1696 extern unsigned whitespace_rule_cfg;
1697 -extern unsigned whitespace_rule(const char *);
1697 +extern unsigned whitespace_rule(struct index_state *, const char *);
1698 extern unsigned parse_whitespace_rule(const char *);
1699 extern unsigned ws_check(const char *line, int len, unsigned ws_rule);
1700 extern void ws_check_emit(const char *line, int len, unsigned ws_rule, FILE *stream, const char *set, const char *reset, const char *ws);
diff.c
+3 -3
@@ -1705,7 +1705,7 @@ static void emit_rewrite_diff(const char *name_a,
1705
1706 memset(&ecbdata, 0, sizeof(ecbdata));
1707 ecbdata.color_diff = want_color(o->use_color);
1708 - ecbdata.ws_rule = whitespace_rule(name_b);
1708 + ecbdata.ws_rule = whitespace_rule(o->repo->index, name_b);
1709 ecbdata.opt = o;
1710 if (ecbdata.ws_rule & WS_BLANK_AT_EOF) {
1711 mmfile_t mf1, mf2;
@@ -3480,7 +3480,7 @@ static void builtin_diff(const char *name_a,
3480 lbl[0] = NULL;
3481 ecbdata.label_path = lbl;
3482 ecbdata.color_diff = want_color(o->use_color);
3483 - ecbdata.ws_rule = whitespace_rule(name_b);
3483 + ecbdata.ws_rule = whitespace_rule(o->repo->index, name_b);
3484 if (ecbdata.ws_rule & WS_BLANK_AT_EOF)
3485 check_blank_at_eof(&mf1, &mf2, &ecbdata);
3486 ecbdata.opt = o;
@@ -3640,7 +3640,7 @@ static void builtin_checkdiff(const char *name_a, const char *name_b,
3640 data.filename = name_b ? name_b : name_a;
3641 data.lineno = 0;
3642 data.o = o;
3643 - data.ws_rule = whitespace_rule(attr_path);
3643 + data.ws_rule = whitespace_rule(o->repo->index, attr_path);
3644 data.conflict_marker_size = ll_merge_marker_size(o->repo->index, attr_path);
3645
3646 if (fill_mmfile(o->repo, &mf1, one) < 0 ||
ws.c
+2 -3
@@ -3,7 +3,6 @@
3 *
4 * Copyright (c) 2007 Junio C Hamano
5 */
6 -
6 #include "cache.h"
7 #include "attr.h"
8
@@ -71,14 +70,14 @@ unsigned parse_whitespace_rule(const char *string)
70 return rule;
71 }
72
74 -unsigned whitespace_rule(const char *pathname)
73 +unsigned whitespace_rule(struct index_state *istate, const char *pathname)
74 {
75 static struct attr_check *attr_whitespace_rule;
76
77 if (!attr_whitespace_rule)
78 attr_whitespace_rule = attr_check_initl("whitespace", NULL);
79
81 - if (!git_check_attr(&the_index, pathname, attr_whitespace_rule)) {
80 + if (!git_check_attr(istate, pathname, attr_whitespace_rule)) {
81 const char *value;
82
83 value = attr_whitespace_rule->items[0].value;