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