From: Karthik Nayak <karthik.188@gmail.com>
To: git@vger.kernel.org
Cc: christian.couder@gmail.com, Matthieu.Moy@grenoble-inp.fr,
gitster@pobox.com, Karthik Nayak <karthik.188@gmail.com>
Subject: [PATCH v6 02/11] tag: libify parse_opt_points_at()
Date: Thu, 25 Jun 2015 14:27:04 +0530 [thread overview]
Message-ID: <1435222633-32007-2-git-send-email-karthik.188@gmail.com> (raw)
In-Reply-To: <1435222633-32007-1-git-send-email-karthik.188@gmail.com>
Rename 'parse_opt_points_at()' to 'parse_opt_object_name()' and
move it from 'tag.c' to 'parse-options'. This now acts as a common
parse_opt function which accepts an objectname and stores it into
a sha1_array.
Based-on-patch-by: Jeff King <peff@peff.net>
Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
---
builtin/tag.c | 21 ++-------------------
parse-options-cb.c | 17 +++++++++++++++++
parse-options.h | 1 +
3 files changed, 20 insertions(+), 19 deletions(-)
diff --git a/builtin/tag.c b/builtin/tag.c
index 5f6cdc5..e36c43e 100644
--- a/builtin/tag.c
+++ b/builtin/tag.c
@@ -546,23 +546,6 @@ static int strbuf_check_tag_ref(struct strbuf *sb, const char *name)
return check_refname_format(sb->buf, 0);
}
-static int parse_opt_points_at(const struct option *opt __attribute__((unused)),
- const char *arg, int unset)
-{
- unsigned char sha1[20];
-
- if (unset) {
- sha1_array_clear(&points_at);
- return 0;
- }
- if (!arg)
- return error(_("switch 'points-at' requires an object"));
- if (get_sha1(arg, sha1))
- return error(_("malformed object name '%s'"), arg);
- sha1_array_append(&points_at, sha1);
- return 0;
-}
-
static int parse_opt_sort(const struct option *opt, const char *arg, int unset)
{
int *sort = opt->value;
@@ -625,8 +608,8 @@ int cmd_tag(int argc, const char **argv, const char *prefix)
parse_opt_with_commit, (intptr_t)"HEAD",
},
{
- OPTION_CALLBACK, 0, "points-at", NULL, N_("object"),
- N_("print only tags of the object"), 0, parse_opt_points_at
+ OPTION_CALLBACK, 0, "points-at", &points_at, N_("object"),
+ N_("print only tags of the object"), 0, parse_opt_object_name
},
OPT_END()
};
diff --git a/parse-options-cb.c b/parse-options-cb.c
index be8c413..de75411 100644
--- a/parse-options-cb.c
+++ b/parse-options-cb.c
@@ -4,6 +4,7 @@
#include "commit.h"
#include "color.h"
#include "string-list.h"
+#include "sha1-array.h"
/*----- some often used options -----*/
@@ -92,6 +93,22 @@ int parse_opt_with_commit(const struct option *opt, const char *arg, int unset)
return 0;
}
+int parse_opt_object_name(const struct option *opt, const char *arg, int unset)
+{
+ unsigned char sha1[20];
+
+ if (unset) {
+ sha1_array_clear(opt->value);
+ return 0;
+ }
+ if (!arg)
+ return -1;
+ if (get_sha1(arg, sha1))
+ return error(_("malformed object name '%s'"), arg);
+ sha1_array_append(opt->value, sha1);
+ return 0;
+}
+
int parse_opt_tertiary(const struct option *opt, const char *arg, int unset)
{
int *target = opt->value;
diff --git a/parse-options.h b/parse-options.h
index c71e9da..36c71fe 100644
--- a/parse-options.h
+++ b/parse-options.h
@@ -220,6 +220,7 @@ extern int parse_opt_approxidate_cb(const struct option *, const char *, int);
extern int parse_opt_expiry_date_cb(const struct option *, const char *, int);
extern int parse_opt_color_flag_cb(const struct option *, const char *, int);
extern int parse_opt_verbosity_cb(const struct option *, const char *, int);
+extern int parse_opt_object_name(const struct option *, const char *, int);
extern int parse_opt_with_commit(const struct option *, const char *, int);
extern int parse_opt_tertiary(const struct option *, const char *, int);
extern int parse_opt_string_list(const struct option *, const char *, int);
--
2.4.4
next prev parent reply other threads:[~2015-06-25 8:57 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-25 8:46 [PATCH v6 00/11] add options to for-each-ref Karthik Nayak
2015-06-25 8:57 ` [PATCH v6 01/11] t6302: for-each-ref tests for ref-filter APIs Karthik Nayak
2015-06-25 8:57 ` Karthik Nayak [this message]
2015-06-25 8:57 ` [PATCH v6 03/11] ref-filter: implement '--points-at' option Karthik Nayak
2015-06-29 17:40 ` Junio C Hamano
2015-06-29 19:37 ` Karthik Nayak
2015-06-25 8:57 ` [PATCH v6 04/11] for-each-ref: add " Karthik Nayak
2015-06-29 17:46 ` Junio C Hamano
2015-06-29 19:55 ` Karthik Nayak
2015-06-29 18:38 ` Junio C Hamano
2015-06-29 19:11 ` Karthik Nayak
2015-06-25 8:57 ` [PATCH v6 05/11] ref-filter: add parse_opt_merge_filter() Karthik Nayak
2015-06-25 8:57 ` [PATCH v6 06/11] ref-filter: implement '--merged' and '--no-merged' options Karthik Nayak
2015-06-29 18:03 ` Junio C Hamano
2015-06-29 18:28 ` Junio C Hamano
2015-06-30 13:38 ` Karthik Nayak
2015-06-30 15:58 ` Junio C Hamano
2015-06-30 16:04 ` Karthik Nayak
2015-06-25 8:57 ` [PATCH v6 07/11] for-each-ref: add " Karthik Nayak
2015-06-25 8:57 ` [PATCH v6 08/11] parse-option: rename parse_opt_with_commit() Karthik Nayak
2015-06-25 8:57 ` [PATCH v6 09/11] parse-options.h: add macros for '--contains' option Karthik Nayak
2015-06-25 8:57 ` [PATCH v6 10/11] ref-filter: implement " Karthik Nayak
2015-06-25 8:57 ` [PATCH v6 11/11] for-each-ref: add " Karthik Nayak
2015-06-29 18:14 ` [PATCH v6 01/11] t6302: for-each-ref tests for ref-filter APIs Junio C Hamano
2015-06-29 18:43 ` Karthik Nayak
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=1435222633-32007-2-git-send-email-karthik.188@gmail.com \
--to=karthik.188@gmail.com \
--cc=Matthieu.Moy@grenoble-inp.fr \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.