Browse Source

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>
maint
Linus Torvalds 19 years ago committed by Junio C Hamano
parent
commit
5c5b2ea9ab
  1. 7
      Documentation/diff-options.txt
  2. 33
      diff.c

7
Documentation/diff-options.txt

@ -10,8 +10,11 @@ @@ -10,8 +10,11 @@
--patch-with-raw::
Synonym for "-p --raw".

--stat::
Generate a diffstat.
--stat[=width[,name-width]]::
Generate a diffstat. You can override the default
output width for 80-column terminal by "--stat=width".
The width of the filename part can be controlled by
giving another width to it separated by a comma.

--summary::
Output a condensed summary of extended header information

33
diff.c

@ -1735,15 +1735,32 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) @@ -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;

Loading…
Cancel
Save