diff options
-rw-r--r-- | src/patch.c | 12 | ||||
-rw-r--r-- | tests/copy-rename | 24 |
2 files changed, 31 insertions, 5 deletions
diff --git a/src/patch.c b/src/patch.c index 2c51f44..6b41f79 100644 --- a/src/patch.c +++ b/src/patch.c @@ -244,7 +244,7 @@ main (int argc, char **argv) if (outfile) outname = outfile; else if (pch_copy () || pch_rename ()) - outname = pch_name (! strcmp (inname, pch_name (OLD))); + outname = pch_name (! reverse); else outname = inname; } @@ -351,16 +351,18 @@ main (int argc, char **argv) if (verbosity != SILENT) { bool renamed = strcmp (inname, outname); + bool skip_rename = ! renamed && pch_rename (); say ("%s %s %s%c", dry_run ? "checking" : "patching", S_ISLNK (file_type) ? "symbolic link" : "file", - quotearg (outname), renamed ? ' ' : '\n'); - if (renamed) - say ("(%s from %s)\n", + quotearg (outname), renamed || skip_rename ? ' ' : '\n'); + if (renamed || skip_rename) + say ("(%s%s from %s)\n", + skip_rename ? "already " : "", pch_copy () ? "copied" : (pch_rename () ? "renamed" : "read"), - inname); + ! skip_rename ? inname : pch_name (! strcmp (inname, pch_name (OLD)))); if (verbosity == VERBOSE) say ("Using Plan %s...\n", using_plan_a ? "A" : "B"); } diff --git a/tests/copy-rename b/tests/copy-rename index fd5fd64..ef9bc8e 100644 --- a/tests/copy-rename +++ b/tests/copy-rename @@ -63,6 +63,30 @@ check 'cat h' <<EOF new EOF +echo old > h + +check 'patch -p1 < rename.diff || echo "Status: $?"' <<EOF +patching file h (already renamed from f) +EOF + +ncheck 'test ! -e f' + +check 'cat h' <<EOF +new +EOF + +mv h f + +check 'patch -p1 -R < rename.diff || echo "Status: $?"' <<EOF +patching file f (already renamed from h) +EOF + +ncheck 'test ! -e h' + +check 'cat f' <<EOF +old +EOF + # -------------------------------------------------------------- # Patches with no hunks |