xref: /plan9/sys/src/ape/cmd/patch/ChangeLog (revision 0b459c2cb92b7c9d88818e9a2f72e678e5bc4553)
1*0b459c2cSDavid du Colombier1997-08-31  Paul Eggert  <eggert@twinsun.com>
2*0b459c2cSDavid du Colombier
3*0b459c2cSDavid du Colombier	* configure.in (VERSION): Version 2.5 released.
4*0b459c2cSDavid du Colombier
5*0b459c2cSDavid du Colombier1997-07-21  Paul Eggert  <eggert@twinsun.com>
6*0b459c2cSDavid du Colombier
7*0b459c2cSDavid du Colombier	* configure.in (VERSION): Bump to 2.4.4.
8*0b459c2cSDavid du Colombier	* pch.c (there_is_another_patch), NEWS: Report an error if the patch
9*0b459c2cSDavid du Colombier	input contains garbage but no patches.
10*0b459c2cSDavid du Colombier
11*0b459c2cSDavid du Colombier	* pch.c (open_patch_file):
12*0b459c2cSDavid du Colombier	Check for patch file too long (i.e., its size
13*0b459c2cSDavid du Colombier	doesn't fit in a `long', and LFS isn't available).
14*0b459c2cSDavid du Colombier
15*0b459c2cSDavid du Colombier	* inp.c (plan_a):
16*0b459c2cSDavid du Colombier	Cast malloc return value, in case malloc returns char *.
17*0b459c2cSDavid du Colombier
18*0b459c2cSDavid du Colombier1997-07-16  Paul Eggert  <eggert@twinsun.com>
19*0b459c2cSDavid du Colombier
20*0b459c2cSDavid du Colombier	* configure.in (VERSION): Bump to 2.4.3.
21*0b459c2cSDavid du Colombier
22*0b459c2cSDavid du Colombier	* NEWS, patch.man, pch.c (intuit_diff_type, get_line, pget_line):
23*0b459c2cSDavid du Colombier	Now demangles RFC 934 encapsulation.
24*0b459c2cSDavid du Colombier	* pch.c (p_rfc934_nesting): New var.
25*0b459c2cSDavid du Colombier
26*0b459c2cSDavid du Colombier	* pch.c (intuit_diff_type): Don't bother to check file names carefully
27*0b459c2cSDavid du Colombier	if we're going to return NO_DIFF.
28*0b459c2cSDavid du Colombier
29*0b459c2cSDavid du Colombier	* inp.c (plan_a): Count the number of lines before allocating
30*0b459c2cSDavid du Colombier	pointer-to-line buffer; this reduces memory requirements
31*0b459c2cSDavid du Colombier	considerably (roughly by a factor of 5 on 32-bit hosts).
32*0b459c2cSDavid du Colombier	Decrease `size' only when read unexpectedly reports EOF.
33*0b459c2cSDavid du Colombier	(i_buffer): New var.
34*0b459c2cSDavid du Colombier	(too_many_lines): New fn.
35*0b459c2cSDavid du Colombier	(re_input): Free i_buffer if using plan A.
36*0b459c2cSDavid du Colombier	Free buffers unconditionally; they can't be zero.
37*0b459c2cSDavid du Colombier
38*0b459c2cSDavid du Colombier	* inp.c (plan_a, plan_b): Check for overflow of line counter.
39*0b459c2cSDavid du Colombier
40*0b459c2cSDavid du Colombier	* pch.c (malformed), util.h (memory_fatal, read_fatal, write_fatal):
41*0b459c2cSDavid du Colombier	Declare as noreturn.
42*0b459c2cSDavid du Colombier
43*0b459c2cSDavid du Colombier1997-07-10  Paul Eggert  <eggert@twinsun.com>
44*0b459c2cSDavid du Colombier
45*0b459c2cSDavid du Colombier	* configure.in (VERSION): Bump to 2.4.2.
46*0b459c2cSDavid du Colombier
47*0b459c2cSDavid du Colombier	* util.c (ok_to_reverse), NEWS: The default answer is now `n';
48*0b459c2cSDavid du Colombier	this is better for Emacs.
49*0b459c2cSDavid du Colombier
50*0b459c2cSDavid du Colombier	* Makefile.in (dist): Use cp -p, not ln;
51*0b459c2cSDavid du Colombier	some hosts do the wrong thing with ln if the source is a symbolic link.
52*0b459c2cSDavid du Colombier
53*0b459c2cSDavid du Colombier	* patch.man: Fix typo: -y -> -Y.
54*0b459c2cSDavid du Colombier
55*0b459c2cSDavid du Colombier1997-07-05  Paul Eggert  <eggert@twinsun.com>
56*0b459c2cSDavid du Colombier
57*0b459c2cSDavid du Colombier	* configure.in (VERSION): Bump to 2.4.1.
58*0b459c2cSDavid du Colombier
59*0b459c2cSDavid du Colombier	* patch.c: (main, get_some_switches), NEWS, patch.man:
60*0b459c2cSDavid du Colombier	Version control is now independent of whether backups are made.
61*0b459c2cSDavid du Colombier	* patch.c (option_help): Put version control options together.
62*0b459c2cSDavid du Colombier	(get_some_switches): With CVS 1.9 hack, treat -b foo like -b -z foo,
63*0b459c2cSDavid du Colombier	not just -z foo.  This change is needed due to recent change in -z.
64*0b459c2cSDavid du Colombier	* backupfile.c (find_backup_file_name):
65*0b459c2cSDavid du Colombier	backup_type == none causes undefined behavior;
66*0b459c2cSDavid du Colombier	this undoes the previous change to this file.
67*0b459c2cSDavid du Colombier
68*0b459c2cSDavid du Colombier	* patch.c (locate_hunk): Fix bug when locating context diff hunks
69*0b459c2cSDavid du Colombier 	near end of file with nonzero fuzz.
70*0b459c2cSDavid du Colombier
71*0b459c2cSDavid du Colombier	* util.c (move_file): Don't assume that ENOENT is reported when both
72*0b459c2cSDavid du Colombier	ENOENT and EXDEV apply; this isn't true with DJGPP, and
73*0b459c2cSDavid du Colombier	Posix doesn't require it.
74*0b459c2cSDavid du Colombier
75*0b459c2cSDavid du Colombier	* pch.c (there_is_another_patch):
76*0b459c2cSDavid du Colombier	Suggest -p when we can't intuit a file.
77*0b459c2cSDavid du Colombier
78*0b459c2cSDavid du Colombier1997-06-19  Paul Eggert  <eggert@twinsun.com>
79*0b459c2cSDavid du Colombier
80*0b459c2cSDavid du Colombier	* configure.in (VERSION): Version 2.4 released.
81*0b459c2cSDavid du Colombier	* NEWS: Patch is now verbose when patches do not match exactly.
82*0b459c2cSDavid du Colombier
83*0b459c2cSDavid du Colombier1997-06-17  Paul Eggert  <eggert@twinsun.com>
84*0b459c2cSDavid du Colombier
85*0b459c2cSDavid du Colombier	* pc/djgpp/configure.sed (config.h): Remove redundant $(srcdir).
86*0b459c2cSDavid du Colombier
87*0b459c2cSDavid du Colombier	* configure.in (VERSION): Bump to 2.3.9.
88*0b459c2cSDavid du Colombier	* patch.c (main): By default, warn about hunks that succeed
89*0b459c2cSDavid du Colombier	with nonzero offset.
90*0b459c2cSDavid du Colombier	* patch.man: Add LC_ALL=C advice for making patches.
91*0b459c2cSDavid du Colombier	* pc/djgpp/configure.sed (config.h): Fix paths to dependent files.
92*0b459c2cSDavid du Colombier
93*0b459c2cSDavid du Colombier1997-06-17  Paul Eggert  <eggert@twinsun.com>
94*0b459c2cSDavid du Colombier
95*0b459c2cSDavid du Colombier	* configure.in (VERSION): Bump to 2.3.8.
96*0b459c2cSDavid du Colombier
97*0b459c2cSDavid du Colombier	* pch.c (open_patch_file): Test stdin for fseekability.
98*0b459c2cSDavid du Colombier	(intuit_diff_type): Missing context diff headers are now warnings,
99*0b459c2cSDavid du Colombier	not errors; some people use patches with them (e.g. when retrying
100*0b459c2cSDavid du Colombier	rejects).
101*0b459c2cSDavid du Colombier
102*0b459c2cSDavid du Colombier	* patch.c (struct outstate):
103*0b459c2cSDavid du Colombier	New type, collecting together some output state vars.
104*0b459c2cSDavid du Colombier	(apply_hunk, copy_till, spew_output, init_output): Use it.
105*0b459c2cSDavid du Colombier	Keep track of whether some output has been generated.
106*0b459c2cSDavid du Colombier	(backup_if_mismatch): New var.
107*0b459c2cSDavid du Colombier	(ofp): Remove, in favor of local struct outstate vars.
108*0b459c2cSDavid du Colombier	(main): Use struct outstate.  Initialize backup_if_mismatch to
109*0b459c2cSDavid du Colombier	be the inverse of posixly_correct.  Keep track of whether mismatches
110*0b459c2cSDavid du Colombier	occur, and use this to implement backup_if_mismatch.
111*0b459c2cSDavid du Colombier	Report files that are not empty after patching, but should be.
112*0b459c2cSDavid du Colombier	(longopts, option_help, get_some_switches): New options
113*0b459c2cSDavid du Colombier	--backup-if-mismatch, --no-backup-if-mismatch.
114*0b459c2cSDavid du Colombier	(get_some_switches): -B, -Y, -z no longer set backup_type.
115*0b459c2cSDavid du Colombier	* backupfile.c (find_backup_file_name):
116*0b459c2cSDavid du Colombier	Treat backup_type == none like simple.
117*0b459c2cSDavid du Colombier
118*0b459c2cSDavid du Colombier	* Makefile.in (CONFIG_HDRS):
119*0b459c2cSDavid du Colombier	Remove var; no longer needed by djgpp port.
120*0b459c2cSDavid du Colombier	(DISTFILES_PC_DJGPP): Rename pc/djgpp/config.sed to
121*0b459c2cSDavid du Colombier	pc/djgpp/configure.sed; remove pc/djgpp/config.h in favor of
122*0b459c2cSDavid du Colombier	new file that edits it, called pc/djgpp/config.sed.
123*0b459c2cSDavid du Colombier	* pc/djgpp/configure.bat: Rename config.sed to configure.sed.
124*0b459c2cSDavid du Colombier	* pc/djgpp/configure.sed (CONFIG_HDRS): Remove.
125*0b459c2cSDavid du Colombier	(config.h): Add rule to build this from config.hin and
126*0b459c2cSDavid du Colombier	pc/djgpp/config.sed.
127*0b459c2cSDavid du Colombier	* pc/djgpp/config.sed:
128*0b459c2cSDavid du Colombier	Convert from .h file to .sed script that generates .h file.
129*0b459c2cSDavid du Colombier
130*0b459c2cSDavid du Colombier	* NEWS: Describe --backup-if-mismatch, --no-backup-if-mismatch.
131*0b459c2cSDavid du Colombier	* patch.man:
132*0b459c2cSDavid du Colombier	Describe new options --backup-if-mismatch, --no-backup-if-mismatch
133*0b459c2cSDavid du Colombier	and their ramifications.  Use unreadable backup to represent
134*0b459c2cSDavid du Colombier	nonexistent file.
135*0b459c2cSDavid du Colombier
136*0b459c2cSDavid du Colombier1997-06-12  Paul Eggert  <eggert@twinsun.com>
137*0b459c2cSDavid du Colombier
138*0b459c2cSDavid du Colombier	* configure.in (VERSION): Bump to 2.3.7.
139*0b459c2cSDavid du Colombier	(AC_CHECK_FUNCS): Add `raise'.
140*0b459c2cSDavid du Colombier
141*0b459c2cSDavid du Colombier	* Makefile.in (inp.o): No longer depends on quotearg.h.
142*0b459c2cSDavid du Colombier
143*0b459c2cSDavid du Colombier	* common.h (outfile): New decl (was private var named `output').
144*0b459c2cSDavid du Colombier	(invc): New decl.
145*0b459c2cSDavid du Colombier	(GENERIC_OBJECT): Renamed from VOID.
146*0b459c2cSDavid du Colombier	(NULL_DEVICE, TTY_DEVICE): New macros.
147*0b459c2cSDavid du Colombier
148*0b459c2cSDavid du Colombier	* patch.c (output): Remove; renamed to `outfile' and moved to common.h.
149*0b459c2cSDavid du Colombier	(main): `failed' is count, not boolean.
150*0b459c2cSDavid du Colombier	Say "Skipping patch." when deciding to skip patch.
151*0b459c2cSDavid du Colombier	(get_some_switches): Set invc when setting inname.
152*0b459c2cSDavid du Colombier
153*0b459c2cSDavid du Colombier	* inp.c: Do not include <quotearg.h>.
154*0b459c2cSDavid du Colombier	(SCCSPREFIX, GET, GET_LOCKED, SCCSDIFF1, SCCSDIFF2, SCCSDIFF3,
155*0b459c2cSDavid du Colombier	RCSSUFFIX, CHECKOUT, CHECKOUT_LOCKED, RCSDIFF1, RCSDIFF2):
156*0b459c2cSDavid du Colombier	Move to util.c.
157*0b459c2cSDavid du Colombier	(get_input_file): Invoke new functions version_controller and
158*0b459c2cSDavid du Colombier	version_get to simplify this code.
159*0b459c2cSDavid du Colombier	(plan_b): "/dev/tty" -> NULL_DEVICE
160*0b459c2cSDavid du Colombier
161*0b459c2cSDavid du Colombier	* pch.h (pch_timestamp): New decl.
162*0b459c2cSDavid du Colombier	* pch.c (p_timestamp): New var; takes over from global timestamp array.
163*0b459c2cSDavid du Colombier	(pch_timestamp): New function to export p_timestamp.
164*0b459c2cSDavid du Colombier	(there_is_another_patch): Use blander wording when you can't intuit
165*0b459c2cSDavid du Colombier	the file name.
166*0b459c2cSDavid du Colombier	Say "Skipping patch." when deciding to skip patch.
167*0b459c2cSDavid du Colombier	(intuit_diff_type): Look for version-controlled but nonexistent files
168*0b459c2cSDavid du Colombier	when intuiting file names; set invc accordingly.
169*0b459c2cSDavid du Colombier	Ignore Index: line if either old or new line is present, and if
170*0b459c2cSDavid du Colombier	POSIXLY_CORRECT is not set.
171*0b459c2cSDavid du Colombier	(do_ed_script): Flush stdout before invoking popen, since it may
172*0b459c2cSDavid du Colombier	send output to stdout.
173*0b459c2cSDavid du Colombier
174*0b459c2cSDavid du Colombier	* util.h (version_controller, version_get): New decls.
175*0b459c2cSDavid du Colombier	* util.c: Include <quotearg.h> earlier.
176*0b459c2cSDavid du Colombier	(raise): New macro, if ! HAVE_RAISE.
177*0b459c2cSDavid du Colombier	(move_file): Create empty unreadable file when backing up a nonexistent
178*0b459c2cSDavid du Colombier	file.
179*0b459c2cSDavid du Colombier	(DEV_NULL): New constant.
180*0b459c2cSDavid du Colombier	(SCCSPREFIX, GET. GET_LOCKED, SCCSDIFF1, SCCSDIFF2,
181*0b459c2cSDavid du Colombier 	RCSSUFFIX, CHECKOUT, CHECKOUT_LOCKED, RCSDIFF1): Moved here from inp.c.
182*0b459c2cSDavid du Colombier	(version_controller, version_get): New functions.
183*0b459c2cSDavid du Colombier	(ask): Look only at /dev/tty for answers; and when standard output is
184*0b459c2cSDavid du Colombier	not a terminal and ! posixly_correct, don't even look there.
185*0b459c2cSDavid du Colombier	Remove unnecessary fflushes of stdout.
186*0b459c2cSDavid du Colombier	(ok_to_reverse): Say "Skipping patch." when deciding to skip patch..
187*0b459c2cSDavid du Colombier	(sigs): SIGPIPE might not be defined.
188*0b459c2cSDavid du Colombier	(exit_with_signal): Use `raise' instead of `kill'.
189*0b459c2cSDavid du Colombier	(systemic): fflush stdout before invoking subsidiary command.
190*0b459c2cSDavid du Colombier
191*0b459c2cSDavid du Colombier	* patch.man: Document recent changes.
192*0b459c2cSDavid du Colombier	Add "COMPATIBILITY ISSUES" section.
193*0b459c2cSDavid du Colombier
194*0b459c2cSDavid du Colombier	* NEWS: New COMPATIBILITY ISSUES for man page.
195*0b459c2cSDavid du Colombier	Changed verbosity when fuzz is found.
196*0b459c2cSDavid du Colombier	File name intuition is changed, again.
197*0b459c2cSDavid du Colombier	Backups are made unreadable when the file did not exist.
198*0b459c2cSDavid du Colombier
199*0b459c2cSDavid du Colombier	* pc/djgpp/config.h (HAVE_STRUCT_UTIMBUF): Define.
200*0b459c2cSDavid du Colombier	(HAVE_RAISE): New macro.
201*0b459c2cSDavid du Colombier	(HAVE_UTIME_H): Define.
202*0b459c2cSDavid du Colombier	(TZ_is_unset): Do not define; it's not a serious problem with `patch'
203*0b459c2cSDavid du Colombier	to have TZ be unset in DOS.
204*0b459c2cSDavid du Colombier
205*0b459c2cSDavid du Colombier1997-06-08  Paul Eggert  <eggert@twinsun.com>
206*0b459c2cSDavid du Colombier
207*0b459c2cSDavid du Colombier	* configure.in (VERSION): Bump to 2.3.6.
208*0b459c2cSDavid du Colombier	(AC_CHECK_HEADERS): Add utime.h.
209*0b459c2cSDavid du Colombier	* acconfig.h, configure.in, pc/djgpp/config.h (HAVE_STRUCT_UTIMBUF):
210*0b459c2cSDavid du Colombier 	New macro.
211*0b459c2cSDavid du Colombier	* pc/djgpp/config.h (HAVE_UTIME_H, TZ_is_unset): New macros.
212*0b459c2cSDavid du Colombier
213*0b459c2cSDavid du Colombier	* NEWS, patch.man: Describe new -Z, -T options, new numeric
214*0b459c2cSDavid du Colombier 	option for -G, retired -G, and more verbose default behavior
215*0b459c2cSDavid du Colombier 	with fuzz.
216*0b459c2cSDavid du Colombier
217*0b459c2cSDavid du Colombier	* pch.c (intuit_diff_type): Record times reported for files in headers.
218*0b459c2cSDavid du Colombier	Remove head_says_nonexistent[x], since it's now equivalent to
219*0b459c2cSDavid du Colombier	!timestamp[x].
220*0b459c2cSDavid du Colombier	* util.h (fetchname): Change argument head_says_nonexistent to
221*0b459c2cSDavid du Colombier 	timestamp.
222*0b459c2cSDavid du Colombier	* util.c: #include <partime.h> for TM_LOCAL_ZONE.
223*0b459c2cSDavid du Colombier	Don't include <time.h> since common.h now includes it.
224*0b459c2cSDavid du Colombier	(ok_to_reverse): noreverse and batch cases now output regardless of
225*0b459c2cSDavid du Colombier	verbosity.
226*0b459c2cSDavid du Colombier	(fetchname): Change argument head_says_nonexistent to pstamp, and
227*0b459c2cSDavid du Colombier	store header timestamp into *pstamp.
228*0b459c2cSDavid du Colombier	If -T or -Z option is given, match time stamps more precisely.
229*0b459c2cSDavid du Colombier	(ask): Remove unnecessary close of ttyfd.
230*0b459c2cSDavid du Colombier	When there is no terminal at all, output a newline to make the
231*0b459c2cSDavid du Colombier	output look nicer.  After reporting EOF, flush stdout;
232*0b459c2cSDavid du Colombier	when an input error, report the error type.
233*0b459c2cSDavid du Colombier
234*0b459c2cSDavid du Colombier	* inp.c (get_input_file):
235*0b459c2cSDavid du Colombier	Ask user whether to get file if patch_get is negative.
236*0b459c2cSDavid du Colombier
237*0b459c2cSDavid du Colombier	* Makefile.in (clean): Don't clean */*.o; clean core* and *core.
238*0b459c2cSDavid du Colombier
239*0b459c2cSDavid du Colombier1997-06-04  Paul Eggert  <eggert@twinsun.com>
240*0b459c2cSDavid du Colombier
241*0b459c2cSDavid du Colombier	* configure.in (VERSION): Bump to 2.3.5.
242*0b459c2cSDavid du Colombier
243*0b459c2cSDavid du Colombier	* util.c (ok_to_reverse):
244*0b459c2cSDavid du Colombier	Be less chatty if verbosity is SILENT and we don't
245*0b459c2cSDavid du Colombier	have to ask the user.  If force is nonzero, apply the patch anyway.
246*0b459c2cSDavid du Colombier
247*0b459c2cSDavid du Colombier	* pch.c (there_is_another_patch):
248*0b459c2cSDavid du Colombier	Before skipping rest of patch, skip to
249*0b459c2cSDavid du Colombier	the patch start, so that another_hunk can skip it properly.
250*0b459c2cSDavid du Colombier	(intuit_diff_type): Slight wording change for missing headers, to
251*0b459c2cSDavid du Colombier	regularize with other diagnostics.  Fix off-by-one error when setting
252*0b459c2cSDavid du Colombier	p_input_line when scanning the first hunk to check for deleted files.
253*0b459c2cSDavid du Colombier
254*0b459c2cSDavid du Colombier1997-06-03  Paul Eggert  <eggert@twinsun.com>
255*0b459c2cSDavid du Colombier
256*0b459c2cSDavid du Colombier	* configure.in (VERSION): Bump to 2.3.4.
257*0b459c2cSDavid du Colombier
258*0b459c2cSDavid du Colombier	* NEWS: Now matches more generously against nonexistent or empty files.
259*0b459c2cSDavid du Colombier
260*0b459c2cSDavid du Colombier	* pch.c (there_is_another_patch): Move warning about not being
261*0b459c2cSDavid du Colombier	able to intuit file names here from skip_to.
262*0b459c2cSDavid du Colombier	(intuit_diff_type): Fatal error if we find a headless unified
263*0b459c2cSDavid du Colombier	or context diff.
264*0b459c2cSDavid du Colombier
265*0b459c2cSDavid du Colombier	* util.c (ask): Null-terminate buffer properly even if it grew.
266*0b459c2cSDavid du Colombier	(fetchname): No need to test for null first argument.
267*0b459c2cSDavid du Colombier
268*0b459c2cSDavid du Colombier1997-06-02  Paul Eggert  <eggert@twinsun.com>
269*0b459c2cSDavid du Colombier
270*0b459c2cSDavid du Colombier	* configure.in (VERSION): Bump to 2.3.3.
271*0b459c2cSDavid du Colombier	* pch.c (p_says_nonexistent, pch_says_nonexistent): Is now 1 for empty,
272*0b459c2cSDavid du Colombier	2 for nonexistent.
273*0b459c2cSDavid du Colombier	(intuit_diff_type): Set p_says_nonexistent according to new meaning.
274*0b459c2cSDavid du Colombier	Treat empty files like nonexistent files when reversing.
275*0b459c2cSDavid du Colombier	(skip_to): Output better diagnostic when we can't intuit a file name.
276*0b459c2cSDavid du Colombier	* patch.c (main):
277*0b459c2cSDavid du Colombier	Count bytes, not lines, when testing whether a file is empty,
278*0b459c2cSDavid du Colombier	since it may contain only non-newline chars.
279*0b459c2cSDavid du Colombier	pch_says_nonexistent now returns 2 for nonexistent files.
280*0b459c2cSDavid du Colombier
281*0b459c2cSDavid du Colombier1997-06-01  Paul Eggert  <eggert@twinsun.com>
282*0b459c2cSDavid du Colombier
283*0b459c2cSDavid du Colombier	* configure.in (VERSION): Bump to 2.3.2.
284*0b459c2cSDavid du Colombier	* pch.c (open_patch_file):
285*0b459c2cSDavid du Colombier	Fix bug when computing size of patch read from a pipe.
286*0b459c2cSDavid du Colombier
287*0b459c2cSDavid du Colombier1997-05-30  Paul Eggert  <eggert@twinsun.com>
288*0b459c2cSDavid du Colombier
289*0b459c2cSDavid du Colombier	* configure.in (VERSION): Bump to 2.3.1.
290*0b459c2cSDavid du Colombier
291*0b459c2cSDavid du Colombier	* Makefile.in (transform, patch_name): New vars,
292*0b459c2cSDavid du Colombier	for proper implementation of AC_ARG_PROGRAM.
293*0b459c2cSDavid du Colombier	(install, uninstall): Use them.
294*0b459c2cSDavid du Colombier	(install-strip): New rule.
295*0b459c2cSDavid du Colombier	* pc/djgpp/config.sed (program_transform_name): Set to empty.
296*0b459c2cSDavid du Colombier
297*0b459c2cSDavid du Colombier1997-05-30  Paul Eggert  <eggert@twinsun.com>
298*0b459c2cSDavid du Colombier
299*0b459c2cSDavid du Colombier	* configure.in (VERSION), NEWS: Version 2.3 released.
300*0b459c2cSDavid du Colombier	* patch.man: Fix two font typos.
301*0b459c2cSDavid du Colombier	* util.c (doprogram): Fix misspelled decl.
302*0b459c2cSDavid du Colombier
303*0b459c2cSDavid du Colombier1997-05-26  Paul Eggert  <eggert@twinsun.com>
304*0b459c2cSDavid du Colombier
305*0b459c2cSDavid du Colombier	* configure.in (VERSION): Bump to 2.2.93.
306*0b459c2cSDavid du Colombier
307*0b459c2cSDavid du Colombier	* pch.c (open_patch_file):
308*0b459c2cSDavid du Colombier	Fatal error if binary_transput and stdin is a tty.
309*0b459c2cSDavid du Colombier
310*0b459c2cSDavid du Colombier	* pc/djgpp/config.sed (chdirsaf.c):
311*0b459c2cSDavid du Colombier	Use sed instead of cp, since cp might not be installed.
312*0b459c2cSDavid du Colombier	* pc/djgpp/configure.bat:
313*0b459c2cSDavid du Colombier	Prepend %srcdir% to pathname of config.sed, for crosscompiles.
314*0b459c2cSDavid du Colombier
315*0b459c2cSDavid du Colombier1997-05-25  Paul Eggert  <eggert@twinsun.com>
316*0b459c2cSDavid du Colombier
317*0b459c2cSDavid du Colombier	* configure.in (VERSION): Bump to 2.2.92.
318*0b459c2cSDavid du Colombier	(D_INO_IN_DIRENT): New macro.
319*0b459c2cSDavid du Colombier	* pc/djgpp/config.h, acconfig.h (D_INO_IN_DIRENT): New macro.
320*0b459c2cSDavid du Colombier	* backupfile.c (REAL_DIR_ENTRY):
321*0b459c2cSDavid du Colombier	Depend on D_INO_IN_DIRENT, not _POSIX_VERSION.
322*0b459c2cSDavid du Colombier
323*0b459c2cSDavid du Colombier	* addext.c (addext): Adjust slen when adjusting s for DOS 8.3 limit.
324*0b459c2cSDavid du Colombier	Do not use xxx.h -> xxxh~ hack.
325*0b459c2cSDavid du Colombier
326*0b459c2cSDavid du Colombier	* util.c: (move_file): Avoid makedirs test when possible even
327*0b459c2cSDavid du Colombier 	if FILESYSTEM_PREFIX_LEN (p) is nonzero.  Don't play
328*0b459c2cSDavid du Colombier 	case-changing tricks to come up with backup file name; it's
329*0b459c2cSDavid du Colombier 	not portable to case-insensitive file systems.
330*0b459c2cSDavid du Colombier	* common.h (ISLOWER): Remove.
331*0b459c2cSDavid du Colombier
332*0b459c2cSDavid du Colombier	* inp.c (scan_input): Don't use Plan A if (debug & 16).
333*0b459c2cSDavid du Colombier
334*0b459c2cSDavid du Colombier	* patch.c (shortopts): Add -g, -G.
335*0b459c2cSDavid du Colombier	(longopts): --help now maps to 132, not 'h', to avoid confusion.
336*0b459c2cSDavid du Colombier	(get_some_switches): Likewise.
337*0b459c2cSDavid du Colombier	Don't invoke setmode on input if --binary; wait until needed.
338*0b459c2cSDavid du Colombier	Don't ever invoke setmode on stdout.
339*0b459c2cSDavid du Colombier	* pch.c (open_patch_file): Setmode stdin to binary if binary_transput.
340*0b459c2cSDavid du Colombier
341*0b459c2cSDavid du Colombier	* patch.man: Fix documentation of backup file name to match behavior.
342*0b459c2cSDavid du Colombier	Add advice for ordering of patches of derived files.
343*0b459c2cSDavid du Colombier	Add /dev/tty to list of files used.
344*0b459c2cSDavid du Colombier	* README: Adjust instructions for building on DOS.
345*0b459c2cSDavid du Colombier	* pc/djgpp/README: Remove tentative wording.
346*0b459c2cSDavid du Colombier	* NEWS: The DOS port is now tested.
347*0b459c2cSDavid du Colombier	Backup file names are no longer computed by switching case.
348*0b459c2cSDavid du Colombier
349*0b459c2cSDavid du Colombier	* pc/chdirsaf.c (ERANGE): Include <errno.h> to define it.
350*0b459c2cSDavid du Colombier	(restore_wd): chdir unconditionally.
351*0b459c2cSDavid du Colombier	(chdir_safer): Invoke atexit successfully at most once.
352*0b459c2cSDavid du Colombier	* pc/djgpp/config.sed: Use chdirsaf.o, not pc/chdirsaf.o.
353*0b459c2cSDavid du Colombier	Replace CONFIG_HDRS, don't append.
354*0b459c2cSDavid du Colombier	Use $(srcdir) in CONFIG_STATUS.
355*0b459c2cSDavid du Colombier	Don't apply $(SHELL) to $(CONFIG_STATUS).
356*0b459c2cSDavid du Colombier	Append rules for chdirsaf.o, chdirsaf.c; clean chdirsaf.c at the end.
357*0b459c2cSDavid du Colombier	* pc/djgpp/configure.bat: Append CR to each line; DOS needs this.
358*0b459c2cSDavid du Colombier	Don't use | as sed s delimiter; DOS can't handle it.
359*0b459c2cSDavid du Colombier
360*0b459c2cSDavid du Colombier1997-05-21  Paul Eggert  <eggert@twinsun.com>
361*0b459c2cSDavid du Colombier
362*0b459c2cSDavid du Colombier	* configure.in (VERSION): Bump to 2.2.91.
363*0b459c2cSDavid du Colombier
364*0b459c2cSDavid du Colombier	* pch.c (another_hunk):
365*0b459c2cSDavid du Colombier	Fix bug with computing size of prefix and suffix context
366*0b459c2cSDavid du Colombier	with ordinary context diffs.  Report malformed patch if a unified diff
367*0b459c2cSDavid du Colombier	has nothing but context.
368*0b459c2cSDavid du Colombier
369*0b459c2cSDavid du Colombier	* inp.c (get_input_file):
370*0b459c2cSDavid du Colombier	Use patch_get, not backup_type, to decide whether to
371*0b459c2cSDavid du Colombier	get from RCS or SCCS.  Use the word `get' in diagnostics.
372*0b459c2cSDavid du Colombier	* patch.c (main): Initialize patch_get from PATCH_GET.
373*0b459c2cSDavid du Colombier	Omit DEFAULT_VERSION_CONTROL hook; it just leads to nonstandarization.
374*0b459c2cSDavid du Colombier	(longopts, option_help, get_some_switches): Add support for -g, -G.
375*0b459c2cSDavid du Colombier	(option_help): Add bug report address.
376*0b459c2cSDavid du Colombier	* common.h (patch_get): New decl.
377*0b459c2cSDavid du Colombier	* patch.man: Add -g and -G options; use `get' instead of `check out'.
378*0b459c2cSDavid du Colombier	Add PATCH_GET.  Recommend -Naur instead of -raNU2 for diff.
379*0b459c2cSDavid du Colombier	* NEWS: Describe -g, -G, PATCH_GET.
380*0b459c2cSDavid du Colombier
381*0b459c2cSDavid du Colombier	* version.c (copyright_string): Use only most recent copyright year,
382*0b459c2cSDavid du Colombier	as per GNU standards.
383*0b459c2cSDavid du Colombier
384*0b459c2cSDavid du Colombier	* Makefile.in (DISTFILES_PC): Remove pc/quotearg.c.
385*0b459c2cSDavid du Colombier	* pc/djgpp/config.sed: Remove unnecessary hooks for quotearg and SHELL.
386*0b459c2cSDavid du Colombier
387*0b459c2cSDavid du Colombier1997-05-18  Paul Eggert  <eggert@twinsun.com>
388*0b459c2cSDavid du Colombier
389*0b459c2cSDavid du Colombier	* configure.in (VERSION): Increase to 2.2.9.
390*0b459c2cSDavid du Colombier	(AC_TYPE_MODE_T): Add.
391*0b459c2cSDavid du Colombier
392*0b459c2cSDavid du Colombier	* pch.h (another_hunk): New parameter REV.
393*0b459c2cSDavid du Colombier	* pch.c (hunkmax): Now of type LINENUM.
394*0b459c2cSDavid du Colombier	(malformed): Add decl.
395*0b459c2cSDavid du Colombier	(there_is_another_patch): Skip inname-detection if skip_rest_of_patch.
396*0b459c2cSDavid du Colombier	(intuit_diff_type): To determine whether file appears to have been
397*0b459c2cSDavid du Colombier	deleted, look at replacement, not pattern.
398*0b459c2cSDavid du Colombier	If there is a mismatch between existence of file and whether the
399*0b459c2cSDavid du Colombier	patch claims to change whether the file exists, ask whether to
400*0b459c2cSDavid du Colombier	reverse the patch.
401*0b459c2cSDavid du Colombier	(another_hunk): New parameter REV specifying whether to reverse the
402*0b459c2cSDavid du Colombier	hunk.  All callers changed.
403*0b459c2cSDavid du Colombier	(do_ed_script): Add assertion to ensure input file exists.
404*0b459c2cSDavid du Colombier
405*0b459c2cSDavid du Colombier	* util.h (create_file): New function.
406*0b459c2cSDavid du Colombier	(copy_file): Now takes mode, not struct stat.
407*0b459c2cSDavid du Colombier	(makedirs): No longer exported.
408*0b459c2cSDavid du Colombier	(move_file): Now takes mode, not struct stat.
409*0b459c2cSDavid du Colombier	* util.c (makedirs): No longer exported.
410*0b459c2cSDavid du Colombier	(move_file): Accept mode of destination, not struct stat.
411*0b459c2cSDavid du Colombier	All callers changed.
412*0b459c2cSDavid du Colombier	Quote file names in diagnostics.
413*0b459c2cSDavid du Colombier	Create parent dir of destination if necessary.
414*0b459c2cSDavid du Colombier	Don't use ENOTDIR.
415*0b459c2cSDavid du Colombier	Don't unlink source; it will be unlinked later.
416*0b459c2cSDavid du Colombier	Unlink destination if FROM is zero.
417*0b459c2cSDavid du Colombier	(create_file): New function.
418*0b459c2cSDavid du Colombier	(copy_file): Accept mode of destination, not struct stat.
419*0b459c2cSDavid du Colombier	All callers changed.
420*0b459c2cSDavid du Colombier	Use create_file to create file.
421*0b459c2cSDavid du Colombier	(ok_to_reverse): Moved here from patch.c.  Now accepts format and args;
422*0b459c2cSDavid du Colombier	all callers changed.
423*0b459c2cSDavid du Colombier	(mkdir): 2nd arg is now mode_t, for better compatibility.
424*0b459c2cSDavid du Colombier	(replace_slashes): Ignore slashes at the end of the filename.
425*0b459c2cSDavid du Colombier
426*0b459c2cSDavid du Colombier	* common.h (noreverse): New decl.
427*0b459c2cSDavid du Colombier	(ok_to_reverse): Remove decl.
428*0b459c2cSDavid du Colombier
429*0b459c2cSDavid du Colombier	* patch.c (noreverse): Now extern.
430*0b459c2cSDavid du Colombier	(main): New environment var PATCH_VERSION_CONTROL overrides VERSION_CONTROL.
431*0b459c2cSDavid du Colombier	Don't assert(hunk) if we're skipping the patch; we may not have any hunks.
432*0b459c2cSDavid du Colombier	When removing a file, back it up if backups are desired.
433*0b459c2cSDavid du Colombier	Don't chmod output file if input file did not exist.
434*0b459c2cSDavid du Colombier	chmod rej file to input file's mode minus executable bits.
435*0b459c2cSDavid du Colombier	(locate_hunk): Go back to old way of a single fuzz parameter, but
436*0b459c2cSDavid du Colombier	handle it more precisely: context diffs with partial contexts
437*0b459c2cSDavid du Colombier	can only match file ends, since the partial context can occur
438*0b459c2cSDavid du Colombier	only at the start or end of file.
439*0b459c2cSDavid du Colombier	All callers changed.
440*0b459c2cSDavid du Colombier	(create_output_file): Use create_file to create files.
441*0b459c2cSDavid du Colombier	(ok_to_reverse): Move to util.c.
442*0b459c2cSDavid du Colombier
443*0b459c2cSDavid du Colombier	* inp.c (scan_input, get_input_file): Quote file names in diagnostics.
444*0b459c2cSDavid du Colombier	(get_input_file): Set inerrno if it's not already set.
445*0b459c2cSDavid du Colombier	Don't create file; it's now the caller's responsibility.
446*0b459c2cSDavid du Colombier	(plan_b): Use /dev/null if input size is zero, since it might not exist.
447*0b459c2cSDavid du Colombier	Use create_file to create temporary file.
448*0b459c2cSDavid du Colombier
449*0b459c2cSDavid du Colombier	* NEWS: Add PATCH_VERSION_CONTROL; DOS port is untested.
450*0b459c2cSDavid du Colombier
451*0b459c2cSDavid du Colombier	* pc/djgpp/config.h: Add comment for mode_t.
452*0b459c2cSDavid du Colombier
453*0b459c2cSDavid du Colombier	* pc/djgpp/README: Note that it's not tested.
454*0b459c2cSDavid du Colombier
455*0b459c2cSDavid du Colombier	* patch.man: PATCH_VERSION_CONTROL overrides VERSION_CONTROL.
456*0b459c2cSDavid du Colombier
457*0b459c2cSDavid du Colombier1997-05-15  Paul Eggert  <eggert@twinsun.com>
458*0b459c2cSDavid du Colombier
459*0b459c2cSDavid du Colombier	* configure.in: Add AC_PREREQ(2.12).
460*0b459c2cSDavid du Colombier	(VERSION): Bump to 2.2.8.
461*0b459c2cSDavid du Colombier	(ed_PROGRAM): Rename from ED_PROGRAM.
462*0b459c2cSDavid du Colombier
463*0b459c2cSDavid du Colombier	* pch.c (prefix_components): Support DOS file names better.
464*0b459c2cSDavid du Colombier	Fix typo that caused fn to almost always yield 0.
465*0b459c2cSDavid du Colombier
466*0b459c2cSDavid du Colombier	* util.c (<time.h>, <maketime.h>): Include.
467*0b459c2cSDavid du Colombier	(move_file, copy_file): Add support for DOS filenames.
468*0b459c2cSDavid du Colombier	Preserve mode of input files when creating temp files.
469*0b459c2cSDavid du Colombier	Add binary file support.
470*0b459c2cSDavid du Colombier	(doprogram, rmdir): New functions.
471*0b459c2cSDavid du Colombier	(mkdir): Use doprogram.
472*0b459c2cSDavid du Colombier	(replace_slashes): Add support for DOS filenames.
473*0b459c2cSDavid du Colombier	(removedirs): New function.
474*0b459c2cSDavid du Colombier	(init_time)): New function.
475*0b459c2cSDavid du Colombier	(initial_time): New var.
476*0b459c2cSDavid du Colombier	(fetchname): Add support for deleted files, DOS filenames.
477*0b459c2cSDavid du Colombier
478*0b459c2cSDavid du Colombier	* basename.c (FILESYSTEM_PREFIX_LEN, ISSLASH):
479*0b459c2cSDavid du Colombier	New macros, for DOS port.
480*0b459c2cSDavid du Colombier	(base_name): Use them.
481*0b459c2cSDavid du Colombier
482*0b459c2cSDavid du Colombier	* addext.c (HAVE_DOS_FILE_NAMES): New macro.
483*0b459c2cSDavid du Colombier	<limits.h>: Include if HAVE_LIMITS_H.
484*0b459c2cSDavid du Colombier	(addext): Handle hosts with DOS file name limits.
485*0b459c2cSDavid du Colombier
486*0b459c2cSDavid du Colombier	* common.h (LONG_MIN): New macro.
487*0b459c2cSDavid du Colombier	(FILESYSTEM_PREFIX_LEN, ISSLASH): New macros, for DOS port.
488*0b459c2cSDavid du Colombier	(ok_to_create_file): Remove.
489*0b459c2cSDavid du Colombier	(reverse): Now int.
490*0b459c2cSDavid du Colombier	(ok_to_reverse): New function decl.
491*0b459c2cSDavid du Colombier	(O_WRONLY, _O_BINARY, O_BINARY, O_CREAT, O_TRUNC): New macros.
492*0b459c2cSDavid du Colombier	(binary_transput): New var decl.
493*0b459c2cSDavid du Colombier
494*0b459c2cSDavid du Colombier	* Makefile.in (ed_PROGRAM): Renamed from ED_PROGRAM.
495*0b459c2cSDavid du Colombier	(CONFIG_HDRS, CONFIG_STATUS): New vars.
496*0b459c2cSDavid du Colombier	(SRCS): Add maketime.c, partime.c.
497*0b459c2cSDavid du Colombier	(OBJS): Likewise.
498*0b459c2cSDavid du Colombier	(HDRS): Add maketime.h, partime.h.
499*0b459c2cSDavid du Colombier	(DISTFILES_PC, DISTFILES_PC_DJGPP): New vars.
500*0b459c2cSDavid du Colombier	(Makefile, config.status): Use CONFIG_STATUS, not config.status.
501*0b459c2cSDavid du Colombier	(clean): Remove */*.o.
502*0b459c2cSDavid du Colombier	(dist): Add pc and pc/djgpp subdirectories.
503*0b459c2cSDavid du Colombier	($(OBJS)): Depend on $(CONFIG_HDRS) instead of config.h.
504*0b459c2cSDavid du Colombier	(maketime.o, partime.o): New rules.
505*0b459c2cSDavid du Colombier	(util.o): Depend on maketime.h.
506*0b459c2cSDavid du Colombier
507*0b459c2cSDavid du Colombier	* patch.c (main):
508*0b459c2cSDavid du Colombier	Call init_time.  Add DEFAULT_VERSION_CONTROL hook for people who
509*0b459c2cSDavid du Colombier	prefer the old ways.  Build temp file names before we might invoke cleanup.
510*0b459c2cSDavid du Colombier	Add support for deleted files and clean up the patch-swapping code a bit.
511*0b459c2cSDavid du Colombier	Delete empty ancestors of deleted files.
512*0b459c2cSDavid du Colombier	When creating temporaries, use file modes of original files.
513*0b459c2cSDavid du Colombier	(longopts, get_some_switches): New option --binary.
514*0b459c2cSDavid du Colombier	(get_some_switches): Report non-errno errors with `fatal', not `pfatal'.
515*0b459c2cSDavid du Colombier	(create_output_file): New function, which preserves modes of original files
516*0b459c2cSDavid du Colombier	and supports binary transput.
517*0b459c2cSDavid du Colombier	(init_output, init_reject): Use it.
518*0b459c2cSDavid du Colombier	(ok_to_reverse): New function.
519*0b459c2cSDavid du Colombier	(TMPDIR): New macro.
520*0b459c2cSDavid du Colombier	(make_temp): Use $TMPDIR, $TMP, $TEMP, or TMPDIR, whichever comes first.
521*0b459c2cSDavid du Colombier
522*0b459c2cSDavid du Colombier	* pch.c (p_says_nonexistent): New var.
523*0b459c2cSDavid du Colombier	(open_patch_file): Add binary transput support.
524*0b459c2cSDavid du Colombier	Apply stat to file names retrieved from user.
525*0b459c2cSDavid du Colombier	Reject them if they don't exist.
526*0b459c2cSDavid du Colombier	(intuit_diff_type): Add support for deleting files.
527*0b459c2cSDavid du Colombier	Don't treat trivial directories any differently.
528*0b459c2cSDavid du Colombier	Avoid stating the same file twice in common case of context diffs.
529*0b459c2cSDavid du Colombier	(prefix_components): Don't treat trivial directories any differently.
530*0b459c2cSDavid du Colombier	Add support for DOS filenames.
531*0b459c2cSDavid du Colombier	(pch_says_nonexistent): New function.
532*0b459c2cSDavid du Colombier	(do_ed_script): Preserve mode of input files when creating temp files.
533*0b459c2cSDavid du Colombier	Add support for binary transput.
534*0b459c2cSDavid du Colombier
535*0b459c2cSDavid du Colombier	* pch.h (pch_says_nonexistent): New decl.
536*0b459c2cSDavid du Colombier
537*0b459c2cSDavid du Colombier	* util.h (replace_slashes): No longer exported.
538*0b459c2cSDavid du Colombier	(fetchname): Add support for deleted files.
539*0b459c2cSDavid du Colombier	(copy_file, move_file): Add support for preserving file modes.
540*0b459c2cSDavid du Colombier	(init_time, removedirs): New functions.
541*0b459c2cSDavid du Colombier
542*0b459c2cSDavid du Colombier	* argmatch.c: Converge with fileutils.
543*0b459c2cSDavid du Colombier
544*0b459c2cSDavid du Colombier	* backupfile.c: Converge with fileutils.
545*0b459c2cSDavid du Colombier	(find_backup_file_name): Treat .~N~ suffix just like any other suffix
546*0b459c2cSDavid du Colombier	when handling file names that are too long.
547*0b459c2cSDavid du Colombier
548*0b459c2cSDavid du Colombier	* inp.c:
549*0b459c2cSDavid du Colombier	In messages, put quotes around file names and spaces around "--".
550*0b459c2cSDavid du Colombier	(get_input_file): Allow files to be deleted.  Do the expense of
551*0b459c2cSDavid du Colombier	makedirs only if we can't create the file.
552*0b459c2cSDavid du Colombier	(plan_a, plan_b): Add support for binary transput.
553*0b459c2cSDavid du Colombier
554*0b459c2cSDavid du Colombier	* pc/chdirsaf.c, pc/djgpp/README, pc/djgpp/config.h, pc/djgpp/config.sed, pc/djgpp/configure.bat, pc/quotearg.c:
555*0b459c2cSDavid du Colombier	New file.
556*0b459c2cSDavid du Colombier
557*0b459c2cSDavid du Colombier	* NEWS:
558*0b459c2cSDavid du Colombier	New methods for removing files; adjust file name intuition again.
559*0b459c2cSDavid du Colombier	Add description of MS-DOS and MS-Windows ports.
560*0b459c2cSDavid du Colombier
561*0b459c2cSDavid du Colombier	* patch.man:
562*0b459c2cSDavid du Colombier	Simplify file name intuition slightly (no distinction for trivial dirs).
563*0b459c2cSDavid du Colombier	Add --binary.  Describe how files and directories are deleted.
564*0b459c2cSDavid du Colombier	Suggest diff -a.  Include caveats about what context diffs cannot represent.
565*0b459c2cSDavid du Colombier
566*0b459c2cSDavid du Colombier1997-05-06  Paul Eggert  <eggert@twinsun.com>
567*0b459c2cSDavid du Colombier
568*0b459c2cSDavid du Colombier	* configure.in (VERSION): Now 2.2.7.
569*0b459c2cSDavid du Colombier	(CPPFLAGS, LDFLAGS, LIBS): If the user has not set any of these vars,
570*0b459c2cSDavid du Colombier	prefer support for large files if available.
571*0b459c2cSDavid du Colombier
572*0b459c2cSDavid du Colombier	* common.h (_LARGEFILE_SOURCE): Define.
573*0b459c2cSDavid du Colombier	(file_offset): New typedef.
574*0b459c2cSDavid du Colombier	(file_seek, file_tell): New macros.
575*0b459c2cSDavid du Colombier
576*0b459c2cSDavid du Colombier	* patch.c (main):
577*0b459c2cSDavid du Colombier	Remove empty files by default unless POSIXLY_CORRECT is set.
578*0b459c2cSDavid du Colombier
579*0b459c2cSDavid du Colombier	* util.c, util.h (Fseek):
580*0b459c2cSDavid du Colombier	Use file_offset instead of long, for portability to large-file hosts.
581*0b459c2cSDavid du Colombier
582*0b459c2cSDavid du Colombier	* pch.c: (p_base, p_start, next_intuit_at, skip_to, open_patch_file,
583*0b459c2cSDavid du Colombier	intuit_diff_type, another_hunk, incomplete_line, do_ed_script):
584*0b459c2cSDavid du Colombier	Use file_offset instead of long, for portability to large-file hosts.
585*0b459c2cSDavid du Colombier	(prefix_components): Renamed from path_name_components; count only
586*0b459c2cSDavid du Colombier	nontrivial prefix components, and take a 2nd EXISTING arg.
587*0b459c2cSDavid du Colombier	(existing_prefix_components): Remove; subsumed by prefix_components.
588*0b459c2cSDavid du Colombier	(intuit_diff_type): When creating files, try for the creation of the
589*0b459c2cSDavid du Colombier	fewest directories.
590*0b459c2cSDavid du Colombier
591*0b459c2cSDavid du Colombier	* configure.in (VERSION): Now 2.2.6.
592*0b459c2cSDavid du Colombier
593*0b459c2cSDavid du Colombier	* pch.c (existing_prefix_components): New function.
594*0b459c2cSDavid du Colombier	(intuit_diff_type): When creating a file, use a name whose existing
595*0b459c2cSDavid du Colombier 	directory prefix contains the most nontrivial path name components.
596*0b459c2cSDavid du Colombier	(best_name): Don't check for null 2nd arg.
597*0b459c2cSDavid du Colombier
598*0b459c2cSDavid du Colombier	* util.h (replace_slashes): New decl.
599*0b459c2cSDavid du Colombier
600*0b459c2cSDavid du Colombier	* util.c (replace_slashes): Now external.
601*0b459c2cSDavid du Colombier	(fetchname): Don't assume chars are nonnegative.
602*0b459c2cSDavid du Colombier
603*0b459c2cSDavid du Colombier	* patch.man:
604*0b459c2cSDavid du Colombier	When creating a file, use a name whose existing directory prefix
605*0b459c2cSDavid du Colombier	contains the most nontrivial path name components.
606*0b459c2cSDavid du Colombier	Add advice for creating patches and applying them.
607*0b459c2cSDavid du Colombier
608*0b459c2cSDavid du Colombier1997-05-06  Paul Eggert  <eggert@twinsun.com>
609*0b459c2cSDavid du Colombier
610*0b459c2cSDavid du Colombier	* configure.in (VERSION): Now 2.2.6.
611*0b459c2cSDavid du Colombier
612*0b459c2cSDavid du Colombier	* pch.c (existing_prefix_components): New function.
613*0b459c2cSDavid du Colombier	(intuit_diff_type): When creating a file, use a name whose existing
614*0b459c2cSDavid du Colombier 	directory prefix contains the most nontrivial path name components.
615*0b459c2cSDavid du Colombier	(best_name): Don't check for null 2nd arg.
616*0b459c2cSDavid du Colombier
617*0b459c2cSDavid du Colombier	* util.h (replace_slashes): New decl.
618*0b459c2cSDavid du Colombier	* util.c (replace_slashes): Now external.
619*0b459c2cSDavid du Colombier	(fetchname): Don't assume chars are nonnegative.
620*0b459c2cSDavid du Colombier
621*0b459c2cSDavid du Colombier	* patch.man:  Describe above change to pch.c.
622*0b459c2cSDavid du Colombier	Add advice for creating patches and applying them.
623*0b459c2cSDavid du Colombier
624*0b459c2cSDavid du Colombier1997-05-05  Paul Eggert  <eggert@twinsun.com>
625*0b459c2cSDavid du Colombier
626*0b459c2cSDavid du Colombier	* configure.in (VERSION): Update to 2.2.5.
627*0b459c2cSDavid du Colombier
628*0b459c2cSDavid du Colombier	* quotearg.h, quotearg.c: New files.
629*0b459c2cSDavid du Colombier	* Makefile.in (SRCS, OBJS, HDRS): Mention new files.
630*0b459c2cSDavid du Colombier	(inp.o, util.o): Now depends on quotearg.h.
631*0b459c2cSDavid du Colombier	(quotearg.o): New makefile rule.
632*0b459c2cSDavid du Colombier
633*0b459c2cSDavid du Colombier	* common.h (posixly_correct): New var.
634*0b459c2cSDavid du Colombier	* patch.c (main): Initialize it.
635*0b459c2cSDavid du Colombier	If ! posixly_correct, default backup type is now `existing'.
636*0b459c2cSDavid du Colombier	SIMPLE_BACKUP_SUFFIX no longer affects backup type.
637*0b459c2cSDavid du Colombier	(backup): Remove var.
638*0b459c2cSDavid du Colombier
639*0b459c2cSDavid du Colombier	* util.h: (countdirs): Remove.
640*0b459c2cSDavid du Colombier	(systemic): New decl.
641*0b459c2cSDavid du Colombier	* util.c (move_file): Try making the parent directory of TO
642*0b459c2cSDavid du Colombier	if backup prefix or suffix contain a slash.
643*0b459c2cSDavid du Colombier	(ask): Remove arbitrary limit on size of result.
644*0b459c2cSDavid du Colombier	(systemic): New function.
645*0b459c2cSDavid du Colombier	(mkdir): Work even if arg contains shell metacharacters.
646*0b459c2cSDavid du Colombier	(replace_slashes): Return 0 if none were replaced.
647*0b459c2cSDavid du Colombier	Don't replace slash after . or .. since it's redundant.
648*0b459c2cSDavid du Colombier	(countdirs): Remove.
649*0b459c2cSDavid du Colombier	(makedirs): Ignore mkdir failures.
650*0b459c2cSDavid du Colombier
651*0b459c2cSDavid du Colombier	* NEWS, patch.man: More POSIXLY_CORRECT adjustments.
652*0b459c2cSDavid du Colombier	Describe new rules for how file names are intuited.
653*0b459c2cSDavid du Colombier
654*0b459c2cSDavid du Colombier1997-04-17  Paul Eggert  <eggert@twinsun.com>
655*0b459c2cSDavid du Colombier
656*0b459c2cSDavid du Colombier	* configure.in (VERSION): Version 2.2 released.
657*0b459c2cSDavid du Colombier
658*0b459c2cSDavid du Colombier	* Makefile.in (config.hin):
659*0b459c2cSDavid du Colombier	Remove before building; we always want the timestamp updated.
660*0b459c2cSDavid du Colombier
661*0b459c2cSDavid du Colombier	* inp.c (get_input_file):
662*0b459c2cSDavid du Colombier	Look for RCS files only if backup_type == numbered_existing.
663*0b459c2cSDavid du Colombier
664*0b459c2cSDavid du Colombier	* NEWS, patch.man:
665*0b459c2cSDavid du Colombier	Remove mention of never-implemented -V rcs and -V sccs options.
666*0b459c2cSDavid du Colombier	* patch.man: `pathname' -> `file name'
667*0b459c2cSDavid du Colombier	Correct the description of how file names are found in diff headers.
668*0b459c2cSDavid du Colombier	Clarify the distinction between ordinary and unified context diffs.
669*0b459c2cSDavid du Colombier
670*0b459c2cSDavid du Colombier1997-04-13  Paul Eggert  <eggert@twinsun.com>
671*0b459c2cSDavid du Colombier
672*0b459c2cSDavid du Colombier	* configure.in (VERSION): Update to 2.1.7.
673*0b459c2cSDavid du Colombier
674*0b459c2cSDavid du Colombier	* patch.c (numeric_optarg): New function.
675*0b459c2cSDavid du Colombier	(get_some_switches): Use it.
676*0b459c2cSDavid du Colombier
677*0b459c2cSDavid du Colombier	* pch.c (intuit_diff_type): When creating a file, prefer a name whose
678*0b459c2cSDavid du Colombier	existing dir prefix is the longest.
679*0b459c2cSDavid du Colombier
680*0b459c2cSDavid du Colombier	* util.h (countdirs): New function.
681*0b459c2cSDavid du Colombier	* util.c (replace_slashes, countdirs): New functions.
682*0b459c2cSDavid du Colombier	(makedirs): Use replace_slashes, to be more like countdirs.
683*0b459c2cSDavid du Colombier
684*0b459c2cSDavid du Colombier	* patch.man: Explain -pN vs -p N.  Recommend --new-file.
685*0b459c2cSDavid du Colombier	Explain possible incompatibility with strip count.
686*0b459c2cSDavid du Colombier
687*0b459c2cSDavid du Colombier1997-04-10  Paul Eggert  <eggert@twinsun.com>
688*0b459c2cSDavid du Colombier
689*0b459c2cSDavid du Colombier	* configure.in (VERSION): Bump to 2.1.6.
690*0b459c2cSDavid du Colombier	(AC_CHECK_HEADERS): Remove stdlib.h (i.e. remove HAVE_STDLIB_H).
691*0b459c2cSDavid du Colombier
692*0b459c2cSDavid du Colombier	* Makefile.in: (HDRS, patchlevel.h, TAGS, distclean, maintainer-clean):
693*0b459c2cSDavid du Colombier	Don't distribute patchlevel.h; let the user do it.
694*0b459c2cSDavid du Colombier	This works around some obscure (possibly nonexistent?) `make' bugs.
695*0b459c2cSDavid du Colombier
696*0b459c2cSDavid du Colombier	* common.h (program_name): extern, not XTERN.
697*0b459c2cSDavid du Colombier	(<stdlib.h>): Include if STDC_HEADERS, not if HAVE_STDLIB_H.
698*0b459c2cSDavid du Colombier	(atol, getenv, malloc, realloc): Don't worry whether they're #defined.
699*0b459c2cSDavid du Colombier
700*0b459c2cSDavid du Colombier	* patch.c (get_some_switches):
701*0b459c2cSDavid du Colombier	Add special hack for backwards compatibility with CVS 1.9.
702*0b459c2cSDavid du Colombier	(-B, -Y, -z): Now set backup_type = simple.
703*0b459c2cSDavid du Colombier
704*0b459c2cSDavid du Colombier	* NEWS: Fix misspellings; minor reformatting.
705*0b459c2cSDavid du Colombier	* README: Report POSIX.2 compliance.
706*0b459c2cSDavid du Colombier
707*0b459c2cSDavid du Colombier1997-04-06  Paul Eggert  <eggert@twinsun.com>
708*0b459c2cSDavid du Colombier
709*0b459c2cSDavid du Colombier	Move all old RCS $Log entries into ChangeLog.
710*0b459c2cSDavid du Colombier	#include all files with < >, not " ".
711*0b459c2cSDavid du Colombier
712*0b459c2cSDavid du Colombier	* addext.c, argmatch.c, argmatch.h, memchr.c, install-sh:
713*0b459c2cSDavid du Colombier	New files.
714*0b459c2cSDavid du Colombier	* EXTERN.h, INTERN.h: Removed.
715*0b459c2cSDavid du Colombier	* config.hin: Renamed from config.h.in.
716*0b459c2cSDavid du Colombier
717*0b459c2cSDavid du Colombier	* acconfig.h (NODIR): Remove.
718*0b459c2cSDavid du Colombier	(HAVE_MEMCHR): Add.
719*0b459c2cSDavid du Colombier
720*0b459c2cSDavid du Colombier	* configure.in (AC_ARG_PROGRAM, AC_PROG_MAKE_SET, HAVE_MEMCHR): Add.
721*0b459c2cSDavid du Colombier	(AC_CHECK_HEADERS): Replaces obsolescent AC_HAVE_HEADERS.
722*0b459c2cSDavid du Colombier	Add stdlib.h, string.h, unistd.h, varargs.h.
723*0b459c2cSDavid du Colombier	Delete obsolete call to AC_UNISTD_H.
724*0b459c2cSDavid du Colombier	(AC_CONFIG_HEADER): Rename config.h.in to config.hin.
725*0b459c2cSDavid du Colombier	(AC_C_CONST): Replaces obsolescent AC_CONST.
726*0b459c2cSDavid du Colombier	(AC_CHECK_FUNC): Check for getopt_long; define LIBOBJS and substitute
727*0b459c2cSDavid du Colombier	for it accordingly.
728*0b459c2cSDavid du Colombier	(AC_CHECK_FUNCS): Replaces obsolescent AC_HAVE_FUNCS.
729*0b459c2cSDavid du Colombier	Add _doprintf, isascii, mktemp, sigaction, sigprocmask, sigsetmask.
730*0b459c2cSDavid du Colombier	Remove strerror.
731*0b459c2cSDavid du Colombier	(AC_FUNC_CLOSEDIR_VOID, AC_FUNC_VPRINTF): Add.
732*0b459c2cSDavid du Colombier	(AC_HEADER_DIRENT): Replaces obsolescent AC_DIR_HEADER.
733*0b459c2cSDavid du Colombier	(AC_HEADER_STDC): Replaces obsolescent AC_STDC_HEADERS.
734*0b459c2cSDavid du Colombier	(AC_SYS_LONG_FILE_NAMES): Replaces obsolescent AC_LONG_FILE_NAMES.
735*0b459c2cSDavid du Colombier	(AC_TYPE_OFF_T): Replaces obsolescent AC_OFF_T.
736*0b459c2cSDavid du Colombier	(AC_TYPE_SIGNAL): Replaces obsolescent AC_RETSIGTYPE.
737*0b459c2cSDavid du Colombier	(AC_TYPE_SIZE_T): Replaces obsolescent AC_SIZE_T.
738*0b459c2cSDavid du Colombier	(AC_XENIX_DIR): Remove.
739*0b459c2cSDavid du Colombier	(ED_PROGRAM): New var.
740*0b459c2cSDavid du Colombier	(NODIR): Remove.
741*0b459c2cSDavid du Colombier	(PACKAGE, VERSION): New vars; substitute them with AC_SUBST.
742*0b459c2cSDavid du Colombier
743*0b459c2cSDavid du Colombier	* Makefile.in: Conform to current GNU build standards.
744*0b459c2cSDavid du Colombier	Redo dependencies.  Use library getopt_long if available.
745*0b459c2cSDavid du Colombier	Use `&&' instead of `;' inside shell commands where applicable;
746*0b459c2cSDavid du Colombier	GNU make requires this.
747*0b459c2cSDavid du Colombier	Use double-colon rules for actions that do not build files.
748*0b459c2cSDavid du Colombier	(@SET_MAKE@): Added.
749*0b459c2cSDavid du Colombier	(CFLAGS, LDFLAGS, prefix, exec_prefix): Base on @ versions of symbols.
750*0b459c2cSDavid du Colombier	(COMPILE, CPPFLAGS, DEFS, ED_PROGRAM, LIBOBJS, LIBSRCS, PACKAGE,
751*0b459c2cSDavid du Colombier	VERSION): New symbols.
752*0b459c2cSDavid du Colombier	(SRCS, OBJS, HDRS, MISC): Add new files.
753*0b459c2cSDavid du Colombier	(man1dir): Renamed from mandir.
754*0b459c2cSDavid du Colombier	(man1ext): Renamed from manext.
755*0b459c2cSDavid du Colombier	(patch): Put -o first.
756*0b459c2cSDavid du Colombier	(install): Use $(transform) to allow program to be renamed by configure.
757*0b459c2cSDavid du Colombier	(patchlevel.h): Build from $(VERSION).
758*0b459c2cSDavid du Colombier	(dist): Get version number from $(VERSION) and package name from
759*0b459c2cSDavid du Colombier	$(PACKAGE).
760*0b459c2cSDavid du Colombier	(TAGS): Scan $(HDRS).
761*0b459c2cSDavid du Colombier	(maintainer-clean): Renamed from realclean.  Remove patchlevel.h.
762*0b459c2cSDavid du Colombier
763*0b459c2cSDavid du Colombier	* backupfile.h (simple_backup_suffix): Now const *.
764*0b459c2cSDavid du Colombier	(find_backup_file_name, base_name, get_version): Args are now const *.
765*0b459c2cSDavid du Colombier	(base_name): New decl.
766*0b459c2cSDavid du Colombier	* backupfile.c (<config.h>): Include only if HAVE_CONFIG_H.
767*0b459c2cSDavid du Colombier	(<argmatch.h>): Include.
768*0b459c2cSDavid du Colombier	(<string.h>): Include if HAVE_STRING_H, not if STDC_HEADERS.
769*0b459c2cSDavid du Colombier	(<strings.h>): Include if !HAVE_STRING_H.
770*0b459c2cSDavid du Colombier	(<unistd.h>): Do not include.
771*0b459c2cSDavid du Colombier	(<dirent.h>): Redo include as per current autoconf standards.
772*0b459c2cSDavid du Colombier	(<limits.h>): Include if HAVE_LIMITS_H. Define CHAR_BIT if not defined.
773*0b459c2cSDavid du Colombier	(NLENGTH): Now returns size_t.
774*0b459c2cSDavid du Colombier	(CLOSEDIR, INT_STRLEN_BOUND): New macros.
775*0b459c2cSDavid du Colombier	(ISDIGIT): Use faster method.
776*0b459c2cSDavid du Colombier	(find_backup_file_name): No longer depends on NODIR.
777*0b459c2cSDavid du Colombier	Remove redundant code.
778*0b459c2cSDavid du Colombier	(make_version_name): Remove; do it more portably.
779*0b459c2cSDavid du Colombier	(max_backup_version): Args are now const *.
780*0b459c2cSDavid du Colombier	(version_number): Simplify digit checking.
781*0b459c2cSDavid du Colombier	(basename, concat, dirname): Remove.
782*0b459c2cSDavid du Colombier	(argmatch, invalid_arg): Move to argmatch.c.  Simplify test for
783*0b459c2cSDavid du Colombier	ambiguous args.  When reporting an error, use program_name not "patch".
784*0b459c2cSDavid du Colombier	(addext): Move to addext.c.  Treat all negative values from pathconf
785*0b459c2cSDavid du Colombier	like -1.  Always use long extension if it fits, even if the filesystem
786*0b459c2cSDavid du Colombier	does not support long file names.
787*0b459c2cSDavid du Colombier	(backup_types): Now const.
788*0b459c2cSDavid du Colombier
789*0b459c2cSDavid du Colombier	* common.h, inp.h (XTERN): Renamed from EXT to avoid collision
790*0b459c2cSDavid du Colombier	with errno.h reserved name space.
791*0b459c2cSDavid du Colombier
792*0b459c2cSDavid du Colombier	* common.h (DEBUGGING): Now an integer; default is 1.
793*0b459c2cSDavid du Colombier	(enum diff): New type.
794*0b459c2cSDavid du Colombier	(diff_type): Use it instead of small integers.
795*0b459c2cSDavid du Colombier	(CONTEXT_DIFF, NORMAL_DIFF, ED_DIFF, NEW_CONTEXT_DIFF, UNI_DIFF):
796*0b459c2cSDavid du Colombier	Now enumerated values instead of macros.
797*0b459c2cSDavid du Colombier	(NO_DIFF): New enumerated value (used instead of 0).
798*0b459c2cSDavid du Colombier	(volatile): Default to the empty string if __STDC__ is not defined.
799*0b459c2cSDavid du Colombier	(<signal.h>): Do not include.
800*0b459c2cSDavid du Colombier	(Chmod, Close, Fclose, Fflush, Fputc, Signal, Sprintf, Strcat,
801*0b459c2cSDavid du Colombier	Strcpy, Unlink, Write): Remove these macros; casts to void are
802*0b459c2cSDavid du Colombier	not needed for GNU coding standards.
803*0b459c2cSDavid du Colombier	(INITHUNKMAX): Move to pch.c.
804*0b459c2cSDavid du Colombier	(malloc, realloc, INT_MIN, MAXLINELEN, strNE, strnNE,
805*0b459c2cSDavid du Colombier	Reg1, Reg2, Reg3, Reg4, Reg5, Reg6, Reg7, Reg8, Reg9, Reg10, Reg11,
806*0b459c2cSDavid du Colombier	Reg12, Reg13, Reg14, Reg15, Reg16): Remove these macros.
807*0b459c2cSDavid du Colombier	(S_IXOTH, S_IWOTH, S_IROTH, S_IXGRP, S_IWGRP,
808*0b459c2cSDavid du Colombier	S_IRGRP, S_IXUSR, S_IWUSR, S_IRUSR, O_RDONLY, O_RDWR):
809*0b459c2cSDavid du Colombier	Define these macros, if not defined.
810*0b459c2cSDavid du Colombier	(CTYPE_DOMAIN, ISLOWER, ISSPACE, ISDIGIT, PARAMS): New macros.
811*0b459c2cSDavid du Colombier	(instat): Renamed from filestat; used for input file now.
812*0b459c2cSDavid du Colombier	(bufsize, using_plan_a, debug, strippath): Not statically initialized.
813*0b459c2cSDavid du Colombier	(debug): #define to 0 if not DEBUGGING, so that users of `debug'
814*0b459c2cSDavid du Colombier	no longer need to be surrounded by `#if DEBUGGING'.
815*0b459c2cSDavid du Colombier	(out_of_mem, filec, filearg, outname, toutkeep, trejkeep): Remove.
816*0b459c2cSDavid du Colombier	(inname, inerrno, dry_run, origbase): New variables.
817*0b459c2cSDavid du Colombier	(origprae): Now const*.
818*0b459c2cSDavid du Colombier	(TMPOUTNAME, TMPINNAME, TMPPATNAME): Now const*volatile.
819*0b459c2cSDavid du Colombier	(verbosity): New variable; subsumes `verbose'.
820*0b459c2cSDavid du Colombier	(DEFAULT_VERBOSITY, SILENT, VERBOSE): Values in a new enum.
821*0b459c2cSDavid du Colombier	(verbose): Removed.
822*0b459c2cSDavid du Colombier	(VOID): Use `#ifdef __STDC__' instead of`#if __STDC__',
823*0b459c2cSDavid du Colombier	for consistency elsewhere.
824*0b459c2cSDavid du Colombier	(__attribute__): New macro (empty if not a recent GCC).
825*0b459c2cSDavid du Colombier	(fatal_exit): Renamed from my_exit.
826*0b459c2cSDavid du Colombier	(errno): Don't define if STDC_HEADERS.
827*0b459c2cSDavid du Colombier	(<string.h>): Include if either STDC_HEADERS or HAVE_STRING_H.
828*0b459c2cSDavid du Colombier	(memcmp, memcpy): Define if !STDC_HEADERS && !HAVE_STRING_H
829*0b459c2cSDavid du Colombier	&& !HAVE_MEMCHR.
830*0b459c2cSDavid du Colombier	(<stdlib.h>): Include if HAVE_STDLIB_H, not if STDC_HEADERS.
831*0b459c2cSDavid du Colombier	(atol, getenv, malloc, realloc, lseek): Declare only if not defined
832*0b459c2cSDavid du Colombier	as a macro.
833*0b459c2cSDavid du Colombier	(popen, strcpy, strcat, mktemp): Do not declare.
834*0b459c2cSDavid du Colombier	(lseek): Declare to yield off_t, not long.
835*0b459c2cSDavid du Colombier	(<fcntl.h>): Include only if HAVE_FCNTL_H.
836*0b459c2cSDavid du Colombier
837*0b459c2cSDavid du Colombier	* inp.h (get_input_file): New decl.
838*0b459c2cSDavid du Colombier	* inp.c (SCCSPREFIX, GET, GET_LOCKED, SCCSDIFF, RCSSUFFIX, CHECKOUT,
839*0b459c2cSDavid du Colombier	CHECKOUT_LOCKED, RCSDIFF): Moved here from common.h.
840*0b459c2cSDavid du Colombier	(i_ptr): Now char const **.
841*0b459c2cSDavid du Colombier	(i_size): Remove.
842*0b459c2cSDavid du Colombier	(TIBUFSIZE_MINIMUM): Define only if not already defined.
843*0b459c2cSDavid du Colombier	(plan_a, plan_b): Arg is now const *.
844*0b459c2cSDavid du Colombier	(report_revision): Declare before use.  It's now the caller's
845*0b459c2cSDavid du Colombier	responsibility to test whether revision is 0.
846*0b459c2cSDavid du Colombier	(scan_input, report_revision, get_input_file):
847*0b459c2cSDavid du Colombier	Be less chatty unless --verbose.
848*0b459c2cSDavid du Colombier	(get_input_file): New function, split off from plan_a.
849*0b459c2cSDavid du Colombier	Reuse file status gotten by pch if possible.  Allow for dry run.
850*0b459c2cSDavid du Colombier	Use POSIX bits for creat, not number.  Check for creation and
851*0b459c2cSDavid du Colombier	close failure, and use fstat not stat.  Use memcpy not strncpy.
852*0b459c2cSDavid du Colombier	(plan_a): Rewrite for speed.
853*0b459c2cSDavid du Colombier	Caller now assigns result to using_plan_a.
854*0b459c2cSDavid du Colombier	Don't bother reading empty files; during dry runs they might not exist.
855*0b459c2cSDavid du Colombier	Use ISSPACE, not isspace.
856*0b459c2cSDavid du Colombier	(plan_b): Allow for dry runs.  Use ISSPACE, and handle sign extension
857*0b459c2cSDavid du Colombier	correctly on arg.  Use POSIX symbol for open arg.
858*0b459c2cSDavid du Colombier
859*0b459c2cSDavid du Colombier	* patch.c (backup, output, patchname, program_name): New vars.
860*0b459c2cSDavid du Colombier	(last_frozen_line): Moved here from inp.h.
861*0b459c2cSDavid du Colombier	(TMPREJNAME): Moved here from common.h.
862*0b459c2cSDavid du Colombier	(optind_last): Removed.
863*0b459c2cSDavid du Colombier	(do_defines, if_defined, not_defined, else_defined, end_defined):
864*0b459c2cSDavid du Colombier	Now char const.  Prepend with \n (except for not_defined) to
865*0b459c2cSDavid du Colombier	allow for files ending in non-newline.
866*0b459c2cSDavid du Colombier	(Argv): Now char*const*.
867*0b459c2cSDavid du Colombier	(main, get_some_switches): Exit status 0 means success,
868*0b459c2cSDavid du Colombier	1 means hunks were rejected, 2 means trouble.
869*0b459c2cSDavid du Colombier	(main, locate_hunk, patch_match): Keep track of patch prefix context
870*0b459c2cSDavid du Colombier	separately from suffix context; this fixes several bugs.
871*0b459c2cSDavid du Colombier	(main): Initialize bufsize, strippath.
872*0b459c2cSDavid du Colombier	Be less chatty unless --verbose.
873*0b459c2cSDavid du Colombier	No more NODIR; always have version control available.
874*0b459c2cSDavid du Colombier	Require environment variables to be nonempty to have effect.
875*0b459c2cSDavid du Colombier	Add support for --dry-run, --output, --verbose.
876*0b459c2cSDavid du Colombier	Invoke get_input_file first, before deciding among do_ed_script,
877*0b459c2cSDavid du Colombier	plan_a, or plan_b.
878*0b459c2cSDavid du Colombier	Clear ofp after closing it, to keep discipline that ofp is either
879*0b459c2cSDavid du Colombier	0 or open, to avoid file descriptor leaks.  Conversely, rejfp doesn't
880*0b459c2cSDavid du Colombier	need this trick since static analysis is enough to show when it
881*0b459c2cSDavid du Colombier	needs to be closed.
882*0b459c2cSDavid du Colombier	Don't allow file-creation patches to be applied to existing files.
883*0b459c2cSDavid du Colombier	Misordered hunks are now not fatal errors; just go on to the next file.
884*0b459c2cSDavid du Colombier	It's a fatal error to fall back on plan B when --output is given,
885*0b459c2cSDavid du Colombier	since the moving hand has writ.
886*0b459c2cSDavid du Colombier	Add support for binary files.
887*0b459c2cSDavid du Colombier	Check for I/O errors.
888*0b459c2cSDavid du Colombier	chmod output file ourselves, rather than letting move_file do it;
889*0b459c2cSDavid du Colombier	this saves global state.
890*0b459c2cSDavid du Colombier	Use better grammar when outputting hunks messages, e.g. avoid
891*0b459c2cSDavid du Colombier	`1 hunks'.
892*0b459c2cSDavid du Colombier	(main, reinitialize_almost_everything):
893*0b459c2cSDavid du Colombier	Remove support for multiple file arguments.
894*0b459c2cSDavid du Colombier	Move get_some_switches call from reinitialize_almost_everything
895*0b459c2cSDavid du Colombier	to main.
896*0b459c2cSDavid du Colombier	(reinitialize_almost_everything): No need to reinitialize things
897*0b459c2cSDavid du Colombier	that are no longer global variables, e.g. outname.
898*0b459c2cSDavid du Colombier	(shortopts): Remove leading "-"; it's no longer important to
899*0b459c2cSDavid du Colombier	return options and arguments in order.  '-b' no longer takes operand.
900*0b459c2cSDavid du Colombier	-p's operand is no longer optional.  Add -i, -Y, -z.  Remove -S.
901*0b459c2cSDavid du Colombier	(longopts): --suffix is now pared with -z, not -b.  --backup now
902*0b459c2cSDavid du Colombier	means -b.  Add --input, --basename-prefix, --dry-run, --verbose.
903*0b459c2cSDavid du Colombier	Remove --skip.  --strip's operand is now required.
904*0b459c2cSDavid du Colombier	(option_help): New variable.  Use style of current coding standards.
905*0b459c2cSDavid du Colombier	Change to match current option set.
906*0b459c2cSDavid du Colombier	(usage): Use it.
907*0b459c2cSDavid du Colombier	(get_some_switches): Get all switches, since `+' is defunct.
908*0b459c2cSDavid du Colombier	New options -i, -Y, -z, --verbose, --dry-run.
909*0b459c2cSDavid du Colombier	Option -S removed.
910*0b459c2cSDavid du Colombier	-b now means backup (backup_type == simple), not simple_backup_suffix.
911*0b459c2cSDavid du Colombier	-B now implies backup, and requires nonempty operand.
912*0b459c2cSDavid du Colombier	-D no longer requires first char of argument to be an identifier.
913*0b459c2cSDavid du Colombier	`-o -' is now disallowed (formerly output to regular file named "-").
914*0b459c2cSDavid du Colombier	-p operand is now required.
915*0b459c2cSDavid du Colombier	-v no longer needs to cleanup (no temp files can exist at that point).
916*0b459c2cSDavid du Colombier	-V now implies backup.
917*0b459c2cSDavid du Colombier	Set inname, patchname from file name arguments, if any;
918*0b459c2cSDavid du Colombier	do not set filearg.  It's now an error if extra operands are given.
919*0b459c2cSDavid du Colombier	(abort_junk): Check for write errors in reject file.
920*0b459c2cSDavid du Colombier	(apply_hunk, copy_till): Return error flag, so that failure to apply
921*0b459c2cSDavid du Colombier	out-of-order hunk is no longer fatal.
922*0b459c2cSDavid du Colombier	(apply_hunk): New arg after_newline,
923*0b459c2cSDavid du Colombier	for patching files not ending in newline.
924*0b459c2cSDavid du Colombier	Cache ofp for speed.  Check for write errors.
925*0b459c2cSDavid du Colombier	(OUTSIDE, IN_IFNDEF, IN_IFDEF, IN_ELSE): Now part of an enumerated type
926*0b459c2cSDavid du Colombier	instead of being #defined to small integers.
927*0b459c2cSDavid du Colombier	Change while-do to do-while when copying !-part for R_do_defines,
928*0b459c2cSDavid du Colombier	since condition is always true the first time through the loop.
929*0b459c2cSDavid du Colombier	(init_output, init_reject): Arg is now const *.
930*0b459c2cSDavid du Colombier	(copy_till, spew_output): Do not insert ``missing'' newlines;
931*0b459c2cSDavid du Colombier	propagate them via new after_newline argument.
932*0b459c2cSDavid du Colombier	(spew_output): Nothing to copy if last_frozen_line == input lines.
933*0b459c2cSDavid du Colombier	Do not close (ofp) if it's null.
934*0b459c2cSDavid du Colombier	(dump_line): Remove.
935*0b459c2cSDavid du Colombier	(similar): Ignore presence or absence of trailing newlines.
936*0b459c2cSDavid du Colombier	Check for only ' ' or '\t', not isspace (as per POSIX.2).
937*0b459c2cSDavid du Colombier	(make_temp): Use tmpnam if mktemp is not available.
938*0b459c2cSDavid du Colombier	(cleanup): New function.
939*0b459c2cSDavid du Colombier	(fatal_exit): Use it.  Renamed from my_exit.
940*0b459c2cSDavid du Colombier	Take signal to exit with, not exit status (which is now always 2).
941*0b459c2cSDavid du Colombier
942*0b459c2cSDavid du Colombier	* pch.h, pch.c (pch_prefix_context, pch_suffix_context):
943*0b459c2cSDavid du Colombier	New fns replacing pch_context.
944*0b459c2cSDavid du Colombier	(another_hunk): Now yields int, not bool; -1 means out of memory.
945*0b459c2cSDavid du Colombier	Now takes difftype as argument.
946*0b459c2cSDavid du Colombier	(pch_write_line): Now returns boolean indicating whether we're after
947*0b459c2cSDavid du Colombier	a newline just after the write, for supporting non-text files.
948*0b459c2cSDavid du Colombier	* pch.c (isdigit): Remove; use ISDIGIT instead.
949*0b459c2cSDavid du Colombier	(INITHUNKMAX): Moved here from common.h.
950*0b459c2cSDavid du Colombier	(p_context): Removed.  We need to keep track of the pre- and post-
951*0b459c2cSDavid du Colombier	context separately, in:
952*0b459c2cSDavid du Colombier	(p_prefix_context, p_suffix_context): New variables.
953*0b459c2cSDavid du Colombier	(bestguess): Remove.
954*0b459c2cSDavid du Colombier	(open_patch_file): Arg is now char const *.
955*0b459c2cSDavid du Colombier	Copy file a buffer at a time, not a char at a time, for speed.
956*0b459c2cSDavid du Colombier	(grow_hunkmax): Now returns success indicator.
957*0b459c2cSDavid du Colombier	(there_is_another_patch, skip_to, another_hunk, do_ed_script):
958*0b459c2cSDavid du Colombier	Be less chatty unless --verbose.
959*0b459c2cSDavid du Colombier	(there_is_another_patch):
960*0b459c2cSDavid du Colombier	Avoid infinite loop if user input keeps yielding EOF.
961*0b459c2cSDavid du Colombier	(intuit_diff_type): New returns enum diff, not int.
962*0b459c2cSDavid du Colombier	Strip paths as they're being fetched.
963*0b459c2cSDavid du Colombier	Set ok_to_create_file correctly even if patch is reversed.
964*0b459c2cSDavid du Colombier	Set up file names correctly with unidiff output.
965*0b459c2cSDavid du Colombier	Use algorithm specified by POSIX 1003.2b/D11 to deduce
966*0b459c2cSDavid du Colombier	name of file to patch, with the exception of patches
967*0b459c2cSDavid du Colombier	that can create files.
968*0b459c2cSDavid du Colombier	(skip_to): Be verbose if !inname, since we're about to ask the
969*0b459c2cSDavid du Colombier	user for a file name and the context will help the user choose.
970*0b459c2cSDavid du Colombier	(another_hunk): Keep context as LINENUM, not int.
971*0b459c2cSDavid du Colombier	If the replacement is missing, calculate its context correctly.
972*0b459c2cSDavid du Colombier	Don't assume input ends in newline.
973*0b459c2cSDavid du Colombier	Keep track of patch prefix context separately from suffix context;
974*0b459c2cSDavid du Colombier	this fixes several bugs.
975*0b459c2cSDavid du Colombier	Don't assume blank lines got chopped if the replacement is missing.
976*0b459c2cSDavid du Colombier	Report poorly-formed hunks instead of aborting.
977*0b459c2cSDavid du Colombier	Do not use strcpy on overlapping strings; it's not portable.
978*0b459c2cSDavid du Colombier	Work even if lines are incomplete.
979*0b459c2cSDavid du Colombier	Fix bugs associated with context-less context hunks,
980*0b459c2cSDavid du Colombier	particularly when patching in reverse.
981*0b459c2cSDavid du Colombier	(pget_line): Now takes just 1 arg; instead of second arg,
982*0b459c2cSDavid du Colombier	just examine using_plan_a global.  Return -1 if we ran out
983*0b459c2cSDavid du Colombier	of memory.
984*0b459c2cSDavid du Colombier	(do_ed_script): Now takes output FILE * argument.
985*0b459c2cSDavid du Colombier	Take name of editor from ED_PROGRAM instead of hardwiring /bin/ed.
986*0b459c2cSDavid du Colombier	Don't bother unlinking TMPOUTNAME.
987*0b459c2cSDavid du Colombier	Check for popen failure.
988*0b459c2cSDavid du Colombier	Flush pipe to check for output errors.
989*0b459c2cSDavid du Colombier	If ofp is nonzero, copy result to it, instead of trying to
990*0b459c2cSDavid du Colombier	move the result.
991*0b459c2cSDavid du Colombier
992*0b459c2cSDavid du Colombier	* util.h, util.c (say1, say2, say3, say4, fatal1, fatal2, fatal3,
993*0b459c2cSDavid du Colombier	fatal4, pfatal1, pfatal2, pfatal3, pfatal4, ask1, ask2, ask3, ask4):
994*0b459c2cSDavid du Colombier	Remove; replaced with following.
995*0b459c2cSDavid du Colombier	(ask, say, fatal, pfatal): New stdarg functions.
996*0b459c2cSDavid du Colombier	(fetchname): Remove last, `assume_exists' parameter.
997*0b459c2cSDavid du Colombier	(savebuf, savestr, move_file, copy_file): Args are now const *.
998*0b459c2cSDavid du Colombier	(exit_with_signal): New function, for proper process status if
999*0b459c2cSDavid du Colombier	a signal is received as per POSIX.2.
1000*0b459c2cSDavid du Colombier	(basename): Rename to `base_name' and move to backupfile.
1001*0b459c2cSDavid du Colombier	* util.c (<signal.h>): Include here, not in common.h.
1002*0b459c2cSDavid du Colombier	(vararg_start): New macro.
1003*0b459c2cSDavid du Colombier	(va_dcl, va_start, va_arg, va_end): Define if neither <stdarg.h>
1004*0b459c2cSDavid du Colombier	nor <varargs.h> are available.
1005*0b459c2cSDavid du Colombier	(SIGCHLD): Define to SIGCLD if SIGCLD is defined and
1006*0b459c2cSDavid du Colombier	SIGCHLD isn't.
1007*0b459c2cSDavid du Colombier	(private_strerror): Remove.
1008*0b459c2cSDavid du Colombier	(move_file): Remove option of moving to stdout.
1009*0b459c2cSDavid du Colombier	Add support for -Y, -z.
1010*0b459c2cSDavid du Colombier	Don't assume chars in file name are nonnegative.
1011*0b459c2cSDavid du Colombier	Use copy_file if rename fails due to EXDEV;
1012*0b459c2cSDavid du Colombier	report failure if rename fails for any other reason.
1013*0b459c2cSDavid du Colombier	(copy_file, makedirs): Use POSIX symbols for permissions.
1014*0b459c2cSDavid du Colombier	(copy_file): Open source before destination.
1015*0b459c2cSDavid du Colombier	(remove_prefix): New function.
1016*0b459c2cSDavid du Colombier	(vfprintf): New function, if !HAVE_VPRINTF.
1017*0b459c2cSDavid du Colombier	(afatal, apfatal, zfatal, zpfatal, errnum): Remove.
1018*0b459c2cSDavid du Colombier	(fatal, pfatal, say): New functions that use stdarg.
1019*0b459c2cSDavid du Colombier	All callers changed.
1020*0b459c2cSDavid du Colombier	(zask): Renamed from `ask'.  Now uses stdarg.  Output to stdout,
1021*0b459c2cSDavid du Colombier	and read from /dev/tty, or if that cannot be opened, from
1022*0b459c2cSDavid du Colombier	stderr, stdout, stdin, whichever is first a tty.
1023*0b459c2cSDavid du Colombier	Print "EOF" when an EOF is read.  Do not echo input.
1024*0b459c2cSDavid du Colombier	(sigs): New array.
1025*0b459c2cSDavid du Colombier	(sigset_t, sigemptyset, sigmask, sigaddset, sigismember, SIG_BLOCK,
1026*0b459c2cSDavid du Colombier	SIG_UNBLOCK, SIG_SETMASK, sigprocmask, sigblock, sigsetmask):
1027*0b459c2cSDavid du Colombier	Define substitutes if not available.
1028*0b459c2cSDavid du Colombier	(initial_signal_mask, signals_to_block): New vars.
1029*0b459c2cSDavid du Colombier	(fatal_exit_handler): New function, if !HAVE_SIGACTION.
1030*0b459c2cSDavid du Colombier	(set_signals, ignore_signals): Use sigaction and sigprocmask style
1031*0b459c2cSDavid du Colombier	signal-handling if possible; it doesn't lose signals.
1032*0b459c2cSDavid du Colombier	(set_signals): Default SIGCHLD to work around SysV fork+wait bug.
1033*0b459c2cSDavid du Colombier	(mkdir): First arg is now const *.
1034*0b459c2cSDavid du Colombier	(makedirs): Handle multiple adjacent slashes correctly.
1035*0b459c2cSDavid du Colombier	(fetchname): Do not worry about whether the file exists
1036*0b459c2cSDavid du Colombier	(that is now the caller's responsibility).
1037*0b459c2cSDavid du Colombier	Treat a sequence of one or more slashes like one slash.
1038*0b459c2cSDavid du Colombier	Do not unstrip leading directories if they all exist and if
1039*0b459c2cSDavid du Colombier	no -p option was given; POSIX doesn't allow this.
1040*0b459c2cSDavid du Colombier	(memcmp): Remove (now a macro in common.h).
1041*0b459c2cSDavid du Colombier
1042*0b459c2cSDavid du Colombier	* version.c (copyright_string, free_software_msgid, authorship_msgid):
1043*0b459c2cSDavid du Colombier	New constants.
1044*0b459c2cSDavid du Colombier	(version): Use them.  Use program_name instead of hardwiring it.
1045*0b459c2cSDavid du Colombier
1046*0b459c2cSDavid du Colombier	* patch.man: Generate date from RCS Id.
1047*0b459c2cSDavid du Colombier	Rewrite to match the above changes.
1048*0b459c2cSDavid du Colombier
1049*0b459c2cSDavid du ColombierFri Jul 30 02:02:51 1993  Paul Eggert  (eggert@twinsun.com)
1050*0b459c2cSDavid du Colombier
1051*0b459c2cSDavid du Colombier	* configure.in (AC_HAVE_FUNCS): Add mkdir.
1052*0b459c2cSDavid du Colombier
1053*0b459c2cSDavid du Colombier	* common.h (Chmod, Fputc, Write, VOID): New macros.
1054*0b459c2cSDavid du Colombier	(malloc, realloc): Yield `VOID *', not `char *'.
1055*0b459c2cSDavid du Colombier
1056*0b459c2cSDavid du Colombier	* util.h (makedirs): Omit `striplast' argument.  Remove `aask'.
1057*0b459c2cSDavid du Colombier
1058*0b459c2cSDavid du Colombier	* inp.c (plan_a): Remove fixed internal buffer.  Remove lint.
1059*0b459c2cSDavid du Colombier
1060*0b459c2cSDavid du Colombier	* util.c (set_signals, ignore_signals): Trap SIGTERM, too.
1061*0b459c2cSDavid du Colombier	(makedirs): Removed fixed internal buffer.  Omit `striplast' argument.
1062*0b459c2cSDavid du Colombier	(mkdir): New function, if !HAVE_MKDIR.
1063*0b459c2cSDavid du Colombier	(fetchname): Remove fixed internal buffer.
1064*0b459c2cSDavid du Colombier	Remove lint from various functions.
1065*0b459c2cSDavid du Colombier
1066*0b459c2cSDavid du Colombier	* patch.c, pch.c: Remove lint.
1067*0b459c2cSDavid du Colombier
1068*0b459c2cSDavid du ColombierThu Jul 29 20:52:07 1993  David J. MacKenzie  (djm@wookumz.gnu.ai.mit.edu)
1069*0b459c2cSDavid du Colombier
1070*0b459c2cSDavid du Colombier	* Makefile.in (config.status): Run config.status --recheck, not
1071*0b459c2cSDavid du Colombier	configure, to get the right args passed.
1072*0b459c2cSDavid du Colombier
1073*0b459c2cSDavid du ColombierThu Jul 29 07:46:16 1993  Paul Eggert  (eggert@twinsun.com)
1074*0b459c2cSDavid du Colombier
1075*0b459c2cSDavid du Colombier	* The following changes remove all remaining fixed limits on memory,
1076*0b459c2cSDavid du Colombier	and fix bugs in patch's handling of null bytes and files that do not
1077*0b459c2cSDavid du Colombier	end in newline.  `Patch' now works on binary files.
1078*0b459c2cSDavid du Colombier
1079*0b459c2cSDavid du Colombier	* backupfile.c (find_backup_file_name): Don't dump core if malloc fails.
1080*0b459c2cSDavid du Colombier
1081*0b459c2cSDavid du Colombier	* EXTERN.h, INTERN.h (EXITING): New macro.
1082*0b459c2cSDavid du Colombier	* backupfile.[ch], patch.c, pch.c: Add PARAMS to function declarations.
1083*0b459c2cSDavid du Colombier
1084*0b459c2cSDavid du Colombier	* common.h (bool): Change to int, so ANSI C prototype promotion works.
1085*0b459c2cSDavid du Colombier	(CANVARARG): Remove varargs hack; it wasn't portable.
1086*0b459c2cSDavid du Colombier	(filearg): Now a pointer, not an array, so that it can be reallocated.
1087*0b459c2cSDavid du Colombier	(GET*, SCCSDIFF, CHECKOUT*, RCSDIFF): Quote operands to commands.
1088*0b459c2cSDavid du Colombier	(my_exit): Declare here.
1089*0b459c2cSDavid du Colombier	(BUFFERSIZE, Ctl, filemode, Fseek, Fstat, Lseek, MAXFILEC, MAXHUNKSIZE,
1090*0b459c2cSDavid du Colombier	Mktemp, myuid, Null, Nullch, Nullfp, Nulline, Pclose, VOIDUSED): Remove.
1091*0b459c2cSDavid du Colombier	All invokers changed.
1092*0b459c2cSDavid du Colombier	(Argc, Argv, *define[sd], last_offset, maxfuzz, noreverse, ofp,
1093*0b459c2cSDavid du Colombier	optind_last, rejfp, rejname): No longer externally visible; all
1094*0b459c2cSDavid du Colombier	definers changed.
1095*0b459c2cSDavid du Colombier	(INT_MAX, INT_MIN, STD*_FILENO, SEEK_SET): Define if the underlying
1096*0b459c2cSDavid du Colombier	system doesn't.  Include <limits.h> for this.
1097*0b459c2cSDavid du Colombier
1098*0b459c2cSDavid du Colombier	* configure.in: Add limits.h, memcmp.  Delete getline.
1099*0b459c2cSDavid du Colombier
1100*0b459c2cSDavid du Colombier	* inp.c (tibufsize): New variable; buffers grow as needed.
1101*0b459c2cSDavid du Colombier	(TIBUFSIZE_MINIMUM): New macro.
1102*0b459c2cSDavid du Colombier	(report_revision): New function.
1103*0b459c2cSDavid du Colombier	(plan_a): Do not search patch as a big string, since that fails
1104*0b459c2cSDavid du Colombier	if it contains null bytes.
1105*0b459c2cSDavid du Colombier	Prepend `./' to filenames starting with `-', for RCS and SCCS.
1106*0b459c2cSDavid du Colombier	If file does not match default RCS/SCCS version, go ahead and patch
1107*0b459c2cSDavid du Colombier	it anyway; warn about the problem but do not report a fatal error.
1108*0b459c2cSDavid du Colombier	(plan_b): Do not use a fixed buffer to read lines; read byte by byte
1109*0b459c2cSDavid du Colombier	instead, so that the lines can be arbitrarily long.  Do not search
1110*0b459c2cSDavid du Colombier	lines as strings, since they may contain null bytes.
1111*0b459c2cSDavid du Colombier	(plan_a, plan_b): Report I/O errors.
1112*0b459c2cSDavid du Colombier
1113*0b459c2cSDavid du Colombier	* inp.c, inp.h (rev_in_string): Remove.
1114*0b459c2cSDavid du Colombier	(ifetch): Yield size of line too, since strlen no longer applies.
1115*0b459c2cSDavid du Colombier	(plan_a, plan_b): No longer exported.
1116*0b459c2cSDavid du Colombier
1117*0b459c2cSDavid du Colombier	* patch.c (abort_hunk, apply_hunk, patch_match, similar):
1118*0b459c2cSDavid du Colombier	Lines may contain NUL and need not end in newline.
1119*0b459c2cSDavid du Colombier	(copy_till, dump_line): Insert newline if appending after partial line.
1120*0b459c2cSDavid du Colombier	All invokers changed.
1121*0b459c2cSDavid du Colombier	(main, get_some_switches, apply_hunk): Allocate *_define[ds], filearg,
1122*0b459c2cSDavid du Colombier	rejname dynamically.
1123*0b459c2cSDavid du Colombier	(make_temp): New function.
1124*0b459c2cSDavid du Colombier	(main): Use it.
1125*0b459c2cSDavid du Colombier	(main, spew_output, dump_line) Check for I/O errors.
1126*0b459c2cSDavid du Colombier
1127*0b459c2cSDavid du Colombier	* pch.c (open_patch_file): Don't copy stdin to a temporary file if
1128*0b459c2cSDavid du Colombier	it's a regular file, since we can seek on it directly.
1129*0b459c2cSDavid du Colombier	(open_patch_file, skip_to, another_hunk): The patch file may contain
1130*0b459c2cSDavid du Colombier	NULs.
1131*0b459c2cSDavid du Colombier	(another_hunk): The patch file may contain lines starting with '\',
1132*0b459c2cSDavid du Colombier	which means the preceding line lacked a trailing newline.
1133*0b459c2cSDavid du Colombier	(pgetline): Rename to pget_line.
1134*0b459c2cSDavid du Colombier	(get_line, incomplete_line, pch_write_line): New functions.
1135*0b459c2cSDavid du Colombier	(pch_line_len): Return size_t, not short; lines may be very long.
1136*0b459c2cSDavid du Colombier	(do_ed_script): Check for I/O errors.  Allow scripts to contain
1137*0b459c2cSDavid du Colombier	'i' and 's' commands, too.
1138*0b459c2cSDavid du Colombier
1139*0b459c2cSDavid du Colombier	* pch.h (pfp, grow_hunkmax, intuit_diff_type, next_intuit_at, skip_to,
1140*0b459c2cSDavid du Colombier	pfetch, pgetline): No longer exported.
1141*0b459c2cSDavid du Colombier	(pch_write_line): New declaration.
1142*0b459c2cSDavid du Colombier	(getline): Removed.
1143*0b459c2cSDavid du Colombier
1144*0b459c2cSDavid du Colombier	* util.c (move_file, fetchname): Use private stat buffer, so that
1145*0b459c2cSDavid du Colombier	filestat isn't lost.  Check for I/O errors.
1146*0b459c2cSDavid du Colombier	(savestr): Use savebuf.
1147*0b459c2cSDavid du Colombier	(zask): Use STD*_FILENO instead of 0, 1, 2.
1148*0b459c2cSDavid du Colombier	(fetchname): strip_leading defaults to INT_MAX instead of 957 (!).
1149*0b459c2cSDavid du Colombier	(memcmp): Define if !HAVE_MEMCMP.
1150*0b459c2cSDavid du Colombier
1151*0b459c2cSDavid du Colombier	* util.c, util.h (say*, fatal*, pfatal*, ask*): Delete; these
1152*0b459c2cSDavid du Colombier	pseudo-varargs functions weren't ANSI C.  Replace by macros
1153*0b459c2cSDavid du Colombier	that invoke [fs]printf directly, and invoke new functions
1154*0b459c2cSDavid du Colombier	[az]{say,fatal,pfatal,ask} before and after.
1155*0b459c2cSDavid du Colombier	(savebuf, read_fatal, write_fatal, memory_fatal, Fseek): New functions.
1156*0b459c2cSDavid du Colombier	(fatal*): Output trailing newline after message.  All invokers changed.
1157*0b459c2cSDavid du Colombier
1158*0b459c2cSDavid du Colombier	* version.c (version): Don't exit.
1159*0b459c2cSDavid du Colombier
1160*0b459c2cSDavid du Colombier	* Makefile.in (SRCS): Remove getline.c.
1161*0b459c2cSDavid du Colombier
1162*0b459c2cSDavid du ColombierThu Jul 22 15:24:24 1993  David J. MacKenzie  (djm@goldman.gnu.ai.mit.edu)
1163*0b459c2cSDavid du Colombier
1164*0b459c2cSDavid du Colombier	* EXTERN.h, INTERN.h (PARAMS): Define.
1165*0b459c2cSDavid du Colombier	* backupfile.h, common.h, inp.h, pch.h, util.h: Use.
1166*0b459c2cSDavid du Colombier	* backupfile.c: Include EXTERN.h.
1167*0b459c2cSDavid du Colombier
1168*0b459c2cSDavid du ColombierWed Jul 21 13:14:05 1993  David J. MacKenzie  (djm@goldman.gnu.ai.mit.edu)
1169*0b459c2cSDavid du Colombier
1170*0b459c2cSDavid du Colombier	* getline.c: New file.
1171*0b459c2cSDavid du Colombier	* configure.in: Check for getline (GNU libc has it).
1172*0b459c2cSDavid du Colombier	* pch.c: Use it instead of fgets.
1173*0b459c2cSDavid du Colombier	(pgetline): Renamed from pgets.  Change callers.
1174*0b459c2cSDavid du Colombier	* pch.h: Change decl.
1175*0b459c2cSDavid du Colombier
1176*0b459c2cSDavid du Colombier	* pch.c (pgets): Tab adjusts by 8 - (indent % 8), not % 7.
1177*0b459c2cSDavid du Colombier	Be consistent with similar code in pch.c::intuit_diff_type.
1178*0b459c2cSDavid du Colombier
1179*0b459c2cSDavid du Colombier	* common.h (MEM): Typedef removed.
1180*0b459c2cSDavid du Colombier	inp.c, pch.c, util.c: Use size_t instead of MEM.
1181*0b459c2cSDavid du Colombier	inp.c, pch.c: Use off_t.
1182*0b459c2cSDavid du Colombier	configure.in: Add AC_SIZE_T and AC_OFF_T.
1183*0b459c2cSDavid du Colombier
1184*0b459c2cSDavid du Colombier	* common.h: Make buf a pointer and add a bufsize variable.
1185*0b459c2cSDavid du Colombier	* util.c, pch.c, inp.c: Replace sizeof buf with bufsize.
1186*0b459c2cSDavid du Colombier	* patch.c: malloc buf to bufsize bytes.
1187*0b459c2cSDavid du Colombier
1188*0b459c2cSDavid du ColombierTue Jul 20 20:40:03 1993  Paul Eggert  (eggert@twinsun.com)
1189*0b459c2cSDavid du Colombier
1190*0b459c2cSDavid du Colombier	* common.h (BUFFERSIZE): Grow it to 8k too, just in case.
1191*0b459c2cSDavid du Colombier	(buf): Turn `buf' back into an array; making it a pointer broke
1192*0b459c2cSDavid du Colombier	things seriously.
1193*0b459c2cSDavid du Colombier	* patch.c (main): Likewise.
1194*0b459c2cSDavid du Colombier
1195*0b459c2cSDavid du ColombierTue Jul 20 20:02:40 1993  David J. MacKenzie  (djm@goldman.gnu.ai.mit.edu)
1196*0b459c2cSDavid du Colombier
1197*0b459c2cSDavid du Colombier	* Move Reg[1-16] and CANVARARG decls from config.h.in to common.h.
1198*0b459c2cSDavid du Colombier	* acconfig.h: New file.
1199*0b459c2cSDavid du Colombier	* Makefile (HDRS): Add it.
1200*0b459c2cSDavid du Colombier
1201*0b459c2cSDavid du ColombierTue Jul 20 16:35:27 1993  Paul Eggert  (eggert@twinsun.com)
1202*0b459c2cSDavid du Colombier
1203*0b459c2cSDavid du Colombier	* Makefile.in: Remove alloca.[co]; getopt no longer needs it.
1204*0b459c2cSDavid du Colombier	* configure.in (AC_ALLOCA): Remove.
1205*0b459c2cSDavid du Colombier
1206*0b459c2cSDavid du Colombier	* util.c (set_signals, ignore_signals): Do nothing if SIGHUP
1207*0b459c2cSDavid du Colombier	and SIGINT aren't defined.
1208*0b459c2cSDavid du Colombier
1209*0b459c2cSDavid du ColombierTue Jul 20 17:59:56 1993  David J. MacKenzie  (djm@goldman.gnu.ai.mit.edu)
1210*0b459c2cSDavid du Colombier
1211*0b459c2cSDavid du Colombier	* patch.c (main): Call xmalloc, not malloc.  xmalloc buf.
1212*0b459c2cSDavid du Colombier	* common.h: Declare xmalloc.  Make buf a pointer, not an array.
1213*0b459c2cSDavid du Colombier
1214*0b459c2cSDavid du Colombier	* util.c (xmalloc): Call fatal1, not fatal.
1215*0b459c2cSDavid du Colombier
1216*0b459c2cSDavid du Colombier	* common.h [MAXLINELEN]: Bump from 1k to 8k.
1217*0b459c2cSDavid du Colombier
1218*0b459c2cSDavid du ColombierThu Jul  8 19:56:16 1993  David J. MacKenzie  (djm@goldman.gnu.ai.mit.edu)
1219*0b459c2cSDavid du Colombier
1220*0b459c2cSDavid du Colombier	* Makefile.in (installdirs): New target.
1221*0b459c2cSDavid du Colombier	(install): Use it.
1222*0b459c2cSDavid du Colombier	(Makefile, config.status, configure): New targets.
1223*0b459c2cSDavid du Colombier
1224*0b459c2cSDavid du ColombierWed Jul  7 13:25:40 1993  David J. MacKenzie  (djm@goldman.gnu.ai.mit.edu)
1225*0b459c2cSDavid du Colombier
1226*0b459c2cSDavid du Colombier	* patch.c (get_some_switches, longopts): Recognize --help
1227*0b459c2cSDavid du Colombier	option, and call usage.
1228*0b459c2cSDavid du Colombier	(usage): New function.
1229*0b459c2cSDavid du Colombier
1230*0b459c2cSDavid du ColombierFri Jun 25 07:49:45 1993  Paul Eggert  (eggert@twinsun.com)
1231*0b459c2cSDavid du Colombier
1232*0b459c2cSDavid du Colombier	* backupfile.c (find_backup_file_name): Don't use .orig if
1233*0b459c2cSDavid du Colombier	numbered_existing with no existing numbered backup.
1234*0b459c2cSDavid du Colombier	(addext):  Don't use ext if !HAVE_LONG_FILE_NAMES,
1235*0b459c2cSDavid du Colombier	even if it would fit.  This matches patch's historical behavior.
1236*0b459c2cSDavid du Colombier	(simple_backup_suffix): Default to ".orig".
1237*0b459c2cSDavid du Colombier	* patch.c (main): Just use that default.
1238*0b459c2cSDavid du Colombier
1239*0b459c2cSDavid du ColombierTue Jun 15 22:32:14 1993  Paul Eggert  (eggert@twinsun.com)
1240*0b459c2cSDavid du Colombier
1241*0b459c2cSDavid du Colombier	* config.h.in (HAVE_ALLOCA_H): This #undef was missing.
1242*0b459c2cSDavid du Colombier	* Makefile.in (info, check, installcheck): New rules.
1243*0b459c2cSDavid du Colombier
1244*0b459c2cSDavid du ColombierSun Jun 13 14:31:29 1993  Paul Eggert  (eggert@twinsun.com)
1245*0b459c2cSDavid du Colombier
1246*0b459c2cSDavid du Colombier	* config.h.in (index, rindex): Remove unused macro
1247*0b459c2cSDavid du Colombier	definitions; they get in the way when porting to AIX.
1248*0b459c2cSDavid du Colombier	* config.h.in, configure.in (HAVE_STRING_H): Remove unused defn.
1249*0b459c2cSDavid du Colombier
1250*0b459c2cSDavid du ColombierThu Jun 10 21:13:47 1993  Paul Eggert  (eggert@twinsun.com)
1251*0b459c2cSDavid du Colombier
1252*0b459c2cSDavid du Colombier	* patchlevel.h: PATCH_VERSION 2.1.
1253*0b459c2cSDavid du Colombier	(The name `patch-2.0.12g12' is too long for traditional Unix.)
1254*0b459c2cSDavid du Colombier
1255*0b459c2cSDavid du Colombier	* patchlevel.h (PATCH_VERSION): Renamed from PATCHLEVEL.
1256*0b459c2cSDavid du Colombier	Now contains the entire patch version number.
1257*0b459c2cSDavid du Colombier	* version.c (version): Use it.
1258*0b459c2cSDavid du Colombier
1259*0b459c2cSDavid du ColombierWed Jun  9 21:43:23 1993  Paul Eggert  (eggert@twinsun.com)
1260*0b459c2cSDavid du Colombier
1261*0b459c2cSDavid du Colombier	* common.h: Remove declarations of index and rindex.
1262*0b459c2cSDavid du Colombier	* backupfile.c: Likewise.
1263*0b459c2cSDavid du Colombier	(addext, basename, dirname): Avoid rindex.
1264*0b459c2cSDavid du Colombier
1265*0b459c2cSDavid du ColombierTue Jun  8 15:24:14 1993  Paul Eggert  (eggert@twinsun.com)
1266*0b459c2cSDavid du Colombier
1267*0b459c2cSDavid du Colombier	* inp.c (plan_a): Check that RCS and working files are not the
1268*0b459c2cSDavid du Colombier	same.  This check is needed on hosts that do not report file
1269*0b459c2cSDavid du Colombier	name length limits and have short limits.
1270*0b459c2cSDavid du Colombier
1271*0b459c2cSDavid du ColombierSat Jun  5 22:56:07 1993  Paul Eggert  (eggert@twinsun.com)
1272*0b459c2cSDavid du Colombier
1273*0b459c2cSDavid du Colombier	* Makefile.in (.c.o): Put $(CFLAGS) after other options.
1274*0b459c2cSDavid du Colombier	(dist): Switch from .z to .gz.
1275*0b459c2cSDavid du Colombier
1276*0b459c2cSDavid du ColombierWed Jun  2 10:37:15 1993  Paul Eggert  (eggert@twinsun.com)
1277*0b459c2cSDavid du Colombier
1278*0b459c2cSDavid du Colombier	* backupfile.c (find_backup_file_name): Initialize copy of
1279*0b459c2cSDavid du Colombier	file name properly.
1280*0b459c2cSDavid du Colombier
1281*0b459c2cSDavid du ColombierMon May 31 21:55:21 1993  Paul Eggert  (eggert@twinsun.com)
1282*0b459c2cSDavid du Colombier
1283*0b459c2cSDavid du Colombier	* patchlevel.h: Patch level 12g11.
1284*0b459c2cSDavid du Colombier
1285*0b459c2cSDavid du Colombier	* pch.c (p_Char): Renamed from p_char, which is a system type
1286*0b459c2cSDavid du Colombier	in Tex XD88's <sys/types.h>.
1287*0b459c2cSDavid du Colombier
1288*0b459c2cSDavid du Colombier	* backupfile.c: Include "config.h" first, so that `const' is
1289*0b459c2cSDavid du Colombier	treated consistently in system headers.
1290*0b459c2cSDavid du Colombier
1291*0b459c2cSDavid du ColombierMon May 31 16:06:23 1993  Paul Eggert  (eggert@twinsun.com)
1292*0b459c2cSDavid du Colombier
1293*0b459c2cSDavid du Colombier	* patchlevel.h: Patch level 12g10.
1294*0b459c2cSDavid du Colombier
1295*0b459c2cSDavid du Colombier	* configure.in: Add AC_CONST.
1296*0b459c2cSDavid du Colombier	* config.h.in: Add `const'.
1297*0b459c2cSDavid du Colombier	* Makefile.in (.c.o): Add -DHAVE_CONFIG_H.
1298*0b459c2cSDavid du Colombier	(getopt.o getopt1.o): Depend on config.h.
1299*0b459c2cSDavid du Colombier
1300*0b459c2cSDavid du Colombier	* util.c (xmalloc): New function; alloca.c needs this.
1301*0b459c2cSDavid du Colombier
1302*0b459c2cSDavid du ColombierMon May 31 00:49:40 1993  Paul Eggert  (eggert@twinsun.com)
1303*0b459c2cSDavid du Colombier
1304*0b459c2cSDavid du Colombier	* patchlevel.h: PATCHLEVEL 12g9.
1305*0b459c2cSDavid du Colombier
1306*0b459c2cSDavid du Colombier	* backupfile.c, backupfile.h (addext): New function.
1307*0b459c2cSDavid du Colombier	It uses pathconf(), if available, to determine maximum file
1308*0b459c2cSDavid du Colombier	name length.
1309*0b459c2cSDavid du Colombier	* patch.c (main): Use it for reject file name.
1310*0b459c2cSDavid du Colombier	* common.h (ORIGEXT): Moved to patch.c.
1311*0b459c2cSDavid du Colombier	* config.h.in (HAVE_PATHCONF): New macro.
1312*0b459c2cSDavid du Colombier	* configure.in: Define it.
1313*0b459c2cSDavid du Colombier
1314*0b459c2cSDavid du Colombier	* Makefile.in (dist): Use gzip, not compress.
1315*0b459c2cSDavid du Colombier
1316*0b459c2cSDavid du ColombierSat May 29 09:42:18 1993  Paul Eggert  (eggert@twinsun.com)
1317*0b459c2cSDavid du Colombier
1318*0b459c2cSDavid du Colombier	* patch.c (main): Use pathconf to decide reject file name.
1319*0b459c2cSDavid du Colombier	* common.h (REJEXT): Remove.
1320*0b459c2cSDavid du Colombier
1321*0b459c2cSDavid du Colombier	* inp.c (plan_a): Don't lock the checked-out file if `patch -o'
1322*0b459c2cSDavid du Colombier	redirected the output elsewhere.
1323*0b459c2cSDavid du Colombier	* common.h (CHECKOUT_LOCKED, GET_LOCKED): New macros.  GET and
1324*0b459c2cSDavid du Colombier	CHECKOUT now just checkout unlocked copies.
1325*0b459c2cSDavid du Colombier
1326*0b459c2cSDavid du ColombierFri May 28 08:44:50 1993  Paul Eggert  (eggert@twinsun.com)
1327*0b459c2cSDavid du Colombier
1328*0b459c2cSDavid du Colombier	* backupfile.c (basename): Define even if NODIR isn't defined.
1329*0b459c2cSDavid du Colombier	* patch.c (main): Ask just once to apply a reversed patch.
1330*0b459c2cSDavid du Colombier
1331*0b459c2cSDavid du ColombierTue Nov 24 08:09:04 1992  David J. MacKenzie  (djm@goldman.gnu.ai.mit.edu)
1332*0b459c2cSDavid du Colombier
1333*0b459c2cSDavid du Colombier	* config.h.in, common.h: Use HAVE_FCNTL_H and HAVE_STRING_H
1334*0b459c2cSDavid du Colombier	instead of USG.
1335*0b459c2cSDavid du Colombier
1336*0b459c2cSDavid du Colombier	* backupfile.c: Use SYSDIR and NDIR instead of USG.
1337*0b459c2cSDavid du Colombier	Define direct as dirent, not vice-versa.
1338*0b459c2cSDavid du Colombier
1339*0b459c2cSDavid du ColombierWed Sep 16 17:11:48 1992  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
1340*0b459c2cSDavid du Colombier
1341*0b459c2cSDavid du Colombier	* patch.c (get_some_switches): optc should be int, not char.
1342*0b459c2cSDavid du Colombier
1343*0b459c2cSDavid du ColombierTue Sep 15 00:36:46 1992  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
1344*0b459c2cSDavid du Colombier
1345*0b459c2cSDavid du Colombier	* patchlevel.h: PATCHLEVEL 12g8.
1346*0b459c2cSDavid du Colombier
1347*0b459c2cSDavid du ColombierMon Sep 14 22:01:23 1992  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
1348*0b459c2cSDavid du Colombier
1349*0b459c2cSDavid du Colombier	* Makefile.in: Add uninstall target.
1350*0b459c2cSDavid du Colombier
1351*0b459c2cSDavid du Colombier	* util.c (fatal, pfatal): Add some asterisks to make fatal
1352*0b459c2cSDavid du Colombier	messages stand out more.
1353*0b459c2cSDavid du Colombier
1354*0b459c2cSDavid du ColombierTue Aug 25 22:13:36 1992  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
1355*0b459c2cSDavid du Colombier
1356*0b459c2cSDavid du Colombier	* patch.c (main, get_some_switches), common.h, inp.c (plan_a,
1357*0b459c2cSDavid du Colombier	plan_b), pch.c (there_is_another_patch): Add -t --batch
1358*0b459c2cSDavid du Colombier	option, similar to -f --force.
1359*0b459c2cSDavid du Colombier
1360*0b459c2cSDavid du ColombierMon Jul 27 11:27:07 1992  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
1361*0b459c2cSDavid du Colombier
1362*0b459c2cSDavid du Colombier	* common.h: Define SCCSDIFF and RCSDIFF.
1363*0b459c2cSDavid du Colombier	* inp.c (plan_a): Use them to make sure it's safe to check out
1364*0b459c2cSDavid du Colombier	the default RCS or SCCS version.
1365*0b459c2cSDavid du Colombier	From Paul Eggert.
1366*0b459c2cSDavid du Colombier
1367*0b459c2cSDavid du ColombierMon Jul 20 14:10:32 1992  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
1368*0b459c2cSDavid du Colombier
1369*0b459c2cSDavid du Colombier	* util.h: Declare basename.
1370*0b459c2cSDavid du Colombier	* inp.c (plan_a), util.c (fetchname): Use it to isolate the
1371*0b459c2cSDavid du Colombier	leading path when testing for RCS and SCCS files.
1372*0b459c2cSDavid du Colombier
1373*0b459c2cSDavid du ColombierFri Jul 10 16:03:23 1992  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
1374*0b459c2cSDavid du Colombier
1375*0b459c2cSDavid du Colombier	* util.c (makedirs): Only make the directories that don't exist.
1376*0b459c2cSDavid du Colombier	From chip@tct.com (Chip Salzenberg).
1377*0b459c2cSDavid du Colombier
1378*0b459c2cSDavid du ColombierWed Jul  8 01:20:56 1992  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
1379*0b459c2cSDavid du Colombier
1380*0b459c2cSDavid du Colombier	* patch.c (main): Open ofp after checking for ed script.
1381*0b459c2cSDavid du Colombier	Close ofp and rejfp before trying plan B.
1382*0b459c2cSDavid du Colombier	From epang@sfu.ca (Eugene Pang).
1383*0b459c2cSDavid du Colombier
1384*0b459c2cSDavid du Colombier	* util.c (fatal, pfatal): Print "patch: " before message.
1385*0b459c2cSDavid du Colombier	* pch.c, inp.c, patch.c, util.c: Remove "patch: " from the
1386*0b459c2cSDavid du Colombier	callers that had it.
1387*0b459c2cSDavid du Colombier
1388*0b459c2cSDavid du Colombier	* common.h (myuid): New variable.
1389*0b459c2cSDavid du Colombier	* patch.c (main): Initialize it.
1390*0b459c2cSDavid du Colombier	* inp.c (myuid): Function removed.
1391*0b459c2cSDavid du Colombier	(plan_a): Use the variable, not the function.
1392*0b459c2cSDavid du Colombier
1393*0b459c2cSDavid du Colombier	* patch.c: Add back -E --remove-empty-files option.
1394*0b459c2cSDavid du Colombier
1395*0b459c2cSDavid du ColombierTue Jul  7 23:19:28 1992  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
1396*0b459c2cSDavid du Colombier
1397*0b459c2cSDavid du Colombier	* inp.c (myuid): New function.
1398*0b459c2cSDavid du Colombier	(plan_a): Call it.  Optimize stat calls.  Be smarter about
1399*0b459c2cSDavid du Colombier	detecting checked out RCS and SCCS files.
1400*0b459c2cSDavid du Colombier	From Paul Eggert (eggert@twinsun.com).
1401*0b459c2cSDavid du Colombier
1402*0b459c2cSDavid du Colombier	* inp.c, util.c, patch.c: Don't bother checking for stat() > 0.
1403*0b459c2cSDavid du Colombier
1404*0b459c2cSDavid du ColombierMon Jul  6 13:01:52 1992  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
1405*0b459c2cSDavid du Colombier
1406*0b459c2cSDavid du Colombier	* util.c (move_file): Use rename instead of link and copying.
1407*0b459c2cSDavid du Colombier
1408*0b459c2cSDavid du Colombier	* util.c (pfatal): New function.
1409*0b459c2cSDavid du Colombier	* util.h: Declare it and pfatal[1-4] macros.
1410*0b459c2cSDavid du Colombier	* various files: Use it instead of fatal where appropriate.
1411*0b459c2cSDavid du Colombier
1412*0b459c2cSDavid du Colombier	* common.h, patch.c: Replace Arg[cv]_last with optind_last.
1413*0b459c2cSDavid du Colombier
1414*0b459c2cSDavid du Colombier	* patch.c (main, get_some_switches): Use getopt_long.  Update
1415*0b459c2cSDavid du Colombier	usage message.
1416*0b459c2cSDavid du Colombier	(nextarg): Function removed.
1417*0b459c2cSDavid du Colombier
1418*0b459c2cSDavid du Colombier	* Rename FLEXFILENAMES to HAVE_LONG_FILE_NAMES,
1419*0b459c2cSDavid du Colombier	VOIDSIG to RETSIGTYPE.
1420*0b459c2cSDavid du Colombier
1421*0b459c2cSDavid du Colombier	* backupfile.c, common.h: Use STDC header files if available.
1422*0b459c2cSDavid du Colombier	backupfile.h: Declare get_version.
1423*0b459c2cSDavid du Colombier
1424*0b459c2cSDavid du Colombier	* COPYING, COPYING.LIB, INSTALL, Makefile.in, alloca.c,
1425*0b459c2cSDavid du Colombier	config.h.in, configure, configure.in, getopt.[ch], getopt1.c,
1426*0b459c2cSDavid du Colombier	rename.c: New files.
1427*0b459c2cSDavid du Colombier	* Configure, MANIFEST, Makefile.SH, config.H, config.h.SH,
1428*0b459c2cSDavid du Colombier	malloc.c: Files removed.
1429*0b459c2cSDavid du Colombier
1430*0b459c2cSDavid du Colombier	* version.c (version): Don't print the RCS stuff, since we're
1431*0b459c2cSDavid du Colombier	not updating it regularly.
1432*0b459c2cSDavid du Colombier
1433*0b459c2cSDavid du Colombier	* patchlevel.h: PATCHLEVEL 12u7.
1434*0b459c2cSDavid du Colombier
1435*0b459c2cSDavid du Colombier	* Makefile.SH (dist): New target.
1436*0b459c2cSDavid du Colombier	Makedist: File removed.
1437*0b459c2cSDavid du Colombier
1438*0b459c2cSDavid du Colombier	* inp.c (plan_a): Check whether the user can write to the
1439*0b459c2cSDavid du Colombier	file, not whether anyone can write to the file.
1440*0b459c2cSDavid du Colombier
1441*0b459c2cSDavid du ColombierSat Jul  4 00:06:58 1992  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
1442*0b459c2cSDavid du Colombier
1443*0b459c2cSDavid du Colombier	* inp.c (plan_a): Try to check out read-only files from RCS or SCCS.
1444*0b459c2cSDavid du Colombier
1445*0b459c2cSDavid du Colombier	* util.c (move_file): If backing up by linking fails, try copying.
1446*0b459c2cSDavid du Colombier	From cek@sdc.boeing.com (Conrad Kimball).
1447*0b459c2cSDavid du Colombier
1448*0b459c2cSDavid du Colombier	* patch.c (get_some_switches): Eliminate -E option; always
1449*0b459c2cSDavid du Colombier	remove empty output files.
1450*0b459c2cSDavid du Colombier
1451*0b459c2cSDavid du Colombier	* util.c (fetchname): Only undo slash removal for relative
1452*0b459c2cSDavid du Colombier	paths if -p was not given.
1453*0b459c2cSDavid du Colombier
1454*0b459c2cSDavid du Colombier	* Makefile.sh: Add mostlyclean target.
1455*0b459c2cSDavid du Colombier
1456*0b459c2cSDavid du ColombierFri Jul  3 23:48:14 1992  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
1457*0b459c2cSDavid du Colombier
1458*0b459c2cSDavid du Colombier	* util.c (fetchname): Accept whitespace between `Index:' and filename.
1459*0b459c2cSDavid du Colombier	Also plug a small memory leak for diffs against /dev/null.
1460*0b459c2cSDavid du Colombier	From eggert@twinsun.com (Paul Eggert).
1461*0b459c2cSDavid du Colombier
1462*0b459c2cSDavid du Colombier	* common.h: Don't define TRUE and FALSE if already defined.
1463*0b459c2cSDavid du Colombier	From phk@data.fls.dk (Poul-Henning Kamp).
1464*0b459c2cSDavid du Colombier
1465*0b459c2cSDavid du ColombierWed Apr 29 10:19:33 1992  David J. MacKenzie  (djm@churchy.gnu.ai.mit.edu)
1466*0b459c2cSDavid du Colombier
1467*0b459c2cSDavid du Colombier	* backupfile.c (get_version): Exit if given a bad backup type.
1468*0b459c2cSDavid du Colombier
1469*0b459c2cSDavid du ColombierFri Mar 27 09:57:14 1992  Karl Berry  (karl at hayley)
1470*0b459c2cSDavid du Colombier
1471*0b459c2cSDavid du Colombier	* common.h (S_ISDIR, S_ISREG): define these.
1472*0b459c2cSDavid du Colombier	* inp.c (plan_a): use S_ISREG, not S_IFREG.
1473*0b459c2cSDavid du Colombier	* util.c (fetchname): use S_ISDIR, not S_IFDIR.
1474*0b459c2cSDavid du Colombier
1475*0b459c2cSDavid du ColombierMon Mar 16 14:10:42 1992  David J. MacKenzie  (djm@wookumz.gnu.ai.mit.edu)
1476*0b459c2cSDavid du Colombier
1477*0b459c2cSDavid du Colombier	* patchlevel.h: PATCHLEVEL 12u6.
1478*0b459c2cSDavid du Colombier
1479*0b459c2cSDavid du ColombierSat Mar 14 13:13:29 1992  David J. MacKenzie  (djm at frob.eng.umd.edu)
1480*0b459c2cSDavid du Colombier
1481*0b459c2cSDavid du Colombier	* Configure, config.h.SH: Check for directory header and unistd.h.
1482*0b459c2cSDavid du Colombier
1483*0b459c2cSDavid du Colombier	* patch.c (main): If -E was given and output file is empty after
1484*0b459c2cSDavid du Colombier	patching, remove it.
1485*0b459c2cSDavid du Colombier	(get_some_switches): Recognize -E option.
1486*0b459c2cSDavid du Colombier
1487*0b459c2cSDavid du Colombier	* patch.c (copy_till): Make garbled output an error, not a warning
1488*0b459c2cSDavid du Colombier	that doesn't change the exit status.
1489*0b459c2cSDavid du Colombier
1490*0b459c2cSDavid du Colombier	* common.h: Protect against system declarations of malloc and realloc.
1491*0b459c2cSDavid du Colombier
1492*0b459c2cSDavid du Colombier	* Makedist: Add backupfile.[ch].
1493*0b459c2cSDavid du Colombier
1494*0b459c2cSDavid du Colombier	* Configure: Look for C library where NeXT and SVR4 put it.
1495*0b459c2cSDavid du Colombier	Look in /usr/ucb after /bin and /usr/bin for utilities,
1496*0b459c2cSDavid du Colombier	and look in /usr/ccs/bin, to make SVR4 happier.
1497*0b459c2cSDavid du Colombier	Recognize m68k predefine.
1498*0b459c2cSDavid du Colombier
1499*0b459c2cSDavid du Colombier	* util.c (fetchname): Test of stat return value was backward.
1500*0b459c2cSDavid du Colombier	From csss@scheme.cs.ubc.ca.
1501*0b459c2cSDavid du Colombier
1502*0b459c2cSDavid du Colombier	* version.c (version): Exit with status 0, not 1.
1503*0b459c2cSDavid du Colombier
1504*0b459c2cSDavid du Colombier	* Makefile.SH: Add backupfile.[cho].
1505*0b459c2cSDavid du Colombier	* patch.c (main): Initialize backup file generation.
1506*0b459c2cSDavid du Colombier	(get_some_switches): Add -V option.
1507*0b459c2cSDavid du Colombier	* common.h, util,c, patch.c: Replace origext with simple_backup_suffix.
1508*0b459c2cSDavid du Colombier	* util.c (move_file): Use find_backup_file_name.
1509*0b459c2cSDavid du Colombier
1510*0b459c2cSDavid du ColombierTue Dec  3 11:27:16 1991  David J. MacKenzie  (djm at wookumz.gnu.ai.mit.edu)
1511*0b459c2cSDavid du Colombier
1512*0b459c2cSDavid du Colombier	* patchlevel.h: PATCHLEVEL 12u5.
1513*0b459c2cSDavid du Colombier
1514*0b459c2cSDavid du Colombier	* Makefile.SH: Change clean, distclean, and realclean targets a
1515*0b459c2cSDavid du Colombier	little so they agree with the GNU coding standards.
1516*0b459c2cSDavid du Colombier	Add Makefile to addedbyconf, so distclean removes it.
1517*0b459c2cSDavid du Colombier
1518*0b459c2cSDavid du Colombier	* Configure: Recognize Domain/OS C library in /lib/libc.
1519*0b459c2cSDavid du Colombier	From mmuegel@mot.com (Michael S. Muegel).
1520*0b459c2cSDavid du Colombier
1521*0b459c2cSDavid du Colombier	* pch.c: Fixes from Wayne Davison:
1522*0b459c2cSDavid du Colombier	Patch now accepts no-context context diffs that are
1523*0b459c2cSDavid du Colombier	specified with an assumed one line hunk (e.g.  "*** 10 ****").
1524*0b459c2cSDavid du Colombier	Fixed a bug in both context and unified diff processing that would
1525*0b459c2cSDavid du Colombier	put a zero-context hunk in the wrong place (one line too soon).
1526*0b459c2cSDavid du Colombier	Fixed a minor problem with p_max in unified diffs where it would
1527*0b459c2cSDavid du Colombier	set p_max to hunkmax unnecessarily (the only adverse effect was to
1528*0b459c2cSDavid du Colombier	not supply empty lines at eof by assuming they were truncated).
1529*0b459c2cSDavid du Colombier
1530*0b459c2cSDavid du ColombierTue Jul  2 03:25:51 1991  David J. MacKenzie  (djm at geech.gnu.ai.mit.edu)
1531*0b459c2cSDavid du Colombier
1532*0b459c2cSDavid du Colombier	* Configure: Check for signal declaration in
1533*0b459c2cSDavid du Colombier	/usr/include/sys/signal.h as well as /usr/include/signal.h.
1534*0b459c2cSDavid du Colombier
1535*0b459c2cSDavid du Colombier	* Configure, common.h, config.h.SH: Comment out the sprintf
1536*0b459c2cSDavid du Colombier	declaration and tests to determine its return value type.  It
1537*0b459c2cSDavid du Colombier	conflicts with ANSI C systems' prototypes in stdio.h and the
1538*0b459c2cSDavid du Colombier	return value of sprintf is never used anyway -- it's always cast
1539*0b459c2cSDavid du Colombier	to void.
1540*0b459c2cSDavid du Colombier
1541*0b459c2cSDavid du ColombierThu Jun 27 13:05:32 1991  David J. MacKenzie  (djm at churchy.gnu.ai.mit.edu)
1542*0b459c2cSDavid du Colombier
1543*0b459c2cSDavid du Colombier	* patchlevel.h: PATCHLEVEL 12u4.
1544*0b459c2cSDavid du Colombier
1545*0b459c2cSDavid du ColombierThu Feb 21 15:18:14 1991  David J. MacKenzie  (djm at geech.ai.mit.edu)
1546*0b459c2cSDavid du Colombier
1547*0b459c2cSDavid du Colombier	* pch.c (another_hunk): Fix off by 1 error.  From
1548*0b459c2cSDavid du Colombier	iverson@xstor.com (Tim Iverson).
1549*0b459c2cSDavid du Colombier
1550*0b459c2cSDavid du ColombierSun Jan 20 20:18:58 1991  David J. MacKenzie  (djm at geech.ai.mit.edu)
1551*0b459c2cSDavid du Colombier
1552*0b459c2cSDavid du Colombier	* Makefile.SH (all): Don't make a dummy `all' file.
1553*0b459c2cSDavid du Colombier
1554*0b459c2cSDavid du Colombier	* patchlevel.h: PATCHLEVEL 12u3.
1555*0b459c2cSDavid du Colombier
1556*0b459c2cSDavid du Colombier	* patch.c (nextarg): New function.
1557*0b459c2cSDavid du Colombier	(get_some_switches): Use it, to prevent dereferencing a null
1558*0b459c2cSDavid du Colombier	pointer if an option that takes an arg is not given one (is last
1559*0b459c2cSDavid du Colombier	on the command line).  From Paul Eggert.
1560*0b459c2cSDavid du Colombier
1561*0b459c2cSDavid du Colombier	* pch.c (another_hunk): Fix from Wayne Davison to recognize
1562*0b459c2cSDavid du Colombier	single-line hunks in unified diffs (with a single line number
1563*0b459c2cSDavid du Colombier	instead of a range).
1564*0b459c2cSDavid du Colombier
1565*0b459c2cSDavid du Colombier	* inp.c (rev_in_string): Don't use `s' before defining it.  From
1566*0b459c2cSDavid du Colombier	Wayne Davison.
1567*0b459c2cSDavid du Colombier
1568*0b459c2cSDavid du ColombierMon Jan  7 06:25:11 1991  David J. MacKenzie  (djm at geech.ai.mit.edu)
1569*0b459c2cSDavid du Colombier
1570*0b459c2cSDavid du Colombier	* patchlevel.h: PATCHLEVEL 12u2.
1571*0b459c2cSDavid du Colombier
1572*0b459c2cSDavid du Colombier	* pch.c (intuit_diff_type): Recognize `+++' in diff headers, for
1573*0b459c2cSDavid du Colombier	unified diff format.  From unidiff patch 1.
1574*0b459c2cSDavid du Colombier
1575*0b459c2cSDavid du ColombierMon Dec  3 00:14:25 1990  David J. MacKenzie  (djm at albert.ai.mit.edu)
1576*0b459c2cSDavid du Colombier
1577*0b459c2cSDavid du Colombier	* patch.c (get_some_switches): Make the usage message more
1578*0b459c2cSDavid du Colombier	informative.
1579*0b459c2cSDavid du Colombier
1580*0b459c2cSDavid du ColombierSun Dec  2 23:20:18 1990  David J. MacKenzie  (djm at albert.ai.mit.edu)
1581*0b459c2cSDavid du Colombier
1582*0b459c2cSDavid du Colombier	* Configure: When checking for C preprocessor, look for 'abc.*xyz'
1583*0b459c2cSDavid du Colombier	instead of 'abc.xyz', so ANSI C preprocessors work.
1584*0b459c2cSDavid du Colombier
1585*0b459c2cSDavid du Colombier	* Apply fix for -D from ksb@mentor.cc.purdue.edu (Kevin Braunsdorf).
1586*0b459c2cSDavid du Colombier
1587*0b459c2cSDavid du Colombier1990-05-01  Wayne Davison  <davison@dri.com>
1588*0b459c2cSDavid du Colombier	* patch.c, pch.c: unidiff support added
1589*0b459c2cSDavid du Colombier
1590*0b459c2cSDavid du ColombierWed Mar  7 23:47:25 1990  Jim Kingdon  (kingdon at pogo.ai.mit.edu)
1591*0b459c2cSDavid du Colombier
1592*0b459c2cSDavid du Colombier	* pch.c: Call malformed instead of goto malformed
1593*0b459c2cSDavid du Colombier	(just allows easier debugging).
1594*0b459c2cSDavid du Colombier
1595*0b459c2cSDavid du ColombierTue Jan 23 21:27:00 1990  Jim Kingdon  (kingdon at pogo.ai.mit.edu)
1596*0b459c2cSDavid du Colombier
1597*0b459c2cSDavid du Colombier	* common.h (TMP*NAME): Make these char *, not char [].
1598*0b459c2cSDavid du Colombier	patch.c (main): Use TMPDIR (if present) to set TMP*NAME.
1599*0b459c2cSDavid du Colombier	common.h: Declare getenv.
1600*0b459c2cSDavid du Colombier
1601*0b459c2cSDavid du ColombierSun Dec 17 17:29:48 1989  Jim Kingdon  (kingdon at hobbes.ai.mit.edu)
1602*0b459c2cSDavid du Colombier
1603*0b459c2cSDavid du Colombier	* patch.c (reverse_flag_specified): New variable.
1604*0b459c2cSDavid du Colombier	(get_some_switches, reinitialize_almost_everything): Use it.
1605*0b459c2cSDavid du Colombier
1606*0b459c2cSDavid du Colombier1988-06-22  Larry Wall  <sdcrdcf!lwall>
1607*0b459c2cSDavid du Colombier	patch12:
1608*0b459c2cSDavid du Colombier	* common.h: sprintf was declared wrong
1609*0b459c2cSDavid du Colombier	* patch.c: rindex() wasn't declared
1610*0b459c2cSDavid du Colombier	* patch.man: now avoids Bell System Logo
1611*0b459c2cSDavid du Colombier
1612*0b459c2cSDavid du Colombier1988-06-03  Larry Wall  <sdcrdcf!lwall>
1613*0b459c2cSDavid du Colombier	patch10:
1614*0b459c2cSDavid du Colombier	* common.h: support for shorter extensions.
1615*0b459c2cSDavid du Colombier	* inp.c: made a little smarter about sccs files
1616*0b459c2cSDavid du Colombier	* patch.c: exit code improved.
1617*0b459c2cSDavid du Colombier	better support for non-flexfilenames.
1618*0b459c2cSDavid du Colombier	* patch.man: -B switch was contributed.
1619*0b459c2cSDavid du Colombier	* pch.c: Can now find patches in shar scripts.
1620*0b459c2cSDavid du Colombier	Hunks that swapped and then swapped back could core dump.
1621*0b459c2cSDavid du Colombier
1622*0b459c2cSDavid du Colombier1987-06-04  Larry Wall  <sdcrdcf!lwall>
1623*0b459c2cSDavid du Colombier	* pch.c: pch_swap didn't swap p_bfake and p_efake.
1624*0b459c2cSDavid du Colombier
1625*0b459c2cSDavid du Colombier1987-02-16  Larry Wall  <sdcrdcf!lwall>
1626*0b459c2cSDavid du Colombier	* patch.c: Short replacement caused spurious "Out of sync" message.
1627*0b459c2cSDavid du Colombier
1628*0b459c2cSDavid du Colombier1987-01-30  Larry Wall  <sdcrdcf!lwall>
1629*0b459c2cSDavid du Colombier	* patch.c: Improved diagnostic on sync error.
1630*0b459c2cSDavid du Colombier	Moved do_ed_script() to pch.c.
1631*0b459c2cSDavid du Colombier	* pch.c: Improved responses to mangled patches.
1632*0b459c2cSDavid du Colombier	* pch.h: Added do_ed_script().
1633*0b459c2cSDavid du Colombier
1634*0b459c2cSDavid du Colombier1987-01-05  Larry Wall  <sdcrdcf!lwall>
1635*0b459c2cSDavid du Colombier	* pch.c: New-style context diffs caused double call to free().
1636*0b459c2cSDavid du Colombier
1637*0b459c2cSDavid du Colombier1986-11-21  Larry Wall  <sdcrdcf!lwall>
1638*0b459c2cSDavid du Colombier	* patch.c: Fuzz factor caused offset of installed lines.
1639*0b459c2cSDavid du Colombier
1640*0b459c2cSDavid du Colombier1986-11-14  Larry Wall  <sdcrdcf!lwall>
1641*0b459c2cSDavid du Colombier	* pch.c: Fixed problem where a long pattern wouldn't grow the hunk.
1642*0b459c2cSDavid du Colombier	Also restored p_input_line when backtracking so error messages are
1643*0b459c2cSDavid du Colombier	right.
1644*0b459c2cSDavid du Colombier
1645*0b459c2cSDavid du Colombier1986-11-03  Larry Wall  <sdcrdcf!lwall>
1646*0b459c2cSDavid du Colombier	* pch.c: New-style delete triggers spurious assertion error.
1647*0b459c2cSDavid du Colombier
1648*0b459c2cSDavid du Colombier1986-10-29  Larry Wall  <sdcrdcf!lwall>
1649*0b459c2cSDavid du Colombier	* patch.c: Backwards search could terminate prematurely.
1650*0b459c2cSDavid du Colombier	* pch.c: Could falsely report new-style context diff.
1651*0b459c2cSDavid du Colombier
1652*0b459c2cSDavid du Colombier1986-09-17  Larry Wall  <sdcrdcf!lwall>
1653*0b459c2cSDavid du Colombier	* common.h, inp.c, inp.h, patch.c, patch.man, pch.c, pch.h,
1654*0b459c2cSDavid du Colombier	util.h, version.c, version.h:  Baseline for netwide release.
1655*0b459c2cSDavid du Colombier
1656*0b459c2cSDavid du Colombier1986-08-01  Larry Wall  <sdcrdcf!lwall>
1657*0b459c2cSDavid du Colombier	* patch.c: Fixes for machines that can't vararg.
1658*0b459c2cSDavid du Colombier	Added fuzz factor.  Generalized -p.  General cleanup.
1659*0b459c2cSDavid du Colombier	Changed some %d's to %ld's.  Linted.
1660*0b459c2cSDavid du Colombier	* patch.man: Documented -v, -p, -F.
1661*0b459c2cSDavid du Colombier	Added notes to patch senders.
1662*0b459c2cSDavid du Colombier
1663*0b459c2cSDavid du Colombier1985-08-15  van%ucbmonet@berkeley
1664*0b459c2cSDavid du Colombier	Changes for 4.3bsd diff -c.
1665*0b459c2cSDavid du Colombier
1666*0b459c2cSDavid du Colombier1985-03-26  Larry Wall  <sdcrdcf!lwall>
1667*0b459c2cSDavid du Colombier	* patch.c: Frozen.
1668*0b459c2cSDavid du Colombier	* patch.man: Frozen.
1669*0b459c2cSDavid du Colombier
1670*0b459c2cSDavid du Colombier1985-03-12  Larry Wall  <sdcrdcf!lwall>
1671*0b459c2cSDavid du Colombier	* patch.c: Now checks for normalness of file to patch.
1672*0b459c2cSDavid du Colombier	Check i_ptr and i_womp to make sure they aren't null before freeing.
1673*0b459c2cSDavid du Colombier	Also allow ed output to be suppressed.
1674*0b459c2cSDavid du Colombier	Changed pfp->_file to fileno(pfp).
1675*0b459c2cSDavid du Colombier	Added -p option from jromine@uci-750a.
1676*0b459c2cSDavid du Colombier	Added -D (#ifdef) option from joe@fluke.
1677*0b459c2cSDavid du Colombier	* patch.man: Documented -p, -D.
1678*0b459c2cSDavid du Colombier
1679*0b459c2cSDavid du Colombier1984-12-06  Larry Wall  <sdcrdcf!lwall>
1680*0b459c2cSDavid du Colombier	* patch.c: Made smarter about SCCS subdirectories.
1681*0b459c2cSDavid du Colombier
1682*0b459c2cSDavid du Colombier1984-12-05  Larry Wall  <sdcrdcf!lwall>
1683*0b459c2cSDavid du Colombier	* patch.c: Added -l switch to do loose string comparison.
1684*0b459c2cSDavid du Colombier	* patch.man: Added -l switch, and noted bistability bug.
1685*0b459c2cSDavid du Colombier
1686*0b459c2cSDavid du Colombier1984-12-04  Larry Wall  <sdcrdcf!lwall>
1687*0b459c2cSDavid du Colombier	Branch for sdcrdcf changes.
1688*0b459c2cSDavid du Colombier	* patch.c: Failed hunk count not reset on multiple patch file.
1689*0b459c2cSDavid du Colombier	* patch.man: Baseline version.
1690*0b459c2cSDavid du Colombier
1691*0b459c2cSDavid du Colombier1984-11-29  Larry Wall  <sdcrdcf!lwall>
1692*0b459c2cSDavid du Colombier	* patch.c: Linted.  Identifiers uniquified.  Fixed i_ptr malloc() bug.
1693*0b459c2cSDavid du Colombier	Fixed multiple calls to mktemp().  Will now work on machines that can
1694*0b459c2cSDavid du Colombier	only read 32767 chars.  Added -R option for diffs with new and old
1695*0b459c2cSDavid du Colombier	swapped.  Various cosmetic changes.
1696*0b459c2cSDavid du Colombier
1697*0b459c2cSDavid du Colombier1984-11-09  Larry Wall  <sdcrdcf!lwall>
1698*0b459c2cSDavid du Colombier	* patch.c: Initial revision
1699*0b459c2cSDavid du Colombier
1700*0b459c2cSDavid du ColombierLocal Variables:
1701*0b459c2cSDavid du Colombiermode: indented-text
1702*0b459c2cSDavid du Colombierleft-margin: 8
1703*0b459c2cSDavid du Colombierversion-control: never
1704*0b459c2cSDavid du Colombierend:
1705