userdiff.c: remove implicit dependency on the_index
[jc: squashed in missing forward decl in userdiff.h found by Ramsay] Helped-by: Ramsay Jones <ramsay@ramsayjones.plus.com> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
35843b1123
commit
acd00ea049
21
grep.c
21
grep.c
@ -11,7 +11,8 @@
|
||||
#include "help.h"
|
||||
|
||||
static int grep_source_load(struct grep_source *gs);
|
||||
static int grep_source_is_binary(struct grep_source *gs);
|
||||
static int grep_source_is_binary(struct grep_source *gs,
|
||||
struct index_state *istate);
|
||||
|
||||
static struct grep_opt grep_defaults;
|
||||
|
||||
@ -1547,7 +1548,7 @@ static int match_funcname(struct grep_opt *opt, struct grep_source *gs, char *bo
|
||||
{
|
||||
xdemitconf_t *xecfg = opt->priv;
|
||||
if (xecfg && !xecfg->find_func) {
|
||||
grep_source_load_driver(gs);
|
||||
grep_source_load_driver(gs, opt->repo->index);
|
||||
if (gs->driver->funcname.pattern) {
|
||||
const struct userdiff_funcname *pe = &gs->driver->funcname;
|
||||
xdiff_set_find_func(xecfg, pe->pattern, pe->cflags);
|
||||
@ -1804,7 +1805,7 @@ static int grep_source_1(struct grep_opt *opt, struct grep_source *gs, int colle
|
||||
opt->last_shown = 0;
|
||||
|
||||
if (opt->allow_textconv) {
|
||||
grep_source_load_driver(gs);
|
||||
grep_source_load_driver(gs, opt->repo->index);
|
||||
/*
|
||||
* We might set up the shared textconv cache data here, which
|
||||
* is not thread-safe.
|
||||
@ -1821,11 +1822,11 @@ static int grep_source_1(struct grep_opt *opt, struct grep_source *gs, int colle
|
||||
if (!textconv) {
|
||||
switch (opt->binary) {
|
||||
case GREP_BINARY_DEFAULT:
|
||||
if (grep_source_is_binary(gs))
|
||||
if (grep_source_is_binary(gs, opt->repo->index))
|
||||
binary_match_only = 1;
|
||||
break;
|
||||
case GREP_BINARY_NOMATCH:
|
||||
if (grep_source_is_binary(gs))
|
||||
if (grep_source_is_binary(gs, opt->repo->index))
|
||||
return 0; /* Assume unmatch */
|
||||
break;
|
||||
case GREP_BINARY_TEXT:
|
||||
@ -2171,22 +2172,24 @@ static int grep_source_load(struct grep_source *gs)
|
||||
BUG("invalid grep_source type to load");
|
||||
}
|
||||
|
||||
void grep_source_load_driver(struct grep_source *gs)
|
||||
void grep_source_load_driver(struct grep_source *gs,
|
||||
struct index_state *istate)
|
||||
{
|
||||
if (gs->driver)
|
||||
return;
|
||||
|
||||
grep_attr_lock();
|
||||
if (gs->path)
|
||||
gs->driver = userdiff_find_by_path(gs->path);
|
||||
gs->driver = userdiff_find_by_path(istate, gs->path);
|
||||
if (!gs->driver)
|
||||
gs->driver = userdiff_find_by_name("default");
|
||||
grep_attr_unlock();
|
||||
}
|
||||
|
||||
static int grep_source_is_binary(struct grep_source *gs)
|
||||
static int grep_source_is_binary(struct grep_source *gs,
|
||||
struct index_state *istate)
|
||||
{
|
||||
grep_source_load_driver(gs);
|
||||
grep_source_load_driver(gs, istate);
|
||||
if (gs->driver->binary != -1)
|
||||
return gs->driver->binary;
|
||||
|
||||
|
Reference in New Issue
Block a user