|
|
|
@ -563,7 +563,7 @@ static void builtin_diff(const char *name_a,
@@ -563,7 +563,7 @@ static void builtin_diff(const char *name_a,
|
|
|
|
|
|
|
|
|
|
ecbdata.label_path = lbl; |
|
|
|
|
xpp.flags = XDF_NEED_MINIMAL; |
|
|
|
|
xecfg.ctxlen = 3; |
|
|
|
|
xecfg.ctxlen = o->context; |
|
|
|
|
xecfg.flags = XDL_EMIT_FUNCNAMES; |
|
|
|
|
if (!diffopts) |
|
|
|
|
; |
|
|
|
@ -1187,6 +1187,7 @@ void diff_setup(struct diff_options *options)
@@ -1187,6 +1187,7 @@ void diff_setup(struct diff_options *options)
|
|
|
|
|
options->line_termination = '\n'; |
|
|
|
|
options->break_opt = -1; |
|
|
|
|
options->rename_limit = -1; |
|
|
|
|
options->context = 3; |
|
|
|
|
|
|
|
|
|
options->change = diff_change; |
|
|
|
|
options->add_remove = diff_addremove; |
|
|
|
@ -1227,11 +1228,60 @@ int diff_setup_done(struct diff_options *options)
@@ -1227,11 +1228,60 @@ int diff_setup_done(struct diff_options *options)
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int opt_arg(const char *arg, int arg_short, const char *arg_long, int *val) |
|
|
|
|
{ |
|
|
|
|
char c, *eq; |
|
|
|
|
int len; |
|
|
|
|
|
|
|
|
|
if (*arg != '-') |
|
|
|
|
return 0; |
|
|
|
|
c = *++arg; |
|
|
|
|
if (!c) |
|
|
|
|
return 0; |
|
|
|
|
if (c == arg_short) { |
|
|
|
|
c = *++arg; |
|
|
|
|
if (!c) |
|
|
|
|
return 1; |
|
|
|
|
if (val && isdigit(c)) { |
|
|
|
|
char *end; |
|
|
|
|
int n = strtoul(arg, &end, 10); |
|
|
|
|
if (*end) |
|
|
|
|
return 0; |
|
|
|
|
*val = n; |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
if (c != '-') |
|
|
|
|
return 0; |
|
|
|
|
arg++; |
|
|
|
|
eq = strchr(arg, '='); |
|
|
|
|
if (eq) |
|
|
|
|
len = eq - arg; |
|
|
|
|
else |
|
|
|
|
len = strlen(arg); |
|
|
|
|
if (!len || strncmp(arg, arg_long, len)) |
|
|
|
|
return 0; |
|
|
|
|
if (eq) { |
|
|
|
|
int n; |
|
|
|
|
char *end; |
|
|
|
|
if (!isdigit(*++eq)) |
|
|
|
|
return 0; |
|
|
|
|
n = strtoul(eq, &end, 10); |
|
|
|
|
if (*end) |
|
|
|
|
return 0; |
|
|
|
|
*val = n; |
|
|
|
|
} |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int diff_opt_parse(struct diff_options *options, const char **av, int ac) |
|
|
|
|
{ |
|
|
|
|
const char *arg = av[0]; |
|
|
|
|
if (!strcmp(arg, "-p") || !strcmp(arg, "-u")) |
|
|
|
|
options->output_format = DIFF_FORMAT_PATCH; |
|
|
|
|
else if (opt_arg(arg, 'U', "unified", &options->context)) |
|
|
|
|
options->output_format = DIFF_FORMAT_PATCH; |
|
|
|
|
else if (!strcmp(arg, "--patch-with-raw")) { |
|
|
|
|
options->output_format = DIFF_FORMAT_PATCH; |
|
|
|
|
options->with_raw = 1; |
|
|
|
|