Bug in patch?
Michael Lichter
lichter at maui.cs.ucla.edu
Tue Dec 12 01:24:46 AEST 1989
I'm running patch (patchlevel 12):
% patch -v
$Header: patch.c,v 2.0.1.6 88/06/22 20:46:39 lwall Locked $
Patch level: 12
I'm having a problem with the "-D" option. According to the man page,
the "-D" option "causes patch to use the "#ifdef...#endif" construct
to mark changes. The argument following will be used as the
differentiating symbol."
I pared my problems down to the following two examples.
I have a file with one line in it, and some diffs that bracket that line
between a couple of new lines:
% cat x
This is the original line
% cat x.diffs
*** x.old Mon Dec 11 06:02:04 1989
--- x Mon Dec 11 06:02:10 1989
***************
*** 1 ****
--- 1,3 ----
+ This is a new line
This is the original line
+ This is another new line
I patch the file and look at the results
% patch -D NEW < x.diffs
Hmm... Looks like a new-style context diff to me...
The text leading up to this was:
--------------------------
|*** x.old Mon Dec 11 06:02:04 1989
|--- x Mon Dec 11 06:02:10 1989
--------------------------
Patching file x using Plan A...
Hunk #1 succeeded at 1.
done
% cat x
#ifdef NEW
This is a new line
This is the original line
This is another new line
#endif /* NEW */
Hmm. EVERYTHING is #ifdef'd. This is not what I had in mind! Seems to
me that we should have
#ifdef NEW
This is a new line
#endif /* NEW */
This is the original line
#ifdef NEW
This is another new line
#endif /* NEW */
Oops! Here's the other one, where the diffs add a line and then change a
line:
% cat x
This is the stable line
This is the changed line
% cat x.diffs
*** x.old Mon Dec 11 06:09:22 1989
--- x Mon Dec 11 06:09:38 1989
***************
*** 1,2 ****
This is the stable line
! This is the changed line
--- 1,3 ----
+ This is a new line
This is the stable line
! This is the CHANGED line
% patch -D NEW < x.diffs
Hmm... Looks like a new-style context diff to me...
The text leading up to this was:
--------------------------
|*** x.old Mon Dec 11 06:09:22 1989
|--- x Mon Dec 11 06:09:38 1989
--------------------------
Patching file x using Plan A...
Hunk #1 succeeded at 1.
done
% cat x
#ifdef NEW
This is a new line
This is the stable line
#ifndef NEW
This is the changed line
#else
This is the CHANGED line
#endif /* NEW */
Ack! The first #if has no #endif!
So, am I using "patch -D" wrong, or are these bugs?
Michael
More information about the Comp.sources.bugs
mailing list