diff options
-rw-r--r-- | list-objects-filter.c | 10 | ||||
-rw-r--r-- | list-objects-filter.h | 2 | ||||
-rw-r--r-- | list-objects.c | 9 |
3 files changed, 15 insertions, 6 deletions
diff --git a/list-objects-filter.c b/list-objects-filter.c index 765f3df3b0..a62624a1ce 100644 --- a/list-objects-filter.c +++ b/list-objects-filter.c @@ -34,6 +34,7 @@ struct filter_blobs_none_data { }; static enum list_objects_filter_result filter_blobs_none( + struct repository *r, enum list_objects_filter_situation filter_situation, struct object *obj, const char *pathname, @@ -88,6 +89,7 @@ struct filter_trees_none_data { }; static enum list_objects_filter_result filter_trees_none( + struct repository *r, enum list_objects_filter_situation filter_situation, struct object *obj, const char *pathname, @@ -144,6 +146,7 @@ struct filter_blobs_limit_data { }; static enum list_objects_filter_result filter_blobs_limit( + struct repository *r, enum list_objects_filter_situation filter_situation, struct object *obj, const char *pathname, @@ -171,7 +174,7 @@ static enum list_objects_filter_result filter_blobs_limit( assert(obj->type == OBJ_BLOB); assert((obj->flags & SEEN) == 0); - t = oid_object_info(the_repository, &obj->oid, &object_length); + t = oid_object_info(r, &obj->oid, &object_length); if (t != OBJ_BLOB) { /* probably OBJ_NONE */ /* * We DO NOT have the blob locally, so we cannot @@ -249,6 +252,7 @@ struct filter_sparse_data { }; static enum list_objects_filter_result filter_sparse( + struct repository *r, enum list_objects_filter_situation filter_situation, struct object *obj, const char *pathname, @@ -268,7 +272,7 @@ static enum list_objects_filter_result filter_sparse( dtype = DT_DIR; val = is_excluded_from_list(pathname, strlen(pathname), filename, &dtype, &filter_data->el, - &the_index); + r->index); if (val < 0) val = filter_data->array_frame[filter_data->nr].defval; @@ -331,7 +335,7 @@ static enum list_objects_filter_result filter_sparse( dtype = DT_REG; val = is_excluded_from_list(pathname, strlen(pathname), filename, &dtype, &filter_data->el, - &the_index); + r->index); if (val < 0) val = frame->defval; if (val > 0) { diff --git a/list-objects-filter.h b/list-objects-filter.h index 52b4a84da9..1d45a4ad57 100644 --- a/list-objects-filter.h +++ b/list-objects-filter.h @@ -4,6 +4,7 @@ struct list_objects_filter_options; struct object; struct oidset; +struct repository; /* * During list-object traversal we allow certain objects to be @@ -60,6 +61,7 @@ enum list_objects_filter_situation { }; typedef enum list_objects_filter_result (*filter_object_fn)( + struct repository *r, enum list_objects_filter_situation filter_situation, struct object *obj, const char *pathname, diff --git a/list-objects.c b/list-objects.c index c41cc80db5..0cfd646026 100644 --- a/list-objects.c +++ b/list-objects.c @@ -55,7 +55,8 @@ static void process_blob(struct traversal_context *ctx, pathlen = path->len; strbuf_addstr(path, name); if ((obj->flags & NOT_USER_GIVEN) && ctx->filter_fn) - r = ctx->filter_fn(LOFS_BLOB, obj, + r = ctx->filter_fn(ctx->revs->repo, + LOFS_BLOB, obj, path->buf, &path->buf[pathlen], ctx->filter_data); if (r & LOFR_MARK_SEEN) @@ -175,7 +176,8 @@ static void process_tree(struct traversal_context *ctx, strbuf_addstr(base, name); if ((obj->flags & NOT_USER_GIVEN) && ctx->filter_fn) - r = ctx->filter_fn(LOFS_BEGIN_TREE, obj, + r = ctx->filter_fn(ctx->revs->repo, + LOFS_BEGIN_TREE, obj, base->buf, &base->buf[baselen], ctx->filter_data); if (r & LOFR_MARK_SEEN) @@ -191,7 +193,8 @@ static void process_tree(struct traversal_context *ctx, process_tree_contents(ctx, tree, base); if ((obj->flags & NOT_USER_GIVEN) && ctx->filter_fn) { - r = ctx->filter_fn(LOFS_END_TREE, obj, + r = ctx->filter_fn(ctx->revs->repo, + LOFS_END_TREE, obj, base->buf, &base->buf[baselen], ctx->filter_data); if (r & LOFR_MARK_SEEN) |