Skip to content

Commit

Permalink
check-ref-format: handle subcommands in separate functions
Browse files Browse the repository at this point in the history
The code for each subcommand should be easier to read and manipulate
this way.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jonathan Nieder authored and Junio C Hamano committed Aug 6, 2010
1 parent 2429e8d commit cfbe22f
Showing 1 changed file with 25 additions and 17 deletions.
42 changes: 25 additions & 17 deletions builtin/check-ref-format.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,28 +33,36 @@ static void collapse_slashes(char *dst, const char *src)
*dst = '\0';
}

static int check_ref_format_branch(const char *arg)
{
struct strbuf sb = STRBUF_INIT;

if (strbuf_check_branch_ref(&sb, arg))
die("'%s' is not a valid branch name", arg);
printf("%s\n", sb.buf + 11);
return 0;
}

static int check_ref_format_print(const char *arg)
{
char *refname = xmalloc(strlen(arg) + 1);

if (check_ref_format(arg))
return 1;
collapse_slashes(refname, arg);
printf("%s\n", refname);
return 0;
}

int cmd_check_ref_format(int argc, const char **argv, const char *prefix)
{
if (argc == 2 && !strcmp(argv[1], "-h"))
usage(builtin_check_ref_format_usage);

if (argc == 3 && !strcmp(argv[1], "--branch")) {
struct strbuf sb = STRBUF_INIT;

if (strbuf_check_branch_ref(&sb, argv[2]))
die("'%s' is not a valid branch name", argv[2]);
printf("%s\n", sb.buf + 11);
exit(0);
}
if (argc == 3 && !strcmp(argv[1], "--print")) {
char *refname = xmalloc(strlen(argv[2]) + 1);

if (check_ref_format(argv[2]))
exit(1);
collapse_slashes(refname, argv[2]);
printf("%s\n", refname);
exit(0);
}
if (argc == 3 && !strcmp(argv[1], "--branch"))
return check_ref_format_branch(argv[2]);
if (argc == 3 && !strcmp(argv[1], "--print"))
return check_ref_format_print(argv[2]);
if (argc != 2)
usage(builtin_check_ref_format_usage);
return !!check_ref_format(argv[1]);
Expand Down

0 comments on commit cfbe22f

Please sign in to comment.