Skip to content

Commit

Permalink
Merge branch 'jc/tree-walk-drop-base-offset'
Browse files Browse the repository at this point in the history
Code simplification.

* jc/tree-walk-drop-base-offset:
  tree-walk: drop unused base_offset from do_match()
  tree-walk: lose base_offset that is never used in tree_entry_interesting
  • Loading branch information
gitster committed Aug 2, 2023
2 parents ee48e70 + 30c8c55 commit fea92e4
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 23 deletions.
2 changes: 1 addition & 1 deletion builtin/grep.c
Original file line number Diff line number Diff line change
Expand Up @@ -643,7 +643,7 @@ static int grep_tree(struct grep_opt *opt, const struct pathspec *pathspec,
strbuf_addstr(&name, base->buf + tn_len);
match = tree_entry_interesting(repo->index,
&entry, &name,
0, pathspec);
pathspec);
strbuf_setlen(&name, name_base_len);

if (match == all_entries_not_interesting)
Expand Down
2 changes: 1 addition & 1 deletion list-objects.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ static void process_tree_contents(struct traversal_context *ctx,
while (tree_entry(&desc, &entry)) {
if (match != all_entries_interesting) {
match = tree_entry_interesting(ctx->revs->repo->index,
&entry, base, 0,
&entry, base,
&ctx->revs->diffopt.pathspec);
if (match == all_entries_not_interesting)
break;
Expand Down
2 changes: 1 addition & 1 deletion tree-diff.c
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,7 @@ static void skip_uninteresting(struct tree_desc *t, struct strbuf *base,

while (t->size) {
match = tree_entry_interesting(opt->repo->index, &t->entry,
base, 0, &opt->pathspec);
base, &opt->pathspec);
if (match) {
if (match == all_entries_not_interesting)
t->size = 0;
Expand Down
36 changes: 18 additions & 18 deletions tree-walk.c
Original file line number Diff line number Diff line change
Expand Up @@ -434,7 +434,7 @@ static inline int prune_traversal(struct index_state *istate,
if (still_interesting < 0)
return still_interesting;
return tree_entry_interesting(istate, e, base,
0, info->pathspec);
info->pathspec);
}

int traverse_trees(struct index_state *istate,
Expand Down Expand Up @@ -1015,17 +1015,17 @@ static int match_wildcard_base(const struct pathspec_item *item,
/*
* Is a tree entry interesting given the pathspec we have?
*
* Pre-condition: either baselen == base_offset (i.e. empty path)
* Pre-condition: either baselen == 0 (i.e. empty path)
* or base[baselen-1] == '/' (i.e. with trailing slash).
*/
static enum interesting do_match(struct index_state *istate,
const struct name_entry *entry,
struct strbuf *base, int base_offset,
struct strbuf *base,
const struct pathspec *ps,
int exclude)
{
int i;
int pathlen, baselen = base->len - base_offset;
int pathlen, baselen = base->len;
enum interesting never_interesting = ps->has_wildcard ?
entry_not_interesting : all_entries_not_interesting;

Expand All @@ -1043,7 +1043,7 @@ static enum interesting do_match(struct index_state *istate,
!(ps->magic & PATHSPEC_MAXDEPTH) ||
ps->max_depth == -1)
return all_entries_interesting;
return within_depth(base->buf + base_offset, baselen,
return within_depth(base->buf, baselen,
!!S_ISDIR(entry->mode),
ps->max_depth) ?
entry_interesting : entry_not_interesting;
Expand All @@ -1054,7 +1054,7 @@ static enum interesting do_match(struct index_state *istate,
for (i = ps->nr - 1; i >= 0; i--) {
const struct pathspec_item *item = ps->items+i;
const char *match = item->match;
const char *base_str = base->buf + base_offset;
const char *base_str = base->buf;
int matchlen = item->len, matched = 0;

if ((!exclude && item->magic & PATHSPEC_EXCLUDE) ||
Expand Down Expand Up @@ -1147,9 +1147,9 @@ static enum interesting do_match(struct index_state *istate,

strbuf_add(base, entry->path, pathlen);

if (!git_fnmatch(item, match, base->buf + base_offset,
if (!git_fnmatch(item, match, base->buf,
item->nowildcard_len)) {
strbuf_setlen(base, base_offset + baselen);
strbuf_setlen(base, baselen);
goto interesting;
}

Expand All @@ -1161,13 +1161,13 @@ static enum interesting do_match(struct index_state *istate,
* be performed in the submodule itself.
*/
if (ps->recurse_submodules && S_ISGITLINK(entry->mode) &&
!ps_strncmp(item, match, base->buf + base_offset,
!ps_strncmp(item, match, base->buf,
item->nowildcard_len)) {
strbuf_setlen(base, base_offset + baselen);
strbuf_setlen(base, baselen);
goto interesting;
}

strbuf_setlen(base, base_offset + baselen);
strbuf_setlen(base, baselen);

/*
* Match all directories. We'll try to match files
Expand Down Expand Up @@ -1203,9 +1203,9 @@ static enum interesting do_match(struct index_state *istate,
return entry_interesting;

strbuf_add(base, entry->path, pathlen);
ret = match_pathspec_attrs(istate, base->buf + base_offset,
base->len - base_offset, item);
strbuf_setlen(base, base_offset + baselen);
ret = match_pathspec_attrs(istate, base->buf,
base->len, item);
strbuf_setlen(base, baselen);
if (!ret)
continue;
}
Expand All @@ -1217,16 +1217,16 @@ static enum interesting do_match(struct index_state *istate,
/*
* Is a tree entry interesting given the pathspec we have?
*
* Pre-condition: either baselen == base_offset (i.e. empty path)
* Pre-condition: either baselen == 0 (i.e. empty path)
* or base[baselen-1] == '/' (i.e. with trailing slash).
*/
enum interesting tree_entry_interesting(struct index_state *istate,
const struct name_entry *entry,
struct strbuf *base, int base_offset,
struct strbuf *base,
const struct pathspec *ps)
{
enum interesting positive, negative;
positive = do_match(istate, entry, base, base_offset, ps, 0);
positive = do_match(istate, entry, base, ps, 0);

/*
* case | entry | positive | negative | result
Expand Down Expand Up @@ -1263,7 +1263,7 @@ enum interesting tree_entry_interesting(struct index_state *istate,
positive <= entry_not_interesting) /* #1, #2, #11, #12 */
return positive;

negative = do_match(istate, entry, base, base_offset, ps, 1);
negative = do_match(istate, entry, base, ps, 1);

/* #8, #18 */
if (positive == all_entries_interesting &&
Expand Down
2 changes: 1 addition & 1 deletion tree-walk.h
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ enum interesting {

enum interesting tree_entry_interesting(struct index_state *istate,
const struct name_entry *,
struct strbuf *, int,
struct strbuf *,
const struct pathspec *ps);

#endif
2 changes: 1 addition & 1 deletion tree.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ int read_tree_at(struct repository *r,
while (tree_entry(&desc, &entry)) {
if (retval != all_entries_interesting) {
retval = tree_entry_interesting(r->index, &entry,
base, 0, pathspec);
base, pathspec);
if (retval == all_entries_not_interesting)
break;
if (retval == entry_not_interesting)
Expand Down

0 comments on commit fea92e4

Please sign in to comment.