@ -3029,6 +3029,38 @@ int parse_long_opt(const char *opt, const char **argv,
@@ -3029,6 +3029,38 @@ int parse_long_opt(const char *opt, const char **argv,
return 2;
}
static int stat_opt(struct diff_options *options, const char **av)
{
const char *arg = av[0];
char *end;
int width = options->stat_width;
int name_width = options->stat_name_width;
arg += strlen("--stat");
end = (char *)arg;
switch (*arg) {
case '-':
if (!prefixcmp(arg, "-width="))
width = strtoul(arg + 7, &end, 10);
else if (!prefixcmp(arg, "-name-width="))
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;
return 1;
}
int diff_opt_parse(struct diff_options *options, const char **av, int ac)
{
const char *arg = av[0];
@ -3070,33 +3102,9 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)
@@ -3070,33 +3102,9 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)
options->output_format |= DIFF_FORMAT_NAME_STATUS;
else if (!strcmp(arg, "-s"))
options->output_format |= DIFF_FORMAT_NO_OUTPUT;
else if (!prefixcmp(arg, "--stat")) {
char *end;
int width = options->stat_width;
int name_width = options->stat_name_width;
arg += 6;
end = (char *)arg;
switch (*arg) {
case '-':
if (!prefixcmp(arg, "-width="))
width = strtoul(arg + 7, &end, 10);
else if (!prefixcmp(arg, "-name-width="))
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 (!prefixcmp(arg, "--stat"))
/* --stat, --stat-width, or --stat-name-width */
return stat_opt(options, av);
/* renames options */
else if (!prefixcmp(arg, "-B")) {