diff options
author | Linus Torvalds <torvalds@osdl.org> | 2006-09-28 15:07:16 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-09-28 22:27:29 -0700 |
commit | 5c5b2ea9ab95f71ac155f12d75d1432b5c93c2bb (patch) | |
tree | a48aed109267f7568fe4365fb885d5c7ecbfcde3 /diff.c | |
parent | 785f743276991567a36420f069c228e4dc9d0df3 (diff) | |
download | git-5c5b2ea9ab95f71ac155f12d75d1432b5c93c2bb.tar.gz git-5c5b2ea9ab95f71ac155f12d75d1432b5c93c2bb.tar.xz |
diff --stat=width[,name-width]: allow custom diffstat output width.
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'diff.c')
-rw-r--r-- | diff.c | 33 |
1 files changed, 25 insertions, 8 deletions
@@ -1735,15 +1735,32 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) else if (!strcmp(arg, "--patch-with-raw")) { options->output_format |= DIFF_FORMAT_PATCH | DIFF_FORMAT_RAW; } - else if (!strcmp(arg, "--stat")) - options->output_format |= DIFF_FORMAT_DIFFSTAT; - else if (!strncmp(arg, "--stat-width=", 13)) { - options->stat_width = strtoul(arg + 13, NULL, 10); - options->output_format |= DIFF_FORMAT_DIFFSTAT; - } - else if (!strncmp(arg, "--stat-name-width=", 18)) { - options->stat_name_width = strtoul(arg + 18, NULL, 10); + else if (!strncmp(arg, "--stat", 6)) { + char *end; + int width = options->stat_width; + int name_width = options->stat_name_width; + arg += 6; + end = (char *)arg; + + switch (*arg) { + case '-': + if (!strncmp(arg, "-width=", 7)) + width = strtoul(arg + 7, &end, 10); + else if (!strncmp(arg, "-name-width=", 12)) + name_width = strtoul(arg + 12, &end, 10); + break; + case '=': + width = strtoul(arg+1, &end, 10); + if (*end == ',') + name_width = strtoul(end+1, &end, 10); + } + + /* Important! This checks all the error cases! */ + if (*end) + return 0; options->output_format |= DIFF_FORMAT_DIFFSTAT; + options->stat_name_width = name_width; + options->stat_width = width; } else if (!strcmp(arg, "--check")) options->output_format |= DIFF_FORMAT_CHECKDIFF; |