diff options
author | Rob Landley | 2010-10-04 00:49:48 +0200 |
---|---|---|
committer | Denys Vlasenko | 2010-10-04 00:49:48 +0200 |
commit | 9d113cac425d7f496da4d7b6f309b707cedd6b61 (patch) | |
tree | fbb6ba5da0145c5ebb9cd5fa960735778b0db917 /editors | |
parent | e2069fb325f598c81a37222c8e44436439757029 (diff) | |
download | busybox-9d113cac425d7f496da4d7b6f309b707cedd6b61.zip busybox-9d113cac425d7f496da4d7b6f309b707cedd6b61.tar.gz |
patch: tweaks
1) Eliminate spurious warnings about possibly reduced hunks. Instead only
note a possible location if we don't find a non-reversed place to apply it.
(Otherwise, hunks that move code forward around within a file look reversed at
the removal site.)
2) Open the source file read-only, so we can apply patches to read-only files.
Signed-off-by: Rob Landley <rob@landley.net>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'editors')
-rw-r--r-- | editors/patch.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/editors/patch.c b/editors/patch.c index c40f541..0bde2ca 100644 --- a/editors/patch.c +++ b/editors/patch.c @@ -344,14 +344,12 @@ static int apply_one_hunk(void) while (plist && *plist->data == "+-"[reverse]) { if (data && !strcmp(data, plist->data+1)) { if (!backwarn) { - backwarn++; + backwarn = TT.linenum; if (option_mask32 & FLAG_IGNORE) { dummy_revert = 1; reverse ^= 1; continue; } - fdprintf(2,"Possibly reversed hunk %d at %ld\n", - TT.hunknum, TT.linenum); } } plist = plist->next; @@ -364,6 +362,10 @@ static int apply_one_hunk(void) // Does this hunk need to match EOF? if (!plist && matcheof) break; + if (backwarn) + fdprintf(2,"Possibly reversed hunk %d at %ld\n", + TT.hunknum, TT.linenum); + // File ended before we found a place for this hunk. fail_hunk(); goto done; @@ -592,7 +594,7 @@ int patch_main(int argc UNUSED_PARAM, char **argv) TT.filein = xopen3(name, O_CREAT|O_EXCL|O_RDWR, 0666); } else { printf("patching file %s\n", name); - TT.filein = xopen(name, O_RDWR); + TT.filein = xopen(name, O_RDONLY); } TT.fileout = copy_tempfile(TT.filein, name, &TT.tempname); TT.linenum = 0; |