refs_ref_iterator_begin(): new function

Extract a new function from `do_for_each_ref()`. It will be useful elsewhere. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Michael Haggerty committed Mar 20, 2017 at 17:33 UTC e121b9cb5f358c9779e02a2bf96fc545a896ab13
2 files changed +24 -2
refs.c
+13 -2
@@ -1230,6 +1230,18 @@ int head_ref(each_ref_fn fn, void *cb_data)
1230 return head_ref_submodule(NULL, fn, cb_data);
1231 }
1232
1233 +struct ref_iterator *refs_ref_iterator_begin(
1234 + struct ref_store *refs,
1235 + const char *prefix, int trim, int flags)
1236 +{
1237 + struct ref_iterator *iter;
1238 +
1239 + iter = refs->be->iterator_begin(refs, prefix, flags);
1240 + iter = prefix_ref_iterator_begin(iter, prefix, trim);
1241 +
1242 + return iter;
1243 +}
1244 +
1245 /*
1246 * Call fn for each reference in the specified submodule for which the
1247 * refname begins with prefix. If trim is non-zero, then trim that
@@ -1247,8 +1259,7 @@ static int do_for_each_ref(struct ref_store *refs, const char *prefix,
1259 if (!refs)
1260 return 0;
1261
1250 - iter = refs->be->iterator_begin(refs, prefix, flags);
1251 - iter = prefix_ref_iterator_begin(iter, prefix, trim);
1262 + iter = refs_ref_iterator_begin(refs, prefix, trim, flags);
1263
1264 return do_for_each_ref_iterator(iter, fn, cb_data);
1265 }
refs/refs-internal.h
+11
@@ -335,6 +335,17 @@ struct ref_iterator *empty_ref_iterator_begin(void);
335 */
336 int is_empty_ref_iterator(struct ref_iterator *ref_iterator);
337
338 +/*
339 + * Return an iterator that goes over each reference in `refs` for
340 + * which the refname begins with prefix. If trim is non-zero, then
341 + * trim that many characters off the beginning of each refname. flags
342 + * can be DO_FOR_EACH_INCLUDE_BROKEN to include broken references in
343 + * the iteration.
344 + */
345 +struct ref_iterator *refs_ref_iterator_begin(
346 + struct ref_store *refs,
347 + const char *prefix, int trim, int flags);
348 +
349 /*
350 * A callback function used to instruct merge_ref_iterator how to
351 * interleave the entries from iter0 and iter1. The function should