summaryrefslogtreecommitdiff
path: root/commit.c
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <junkio@cox.net>2006-05-17 03:04:14 -0700
committerLibravatar Junio C Hamano <junkio@cox.net>2006-05-17 03:04:14 -0700
commitaedb8995f841949ce29e05ea7e5c03c2d5466089 (patch)
treed54b7a99e00395da2e8329836befbc6a1e7f96f0 /commit.c
parentMerge branch 'jc/grep' into next (diff)
parentcommit: allow --pretty= args to be abbreviated (diff)
downloadtgif-aedb8995f841949ce29e05ea7e5c03c2d5466089.tar.xz
Merge branch 'ew/pretty-fmt' into next
* ew/pretty-fmt: commit: allow --pretty= args to be abbreviated Conflicts: commit.c - adjust to --pretty=email
Diffstat (limited to 'commit.c')
-rw-r--r--commit.c41
1 files changed, 25 insertions, 16 deletions
diff --git a/commit.c b/commit.c
index 93b3903ea7..84558bac29 100644
--- a/commit.c
+++ b/commit.c
@@ -22,25 +22,34 @@ struct sort_node
const char *commit_type = "commit";
+struct cmt_fmt_map {
+ const char *n;
+ size_t cmp_len;
+ enum cmit_fmt v;
+} cmt_fmts[] = {
+ { "raw", 1, CMIT_FMT_RAW },
+ { "medium", 1, CMIT_FMT_MEDIUM },
+ { "short", 1, CMIT_FMT_SHORT },
+ { "email", 1, CMIT_FMT_EMAIL },
+ { "full", 5, CMIT_FMT_FULL },
+ { "fuller", 5, CMIT_FMT_FULLER },
+ { "oneline", 1, CMIT_FMT_ONELINE },
+};
+
enum cmit_fmt get_commit_format(const char *arg)
{
- if (!*arg)
+ int i;
+
+ if (!arg || !*arg)
return CMIT_FMT_DEFAULT;
- if (!strcmp(arg, "=raw"))
- return CMIT_FMT_RAW;
- if (!strcmp(arg, "=medium"))
- return CMIT_FMT_MEDIUM;
- if (!strcmp(arg, "=short"))
- return CMIT_FMT_SHORT;
- if (!strcmp(arg, "=full"))
- return CMIT_FMT_FULL;
- if (!strcmp(arg, "=fuller"))
- return CMIT_FMT_FULLER;
- if (!strcmp(arg, "=email"))
- return CMIT_FMT_EMAIL;
- if (!strcmp(arg, "=oneline"))
- return CMIT_FMT_ONELINE;
- die("invalid --pretty format");
+ if (*arg == '=')
+ arg++;
+ for (i = 0; i < ARRAY_SIZE(cmt_fmts); i++) {
+ if (!strncmp(arg, cmt_fmts[i].n, cmt_fmts[i].cmp_len))
+ return cmt_fmts[i].v;
+ }
+
+ die("invalid --pretty format: %s", arg);
}
static struct commit *check_commit(struct object *obj,