365
}
366
}
367
368
-static inline int prune_traversal(struct name_entry *e,
368
+static inline int prune_traversal(struct index_state *istate,
369
+ struct name_entry *e,
370
struct traverse_info *info,
371
struct strbuf *base,
372
int still_interesting)
375
return 2;
376
if (still_interesting < 0)
377
return still_interesting;
377
- return tree_entry_interesting(e, base, 0, info->pathspec);
378
+ return tree_entry_interesting(istate, e, base,
379
+ 0, info->pathspec);
380
}
381
380
-int traverse_trees(int n, struct tree_desc *t, struct traverse_info *info)
382
+int traverse_trees(struct index_state *istate,
383
+ int n, struct tree_desc *t,
384
+ struct traverse_info *info)
385
{
386
int error = 0;
387
struct name_entry *entry = xmalloc(n*sizeof(*entry));
465
}
466
if (!mask)
467
break;
464
- interesting = prune_traversal(e, info, &base, interesting);
468
+ interesting = prune_traversal(istate, e, info, &base, interesting);
469
if (interesting < 0)
470
break;
471
if (interesting) {
932
* Pre-condition: either baselen == base_offset (i.e. empty path)
933
* or base[baselen-1] == '/' (i.e. with trailing slash).
934
*/
931
-static enum interesting do_match(const struct name_entry *entry,
935
+static enum interesting do_match(struct index_state *istate,
936
+ const struct name_entry *entry,
937
struct strbuf *base, int base_offset,
938
const struct pathspec *ps,
939
int exclude)
1095
* Pre-condition: either baselen == base_offset (i.e. empty path)
1096
* or base[baselen-1] == '/' (i.e. with trailing slash).
1097
*/
1093
-enum interesting tree_entry_interesting(const struct name_entry *entry,
1098
+enum interesting tree_entry_interesting(struct index_state *istate,
1099
+ const struct name_entry *entry,
1100
struct strbuf *base, int base_offset,
1101
const struct pathspec *ps)
1102
{
1103
enum interesting positive, negative;
1098
- positive = do_match(entry, base, base_offset, ps, 0);
1104
+ positive = do_match(istate, entry, base, base_offset, ps, 0);
1105
1106
/*
1107
* case | entry | positive | negative | result
1138
positive <= entry_not_interesting) /* #1, #2, #11, #12 */
1139
return positive;
1140
1135
- negative = do_match(entry, base, base_offset, ps, 1);
1141
+ negative = do_match(istate, entry, base, base_offset, ps, 1);
1142
1143
/* #8, #18 */
1144
if (positive == all_entries_interesting &&