@matheusbsbs / matheus-bagliano / commits / 2a8177b63d
Fork 0

refs: add "for_each_ref_in" function to refactor "for_each_*_ref" functions

The "for_each_{tag,branch,remote,replace,}_ref" functions are redefined in terms of "for_each_ref_in" so that we can lose the hardcoded length of prefix strings from the code. Signed-off-by: Christian Couder <chriscool@tuxfamily.org>

Christian Couder committed Mar 30, 2009 at 05:07 UTC 2a8177b63d39503b182248b04ffcc75e3495754c
2 files changed +9 -3
refs.c
+8 -3
@@ -647,19 +647,24 @@ int for_each_ref(each_ref_fn fn, void *cb_data)
647 return do_for_each_ref("refs/", fn, 0, 0, cb_data);
648 }
649
650 +int for_each_ref_in(const char *prefix, each_ref_fn fn, void *cb_data)
651 +{
652 + return do_for_each_ref(prefix, fn, strlen(prefix), 0, cb_data);
653 +}
654 +
655 int for_each_tag_ref(each_ref_fn fn, void *cb_data)
656 {
652 - return do_for_each_ref("refs/tags/", fn, 10, 0, cb_data);
657 + return for_each_ref_in("refs/tags/", fn, cb_data);
658 }
659
660 int for_each_branch_ref(each_ref_fn fn, void *cb_data)
661 {
657 - return do_for_each_ref("refs/heads/", fn, 11, 0, cb_data);
662 + return for_each_ref_in("refs/heads/", fn, cb_data);
663 }
664
665 int for_each_remote_ref(each_ref_fn fn, void *cb_data)
666 {
662 - return do_for_each_ref("refs/remotes/", fn, 13, 0, cb_data);
667 + return for_each_ref_in("refs/remotes/", fn, cb_data);
668 }
669
670 int for_each_rawref(each_ref_fn fn, void *cb_data)
refs.h
+1
@@ -20,6 +20,7 @@ struct ref_lock {
20 typedef int each_ref_fn(const char *refname, const unsigned char *sha1, int flags, void *cb_data);
21 extern int head_ref(each_ref_fn, void *);
22 extern int for_each_ref(each_ref_fn, void *);
23 +extern int for_each_ref_in(const char *, each_ref_fn, void *);
24 extern int for_each_tag_ref(each_ref_fn, void *);
25 extern int for_each_branch_ref(each_ref_fn, void *);
26 extern int for_each_remote_ref(each_ref_fn, void *);