patch: correctly handle "patch FILE_TO_PATCH" form. Closes 7736

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2016-01-23 05:13:15 +01:00
parent c7e47cf627
commit eb5091070f

View File

@ -372,10 +372,6 @@ int patch_main(int argc UNUSED_PARAM, char **argv)
xmove_fd(xopen_stdin(argv[1]), STDIN_FILENO);
}
}
if (argv[0]) {
oldname = xstrdup(argv[0]);
newname = xstrdup(argv[0]);
}
// Loop through the lines in the patch
for(;;) {
@ -486,10 +482,10 @@ int patch_main(int argc UNUSED_PARAM, char **argv)
// or if new hunk is empty (zero context) after patching
if (!strcmp(name, "/dev/null") || !(reverse ? oldsum : newsum)) {
name = reverse ? newname : oldname;
empty++;
empty = 1;
}
// handle -p path truncation.
// Handle -p path truncation.
for (i = 0, s = name; *s;) {
if ((option_mask32 & FLAG_PATHLEN) && TT.prefix == i)
break;
@ -500,6 +496,9 @@ int patch_main(int argc UNUSED_PARAM, char **argv)
i++;
name = s;
}
// If "patch FILE_TO_PATCH", completely ignore name from patch
if (argv[0])
name = argv[0];
if (empty) {
// File is empty after the patches have been applied