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