Signed-off-by: Pierre Habouzit <madcoder@xxxxxxxxxx> --- builtin-symbolic-ref.c | 54 +++++++++++++++++------------------------------ 1 files changed, 20 insertions(+), 34 deletions(-) diff --git a/builtin-symbolic-ref.c b/builtin-symbolic-ref.c index 9eb95e5..c5e5173 100644 --- a/builtin-symbolic-ref.c +++ b/builtin-symbolic-ref.c @@ -1,9 +1,12 @@ #include "builtin.h" #include "cache.h" #include "refs.h" +#include "parse-options.h" -static const char git_symbolic_ref_usage[] = -"git-symbolic-ref [-q] [-m <reason>] name [ref]"; +static const char * const git_symbolic_ref_usage[] = { + "git-symbolic-ref [options] name [ref]", + NULL +}; static void check_symref(const char *HEAD, int quiet) { @@ -26,44 +29,27 @@ int cmd_symbolic_ref(int argc, const char **argv, const char *prefix) { int quiet = 0; const char *msg = NULL; + struct option git_symbolic_ref_options[] = { + OPT_BOOLEAN('q', "quiet", &quiet, "do not issue errors"), + OPT_STRING( 'm', NULL, &msg, "reason", "reason of the update"), + }; git_config(git_default_config); - - while (1 < argc) { - const char *arg = argv[1]; - if (arg[0] != '-') - break; - else if (!strcmp("-q", arg)) - quiet = 1; - else if (!strcmp("-m", arg)) { - argc--; - argv++; - if (argc <= 1) - break; - msg = argv[1]; - if (!*msg) - die("Refusing to perform update with empty message"); - } - else if (!strcmp("--", arg)) { - argc--; - argv++; - break; - } - else - die("unknown option %s", arg); - argc--; - argv++; - } - + argc = parse_options(argc, argv, git_symbolic_ref_options, + ARRAY_SIZE(git_symbolic_ref_options), + git_symbolic_ref_usage, 0); + if (msg &&!*msg) + die("Refusing to perform update with empty message"); switch (argc) { - case 2: - check_symref(argv[1], quiet); + case 1: + check_symref(argv[0], quiet); break; - case 3: - create_symref(argv[1], argv[2], msg); + case 2: + create_symref(argv[0], argv[1], msg); break; default: - usage(git_symbolic_ref_usage); + make_usage(git_symbolic_ref_usage, git_symbolic_ref_options, + ARRAY_SIZE(git_symbolic_ref_options)); } return 0; } -- 1.5.3.GIT - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html