Merge branch 'nd/diff-parseopt'
A brown-paper-bag bugfix to a change already in 'master'. * nd/diff-parseopt: parse-options: check empty value in OPT_INTEGER and OPT_ABBREV diff-parseopt: restore -U (no argument) behavior diff-parseopt: correct variable types that are used by parseopt
This commit is contained in:
commit
20aa7c594f
10
diff.c
10
diff.c
@ -5211,9 +5211,11 @@ static int diff_opt_unified(const struct option *opt,
|
||||
|
||||
BUG_ON_OPT_NEG(unset);
|
||||
|
||||
options->context = strtol(arg, &s, 10);
|
||||
if (*s)
|
||||
return error(_("%s expects a numerical value"), "--unified");
|
||||
if (arg) {
|
||||
options->context = strtol(arg, &s, 10);
|
||||
if (*s)
|
||||
return error(_("%s expects a numerical value"), "--unified");
|
||||
}
|
||||
enable_patch_output(&options->output_format);
|
||||
|
||||
return 0;
|
||||
@ -5272,7 +5274,7 @@ static void prep_parse_options(struct diff_options *options)
|
||||
DIFF_FORMAT_PATCH, DIFF_FORMAT_NO_OUTPUT),
|
||||
OPT_CALLBACK_F('U', "unified", options, N_("<n>"),
|
||||
N_("generate diffs with <n> lines context"),
|
||||
PARSE_OPT_NONEG, diff_opt_unified),
|
||||
PARSE_OPT_NONEG | PARSE_OPT_OPTARG, diff_opt_unified),
|
||||
OPT_BOOL('W', "function-context", &options->flags.funccontext,
|
||||
N_("generate diffs with <n> lines context")),
|
||||
OPT_BIT_F(0, "raw", &options->output_format,
|
||||
|
2
diff.h
2
diff.h
@ -169,7 +169,7 @@ struct diff_options {
|
||||
const char *prefix;
|
||||
int prefix_length;
|
||||
const char *stat_sep;
|
||||
long xdl_opts;
|
||||
int xdl_opts;
|
||||
|
||||
/* see Documentation/diff-options.txt */
|
||||
char **anchors;
|
||||
|
@ -16,6 +16,9 @@ int parse_opt_abbrev_cb(const struct option *opt, const char *arg, int unset)
|
||||
if (!arg) {
|
||||
v = unset ? 0 : DEFAULT_ABBREV;
|
||||
} else {
|
||||
if (!*arg)
|
||||
return error(_("option `%s' expects a numerical value"),
|
||||
opt->long_name);
|
||||
v = strtol(arg, (char **)&arg, 10);
|
||||
if (*arg)
|
||||
return error(_("option `%s' expects a numerical value"),
|
||||
|
@ -195,6 +195,9 @@ static enum parse_opt_result get_value(struct parse_opt_ctx_t *p,
|
||||
}
|
||||
if (get_arg(p, opt, flags, &arg))
|
||||
return -1;
|
||||
if (!*arg)
|
||||
return error(_("%s expects a numerical value"),
|
||||
optname(opt, flags));
|
||||
*(int *)opt->value = strtol(arg, (char **)&s, 10);
|
||||
if (*s)
|
||||
return error(_("%s expects a numerical value"),
|
||||
|
@ -338,6 +338,8 @@ format-patch --inline --stdout initial..master^^
|
||||
format-patch --stdout --cover-letter -n initial..master^
|
||||
|
||||
diff --abbrev initial..side
|
||||
diff -U initial..side
|
||||
diff -U1 initial..side
|
||||
diff -r initial..side
|
||||
diff --stat initial..side
|
||||
diff -r --stat initial..side
|
||||
|
29
t/t4013/diff.diff_-U1_initial..side
Normal file
29
t/t4013/diff.diff_-U1_initial..side
Normal file
@ -0,0 +1,29 @@
|
||||
$ git diff -U1 initial..side
|
||||
diff --git a/dir/sub b/dir/sub
|
||||
index 35d242b..7289e35 100644
|
||||
--- a/dir/sub
|
||||
+++ b/dir/sub
|
||||
@@ -2 +2,3 @@ A
|
||||
B
|
||||
+1
|
||||
+2
|
||||
diff --git a/file0 b/file0
|
||||
index 01e79c3..f4615da 100644
|
||||
--- a/file0
|
||||
+++ b/file0
|
||||
@@ -3 +3,4 @@
|
||||
3
|
||||
+A
|
||||
+B
|
||||
+C
|
||||
diff --git a/file3 b/file3
|
||||
new file mode 100644
|
||||
index 0000000..7289e35
|
||||
--- /dev/null
|
||||
+++ b/file3
|
||||
@@ -0,0 +1,4 @@
|
||||
+A
|
||||
+B
|
||||
+1
|
||||
+2
|
||||
$
|
31
t/t4013/diff.diff_-U2_initial..side
Normal file
31
t/t4013/diff.diff_-U2_initial..side
Normal file
@ -0,0 +1,31 @@
|
||||
$ git diff -U2 initial..side
|
||||
diff --git a/dir/sub b/dir/sub
|
||||
index 35d242b..7289e35 100644
|
||||
--- a/dir/sub
|
||||
+++ b/dir/sub
|
||||
@@ -1,2 +1,4 @@
|
||||
A
|
||||
B
|
||||
+1
|
||||
+2
|
||||
diff --git a/file0 b/file0
|
||||
index 01e79c3..f4615da 100644
|
||||
--- a/file0
|
||||
+++ b/file0
|
||||
@@ -2,2 +2,5 @@
|
||||
2
|
||||
3
|
||||
+A
|
||||
+B
|
||||
+C
|
||||
diff --git a/file3 b/file3
|
||||
new file mode 100644
|
||||
index 0000000..7289e35
|
||||
--- /dev/null
|
||||
+++ b/file3
|
||||
@@ -0,0 +1,4 @@
|
||||
+A
|
||||
+B
|
||||
+1
|
||||
+2
|
||||
$
|
32
t/t4013/diff.diff_-U_initial..side
Normal file
32
t/t4013/diff.diff_-U_initial..side
Normal file
@ -0,0 +1,32 @@
|
||||
$ git diff -U initial..side
|
||||
diff --git a/dir/sub b/dir/sub
|
||||
index 35d242b..7289e35 100644
|
||||
--- a/dir/sub
|
||||
+++ b/dir/sub
|
||||
@@ -1,2 +1,4 @@
|
||||
A
|
||||
B
|
||||
+1
|
||||
+2
|
||||
diff --git a/file0 b/file0
|
||||
index 01e79c3..f4615da 100644
|
||||
--- a/file0
|
||||
+++ b/file0
|
||||
@@ -1,3 +1,6 @@
|
||||
1
|
||||
2
|
||||
3
|
||||
+A
|
||||
+B
|
||||
+C
|
||||
diff --git a/file3 b/file3
|
||||
new file mode 100644
|
||||
index 0000000..7289e35
|
||||
--- /dev/null
|
||||
+++ b/file3
|
||||
@@ -0,0 +1,4 @@
|
||||
+A
|
||||
+B
|
||||
+1
|
||||
+2
|
||||
$
|
Loading…
Reference in New Issue
Block a user