[PATCHv4 1/4] Refactor for_each_ref variants to use for_each_ref_in and avoid magic numbers
- From
Jamey Sharp <jamey@minilop.net>
- Date
- Jun 1, 2011, 00:24 UTC
- Message-ID
- <1306887870-3875-1-git-send-email-jamey@minilop.net>
From: Josh Triplett <josh@joshtriplett.org>
Several variants of the for_each_ref functions call do_for_each_ref with both a fixed string prefix and the hardcoded length of that prefix. Furthermore, for_each_ref and for_each_ref_submodule passed "refs/" but a length of 0, which caused do_for_each_ref to ignore the "refs/".
Change do_for_each_ref to use prefixcmp instead, and change the for_each_ref variants to call for_each_ref_in with the prefix they actually want.
Leave the separate "trim" parameter for callers that want to require a prefix but not strip off that prefix.
Commit by Josh Triplett and Jamey Sharp.
Signed-off-by: Josh Triplett <josh@joshtriplett.org> Signed-off-by: Jamey Sharp <jamey@minilop.net> --- With this change the "trim" parameter always equals strlen(base), but we use trim=0 again in a later patch in this series.
refs.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/refs.c b/refs.c index e3c0511..60cebe6 100644 --- a/refs.c +++ b/refs.c @@ -584,7 +584,7 @@ int read_ref(const char *ref, unsigned char *sha1) static int do_one_ref(const char *base, each_ref_fn fn, int trim, int flags, void *cb_data, struct ref_list *entry) { - if (strncmp(base, entry->name, trim)) + if (prefixcmp(entry->name, base)) return 0; if (!(flags & DO_FOR_EACH_INCLUDE_BROKEN)) { @@ -728,12 +728,12 @@ int head_ref_submodule(const char *submodule, each_ref_fn fn, void *cb_data) int for_each_ref(each_ref_fn fn, void *cb_data) { - return do_for_each_ref(NULL, "refs/", fn, 0, 0, cb_data); + return for_each_ref_in("", fn, cb_data); } int for_each_ref_submodule(const char *submodule, each_ref_fn fn, void *cb_data) { - return do_for_each_ref(submodule, "refs/", fn, 0, 0, cb_data); + return for_each_ref_in_submodule(submodule, "", fn, cb_data); } int for_each_ref_in(const char *prefix, each_ref_fn fn, void *cb_data) @@ -779,7 +779,7 @@ int for_each_remote_ref_submodule(const char *submodule, each_ref_fn fn, void *c int for_each_replace_ref(each_ref_fn fn, void *cb_data) { - return do_for_each_ref(NULL, "refs/replace/", fn, 13, 0, cb_data); + return for_each_ref_in("refs/replace/", fn, cb_data); } int for_each_glob_ref_in(each_ref_fn fn, const char *pattern, @@ -819,7 +819,7 @@ int for_each_glob_ref(each_ref_fn fn, const char *pattern, void *cb_data) int for_each_rawref(each_ref_fn fn, void *cb_data) { - return do_for_each_ref(NULL, "refs/", fn, 0, + return do_for_each_ref(NULL, "", fn, 0, DO_FOR_EACH_INCLUDE_BROKEN, cb_data); }
-- 1.7.5.3