git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ronnie Sahlberg <sahlberg@google.com>
To: git@vger.kernel.org
Cc: Ronnie Sahlberg <sahlberg@google.com>
Subject: [PATCH v3 17/23] refs.c: move ref iterators to the common code
Date: Tue, 19 Aug 2014 09:30:41 -0700	[thread overview]
Message-ID: <1408465847-30384-18-git-send-email-sahlberg@google.com> (raw)
In-Reply-To: <1408465847-30384-1-git-send-email-sahlberg@google.com>

Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
---
 refs-be-files.c | 81 ---------------------------------------------------------
 refs.c          | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 81 insertions(+), 81 deletions(-)

diff --git a/refs-be-files.c b/refs-be-files.c
index fb9c614..9aa88ef 100644
--- a/refs-be-files.c
+++ b/refs-be-files.c
@@ -1377,22 +1377,6 @@ const char *resolve_ref_unsafe(const char *refname, unsigned char *sha1, int fla
 	}
 }
 
-/* The argument to filter_refs */
-struct ref_filter {
-	const char *pattern;
-	each_ref_fn *fn;
-	void *cb_data;
-};
-
-static int filter_refs(const char *refname, const unsigned char *sha1, int flags,
-		       void *data)
-{
-	struct ref_filter *filter = (struct ref_filter *)data;
-	if (wildmatch(filter->pattern, refname, 0, NULL))
-		return 0;
-	return filter->fn(refname, sha1, flags, filter->cb_data);
-}
-
 enum peel_status {
 	/* object was peeled successfully: */
 	PEEL_PEELED = 0,
@@ -1646,36 +1630,6 @@ int for_each_ref_in_submodule(const char *submodule, const char *prefix,
 	return do_for_each_ref(get_ref_cache(submodule), prefix, fn, strlen(prefix), 0, cb_data);
 }
 
-int for_each_tag_ref(each_ref_fn fn, void *cb_data)
-{
-	return for_each_ref_in("refs/tags/", fn, cb_data);
-}
-
-int for_each_tag_ref_submodule(const char *submodule, each_ref_fn fn, void *cb_data)
-{
-	return for_each_ref_in_submodule(submodule, "refs/tags/", fn, cb_data);
-}
-
-int for_each_branch_ref(each_ref_fn fn, void *cb_data)
-{
-	return for_each_ref_in("refs/heads/", fn, cb_data);
-}
-
-int for_each_branch_ref_submodule(const char *submodule, each_ref_fn fn, void *cb_data)
-{
-	return for_each_ref_in_submodule(submodule, "refs/heads/", fn, cb_data);
-}
-
-int for_each_remote_ref(each_ref_fn fn, void *cb_data)
-{
-	return for_each_ref_in("refs/remotes/", fn, cb_data);
-}
-
-int for_each_remote_ref_submodule(const char *submodule, each_ref_fn fn, void *cb_data)
-{
-	return for_each_ref_in_submodule(submodule, "refs/remotes/", fn, cb_data);
-}
-
 int for_each_replace_ref(each_ref_fn fn, void *cb_data)
 {
 	return do_for_each_ref(&ref_cache, "refs/replace/", fn, 13, 0, cb_data);
@@ -1706,41 +1660,6 @@ int for_each_namespaced_ref(each_ref_fn fn, void *cb_data)
 	return ret;
 }
 
-int for_each_glob_ref_in(each_ref_fn fn, const char *pattern,
-	const char *prefix, void *cb_data)
-{
-	struct strbuf real_pattern = STRBUF_INIT;
-	struct ref_filter filter;
-	int ret;
-
-	if (!prefix && !starts_with(pattern, "refs/"))
-		strbuf_addstr(&real_pattern, "refs/");
-	else if (prefix)
-		strbuf_addstr(&real_pattern, prefix);
-	strbuf_addstr(&real_pattern, pattern);
-
-	if (!has_glob_specials(pattern)) {
-		/* Append implied '/' '*' if not present. */
-		if (real_pattern.buf[real_pattern.len - 1] != '/')
-			strbuf_addch(&real_pattern, '/');
-		/* No need to check for '*', there is none. */
-		strbuf_addch(&real_pattern, '*');
-	}
-
-	filter.pattern = real_pattern.buf;
-	filter.fn = fn;
-	filter.cb_data = cb_data;
-	ret = for_each_ref(filter_refs, &filter);
-
-	strbuf_release(&real_pattern);
-	return ret;
-}
-
-int for_each_glob_ref(each_ref_fn fn, const char *pattern, void *cb_data)
-{
-	return for_each_glob_ref_in(fn, pattern, NULL, cb_data);
-}
-
 int for_each_rawref(each_ref_fn fn, void *cb_data)
 {
 	return do_for_each_ref(&ref_cache, "", fn, 0,
diff --git a/refs.c b/refs.c
index d163e61..964a513 100644
--- a/refs.c
+++ b/refs.c
@@ -705,3 +705,84 @@ const char *prettify_refname(const char *name)
 		starts_with(name, "refs/remotes/") ? 13 :
 		0);
 }
+
+/* The argument to filter_refs */
+struct ref_filter {
+	const char *pattern;
+	each_ref_fn *fn;
+	void *cb_data;
+};
+
+static int filter_refs(const char *refname, const unsigned char *sha1, int flags,
+		       void *data)
+{
+	struct ref_filter *filter = (struct ref_filter *)data;
+	if (wildmatch(filter->pattern, refname, 0, NULL))
+		return 0;
+	return filter->fn(refname, sha1, flags, filter->cb_data);
+}
+
+int for_each_tag_ref(each_ref_fn fn, void *cb_data)
+{
+	return for_each_ref_in("refs/tags/", fn, cb_data);
+}
+
+int for_each_tag_ref_submodule(const char *submodule, each_ref_fn fn, void *cb_data)
+{
+	return for_each_ref_in_submodule(submodule, "refs/tags/", fn, cb_data);
+}
+
+int for_each_branch_ref(each_ref_fn fn, void *cb_data)
+{
+	return for_each_ref_in("refs/heads/", fn, cb_data);
+}
+
+int for_each_branch_ref_submodule(const char *submodule, each_ref_fn fn, void *cb_data)
+{
+	return for_each_ref_in_submodule(submodule, "refs/heads/", fn, cb_data);
+}
+
+int for_each_remote_ref(each_ref_fn fn, void *cb_data)
+{
+	return for_each_ref_in("refs/remotes/", fn, cb_data);
+}
+
+int for_each_remote_ref_submodule(const char *submodule, each_ref_fn fn, void *cb_data)
+{
+	return for_each_ref_in_submodule(submodule, "refs/remotes/", fn, cb_data);
+}
+
+int for_each_glob_ref_in(each_ref_fn fn, const char *pattern,
+	const char *prefix, void *cb_data)
+{
+	struct strbuf real_pattern = STRBUF_INIT;
+	struct ref_filter filter;
+	int ret;
+
+	if (!prefix && !starts_with(pattern, "refs/"))
+		strbuf_addstr(&real_pattern, "refs/");
+	else if (prefix)
+		strbuf_addstr(&real_pattern, prefix);
+	strbuf_addstr(&real_pattern, pattern);
+
+	if (!has_glob_specials(pattern)) {
+		/* Append implied '/' '*' if not present. */
+		if (real_pattern.buf[real_pattern.len - 1] != '/')
+			strbuf_addch(&real_pattern, '/');
+		/* No need to check for '*', there is none. */
+		strbuf_addch(&real_pattern, '*');
+	}
+
+	filter.pattern = real_pattern.buf;
+	filter.fn = fn;
+	filter.cb_data = cb_data;
+	ret = for_each_ref(filter_refs, &filter);
+
+	strbuf_release(&real_pattern);
+	return ret;
+}
+
+int for_each_glob_ref(each_ref_fn fn, const char *pattern, void *cb_data)
+{
+	return for_each_glob_ref_in(fn, pattern, NULL, cb_data);
+}
-- 
2.0.1.552.g1af257a

  parent reply	other threads:[~2014-08-19 16:32 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-19 16:30 [PATCH v3 00/23] backend-struct-db Ronnie Sahlberg
2014-08-19 16:30 ` [PATCH v3 01/23] refs.c: create a public function for is_refname_available Ronnie Sahlberg
2014-08-19 16:30 ` [PATCH v3 03/23] refs.c: add a new refs.c file to hold all common refs code Ronnie Sahlberg
2014-08-26 21:31   ` Junio C Hamano
2014-08-26 22:00     ` Ronnie Sahlberg
2014-08-19 16:30 ` [PATCH v3 04/23] refs.c: move update_ref to refs.c Ronnie Sahlberg
2014-08-19 16:30 ` [PATCH v3 05/23] refs.c: move delete_ref to the common code Ronnie Sahlberg
2014-08-19 16:30 ` [PATCH v3 06/23] refs.c: move rename_ref " Ronnie Sahlberg
2014-08-19 16:30 ` [PATCH v3 07/23] refs.c: move read_ref_at to the common refs file Ronnie Sahlberg
2014-08-19 16:30 ` [PATCH v3 08/23] refs.c: move the hidden refs functions to the common code Ronnie Sahlberg
2014-08-19 16:30 ` [PATCH v3 09/23] refs.c: move dwim and friend functions to the common refs code Ronnie Sahlberg
2014-08-19 16:30 ` [PATCH v3 10/23] refs.c: move warn_if_dangling_symref* to the common code Ronnie Sahlberg
2014-08-19 16:30 ` [PATCH v3 11/23] refs.c: move read_ref, read_ref_full and ref_exists " Ronnie Sahlberg
2014-08-19 16:30 ` [PATCH v3 12/23] refs.c: move resolve_refdup to common Ronnie Sahlberg
2014-08-19 16:30 ` [PATCH v3 13/23] refs.c: move check_refname_component to the common code Ronnie Sahlberg
2014-08-19 16:30 ` [PATCH v3 14/23] refs.c: move is_branch " Ronnie Sahlberg
2014-08-19 16:30 ` [PATCH v3 15/23] refs.c: move names_conflict " Ronnie Sahlberg
2014-08-19 16:30 ` [PATCH v3 16/23] refs.c: move prettify_refname " Ronnie Sahlberg
2014-08-19 16:30 ` Ronnie Sahlberg [this message]
2014-08-19 16:30 ` [PATCH v3 18/23] refs.c: move head_ref_namespaced " Ronnie Sahlberg
2014-08-19 16:30 ` [PATCH v3 19/23] refs-be-files.c: add a backend method structure with transaction functions Ronnie Sahlberg
2014-08-26 21:38   ` Junio C Hamano
2014-08-26 22:34     ` Ronnie Sahlberg
2014-08-19 16:30 ` [PATCH v3 20/23] refs-be-files.c: add reflog backend methods Ronnie Sahlberg
2014-08-19 16:30 ` [PATCH v3 21/23] refs-be-files.c: add methods for misc ref operations Ronnie Sahlberg
2014-08-19 16:30 ` [PATCH v3 22/23] refs-be-files.c: add methods for head_ref* Ronnie Sahlberg
2014-08-19 16:30 ` [PATCH v3 23/23] refs-be-files.c: add methods for the ref iterators Ronnie Sahlberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1408465847-30384-18-git-send-email-sahlberg@google.com \
    --to=sahlberg@google.com \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).