xref: /netbsd-src/external/gpl2/diffutils/dist/ChangeLog (revision 75f6d617e282811cb173c2ccfbf5df0dd71f7045)
1*75f6d617Schristos2002-04-05  Paul Eggert  <eggert@sic.twinsun.com>
2*75f6d617Schristos
3*75f6d617Schristos	* NEWS, configure.ac (AC_INIT): Version 2.8.1.
4*75f6d617Schristos
5*75f6d617Schristos	* configure.ac (AC_HEADER_STDBOOL): Add.
6*75f6d617Schristos	(AC_CHECK_HEADERS): Remove stdbool.h.
7*75f6d617Schristos	* m4/stdbool.m4: New file.
8*75f6d617Schristos	* m4/prereq.m4 (jm_PREREQ_EXCLUDE):
9*75f6d617Schristos	Use AC_HEADER_STDBOOL rather than AC_CHECK_HEADERS(stdbool.h).
10*75f6d617Schristos	(jm_PREREQ_HASH): Likewise.
11*75f6d617Schristos
12*75f6d617Schristos	* src/system.h (SSIZE_MAX): Define if limits.h doesn't.
13*75f6d617Schristos
14*75f6d617Schristos	* src/analyze.c (diff_2_files): Assign PTRDIFF_MAX - 1 to a
15*75f6d617Schristos	size_t variable, just in case there's a problem with ptrdiff_t
16*75f6d617Schristos	versus size_t.
17*75f6d617Schristos
18*75f6d617Schristos	* lib/cmpbuf.c (errno): Remove decl; K&R C is no longer supported.
19*75f6d617Schristos	Include limits.h.
20*75f6d617Schristos	(SIZE_MAX, SSIZE_MAX): Define if standard headers don't.
21*75f6d617Schristos	(MIN): New macro.
22*75f6d617Schristos	(block_read): Do not attempt to read more than SSIZE_MAX bytes, as the
23*75f6d617Schristos	resulting behavior is implementation-defined.  Work around bug in
24*75f6d617Schristos	Tru64 5.1, which can't read more than INT_MAX bytes at a time.
25*75f6d617Schristos	* src/cmp.c (cmp): Use block_read instead of read, to work
26*75f6d617Schristos	around Tru64 5.1 bug.
27*75f6d617Schristos	* src/diff3.c (read_diff): Likewise.
28*75f6d617Schristos	* src/diff3.c: Include cmpbuf.h.
29*75f6d617Schristos
30*75f6d617Schristos	* THANKS: Add Ulrich Drepper.
31*75f6d617Schristos
32*75f6d617Schristos	* INSTALLME: Mention GNU texinfo.
33*75f6d617Schristos
34*75f6d617Schristos	* doc/diff.texi:
35*75f6d617Schristos	Use new @copying directive.
36*75f6d617Schristos	Put @contents first, not last, since Texinfo now suggests this.
37*75f6d617Schristos	Fix bug in -w documentation noted by Karl Berry.
38*75f6d617Schristos	Mention links for speedup.
39*75f6d617Schristos	New node "Speedups" for future speedups.
40*75f6d617Schristos	Just say "Index", not "Concept Index".
41*75f6d617Schristos
42*75f6d617Schristos2002-03-26  Paul Eggert  <eggert@twinsun.com>
43*75f6d617Schristos
44*75f6d617Schristos	* src/Makefile.am:
45*75f6d617Schristos	(INCLUDES): Remove this obsolete macro,	replacing it with:
46*75f6d617Schristos	(AM_CPPFLAGS): New macro.
47*75f6d617Schristos
48*75f6d617Schristos2002-03-26  Albert Chin-A-Young  <china@thewrittenword.com>
49*75f6d617Schristos
50*75f6d617Schristos	* src/Makefile.am (datadir): Remove, as it conflicts with --datadir.
51*75f6d617Schristos
52*75f6d617Schristos2002-03-26  Paul Eggert  <eggert@twinsun.com>
53*75f6d617Schristos
54*75f6d617Schristos	* doc/diff.texi (dircategory GNU packages): Fix typo: a "* " was
55*75f6d617Schristos	missing before the menu entry.  Bug diagnosed by Adam Heath.
56*75f6d617Schristos	Also, put this dircategory after the Individual utilities dircategory,
57*75f6d617Schristos	to work around a compatibility problem with Debian install-info.
58*75f6d617Schristos
59*75f6d617Schristos2002-03-24  Eli Zaretskii  <eliz@is.elta.co.il>
60*75f6d617Schristos
61*75f6d617Schristos	* src/io.c (sip): Do not mishandle buffered count when reverting
62*75f6d617Schristos	to text mode.
63*75f6d617Schristos
64*75f6d617Schristos2002-03-23  Paul Eggert  <eggert@twinsun.com>
65*75f6d617Schristos
66*75f6d617Schristos	* NEWS, configure.ac (AC_INIT): Version 2.8.
67*75f6d617Schristos	* configure.ac (AC_PREREQ): 2.53.
68*75f6d617Schristos	* INSTALLME: Upgrade to gettext 0.11.1 and help2man 1.27.
69*75f6d617Schristos
70*75f6d617Schristos	* doc/diff.texi: Upgrade the description of `patch' to GNU patch
71*75f6d617Schristos	2.5.4, and revamp the documentation accordingly.
72*75f6d617Schristos
73*75f6d617Schristos	* src/diff.c (main): Fix typo that prevented diff -y from working.
74*75f6d617Schristos	Bug reported by Mitsuru Chinen.
75*75f6d617Schristos
76*75f6d617Schristos2002-03-15  Paul Eggert  <eggert@twinsun.com>
77*75f6d617Schristos
78*75f6d617Schristos	* lib/c-stack.c (c_stack_die) [!HAVE_SIGINFO_T]: Don't use info.
79*75f6d617Schristos	Bug reported by Eli Zaretskii.
80*75f6d617Schristos
81*75f6d617Schristos2002-03-15  Eli Zaretskii  <eliz@is.elta.co.il>
82*75f6d617Schristos
83*75f6d617Schristos	* ms/config.sed: Tweak editing of install-info-am target.
84*75f6d617Schristos
85*75f6d617Schristos2002-03-12  Paul Eggert  <eggert@twinsun.com>
86*75f6d617Schristos
87*75f6d617Schristos	* NEWS, configure.ac (AC_INIT): Version 2.7.10.
88*75f6d617Schristos
89*75f6d617Schristos	* NEWS: cmp -l -s and cmp -s -l are not allowed.
90*75f6d617Schristos	Deprecate diff -h, -H, -L, -P, --inhibit-hunk-merge.
91*75f6d617Schristos
92*75f6d617Schristos	* configure.ac (jm_PREREQ_HARD_LOCALE): Add.
93*75f6d617Schristos	(AM_INIT_AUTOMAKE): Do not distribute shar file.
94*75f6d617Schristos
95*75f6d617Schristos	* doc/diff.texi (Overview): byte != character.
96*75f6d617Schristos	(Detailed Context, Detailed Unified, Alternate Names, diff Options):
97*75f6d617Schristos	Do not document diff -L.
98*75f6d617Schristos	(Comparing Directories, Making Patches, diff Options):
99*75f6d617Schristos	Do not document diff -P.
100*75f6d617Schristos	(diff Performance, sdiff Option Summary, diff Options, sdiff Options):
101*75f6d617Schristos	Do not document diff -H.
102*75f6d617Schristos	(diff Performance, diff Options): Do not document --horizon-lines.
103*75f6d617Schristos	(cmp Options): Prefer -b to -c.
104*75f6d617Schristos	(cmp Options, diff Options, diff3 Options, patch Options,
105*75f6d617Schristos	sdiff Options): Put short options next to the similar long options.
106*75f6d617Schristos	Document --help, and use the same wording for --verbose.
107*75f6d617Schristos	(diff3 Options): Fix typo in description of -E, which used wrongly used
108*75f6d617Schristos	"-e" instead of "-E".
109*75f6d617Schristos
110*75f6d617Schristos	* lib/hard-locale.c (alloca): Remove.
111*75f6d617Schristos	Include stdlib.h if available, for malloc.
112*75f6d617Schristos	(hard_locale): Use malloc, not alloca, so that we need not worry about
113*75f6d617Schristos	alloca issues.  Test for storage allocation failure.
114*75f6d617Schristos
115*75f6d617Schristos	* m4/prereq.m4 (jm_PREREQ): Add jm_PREREQ_HARD_LOCALE.
116*75f6d617Schristos	(jm_PREREQ_HARD_LOCALE): New macro.
117*75f6d617Schristos
118*75f6d617Schristos	* src/cmp.c (specify_comparison_type): New function.
119*75f6d617Schristos	(check_stdout): "indices and codes" -> "byte numbers and values"
120*75f6d617Schristos	(main): Detect clashing options.
121*75f6d617Schristos	(cmp): Use "byte" rather than "char" if a translation for "byte"
122*75f6d617Schristos	is available, even when in the POSIX locale.
123*75f6d617Schristos
124*75f6d617Schristos	* src/diff.c (option_help_msgid): Do not document -L, -P,
125*75f6d617Schristos	--horizon-lines, --inhibit-hunk-merge, -H.
126*75f6d617Schristos	* src/diff.h: -L -> --label
127*75f6d617Schristos
128*75f6d617Schristos2002-03-11  Paul Eggert  <eggert@twinsun.com>
129*75f6d617Schristos
130*75f6d617Schristos	* NEWS, configure.ac (AC_INIT): Version 2.7.9.
131*75f6d617Schristos
132*75f6d617Schristos	* INSTALLME: Update to autoconf 2.53, automake 1.6, help2man
133*75f6d617Schristos	1.25 with patch.
134*75f6d617Schristos
135*75f6d617Schristos	* configure.ac (AC_INIT):
136*75f6d617Schristos	Change package name from diff to diffutils.
137*75f6d617Schristos	(AM_INIT_AUTOMAKE): Use new form, with option gnits,
138*75f6d617Schristos	rather than old from that duplicated AC_INIT.
139*75f6d617Schristos	(AM_MISSING_PROG): Add help2man.
140*75f6d617Schristos	(REGEX_MALLOC): Define.
141*75f6d617Schristos	(AC_CONFIG_FILES): Add man/Makefile.
142*75f6d617Schristos
143*75f6d617Schristos	* Makefile.am (AUTOMAKE_OPTIONS): Remove.
144*75f6d617Schristos	* doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.
145*75f6d617Schristos	* lib/Makefile.am (AUTOMAKE_OPTIONS): Likewise.
146*75f6d617Schristos	* ms/Makefile.am (AUTOMAKE_OPTIONS): Likewise.
147*75f6d617Schristos	* src/Makefile.am (AUTOMAKE_OPTIONS): Likewise.
148*75f6d617Schristos
149*75f6d617Schristos	* lib/c-stack.c: Include <errno.h>
150*75f6d617Schristos	(ENOTSUP): Define if errno.h doesn't.
151*75f6d617Schristos	(SA_NODEFER, SA_ONSTACK, SA_RESETHAND, SA_SIGINFO, SIGSTKSZ,
152*75f6d617Schristos	_SC_PAGESIZE, ALTERNATE_STACK_SIZE, stack_t, sigaltstack):
153*75f6d617Schristos	Remove; we now assume them all when
154*75f6d617Schristos	HAVE_XSI_STACK_OVERFLOW_HEURISTIC, so we don't need
155*75f6d617Schristos	substitutes.
156*75f6d617Schristos	(<ucontext.h>): Include only if HAVE_XSI_STACK_OVERFLOW_HEURISTIC.
157*75f6d617Schristos	(alternate_signal_stack): Now of size SIGSTKSZ.
158*75f6d617Schristos	(segv_handler): Simplify, under the assumption that
159*75f6d617Schristos	HAVE_XSI_STACK_OVERFLOW_HEURISTIC is nonzero.
160*75f6d617Schristos	(c_stack_action): Likewise.
161*75f6d617Schristos	(exit_failure) [DEBUG]: Initialize to 0, not 1.
162*75f6d617Schristos	(recurse, main) [DEBUG]: Remove main args.
163*75f6d617Schristos
164*75f6d617Schristos	* m4/c-stack.m4 (AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC): Change
165*75f6d617Schristos	wording of message.  Do not check for stdbool.h or ucontext.h,
166*75f6d617Schristos	or for ucontext_t or sigaction or sigaltstack.
167*75f6d617Schristos
168*75f6d617Schristos	* po/LINGUAS: Add zh_TW.
169*75f6d617Schristos
170*75f6d617Schristos	* Makefile.am (SUBDIRS): Add man.
171*75f6d617Schristos	* man/Makefile.am: New file.
172*75f6d617Schristos	* src/cmp.c (usage): Reword for help2man.
173*75f6d617Schristos	* src/diff.c (option_help_msgid): Likewise.
174*75f6d617Schristos	* src/diff3.c (option_help_msgid, usage): Likewise.
175*75f6d617Schristos	* src/sdiff3.c (option_help_msgid, usage): Likewise.
176*75f6d617Schristos	Reword for help2man.
177*75f6d617Schristos
178*75f6d617Schristos	* THANKS: Add email address for Tower.
179*75f6d617Schristos
180*75f6d617Schristos	* config/config.guess, config/config.sub, config/depcomp,
181*75f6d617Schristos	config/install-sh, config/mdate-sh, config/missing,
182*75f6d617Schristos	config/mkinstalldirs, config/texinfo.texi: Update
183*75f6d617Schristos	to recent version (maintained in other packages).
184*75f6d617Schristos
185*75f6d617Schristos2002-03-04  Bruno Haible <haible@ilog.fr>
186*75f6d617Schristos
187*75f6d617Schristos	* m4/gettext.m4 (AM_GNU_GETTEXT): Set LIBINTL and LTLIBINTL to empty if
188*75f6d617Schristos	no preinstalled GNU gettext was found.
189*75f6d617Schristos
190*75f6d617Schristos2002-03-02  Eli Zaretskii  <eliz@is.elta.co.il>
191*75f6d617Schristos
192*75f6d617Schristos	* ms/config.sed: Tweak editing of install-info-am and
193*75f6d617Schristos	uninstall-info-am targets, to include 8+3-butchered names of Info
194*75f6d617Schristos	files.
195*75f6d617Schristos
196*75f6d617Schristos2002-02-28  Paul Eggert  <eggert@twinsun.com>
197*75f6d617Schristos
198*75f6d617Schristos	* NEWS, configure.ac (AC_INIT, AM_INIT_AUTOMAKE): Version 2.7.8.
199*75f6d617Schristos
200*75f6d617Schristos	* doc/diff.texi: Add vr index.
201*75f6d617Schristos	Update copyright to 2002.
202*75f6d617Schristos	(Standards conformance): New chapter.
203*75f6d617Schristos	(Binary): Differing binary files are trouble unless the user asked for
204*75f6d617Schristos	brief output.
205*75f6d617Schristos	(Detailed Context): Prefer ISO time stamp format in discussion.
206*75f6d617Schristos	(Detailed Unified, Pagination): Likewise.
207*75f6d617Schristos	(Less Context): Likewise.  Also use short option.
208*75f6d617Schristos	(Alternate Names): Separate option from arg.
209*75f6d617Schristos	(Making Patches): Mention -U 2.
210*75f6d617Schristos	(diff Options): Deprecate -LINES, as POSIX 1003.1-2001 does not
211*75f6d617Schristos	allow it.
212*75f6d617Schristos
213*75f6d617Schristos	* INSTALLME: Update advice for Solaris installation problems.
214*75f6d617Schristos	We no longer use a test version of gettext.
215*75f6d617Schristos	Autoconf test version updated from 2.52f to 2.52h.
216*75f6d617Schristos	POSIX 1003.1-2001 patch for Automake.
217*75f6d617Schristos
218*75f6d617Schristos	* configure.ac (AC__GNU_SOURCE): Add this,
219*75f6d617Schristos	replacing AH_VERBATIM of _GNU_SOURCE.
220*75f6d617Schristos	(tempname): Use AC_LIBOBJS, not LIBOBJS=, as now required by autoconf.
221*75f6d617Schristos	(jm_PREREQ_C_STACK): Add.
222*75f6d617Schristos	(AC_CONFIG_FILES): Remove intl/Makefile.
223*75f6d617Schristos	(AM_GNU_GETTEXT): Add external arg, from gettext 0.11.
224*75f6d617Schristos
225*75f6d617Schristos	* lib/c-stack.c, lib/c-stack.h, lib/exitfail.c, lib/exitfail.h,
226*75f6d617Schristos	lib/posixver.c, lib/posixver.h, m4/c-stack.m4, m4/gnu-source.m4,
227*75f6d617Schristos	po/cs.po, po/ja.po: New files.
228*75f6d617Schristos
229*75f6d617Schristos	* intl/ChangeLog, intl/Makefile.in, intl/VERSION,
230*75f6d617Schristos	intl/bindtextdom.c, intl/config.charset, intl/dcgettext.c,
231*75f6d617Schristos	intl/dcigettext.c, intl/dcngettext.c, intl/dgettext.c,
232*75f6d617Schristos	intl/dngettext.c, intl/explodename.c, intl/finddomain.c,
233*75f6d617Schristos	intl/gettext.c, intl/gettextP.h, intl/gmo.h, intl/hash-string.h,
234*75f6d617Schristos	intl/intl-compat.c, intl/l10nflist.c, intl/libgnuintl.h,
235*75f6d617Schristos	intl/loadinfo.h, intl/loadmsgcat.c, intl/localcharset.c,
236*75f6d617Schristos	intl/locale.alias, intl/localealias.c, intl/localename.c,
237*75f6d617Schristos	intl/ngettext.c, intl/os2compat.c, intl/os2compat.h, intl/osdep.c,
238*75f6d617Schristos	intl/plural-eval.c, intl/plural-exp.c, intl/plural-exp.h,
239*75f6d617Schristos	intl/plural.c, intl/plural.y, intl/ref-add.sin, intl/ref-del.sin,
240*75f6d617Schristos	intl/textdomain.c, m4/isc-posix.m4, m4/libtool.m4: Remove.
241*75f6d617Schristos
242*75f6d617Schristos	* ABOUT-NLS: Update to Gettext 0.11.
243*75f6d617Schristos
244*75f6d617Schristos	* Makefile.am (SUBDIRS): Remove intl.
245*75f6d617Schristos
246*75f6d617Schristos	* config/config.guess, config/config.rpath, config/config.sub,
247*75f6d617Schristos	config/texinfo.tex, config/depcomp, config/texinfo.tex,
248*75f6d617Schristos	lib/tempname.c: Update to latest version from other packages.
249*75f6d617Schristos
250*75f6d617Schristos	* lib/xalloc.h (xalloc_exit_failure): Remove; subsumed by exit_failure.
251*75f6d617Schristos	* lib/xmalloc.c: Include exitfail.h.
252*75f6d617Schristos	(xalloc_exit_failure): Remove; subsumed by exit_failure.
253*75f6d617Schristos	All uses changed.
254*75f6d617Schristos
255*75f6d617Schristos	* lib/Makefile.am (noinst_HEADERS): Add c-stack.h, exitfail.h.
256*75f6d617Schristos	(libdiffutils_a_SOURCES): Add c-stack.c, exitfail.c, quotesys.c.
257*75f6d617Schristos	(INCLUDES): Remove.
258*75f6d617Schristos
259*75f6d617Schristos	* lib/cmpbuf.h (buffer_lcm): New arg LCM_MAX.
260*75f6d617Schristos	* lib/cmpbuf.c: Include errno.h.
261*75f6d617Schristos	(errno): Declare if !STDC_HEADERS.
262*75f6d617Schristos	Include signal.h.
263*75f6d617Schristos	(SA_RESTART): Define if not already defined.
264*75f6d617Schristos	Include <inttypes.h>.
265*75f6d617Schristos	(PTRDIFF_MAX): Define if not already defined.
266*75f6d617Schristos	(TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM): Likewise.
267*75f6d617Schristos	(block_read): Accommodate ancient AIX hosts that set errno to EINTR
268*75f6d617Schristos	after uncaught SIGCONT.
269*75f6d617Schristos	(buffer_lcm): Return a reasonable size if the multiple is too large.
270*75f6d617Schristos	New arg LCM_MAX.  All callers changed.
271*75f6d617Schristos
272*75f6d617Schristos	* lib/hard-locale.c: Include "hard-locale.h".
273*75f6d617Schristos	(hard_locale): Ignore ENABLE_NLS, since we want to operate on
274*75f6d617Schristos	locales other than LC_MESSAGES.
275*75f6d617Schristos
276*75f6d617Schristos	* m4/prereq.m4 (jm_PREREQ): Add jm_PREREQ_POSIXVER.
277*75f6d617Schristos	(jm_PREREQ_POSIXVER): New macro.
278*75f6d617Schristos
279*75f6d617Schristos	* m4/setmode.m4 (AC_FUNC_SETMODE_DOS):
280*75f6d617Schristos	Check for fcntl.h and unistd.h unconditionally.
281*75f6d617Schristos	Suggested by Bruno Haible.
282*75f6d617Schristos
283*75f6d617Schristos	* po/LINGUAS: Add cs, ja.
284*75f6d617Schristos	* po/POTFILES.in: Add lib/c-stack.c, src/dir.c.
285*75f6d617Schristos
286*75f6d617Schristos	* src/Makefile.am (datadir): @DATADIRNAME@ -> share.
287*75f6d617Schristos	(INCLUDES): Remove intl.
288*75f6d617Schristos	(LDADD): Change INTLLIBS to LIBINTL.
289*75f6d617Schristos	No longer need to link libdiffutils.a twice.
290*75f6d617Schristos
291*75f6d617Schristos	* src/analyze.c (diff_2_files):
292*75f6d617Schristos	Avoid arithmetic overflow in buffer size calculation.
293*75f6d617Schristos
294*75f6d617Schristos	* src/cmp.c: Include c-stack.h, exitfail.h.
295*75f6d617Schristos	(hard_locale_LC_MESSAGES): Depend on ENABLE_NLS.
296*75f6d617Schristos	(try_help, check_stdout, main, cmp): 2 -> EXIT_TROUBLE.
297*75f6d617Schristos	(main): Check for stack overflow.
298*75f6d617Schristos	0 -> EXIT_SUCCESS.
299*75f6d617Schristos	1 -> EXIT_FAILURE.
300*75f6d617Schristos	(cmp): Likewise.
301*75f6d617Schristos	Accommodate ancient AIX hosts that set errno to
302*75f6d617Schristos	EINTR after uncaught SIGCONT.
303*75f6d617Schristos
304*75f6d617Schristos	* src/context.c (pr_context_hunk):
305*75f6d617Schristos	Do not dump core if an enormous context causes an
306*75f6d617Schristos	arithmetic overflow.
307*75f6d617Schristos	(pr_unidiff_hunk): Likewise.
308*75f6d617Schristos	(find_hunk): Likewise.
309*75f6d617Schristos
310*75f6d617Schristos	* src/diff.h: unsigned -> unsigned int.
311*75f6d617Schristos	* src/diff.c: Include c-stack.h, exitfail.h.
312*75f6d617Schristos	Do not include signal.h.
313*75f6d617Schristos	(specify_style, specify_value): Bring these routines back, as POSIX
314*75f6d617Schristos	requires that the order of options not matter.
315*75f6d617Schristos	(shortopts): New constant.
316*75f6d617Schristos	(group_format_option, line_format_option): New constants.
317*75f6d617Schristos	(main): 0 -> EXIT_SUCCESS, 1 -> EXIT_FAILURE, 2 -> EXIT_TROUBLE.
318*75f6d617Schristos	Ensure that order of options does not matter.
319*75f6d617Schristos	Check for stack overflow.
320*75f6d617Schristos	If contexts overflow, substitute LIN_MAX, as that's good enough.
321*75f6d617Schristos	If multiple contexts are specified, use their maximum.
322*75f6d617Schristos	-c is equivalent to -C 3 now, instead of having an implicit context;
323*75f6d617Schristos	likewise for -u and -U 3.
324*75f6d617Schristos	Use specify_style and specify_value.
325*75f6d617Schristos	(SIGCHLD): Do not define; now done in a header.
326*75f6d617Schristos	Use new style time stamp format for -u / -U.
327*75f6d617Schristos	Reject numeric-string options if operating in POSIX 1003.1-2001 mode.
328*75f6d617Schristos	Avoid overflow problems with tab width.
329*75f6d617Schristos	Simplify from-file and to-file code.
330*75f6d617Schristos	(usage): Do not mention obsolete options.
331*75f6d617Schristos	(filetype): Do not mention whether a file is executable.
332*75f6d617Schristos	Add typed memory objects.
333*75f6d617Schristos	(compare_files): 0 -> EXIT_SUCCESS, 1 -> EXIT_FAILURE, 2 ->
334*75f6d617Schristos	EXIT_TROUBLE.
335*75f6d617Schristos
336*75f6d617Schristos	* src/diff3.c: Include c-stack.h, exitfail.h.
337*75f6d617Schristos	(ALLOCATE): Remove.  All uses changed to xmalloc, or to xmalloc plus
338*75f6d617Schristos	an overflow check.
339*75f6d617Schristos	(myread): Remove.
340*75f6d617Schristos	(main): Check for stack overflow.
341*75f6d617Schristos	0 -> EXIT_SUCCESS, 1 -> EXIT_FAIULRE, 2 -> EXIT_TROUBLE.
342*75f6d617Schristos	(try_help): Likewise.
343*75f6d617Schristos	(process_diff): Check for integer overflow, to avoid core dumps.
344*75f6d617Schristos	2 -> EXIT_TROUBLE.
345*75f6d617Schristos	(read_diff): Exit with status 126 if the file is not executable,
346*75f6d617Schristos	for compatibility with POSIX 1003.1-2001.
347*75f6d617Schristos	Accommodate ancient AIX hosts that set errno to EINTR after uncaught
348*75f6d617Schristos	SIGCONT.
349*75f6d617Schristos	Check for integer overflow to avoid core dumps.
350*75f6d617Schristos	(fatal, perror_with_exit): 2 -> EXIT_TROUBLE.
351*75f6d617Schristos
352*75f6d617Schristos	* src/dir.c (dir_read):
353*75f6d617Schristos	Ignore st_size of directories: POSIX says it's garbage.
354*75f6d617Schristos	Check for integer overflow to avoid core dumps.
355*75f6d617Schristos	(diff_dirs): 0 -> EXIT_SUCCESS, 2 -> EXIT_TROUBLE.
356*75f6d617Schristos
357*75f6d617Schristos	* src/ifdef.c: Include <xalloc.h>.
358*75f6d617Schristos	(format_group, print_ifdef_lines): Avoid core dumps with bad formats.
359*75f6d617Schristos	(do_printf_spec): Avoid alloca.
360*75f6d617Schristos
361*75f6d617Schristos	* src/io.c (sip):
362*75f6d617Schristos	Avoid integer overflow and core dumps if buffer alignments are
363*75f6d617Schristos	preposterously incompatible.
364*75f6d617Schristos	(slurp): Do not dump core if the file is growing as we read it.
365*75f6d617Schristos	If a regular file grows, keep reading until we catch up with its EOF.
366*75f6d617Schristos	(find_and_hash_each_line): Check for integer overflow to avoid cores.
367*75f6d617Schristos	(GUESS_LINES): Remove.
368*75f6d617Schristos	(guess_lines): New function.  Avoid integer overflow.
369*75f6d617Schristos	(find_identical_ends): Use it.
370*75f6d617Schristos	Avoid integer overflow and possible core dumps.
371*75f6d617Schristos
372*75f6d617Schristos	* src/sdiff.c: Include c-stack.h, exitfail.h.  Do not include signal.h.
373*75f6d617Schristos	0 -> EXIT_SUCCESS, 1 -> EXIT_FAILURE, 2 -> EXIT_TROUBLE.
374*75f6d617Schristos	(ck_editor_status): New function.
375*75f6d617Schristos	(main): Check for stack overflow.
376*75f6d617Schristos	Adopt POSIX convention for subsidiary programs not found.
377*75f6d617Schristos	(diffarg): Check for integer overflow to avoid core dumps.
378*75f6d617Schristos	(trapsigs): Remove SA_INTERRUPT special case; now done by header.
379*75f6d617Schristos	(SIGCHLD): Likewise.
380*75f6d617Schristos	(edit): Adopt POSIX convention for subsidiary programs not found.
381*75f6d617Schristos
382*75f6d617Schristos	* src/side.c: unsigned -> unsigned int.
383*75f6d617Schristos
384*75f6d617Schristos	* src/system.h: Don't use alloca or include <alloca.h>.
385*75f6d617Schristos	unsigned -> unsigned int
386*75f6d617Schristos	(EXIT_SUCCESS, EXIT_FAILURE, EXIT_TROUBLE): Define if not defined.
387*75f6d617Schristos	Include signal.h.
388*75f6d617Schristos	(SA_RESTART): Define if not defined.
389*75f6d617Schristos	(SIGCHLD): Likewise.
390*75f6d617Schristos
391*75f6d617Schristos	* src/util.c: 2 -> EXIT_TROUBLE.
392*75f6d617Schristos	Adopt POSIX convention for ENOEXEC and exit status 126.
393*75f6d617Schristos	unsigned -> unsigned int
394*75f6d617Schristos
395*75f6d617Schristos2002-01-24  Paul Eggert  <eggert@twinsun.com>
396*75f6d617Schristos
397*75f6d617Schristos	* NEWS, configure.ac (AC_INIT, AM_INIT_AUTOMAKE): Version 2.7.7.
398*75f6d617Schristos
399*75f6d617Schristos	* intl/plural.c: Regenerate with Bison 1.31.
400*75f6d617Schristos
401*75f6d617Schristos	* ABOUT-NLS, intl/*: Update to Gettext 0.11-pre5++.
402*75f6d617Schristos	* INSTALL: Update to Autoconf 2.52f.
403*75f6d617Schristos
404*75f6d617Schristos	* INSTALLME: New file.
405*75f6d617Schristos	* Makefile.am (EXTRA_DIST): Add config/config.rpath, INSTALLME.
406*75f6d617Schristos	(DISTCLEANFILES): Remove.
407*75f6d617Schristos	* NEWS: Reformat for imminent 2.8 release.
408*75f6d617Schristos	* README: Mention INSTALLME.
409*75f6d617Schristos	* README-alpha: Move most of contents to INSTALLME.
410*75f6d617Schristos	* THANKS: Add Bruno Haible, Jim Meyering, and Eli Zaretskii.
411*75f6d617Schristos
412*75f6d617Schristos	* config: New subdirectory, containing the following files from .:
413*75f6d617Schristos	config.guess, config.sub, depcomp, missing, install-sh, mkinstalldirs.
414*75f6d617Schristos	Move the following files here from doc: texinfo.tex, mdate-sh.
415*75f6d617Schristos	* config/config.guess, config/config.sub, config/texinfo.tex:
416*75f6d617Schristos	Update to latest version from FSF.
417*75f6d617Schristos	* config/config.rpath: New file, from Gettext 0.11-pre5++.
418*75f6d617Schristos
419*75f6d617Schristos	* configure.ac (AC_INIT): Use new 3-arg form.
420*75f6d617Schristos	(AC_CONFIG_SRCDIR): Specify src/diff.c here, not in AC_INIT.
421*75f6d617Schristos	(ALL_LINGUAS): Remove: now in po/LINGUAS as per Gettext 0.11.
422*75f6d617Schristos	(AC_CONFIG_AUX_DIR): New macro invocation.
423*75f6d617Schristos
424*75f6d617Schristos	* lib/Makefile.am (noinst_HEADERS): Add gettext.h.
425*75f6d617Schristos	* lib/gettext.h: New file, from Gettext 0.11-pre5++.
426*75f6d617Schristos	* lib/prepargs.c: Include <string.h>.  Reported by Bruno Haible.
427*75f6d617Schristos
428*75f6d617Schristos	* m4/codeset.m4, m4/gettext.m4, glibc21.m4, iconv.m4, isc-posix.m4,
429*75f6d617Schristos	lcmessage.m4, progtest.m4: Upgrade to Gettext 0.11-pre5++.
430*75f6d617Schristos	* m4/lib-ld.m4, m4/lib-link.m4, m4/lib-prefix.m4: New files, from
431*75f6d617Schristos	Gettext 0.11-pre5++.
432*75f6d617Schristos
433*75f6d617Schristos	* po/LINGUAS: New file.
434*75f6d617Schristos	* po/Makefile.in.in: Upgrade to Gettext 0.11-pre5++.
435*75f6d617Schristos	* po/Makevars, po/Rules-quot, po/boldquot.sed: New files,
436*75f6d617Schristos	from Gettext 0.11-pre5++.
437*75f6d617Schristos
438*75f6d617Schristos	* src/cmp.c (copyright_string): Update to 2002.
439*75f6d617Schristos	* src/diff.c (copyright_string): Likewise.
440*75f6d617Schristos	* src/diff3.c (copyright_string): Likewise.
441*75f6d617Schristos	* src/sdiff.c (copyright_string): Likewise.
442*75f6d617Schristos
443*75f6d617Schristos	* src/cmp.c (bytes, parse_ignore_initial, cmp): Use UINTMAX_MAX
444*75f6d617Schristos	instead of (uintmax_t) -1, to avoid warnings on some compilers.
445*75f6d617Schristos	* src/io.c (file_block_read): Likewise, for SIZE_MAX.
446*75f6d617Schristos
447*75f6d617Schristos	* src/cmp.c (usage): Reformat messages to ease translation.
448*75f6d617Schristos	* src/diff3.c (usage): Likewise.
449*75f6d617Schristos	* src/sdiff.c (usage): Likewise.
450*75f6d617Schristos
451*75f6d617Schristos	* src/diff3.c (main): Remove unused variable.
452*75f6d617Schristos
453*75f6d617Schristos	* src/dir.c: Include <setjmp.h>
454*75f6d617Schristos	(struct dirdata): New member nnames.
455*75f6d617Schristos	(locale_specific_sorting, failed_strcoll): New vars.
456*75f6d617Schristos	(dir_read): Renamed from dir_sort.  Don't sort the dir.
457*75f6d617Schristos	Set new nnames member of struct dirdata.  All callers changed.
458*75f6d617Schristos	(compare_names): Don't check for errno after strcasecmp.
459*75f6d617Schristos	Use strcoll only if locale_specific_sorting is nonzero.
460*75f6d617Schristos	If strcoll fails, longjmp out rather than returning a value
461*75f6d617Schristos	that might result in an invalid comparison function that might
462*75f6d617Schristos	make qsort dump core.
463*75f6d617Schristos	(diff_dirs): Sort the directory ourselves.  Use setjmp to recover
464*75f6d617Schristos	from strcoll failure, falling back on native byte comparison.
465*75f6d617Schristos	Make local variables volatile if they need to preserve their value
466*75f6d617Schristos	after setjmp/longjmp.
467*75f6d617Schristos
468*75f6d617Schristos	* src/sdiff.c (handler_index_of_SIGINT, handler_index_of_SIGPIPE):
469*75f6d617Schristos	New macros.
470*75f6d617Schristos	(main): Do not confuse signal numbers with their indices.
471*75f6d617Schristos	Bug reported by Bruno Haible.
472*75f6d617Schristos	(edit): Cat lin to long before printing with %ld, since lin might
473*75f6d617Schristos	be narrow than long.
474*75f6d617Schristos
475*75f6d617Schristos	* src/system.h (UINTMAX_MAX): New macro.
476*75f6d617Schristos	Include gettext.h, not libgettext.h.
477*75f6d617Schristos	(N_): Do not wrap arg in parentheses.  Fix from Bruno Haible.
478*75f6d617Schristos
479*75f6d617Schristos	* src/util.c (finish_output): Ensure that werrno is initialized.
480*75f6d617Schristos	(lines_differ): Have an explicit do-nothing case for
481*75f6d617Schristos	IGNORE_NO_WHITE_SPACE, to pacify gcc -Wall.
482*75f6d617Schristos
483*75f6d617Schristos2001-12-29  Eli Zaretskii  <eliz@is.elta.co.il>
484*75f6d617Schristos
485*75f6d617Schristos	* src/sdiff.c (interact): After extracting rlen from the editor
486*75f6d617Schristos	command, test for a terminating null character, not for a newline.
487*75f6d617Schristos
488*75f6d617Schristos	* ms/config.bat: Allow longer source directory names without
489*75f6d617Schristos	overflowing the line length limits.  Create the cache in the
490*75f6d617Schristos	build directory, not in the source directory
491*75f6d617Schristos	* ms/config.sed: Fix AC_CONFIG_LINKS for when symlinks are
492*75f6d617Schristos	unavailable.
493*75f6d617Schristos
494*75f6d617Schristos2001-12-23  Paul Eggert  <eggert@twinsun.com>
495*75f6d617Schristos
496*75f6d617Schristos	* NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 2.7.6.
497*75f6d617Schristos
498*75f6d617Schristos	* configure.ac (ALL_LINGUAS): Add tr.
499*75f6d617Schristos
500*75f6d617Schristos	* src/util.c (begin_output):
501*75f6d617Schristos	Have child exit with status 127 rather than reporting
502*75f6d617Schristos	failure on its own.  Set errno to 0 before invoking popen.
503*75f6d617Schristos	(finish_output): Report errno on pclose failure.
504*75f6d617Schristos	Distinguish between subsidiary program not found, and failure.
505*75f6d617Schristos
506*75f6d617Schristos	* src/sdiff.c (not_found, execdiff): Remove.
507*75f6d617Schristos	(DIFF_PROGRAM_OPTION): New constant.
508*75f6d617Schristos	(longopts, option_help_msgid, main): Add --diff-program=PROGRAM.
509*75f6d617Schristos	(check_stdout): New function.
510*75f6d617Schristos	(main): Remove DIFF_PROGRAM.  Check stdout after printing version.
511*75f6d617Schristos	Use check_stdout after printing help.  Use execvp/perror_fatail rather
512*75f6d617Schristos	than execdiff.  Set errno to 0 before invoking popen.
513*75f6d617Schristos	Check for pclose failure properly.
514*75f6d617Schristos	(main, edit): If child exec fails, exit with 127 rather than trying to
515*75f6d617Schristos	print diagnostic.
516*75f6d617Schristos	Distinguish between subsidiary program failing and not being found.
517*75f6d617Schristos	(edit): Handle signals the same way, regardless of whether we're using
518*75f6d617Schristos	system or fork+exec.  Check for system returning -1.
519*75f6d617Schristos
520*75f6d617Schristos	* src/diff3.c (DIFF_PROGRAM_OPTION, HELP_OPTION): New constants.
521*75f6d617Schristos	(longopts, main): Use them.
522*75f6d617Schristos	(longopts, main, option_help_msgid): New option --diff-option=PROGRAM.
523*75f6d617Schristos	(main): Remove DIFF_PROGRAM support.
524*75f6d617Schristos	Check stdout after printing version.
525*75f6d617Schristos	(check_stdout): Report errno info if fclose fails.
526*75f6d617Schristos	(read_diff): Have child exit with status 127 when program is not found,
527*75f6d617Schristos	rather than trying to have the child report failure.  Check for
528*75f6d617Schristos	pclose returning -1.
529*75f6d617Schristos
530*75f6d617Schristos	* src/diff.c (DEFAULT_WIDTH): Remove.
531*75f6d617Schristos	(main): Use 130 instead of DEFAULT_WIDTH, since it's not really
532*75f6d617Schristos	builder-settable.  Do not prepend DIFF_OPTIONS.
533*75f6d617Schristos	(check-stdout): If fclose (stdout) fails, print errno info.
534*75f6d617Schristos	(option_help_msgid): Default context is 3, not 2.
535*75f6d617Schristos	(usage): Work even if ptrdiff_t is wider than int.
536*75f6d617Schristos
537*75f6d617Schristos	* doc/diff.texi (diff Options): Remove DIFF_OPTIONS.
538*75f6d617Schristos	(Invoking diff3, Invoking sdiff): Remove DIFF_PROGRAM.
539*75f6d617Schristos	(diff3 Options, sdiff Options): Add --diff-program.
540*75f6d617Schristos
541*75f6d617Schristos	* src/cmp.c (valid_suffixes):
542*75f6d617Schristos	Add '0', to support suffixes like "MB" and "MiB".
543*75f6d617Schristos	(check_stdout): Don't assume that the translations of "write failed"
544*75f6d617Schristos	and of "standard output" lack '%'.
545*75f6d617Schristos	(main): Check stdout after printing version.
546*75f6d617Schristos
547*75f6d617Schristos	* lib/setmode.c: [HAVE_FCNTL_H && HAVE_SETMODE_DOS]: Include <fcntl.h>.
548*75f6d617Schristos	[!HAVE_SETMODE_DOS]: Do not include <unistd.h>.
549*75f6d617Schristos	(set_binary_mode): Return mode (not 1) if fd is a tty.
550*75f6d617Schristos	Do not assume that O_TEXT is zero.
551*75f6d617Schristos
552*75f6d617Schristos	* doc/diff.texi (cmp Options):
553*75f6d617Schristos	In byte counts, a plain suffix (without any integer)
554*75f6d617Schristos	is assumed to modify the integer 1.  Index terms like "kibibyte".
555*75f6d617Schristos	Document plain "k".
556*75f6d617Schristos
557*75f6d617Schristos	(Reporting Bugs): Mention bug-report archive and test version
558*75f6d617Schristos	location.  Ask for "diff --version" in bug reports.
559*75f6d617Schristos
560*75f6d617Schristos2001-12-13  Paul Eggert  <eggert@twinsun.com>
561*75f6d617Schristos
562*75f6d617Schristos	* src/diff.c (DEFAULT_WIDTH): Remove; couldn't be changed without
563*75f6d617Schristos	also changing option_help_msgid.  All uses replaced with 130.
564*75f6d617Schristos
565*75f6d617Schristos	* lib/setmode.c: Include fcntl.h and unistd.h only if
566*75f6d617Schristos	HAVE_SETMODE_DOS.
567*75f6d617Schristos	(setmode): Assume a file is binary unless the mode is O_TEXT.
568*75f6d617Schristos	* ms/README: Fix minor typos.
569*75f6d617Schristos
570*75f6d617Schristos2001-12-13  Eli Zaretskii  <eliz@is.elta.co.il>
571*75f6d617Schristos
572*75f6d617Schristos	* ms/README: New file.
573*75f6d617Schristos
574*75f6d617Schristos	* lib/setmode.c (set_binary_mode) [HAVE_SETMODE_DOS]: Don't assume
575*75f6d617Schristos	O_TEXT has a zero value.  If FD is a terminal device, do nothing
576*75f6d617Schristos	and return MODE, thus pretending that it was already in the
577*75f6d617Schristos	requested MODE.
578*75f6d617Schristos	[HAVE_FCNTL_H]: Include fcntl.h (needed for O_BINARY).
579*75f6d617Schristos
580*75f6d617Schristos	* ms/config.sed: Remove the split prevention of config.status.
581*75f6d617Schristos	Fix Sed commands for converting absolute file names into
582*75f6d617Schristos	top_srcdir-relative ones.
583*75f6d617Schristos
584*75f6d617Schristos	* ms/config.bat: Fix typos.
585*75f6d617Schristos
586*75f6d617Schristos2001-12-12  Neal H Walfield  <neal@cs.uml.edu>
587*75f6d617Schristos
588*75f6d617Schristos	* diff.c (option_help_msgid): Correct the default context width
589*75f6d617Schristos	from 2 to 3.
590*75f6d617Schristos
591*75f6d617Schristos2001-12-11  Paul Eggert  <eggert@twinsun.com>
592*75f6d617Schristos
593*75f6d617Schristos	* m4/Makefile.am.in: Remove jm-glibc-io.m4
594*75f6d617Schristos
595*75f6d617Schristos	* NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 2.7.5.
596*75f6d617Schristos
597*75f6d617Schristos	* configure.ac (PR_PROGRAM): Use AC_DEFINE_UNQUOTED, so that
598*75f6d617Schristos	$PR_PROGRAM is expanded by sh.
599*75f6d617Schristos	(ptrdiff_t, ssize_t): Use AC_CHECK_TYPE with a default of int,
600*75f6d617Schristos	not AC_CHECK_TYPES.
601*75f6d617Schristos	(jm_AC_DOS, AC_FUNC_SETMODE_DOS): New macros.
602*75f6d617Schristos	(AC_CONFIG_FILES): Add ms/Makefile.
603*75f6d617Schristos
604*75f6d617Schristos	* doc/diff.texi: Add --no-ignore-file-name-case.
605*75f6d617Schristos	File name case sensitivity now affects file name exclusion.
606*75f6d617Schristos	Fix typos.
607*75f6d617Schristos
608*75f6d617Schristos	* src/util.c: Include dirname.h.
609*75f6d617Schristos	(dir_file_pathname): Use base_name rather than file_name_lastdirchar.
610*75f6d617Schristos
611*75f6d617Schristos	* src/system.h (S_IXUSR, S_IXGRP, S_IXOTH): New macros.
612*75f6d617Schristos	Include <libgettext.h> rather than rolling it ourselves.
613*75f6d617Schristos	(file_name_lastdirchar, HAVE_SETMODE, set_binary_mode): Remove.
614*75f6d617Schristos
615*75f6d617Schristos	* src/sdiff.c: Include <dirname.h>.
616*75f6d617Schristos	(expand_name): Use base_name rather than file_name_lastdirchar, for
617*75f6d617Schristos	portability to DOS.
618*75f6d617Schristos	(main): Initialize xalloc_exit_failure before possibly invoking
619*75f6d617Schristos	any memory allocator.
620*75f6d617Schristos
621*75f6d617Schristos	* src/io.c: Include setmode.h.
622*75f6d617Schristos
623*75f6d617Schristos	* src/diff3.c (main):
624*75f6d617Schristos	Initialize xalloc_exit_failure before possibly invoking any memory
625*75f6d617Schristos	allocator.
626*75f6d617Schristos
627*75f6d617Schristos	* src/diff.c: Include dirname.h, setmode.h.
628*75f6d617Schristos
629*75f6d617Schristos	(main): Later values and/or styles now silently override earlier.
630*75f6d617Schristos	(specify_value, specify_style): Likewise.  All callers changed.
631*75f6d617Schristos	Remove.
632*75f6d617Schristos	(binary, main, option_help_msgid, compare_files):
633*75f6d617Schristos	HAVE_SETMODE -> HAVE_SETMODE_DOS.
634*75f6d617Schristos	(NO_IGNORE_FILE_NAME_CASE_OPTION): New constant.
635*75f6d617Schristos	(longopts, main, option_help_msgid): Support it.
636*75f6d617Schristos	(exclude_options): New function.
637*75f6d617Schristos	(main): Use it. Initialize xalloc_exit_failure before potentially
638*75f6d617Schristos	allocating memory.
639*75f6d617Schristos
640*75f6d617Schristos	(filetype): Distinguish executable files from others, as POSIX
641*75f6d617Schristos	suggests.
642*75f6d617Schristos
643*75f6d617Schristos	(compare_files): Use base_name instead of file_name_lastdirchar.
644*75f6d617Schristos
645*75f6d617Schristos	* src/cmp.c: Include <hard-locale.h>, <setmode.h>.
646*75f6d617Schristos	(hard_locale_LC_MESSAGES): New macro.
647*75f6d617Schristos	(sprintc): Remove int width arg; it's now the caller's responsibility
648*75f6d617Schristos	to pad.  All callers changed.
649*75f6d617Schristos	(stat_buf): New static var; was formerly a local var in 'main'.
650*75f6d617Schristos	(valid_suffixes): Add 'K', for 'KiB'.
651*75f6d617Schristos	(option_help_msgid): Don't confuse bytes with characters.
652*75f6d617Schristos	(main): Set xalloc_exit_failure before invoking anything that might
653*75f6d617Schristos	allocate memory.  Fix bug: -n was incorrectly ignored when optimizing
654*75f6d617Schristos	the case of regular files with different lengths.
655*75f6d617Schristos	(cmp): Use an index column wide enough to store this comparison's
656*75f6d617Schristos	indexes.  In locales other than the POSIX locale, say "byte"
657*75f6d617Schristos	rather than "char".
658*75f6d617Schristos
659*75f6d617Schristos	* ms/config.bat: pc -> ms
660*75f6d617Schristos
661*75f6d617Schristos	* ms/Makefile.am, m4/setmode.m4, lib/setmode.c, lib/setmode.h:
662*75f6d617Schristos	New file.
663*75f6d617Schristos
664*75f6d617Schristos	* lib/Makefile.am (noinst_HEADERS): Add dirname.h, setmode.h.
665*75f6d617Schristos	(libdiffutils_a_SOURCES): Add basename.c, setmode.c.
666*75f6d617Schristos
667*75f6d617Schristos	* Makefile.am (SUBDIRS): Add ms.
668*75f6d617Schristos
669*75f6d617Schristos2001-12-10  Paul Eggert  <eggert@twinsun.com>
670*75f6d617Schristos
671*75f6d617Schristos	* m4/fnmatch.m4: Test for FNM_CASEFOLD.
672*75f6d617Schristos
673*75f6d617Schristos2001-12-03  Paul Eggert  <eggert@twinsun.com>
674*75f6d617Schristos
675*75f6d617Schristos	* lib/posix/regex.h: Fix copyright notice.
676*75f6d617Schristos
677*75f6d617Schristos2001-12-03  Paul Eggert  <eggert@twinsun.com>
678*75f6d617Schristos
679*75f6d617Schristos	* NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 2.7.4.
680*75f6d617Schristos
681*75f6d617Schristos	* diff.texi (direntry, Overview, Comparison, Binary, Invoking cmp):
682*75f6d617Schristos	Use "byte" rather than "character" when talking about cmp, since
683*75f6d617Schristos	it compares bytes, not character.
684*75f6d617Schristos	(Invoking cmp): New trailing operands FROM-SKIP and TO-SKIP.
685*75f6d617Schristos	-i or --ignore-initial now accepts FROM-SKIP:TO-SKIP.
686*75f6d617Schristos	New option -n or --bytes.
687*75f6d617Schristos	Count operands now may be in octal or hex, and may be followed by a
688*75f6d617Schristos	size multiplier.
689*75f6d617Schristos
690*75f6d617Schristos	* configure.ac (DEFAULT_DIFF_PROGRAM):
691*75f6d617Schristos	Define to "diff", not "$bindir/diff" (which didn't work anyway).
692*75f6d617Schristos	(AC_CHECK_MEMBERS): Add struct stat.st_blksize, struct stat.st_rdev.
693*75f6d617Schristos	(AC_STRUCT_ST_BLKSIZE, AC_STRUCT_ST_RDEV): Remove; obsolescent.
694*75f6d617Schristos	(AC_FUNC_FORK): Use this, instead of obsolescent AC_FUNC_VFORK.
695*75f6d617Schristos	(AC_CONFIG_FILES, AC_CONFIG_COMMANDS): Add.
696*75f6d617Schristos	(AC_OUTPUT): Remove args; they were obsolescent.
697*75f6d617Schristos
698*75f6d617Schristos	* util.c (setup_output, begin_output, finish_output):
699*75f6d617Schristos	HAVE_FORK -> HAVE_WORKING_FORK || HAVE_WORKING_VFORK.
700*75f6d617Schristos	* sdiff.c (diffpid, cleanup, main, edit): Likewise.
701*75f6d617Schristos	* diff3.c (read_diff): Likewise.
702*75f6d617Schristos
703*75f6d617Schristos	* system.h (STAT_BLOCKSIZE):
704*75f6d617Schristos	Use HAVE_STRUCT_STAT_ST_BLKSIZE, not HAVE_ST_BLKSIZE.
705*75f6d617Schristos	(vfork): New macro.
706*75f6d617Schristos	(HAVE_FORK): Remove.
707*75f6d617Schristos	(set_binary_mode): New macro.
708*75f6d617Schristos
709*75f6d617Schristos	* sdiff.c (main): HAVE_VFORK -> HAVE_WORKING_VFORK.
710*75f6d617Schristos	(edit): Reopen the temporary file after the editor has run, in case
711*75f6d617Schristos	the editor operates by unlinking the old file and linking a new one.
712*75f6d617Schristos	(P_tmpdir): Rename from PVT_tmpdir; this fixes a typo.
713*75f6d617Schristos	All uses changed.
714*75f6d617Schristos
715*75f6d617Schristos	* io.c (sip, read_files):
716*75f6d617Schristos	Remove tests for HAVE_SETMODE; use set_binary_mode
717*75f6d617Schristos	instead of setmode.
718*75f6d617Schristos	(sip): Fix typo in backward lseek when reverting to text mode.
719*75f6d617Schristos
720*75f6d617Schristos	* config.site, config.sed, config.bat: New file.
721*75f6d617Schristos
722*75f6d617Schristos	* Makefile.am (EXTRA_DIST): Add xstrtol.c.
723*75f6d617Schristos	(noinst_HEADERS): Add xstrtol.h.
724*75f6d617Schristos	(libdiffutils_a_SOURCES): Add xstrtoumax.c.
725*75f6d617Schristos
726*75f6d617Schristos	* cmp.c: <xstrtol.h>: Include.
727*75f6d617Schristos	(ignore_initial): Now an array with 2 elements.  All uses changed.
728*75f6d617Schristos	(bytes): New var.
729*75f6d617Schristos	(HELP_OPTION): New constant.
730*75f6d617Schristos	(long_options, main): Use it.
731*75f6d617Schristos	(long_options, option_help_msgid, main, cmp):
732*75f6d617Schristos	Add support for -n or --bytes.
733*75f6d617Schristos	(parse_ignore_initial): New function.
734*75f6d617Schristos	(option_help_msgid, main): Add -i M:N.
735*75f6d617Schristos	(usage, main): Add two optional trailing operands, a la BSD.
736*75f6d617Schristos	(main): setmode -> set_binary_mode.
737*75f6d617Schristos	(cmp): Report byte number of what we've seen, not of the entire file.
738*75f6d617Schristos	This is to be consistent with the line number, which is always relative
739*75f6d617Schristos	with what we've seen.
740*75f6d617Schristos
741*75f6d617Schristos2001-12-02  Paul Eggert  <eggert@twinsun.com>
742*75f6d617Schristos
743*75f6d617Schristos	* diff.c (main, compare_files): setmode -> set_binary_mode.
744*75f6d617Schristos
745*75f6d617Schristos	* xstrtol.c (__xstrtol): Don't accept 'Ki'; require 'KiB'.
746*75f6d617Schristos
747*75f6d617Schristos	* xstrtol.c (__xstrtol): Add support for IEC 60027-2.
748*75f6d617Schristos
749*75f6d617Schristos2001-11-25  Paul Eggert  <eggert@twinsun.com>
750*75f6d617Schristos
751*75f6d617Schristos	* NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 2.7.3.
752*75f6d617Schristos
753*75f6d617Schristos	* README-alpha: New file.
754*75f6d617Schristos
755*75f6d617Schristos	* src/Makefile.am (INCLUDES): Add -I../lib, for regex.h.
756*75f6d617Schristos
757*75f6d617Schristos	* configure.ac:
758*75f6d617Schristos	Don't set LIB_CLOCK_GETTIME to 'none required'; set it to
759*75f6d617Schristos	the empty string instead.
760*75f6d617Schristos
761*75f6d617Schristos	* lib/Makefile.am (EXTRA_DIST): Add strtoimax.c, strtol.c.
762*75f6d617Schristos
763*75f6d617Schristos	* Makefile.am (SUBDIRS): Put intl before lib, so that libintl.h exists.
764*75f6d617Schristos
765*75f6d617Schristos	* lib/Makefile.am (noinst_HEADERS): Add unlocked-io.h.
766*75f6d617Schristos
767*75f6d617Schristos	* configure.ac (__EXTENSIONS__): New define, for the unlocked macros.
768*75f6d617Schristos
769*75f6d617Schristos	* README: Add copyright notice.
770*75f6d617Schristos	Remove stuff that doesn't apply any more.
771*75f6d617Schristos
772*75f6d617Schristos	* doc/diff.texi: offsets -> indices for cmp
773*75f6d617Schristos
774*75f6d617Schristos	* src/cmp.c (option_help_msgid): offsets -> indices
775*75f6d617Schristos
776*75f6d617Schristos	* src/diff.c (option_help_msgid):
777*75f6d617Schristos	Don't mention --binary on POSIX hosts.
778*75f6d617Schristos
779*75f6d617Schristos	* src/sdiff.c (STRIP_TRAILING_CR_OPTION): New constant.
780*75f6d617Schristos	(longopts, option_help_msgid, main): Add -E, --ignore-tab-expansion,
781*75f6d617Schristos	--strip-trailing-cr.
782*75f6d617Schristos
783*75f6d617Schristos	* doc/diff.texi: Change direcategory from Utilities to GNU Packages.
784*75f6d617Schristos	Add individual utilities.
785*75f6d617Schristos	Switch to Free Documentation License.
786*75f6d617Schristos	@code -> @command
787*75f6d617Schristos	@samp -> @option
788*75f6d617Schristos	GNU -> @sc{gnu}
789*75f6d617Schristos	Expand tabs to spaces, except when in an example that actually
790*75f6d617Schristos	uses tabs.
791*75f6d617Schristos	Prefer @node with just one arg.
792*75f6d617Schristos	Document -E or --ignore-tab-expansion, --strip-trailing-cr,
793*75f6d617Schristos	--ignore-file-name-case.
794*75f6d617Schristos	Regular expressions are now grep style, not Emacs style.
795*75f6d617Schristos	cmp's -c or --print-chars option is now -b or --print-bytes.
796*75f6d617Schristos	Time stamps now depend on LC_TIME.
797*75f6d617Schristos	-p now implies ^[[:alpha:]$_].
798*75f6d617Schristos	Flags now include ' and 0.
799*75f6d617Schristos	cmp -i is an alias for --ignore-initial
800*75f6d617Schristos	Document --from-file, --to-file.
801*75f6d617Schristos	Document DIFF_OPTIONS.
802*75f6d617Schristos
803*75f6d617Schristos	* configure.ac (AC_CHECK_FUNCS): Add gettimeofday, clock_gettime.
804*75f6d617Schristos	(LIB_CLOCK_GETTIME): New subst.
805*75f6d617Schristos
806*75f6d617Schristos	* src/system.h: Assume C89 or better.
807*75f6d617Schristos	(_GNU_SOURCE): Remove; config.h now defines it.
808*75f6d617Schristos	(alloca): Declare like coreutils does it.
809*75f6d617Schristos	(verify, TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM, O_RDWR,
810*75f6d617Schristos	S_IRUSR, S_IWUSR): New macros.
811*75f6d617Schristos	(STAT_BLOCKSIZE): Parenthesize definiens.
812*75f6d617Schristos	<inttypes.h>: Include if HAVE_INTTYPES_H.
813*75f6d617Schristos	(CHAR_MAX, INT_MAX): Remove.
814*75f6d617Schristos	(PTRDIFF_MAX, SIZE_MAX): New macros.
815*75f6d617Schristos	(strtoumax): New decl.
816*75f6d617Schristos	Include stddef.h.
817*75f6d617Schristos	(bzero): Remove.
818*75f6d617Schristos	(bindtextdomain, textdomain, N_): New macros.
819*75f6d617Schristos	(ISPRINT, ISSPACE): Remove ifndef wrappers.
820*75f6d617Schristos	(ISUPPER, ISDIGIT): Remove.
821*75f6d617Schristos	(TOLOWER): New macro.
822*75f6d617Schristos	(MIN): Renamed from min; all callers changed.
823*75f6d617Schristos	(MAX): Likewise, from max.
824*75f6d617Schristos	(lin): New type.
825*75f6d617Schristos	(LIN_MAX): New macro.
826*75f6d617Schristos	(file_name_cmp): Renamed from filename_cmp.  All callers changed.
827*75f6d617Schristos	(file_name_lastdirchar): Renamed from file_name_lastdirchar.
828*75f6d617Schristos	All callers changed.
829*75f6d617Schristos	(could_be_mvfs_stat_bug, could_be_nfs_stat_bug,
830*75f6d617Schristos	dev_may_have_duplicate_ino): Remove.
831*75f6d617Schristos	(HAVE_SETMODE, NULL_DEVICE): New macros.
832*75f6d617Schristos	(same_file): Do not check attributes.
833*75f6d617Schristos	(same_file_attributes): New macro.
834*75f6d617Schristos
835*75f6d617Schristos	* src/util.c: Assume C89 or better.
836*75f6d617Schristos	int -> bool for booleans.
837*75f6d617Schristos	int -> lin for line numbers.
838*75f6d617Schristos	int -> size_t for sizes.
839*75f6d617Schristos	Use angle-brackets when including quotesys.h.
840*75f6d617Schristos	Include error.h, regex.h, xalloc.h.
841*75f6d617Schristos	(message5): sizeof -> offsetof
842*75f6d617Schristos	(begin_output): Invoke pr without -f.
843*75f6d617Schristos	(lines_differ): Renamed from line_cmp, and return bool not 3-way int.
844*75f6d617Schristos	All callers changed.
845*75f6d617Schristos	Add support for IGNORE_TAB_EXPANSION.
846*75f6d617Schristos	(change_letter): Now an array rather than a function.  All
847*75f6d617Schristos	callers changed.
848*75f6d617Schristos	(translate_range): Translate line numbers to long, not lin,
849*75f6d617Schristos	for convenience with printf.
850*75f6d617Schristos	(analyze_hunk): Return enum changes instead of a count of
851*75f6d617Schristos	inserts and deletes.  All callers changed.
852*75f6d617Schristos	(zalloc): New function.
853*75f6d617Schristos
854*75f6d617Schristos	* src/side.c: Assume C89 or better.
855*75f6d617Schristos	int -> bool for booleans.
856*75f6d617Schristos	int -> lin for line numbers.
857*75f6d617Schristos
858*75f6d617Schristos	* src/sdiff.c: Assume C89 or better.
859*75f6d617Schristos	int -> bool for booleans.
860*75f6d617Schristos	int -> lin for line numbers.
861*75f6d617Schristos	Use angle-brackets when including getopt.h, quotesys.h.
862*75f6d617Schristos	Include error.h, freesoft.h, stdio.h, xalloc.h.
863*75f6d617Schristos	(copyright_string): Use only most recent year.
864*75f6d617Schristos	(authorship_msgid, option_help_msgid): Wrap in N_().
865*75f6d617Schristos
866*75f6d617Schristos	(tmpname): Now volatile.
867*75f6d617Schristos	(tmpmade): Remove.
868*75f6d617Schristos	(tmp): New var.
869*75f6d617Schristos	(private_tempnam, exists, letters): Remove.
870*75f6d617Schristos	(temporary_file): New function.
871*75f6d617Schristos	(edit): Use it.
872*75f6d617Schristos	(interact): Use strtoumax, not atoi.
873*75f6d617Schristos
874*75f6d617Schristos	* src/normal.c: Assume C89 or better.
875*75f6d617Schristos	int -> lin for line numbers.
876*75f6d617Schristos
877*75f6d617Schristos	* src/io.c: Assume C89 or better.
878*75f6d617Schristos	int -> bool for booleans.
879*75f6d617Schristos	int -> lin for line numbers.
880*75f6d617Schristos	int -> size_t for sizes.
881*75f6d617Schristos	Use angle-brackets when including cmpbuf.h.
882*75f6d617Schristos	Include regex.h, xalloc.h.
883*75f6d617Schristos	(word): Remove; now done in system.h.
884*75f6d617Schristos	(hash_value): New type; use it instead of 'unsigned' for hash values.
885*75f6d617Schristos	(file_block_read): New function.
886*75f6d617Schristos	(sip, slurp): Use it.  Now static.
887*75f6d617Schristos	(sip): Ensure block size is a multiple of word size.  Clear eof flag.
888*75f6d617Schristos	(slurp): Use xalloc_die to report memory exhaustion.
889*75f6d617Schristos	(find_and_hash_each_line): Use TOLOWER instead of _tolower.
890*75f6d617Schristos	Add support for IGNORE_TAB_EXPANSION.
891*75f6d617Schristos	(prepare_text_end): Strip trailing CR if requested.
892*75f6d617Schristos	(find_identical_ends): Prepare the text only once,
893*75f6d617Schristos	if they're duplicates.
894*75f6d617Schristos	Let the compiler take advantage more of the fact that the buffers are
895*75f6d617Schristos	word-aligned.
896*75f6d617Schristos	(primes): Remove.
897*75f6d617Schristos	(prime_offset): New var.
898*75f6d617Schristos	(read_var): Use prime_offset instead of primes.
899*75f6d617Schristos	Use zalloc instead of xmalloc + bzero.
900*75f6d617Schristos
901*75f6d617Schristos	* src/ifdef.c: Assume C89 or better.
902*75f6d617Schristos	int -> lin for line numbers.
903*75f6d617Schristos	(format_group): Use strtoumax to parse line numbers.
904*75f6d617Schristos	(format_group, print_ifdef_lines): Use do_printf_spec to
905*75f6d617Schristos	handle printf specs.
906*75f6d617Schristos	(groups_letter_value): Don't use _tolower; it's locale-dependent.
907*75f6d617Schristos	(do_printf_spec): Renamed from scan_printf_spec; now does the printing.
908*75f6d617Schristos
909*75f6d617Schristos	* src/ed.c: Assume C89 or better.
910*75f6d617Schristos	int -> lin for line numbers (or 'long' when that's more convenient).
911*75f6d617Schristos	(print_ed_hunk): Fix bug when handling double-dot inserts.
912*75f6d617Schristos
913*75f6d617Schristos	* src/dir.c: Assume C89 or better.
914*75f6d617Schristos	int -> bool for booleans.
915*75f6d617Schristos	Include error.h, exclude.h, xalloc.h.
916*75f6d617Schristos
917*75f6d617Schristos	(dir_sort): Return 0 on error, 1 on success.  All callers changed.
918*75f6d617Schristos	compare_names -> compare_names_for_qsort.
919*75f6d617Schristos
920*75f6d617Schristos	(compare_names): Try strcasecmp if ignore_file_name_case.  Then try
921*75f6d617Schristos	strcoll.  Use file_name_cmp only as a last resort.  Warn about
922*75f6d617Schristos	strcasecmp or strcoll failure.
923*75f6d617Schristos	(compare_names_for_qsort): New function.
924*75f6d617Schristos
925*75f6d617Schristos	(diff_dirs): Use compare_names rather than filename_cmp.
926*75f6d617Schristos
927*75f6d617Schristos	* src/diff3.c: Assume C89 or better.
928*75f6d617Schristos	int -> bool for booleans.
929*75f6d617Schristos	int -> lin for line numbers.
930*75f6d617Schristos	Use angle-brackets when including getopt.h, quotesys.h.
931*75f6d617Schristos	Include error.h, freesoft.h, inttostr.h, xalloc.h.
932*75f6d617Schristos	(copyright_string): Use only most recent year.
933*75f6d617Schristos	(authorship_msgid, option_help_msgid): Wrap in N_().
934*75f6d617Schristos
935*75f6d617Schristos	Rename the following variables for consistency with user-visible
936*75f6d617Schristos	option spellings.  All uses changed.
937*75f6d617Schristos	(text): Renamed from always_text.
938*75f6d617Schristos	(initial_tab): Renamed from tab_align_flag.
939*75f6d617Schristos
940*75f6d617Schristos	(horizon_lines): Remove.  Remove all uses.
941*75f6d617Schristos
942*75f6d617Schristos	(main): Invoke bindtextdomain and textdomain after setlocale.
943*75f6d617Schristos	Rename "DIFF" to "DIFF_PROGRAM".
944*75f6d617Schristos
945*75f6d617Schristos	Try to compare file0 to file1, because this is where changes are
946*75f6d617Schristos	expected to come from.  Diffing between these pairs of files is more
947*75f6d617Schristos	likely to avoid phantom changes from file0 to file1.
948*75f6d617Schristos	However, use file2 as the common file if this is a 3-way diff,
949*75f6d617Schristos	for backward compatibility.  Suggested by Karl Tomlinson.
950*75f6d617Schristos
951*75f6d617Schristos	(create_diff3_block): Use xcalloc instead of malloc + bzero.
952*75f6d617Schristos
953*75f6d617Schristos	(INT_STRLEN_BOUND): Remove; now in system.h.
954*75f6d617Schristos
955*75f6d617Schristos	(read_diff): Always use --horizon-lines=100 rather than trying
956*75f6d617Schristos	to guess it.
957*75f6d617Schristos	Do not pass --inhibit-hunk-merge.
958*75f6d617Schristos	Minimum chunk size is 1, not 8KiB.
959*75f6d617Schristos	Use xalloc_die to report memory exhaustion.
960*75f6d617Schristos	(undotlines): Use long for start, not int.
961*75f6d617Schristos
962*75f6d617Schristos	* src/diff.h: Assume C89 or better.
963*75f6d617Schristos	int -> bool for booleans.
964*75f6d617Schristos	int -> lin for line numbers.
965*75f6d617Schristos	Don't include regex.h.
966*75f6d617Schristos	(enum changes): New enum.
967*75f6d617Schristos	(enum line_class): Remove; subsumed by enum changes.
968*75f6d617Schristos	(enum output_style): New constant OUTPUT_UNSPECIFIED.
969*75f6d617Schristos
970*75f6d617Schristos	(ignore_space_change_flag, ignore_all_space_flag): Remove.
971*75f6d617Schristos	(ignore_white_space): New decl, subsuming the above two.  All
972*75f6d617Schristos	uses changed.
973*75f6d617Schristos
974*75f6d617Schristos	Rename the following decls for consistency with user-visible
975*75f6d617Schristos	option spellings.  All uses changed.
976*75f6d617Schristos	(text): Renamed from always_text_flag.
977*75f6d617Schristos	(ignore_blank_lines): Renamed from ignore_blank_lines_flag.
978*75f6d617Schristos	(ignore_case): Renamed from ignore_case_flag.
979*75f6d617Schristos	(brief): Renamed from no_details_flag.
980*75f6d617Schristos	(initial_tab): Renamed from tab_align_flag.
981*75f6d617Schristos	(expand_tabs): Renamed from tab_expand_flag.
982*75f6d617Schristos	(starting_file): Renamed from dir_start_file.
983*75f6d617Schristos	(paginate): Renamed from paginate_flag.
984*75f6d617Schristos	(sdiff_merge_assist): Renamed from sdiff_help_sdiff.
985*75f6d617Schristos	(left_column): Renamed from sdiff_left_only.
986*75f6d617Schristos	(suppress_common_lines): Renamed from sdiff_skip_common_lines.
987*75f6d617Schristos	(speed_large_files): Renamed from heuristic.
988*75f6d617Schristos	(minimal): Renamed from no_discards.
989*75f6d617Schristos
990*75f6d617Schristos	(inhibit_hunk_merge): Remove.
991*75f6d617Schristos
992*75f6d617Schristos	(strip_trailing_cr, excluded, time_format): New decls.
993*75f6d617Schristos
994*75f6d617Schristos	(files_can_be_treated_as_binary): Renamed from ignore_some_changes.
995*75f6d617Schristos
996*75f6d617Schristos	(group_format, line_format): Now char const *[], not char *[].
997*75f6d617Schristos
998*75f6d617Schristos	(struct file_data): Buffer is now word*, not char*, as it's always
999*75f6d617Schristos	aligned and this can help the compiler.  buffered_chars -> buffered
1000*75f6d617Schristos	(since it's a byte count, not a char count).  All uses changed.
1001*75f6d617Schristos	New member `eof'.
1002*75f6d617Schristos
1003*75f6d617Schristos	(FILE_BUFFER): New macro.
1004*75f6d617Schristos
1005*75f6d617Schristos	(excluded_filename, error, free_software_msgid): Remove decls; now in
1006*75f6d617Schristos	other .h files.
1007*75f6d617Schristos
1008*75f6d617Schristos	(sip, slurp): Remove decls.
1009*75f6d617Schristos	(file_block_read): New decl.
1010*75f6d617Schristos	(change_letter): Now an array, not a function.
1011*75f6d617Schristos	(lines_differ): Renamed from line_cmp.
1012*75f6d617Schristos	(analyze_hunk): Now returns enum changes rather than two change counts.
1013*75f6d617Schristos
1014*75f6d617Schristos	* src/Makefile.am (diff_LDADD): New symbol.
1015*75f6d617Schristos
1016*75f6d617Schristos	* src/diff.c: Assume C89 or better.
1017*75f6d617Schristos	int -> bool for booleans.
1018*75f6d617Schristos	long -> off_t for line numbers.
1019*75f6d617Schristos	Use angle-brackets when including getopt.h, fnmatch.h, quotesys.h.
1020*75f6d617Schristos	Include error.h, exclude.h, freesoft.h, hard-locale.h, prepargs.h,
1021*75f6d617Schristos	regex.h, signal.h, xalloc.h.
1022*75f6d617Schristos	(copyright_string): Use only most recent year.
1023*75f6d617Schristos	(authorship_msgid, option_help_msgid): Wrap in N_().
1024*75f6d617Schristos
1025*75f6d617Schristos	Rename the following variables for consistency with user-visible
1026*75f6d617Schristos	option spellings.  All uses changed.
1027*75f6d617Schristos	(binary): Renamed from binary_flag.
1028*75f6d617Schristos	(new_file): Renamed from entire_new_file_flag.
1029*75f6d617Schristos	(unidirectional_new_file): Renamed from unidirectional_new_file_flag.
1030*75f6d617Schristos	(report_identical_files): Renamed from print_file_same_flag.
1031*75f6d617Schristos
1032*75f6d617Schristos	(numeric_arg): Remove.
1033*75f6d617Schristos
1034*75f6d617Schristos	(exclude, exclude_alloc, exclude_count, excluded_filename, add_exclude,
1035*75f6d617Schristos	add_exclude_file):
1036*75f6d617Schristos	Remove; now done by exclude.h.
1037*75f6d617Schristos
1038*75f6d617Schristos	(BINARY_OPTION, FROM_FILE_OPTION, HELP_OPTION, HORIZON_LINES_OPTION,
1039*75f6d617Schristos	IGNORE_FILE_NAME_CASE_OPTION, INHIBIT_HUNK_MERGE_OPTION,
1040*75f6d617Schristos	LEFT_COLUMN_OPTION, LINE_FORMAT_OPTION, NORMAL_OPTION,
1041*75f6d617Schristos	SDIFF_MERGE_ASSIST_OPTION, STRIP_TRAILING_CR_OPTION,
1042*75f6d617Schristos	SUPPRESS_COMMON_LINES_OPTION, TO_FILE_OPTION,
1043*75f6d617Schristos	UNCHANGED_LINE_FORMAT_OPTION, OLD_LINE_FORMAT_OPTION,
1044*75f6d617Schristos	NEW_LINE_FORMAT_OPTION, UNCHANGED_GROUP_FORMAT_OPTION,
1045*75f6d617Schristos	OLD_GROUP_FORMAT_OPTION, NEW_GROUP_FORMAT_OPTION,
1046*75f6d617Schristos	CHANGED_GROUP_FORMAT_OPTION): New constants.
1047*75f6d617Schristos	(longopts, main): Use them.
1048*75f6d617Schristos
1049*75f6d617Schristos	(longopts, main, option_help_msgid): Add -E, --from-file, --to-file.
1050*75f6d617Schristos
1051*75f6d617Schristos	(main): Invoke bindtextdomain and textdomain after setlocale.
1052*75f6d617Schristos	Use grep syntax, not Emacs, for regular expressions.
1053*75f6d617Schristos	Use exclude.h, not our own functions.
1054*75f6d617Schristos	Use ISO 8601 time format in hard locales.
1055*75f6d617Schristos	Prepend DIFF_OPTIONS.
1056*75f6d617Schristos	Don't update ignore_some_changes.
1057*75f6d617Schristos	Use strtoumax instead of numeric_arg.
1058*75f6d617Schristos	Use specify_value when appropriate.
1059*75f6d617Schristos	error -> try_help when appropriate.
1060*75f6d617Schristos	-p now means ^[[:alpha:]$_], not ^[_a-zA-Z$].
1061*75f6d617Schristos	Ignore --inhibit-hunk-merge.
1062*75f6d617Schristos	Prefer changed group formats to unchanged ones.
1063*75f6d617Schristos	Remove now-unnecessary casts.
1064*75f6d617Schristos	Set files_can_be_treated_as_binary.
1065*75f6d617Schristos
1066*75f6d617Schristos	(specify_value): Renamed from specify_format.  All uses changed.
1067*75f6d617Schristos
1068*75f6d617Schristos	(specify_style): Default is now unspecified, not normal.  All
1069*75f6d617Schristos	uses changed.
1070*75f6d617Schristos
1071*75f6d617Schristos	(set_mtime_to_now): New function.
1072*75f6d617Schristos	(compare_files): Use it.  Use memset, not bzero.
1073*75f6d617Schristos	Set stdin mtime to current time even when stdin is not a regular file.
1074*75f6d617Schristos	Check for same file attributes, as well as for same file.
1075*75f6d617Schristos	Use files_can_be_treated_as_binary.
1076*75f6d617Schristos	"write failed" -> "standard output on output failure.
1077*75f6d617Schristos
1078*75f6d617Schristos	* src/context.c: Assume C89 or better.
1079*75f6d617Schristos	int -> lin for line numbers.
1080*75f6d617Schristos	Include inttostr.h, regex.h.
1081*75f6d617Schristos	(TIMESPEC_NS): New macro.
1082*75f6d617Schristos	(nstrftime): New decl.
1083*75f6d617Schristos	(print_context_label): Use nstrftime and time_format to format times.
1084*75f6d617Schristos	Print numeric time stamp value if localtime fails.
1085*75f6d617Schristos	(print_context_function): New function.
1086*75f6d617Schristos	(pr_context_hunk, pr_unidiff_hunk): Use it.
1087*75f6d617Schristos	(find_function): Use size_t for sizes, not int.
1088*75f6d617Schristos
1089*75f6d617Schristos	* src/cmp.c: Assume C89 or better.
1090*75f6d617Schristos	int -> bool for booleans.
1091*75f6d617Schristos	long -> off_t for line numbers.
1092*75f6d617Schristos	Use angle-brackets when including cmpbuf.h, getopt.h.
1093*75f6d617Schristos	Include error.h, freesoft.h, inttostr.h, xalloc.h.
1094*75f6d617Schristos	(copyright_string): Use only most recent year.
1095*75f6d617Schristos	(authorship_msgid): Wrap in N_().
1096*75f6d617Schristos	(buffer): Now word*, not char*.  All uses changed.
1097*75f6d617Schristos	(word): Remove macro; now in system.h.
1098*75f6d617Schristos	(long_options, option_help_msgid, main): -c --print-chars ->
1099*75f6d617Schristos	-b --print-bytes
1100*75f6d617Schristos	(check_stdout): "write failed" -> "standard output"
1101*75f6d617Schristos	(option_help_msgid): Wrap in N_().
1102*75f6d617Schristos	(main): Invoke bindtextdomain and textdomain after setlocale.
1103*75f6d617Schristos	Use strtoumax instead of doing the work ourselves.
1104*75f6d617Schristos	Check for same_file_attributes as well as same_file.
1105*75f6d617Schristos	(cmp): Use ssize_t for read returns, not size_t.
1106*75f6d617Schristos	Do not assume that size_t is not narrower than int.
1107*75f6d617Schristos	Do not assume that line numbers fit in 'long'.
1108*75f6d617Schristos	(block_compare_and_count, block_compare):
1109*75f6d617Schristos	Compiler now checks that buffers are word-aligned.
1110*75f6d617Schristos	(block_compare_and_count): Count sizes with size_t, not long.
1111*75f6d617Schristos	(sprintc): byte arg is unsigned char, not unsigned.
1112*75f6d617Schristos
1113*75f6d617Schristos	* src/analyze.c: Assume C89 or better.
1114*75f6d617Schristos	int -> lin for line numbers.
1115*75f6d617Schristos	int -> bool for booleans.
1116*75f6d617Schristos	unsigned int -> size_t for sizes.
1117*75f6d617Schristos	Use angle-brackets when including cmpbuf.h.
1118*75f6d617Schristos	Include error.h, regex.h, xalloc.h.
1119*75f6d617Schristos	(discard_confusing_lines, diff_2_files): Use zalloc rather
1120*75f6d617Schristos	than xalloc+bzero.
1121*75f6d617Schristos	(discard_confusing_lines): unsigned int -> lin for values that
1122*75f6d617Schristos	are really line numbers.
1123*75f6d617Schristos	(shift_boundaries): Do not inhibit hunk merges.
1124*75f6d617Schristos	(build_reverse_script, build_script, diff_2_files): Use |, not ||.
1125*75f6d617Schristos	(diff_2_files): no_details_flag & ~ignore_some_changes ->
1126*75f6d617Schristos	files_can_be_treated_as_binary.  Esure that buffer size is a multiple
1127*75f6d617Schristos	of sizeof (word).  Use file_block_read to read buffers.
1128*75f6d617Schristos	(diff_2_files): Abort if output style is not one of the
1129*75f6d617Schristos	expected styles.
1130*75f6d617Schristos
1131*75f6d617Schristos2001-11-23  Paul Eggert  <eggert@twinsun.com>
1132*75f6d617Schristos
1133*75f6d617Schristos	* src/Makefile.am, m4/vararrays.m4: New file.
1134*75f6d617Schristos
1135*75f6d617Schristos	* m4/prereq.m4 (jm_PREREQ_READUTMP):
1136*75f6d617Schristos	Remove, as it gives autoheader the willies.
1137*75f6d617Schristos
1138*75f6d617Schristos	* m4/README, lib/prepargs.h, lib/prepargs.c, lib/offtostr.c,
1139*75f6d617Schristos	lib/umaxtostr.c, lib/inttostr.c, lib/inttostr.h,
1140*75f6d617Schristos	lib/imaxtostr.c, lib/freesoft.h: New files.
1141*75f6d617Schristos
1142*75f6d617Schristos	* lib/freesoft.c: Include config.h, freesoft.h rather than diff.h.
1143*75f6d617Schristos	(free_software_msgid): Wrap contents in N_.
1144*75f6d617Schristos
1145*75f6d617Schristos	* lib/cmpbuf.h: Use prototypes instead of old-style functions.
1146*75f6d617Schristos
1147*75f6d617Schristos	* lib/cmpbuf.c:
1148*75f6d617Schristos	Don't include system.h; instead, include config.h, unistd.h.
1149*75f6d617Schristos	Use prototypes instead of old-style functions.
1150*75f6d617Schristos	(block_read): Don't assume that int is no wider than size_t.
1151*75f6d617Schristos
1152*75f6d617Schristos	* lib/Makefile.am, po/POTFILES.in: New file.
1153*75f6d617Schristos
1154*75f6d617Schristos2001-11-22  Paul Eggert  <eggert@twinsun.com>
1155*75f6d617Schristos
1156*75f6d617Schristos	* pc/config.h:
1157*75f6d617Schristos	Define filename_cmp as an object-like macro, not as a function-like
1158*75f6d617Schristos	macro.
1159*75f6d617Schristos
1160*75f6d617Schristos	* exgettext: Always operate in the C locale.
1161*75f6d617Schristos	Set AWK using a method that works even with broken shells.
1162*75f6d617Schristos
1163*75f6d617Schristos	* doc/Makefile.am: New file.
1164*75f6d617Schristos
1165*75f6d617Schristos	* configure.ac (AC_INIT):
1166*75f6d617Schristos	Use src/diff.c, not diff.h, as the source files got removed.
1167*75f6d617Schristos	(AM_CONFIG_HEADER): Switch from AC_CONFIG_HEADER.
1168*75f6d617Schristos	(AC_ARG_PROGRAM, AC_MINIX): Remove.
1169*75f6d617Schristos
1170*75f6d617Schristos	(AC_PREREQ, AM_INIT_AUTOMAKE, ALL_LINGUAS, AC_PROG_AWK,
1171*75f6d617Schristos	AM_PROG_CC_STDC, AC_PROG_RANLIB, AC_C_INLINE, AC_C_VARARRAYS,
1172*75f6d617Schristos	DEFAULT_DIFF_PROGRAM, DEFAULT_EDITOR_PROGRAM,
1173*75f6d617Schristos	AC_STRUCT_ST_MTIM_NSEC): Add.
1174*75f6d617Schristos
1175*75f6d617Schristos	(PR_PROGRAM): AC_DEFINE.
1176*75f6d617Schristos
1177*75f6d617Schristos	(AC_SYS_LARGEFILE): Use instead of our homebrew version.
1178*75f6d617Schristos
1179*75f6d617Schristos	(_GNU_SOURCE): Define if not defined.
1180*75f6d617Schristos
1181*75f6d617Schristos	(AC_CHECK_HEADERS): Add stdbool.h, unistd.h.
1182*75f6d617Schristos	(AC_CHECK_TYPES): Add ptrdiff_t, uintmax_t.
1183*75f6d617Schristos	(AM_GNU_GETTEXT, XGETTEXT): Add.
1184*75f6d617Schristos
1185*75f6d617Schristos	(WITH_MVFS_STAT_BUG, WITH_NFS_STAT_BUG): Remove.
1186*75f6d617Schristos	(HAVE_MEMCHR): Remove.
1187*75f6d617Schristos	(AC_CHECK_FUNCS): Add diraccess.
1188*75f6d617Schristos	(AC_REPLACE_FUNCS): Add memchr, waitpid.
1189*75f6d617Schristos	(jm_FUNC_GLIBC_UNLOCKED_IO, jm_FUNC_GNU_STRFTIME, jm_FUNC_MALLOC,
1190*75f6d617Schristos	 jm_FUNC_REALLOC, jm_PREREQ_ERROR, jm_PREREQ_QUOTEARG, jm_PREREQ_REGEX,
1191*75f6d617Schristos	 jm_PREREQ_TEMPNAME, jm_AC_PREREQ_XSTRTOUMAX, AC_FUNC_FNMATCH): Add.
1192*75f6d617Schristos	(fnmatch.h, regex.h): Do not create these files unless we're using
1193*75f6d617Schristos	our own fnmatch and regex.
1194*75f6d617Schristos
1195*75f6d617Schristos	(AC_OUTPUT): Add doc/Makefile, intl/Makefile, lib/Makefile,
1196*75f6d617Schristos	lib/posix/Makefile, m4/Makefile, po/Makefile.in, src/Makefile.
1197*75f6d617Schristos
1198*75f6d617Schristos	* Makefile.am: New file.
1199*75f6d617Schristos
1200*75f6d617Schristos	* po/en_GB.po: Don't translate "program" to "programme".
1201*75f6d617Schristos
1202*75f6d617Schristos2001-11-20  Paul Eggert  <eggert@twinsun.com>
1203*75f6d617Schristos
1204*75f6d617Schristos	* m4/prereq.m4: New file.
1205*75f6d617Schristos
1206*75f6d617Schristos2001-03-16  Paul Eggert  <eggert@twinsun.com>
1207*75f6d617Schristos
1208*75f6d617Schristos	* lib/tempname.c (uint64_t):
1209*75f6d617Schristos	Define if not defined, and if UINT64_MAX is not defined.
1210*75f6d617Schristos
1211*75f6d617Schristos2001-02-26  Paul Eggert  <eggert@twinsun.com>
1212*75f6d617Schristos
1213*75f6d617Schristos	* lib/tempname.c: glibc 1.32
1214*75f6d617Schristos
1215*75f6d617Schristos2001-02-17  Paul Eggert  <eggert@twinsun.com>
1216*75f6d617Schristos
1217*75f6d617Schristos	* m4/Makefile.am.in: GNU fileutils 4.1
1218*75f6d617Schristos
1219*75f6d617Schristos2001-01-09  Paul Eggert  <eggert@twinsun.com>
1220*75f6d617Schristos
1221*75f6d617Schristos	* lib/tempname.c (struct_stat64): New macro.
1222*75f6d617Schristos	(direxists, __gen_tempname): Use it.  This avoids a portability problem
1223*75f6d617Schristos	with Solaris 8.
1224*75f6d617Schristos
1225*75f6d617Schristos	* lib/tempname.c (<config.h>): Include if HAVE_CONFIG_H.
1226*75f6d617Schristos	(<stddef.h>, <stdint.h>, <string.h>):
1227*75f6d617Schristos	Include only if STDC_HEADERS || _LIBC.
1228*75f6d617Schristos	(<fcntl.h>): Include only if HAVE_FCNTL_H || _LIBC.
1229*75f6d617Schristos	(<unistd.h>): Include only if HAVE_UNISTD_H || _LIBC.
1230*75f6d617Schristos	(<sys/time.h>): Include only if HAVE_SYS_TIME_H || _LIBC.
1231*75f6d617Schristos	(__set_errno): Define this macro if <errno.h> doesn't.
1232*75f6d617Schristos	(P_tmpdir, TMP_MAX, __GT_FILE, __GT_BIGFILE, __GT_DIR, __GT_NOCREATE):
1233*75f6d617Schristos	Define these macros if <stdio.h> doesn't.
1234*75f6d617Schristos	(S_ISDIR, S_IRUSR, S_IWUSR, S_IXUSR):
1235*75f6d617Schristos	Define these macros if <sys/stat.h>
1236*75f6d617Schristos	doesn't.  Ignore <sys/stat.h> S_ISDIR if STAT_MACROS_BROKEN.
1237*75f6d617Schristos	(stat64, __getpid, __gettimeofday, __mkdir, __open, __open64, lxstat64,
1238*75f6d617Schristos	__xstat64): Define if not _LIBC.
1239*75f6d617Schristos	(__secure_getenv): Define if ! (HAVE___SECURE_GETENV || _LIBC).
1240*75f6d617Schristos	(__gen_tempname): Invoke gettimeofday only if HAVE_GETTIMEOFDAY
1241*75f6d617Schristos	|| _LIBC; otherwise, fall back on plain "time".
1242*75f6d617Schristos	Use macros like S_IRUSR | S_IWUSR rather than octal values like 0600.
1243*75f6d617Schristos
1244*75f6d617Schristos	* lib/mkstemp.c (__GT_FILE): Define to zero if not defined.
1245*75f6d617Schristos
1246*75f6d617Schristos2000-10-25  Paul Eggert  <eggert@twinsun.com>
1247*75f6d617Schristos
1248*75f6d617Schristos	* lib/hard-locale.c: New file.
1249*75f6d617Schristos
1250*75f6d617Schristos2000-02-05  Paul Eggert  <eggert@twinsun.com>
1251*75f6d617Schristos
1252*75f6d617Schristos	* exgettext: From GCC repository
1253*75f6d617Schristos
1254*75f6d617Schristos1999-07-06  Paul Eggert  <eggert@twinsun.com>
1255*75f6d617Schristos
1256*75f6d617Schristos	* lib/mkstemp.c: glibc 2.2
1257*75f6d617Schristos
1258*75f6d617Schristos1998-12-11  Paul Eggert  <eggert@twinsun.com>
1259*75f6d617Schristos
1260*75f6d617Schristos	* src/sdiff.c (lf_snarf):
1261*75f6d617Schristos	Fix bug when help line wrapped around the input buffer.
1262*75f6d617Schristos
1263*75f6d617Schristos1998-09-15  Paul Eggert  <eggert@twinsun.com>
1264*75f6d617Schristos
1265*75f6d617Schristos	* diff.texi: Add @dircategory and @direntry.
1266*75f6d617Schristos
1267*75f6d617Schristos1998-09-14  Paul Eggert  <eggert@twinsun.com>
1268*75f6d617Schristos
1269*75f6d617Schristos	* Makefile.in (VERSION): Version 2.7.2.
1270*75f6d617Schristos	(DEFAULT_DIFF_PROGRAM): Renamed from DIFF_PROGRAM.
1271*75f6d617Schristos	(PR_PROGRAM): All `configure' to define it.
1272*75f6d617Schristos	(srcs): Add $(diffutils_srcs), freesoft.c, quotearg.c instead of
1273*75f6d617Schristos	quote.c, quotearg.h.
1274*75f6d617Schristos	(distfiles): Add acconfig.h, message/*.
1275*75f6d617Schristos	(all): Depend on $(destfiles), not info.
1276*75f6d617Schristos	(version.c): Parenthesize `GNU diffutils'.
1277*75f6d617Schristos	(common_o): Add freesoft.o
1278*75f6d617Schristos	(diff_o): quote.o -> quotearg.o
1279*75f6d617Schristos	(diff3_o, sdiff_o): Likewise.
1280*75f6d617Schristos	(diff.dvi): Depend on version.texi.
1281*75f6d617Schristos	(diff.o diff3.o quotearg.o sdiff.o util.o):
1282*75f6d617Schristos	New dependency on quotearg.h
1283*75f6d617Schristos	(diff3.o): DIFF_PROGRAM -> DEFAULT_DIFF_PROGRAM.
1284*75f6d617Schristos	(sdiff.o): Likewise.
1285*75f6d617Schristos	(messages.po): Remove.
1286*75f6d617Schristos	(message/msgid.po, message/template.po): New rules.
1287*75f6d617Schristos	(maintainer-clean): Renamed from realclean.
1288*75f6d617Schristos	(install): Install from source directory, if applicable.
1289*75f6d617Schristos	Invoke install-info if needed.
1290*75f6d617Schristos	(install-strip): New rule.
1291*75f6d617Schristos	(check): Set DIFF.
1292*75f6d617Schristos	(stamp-h.in): Don't put the date into the timestamp.
1293*75f6d617Schristos	(D_dirs): Add $D/message.
1294*75f6d617Schristos	($D.tar.gz): Compress with gzip -9.
1295*75f6d617Schristos	Don't use ln to create distribution; it doesn't work with symlinks.
1296*75f6d617Schristos	(srcs, distfiles, diff_o, diff3_o, sdiff_o): Rename quotearg.c to
1297*75f6d617Schristos	quotesys.c and quotearg.h to quotesys.h.
1298*75f6d617Schristos
1299*75f6d617Schristos	* configure.in (AC_PATH_PROG): Add PR_PROGRAM.
1300*75f6d617Schristos	If available, prefer support for large files unless the user specified
1301*75f6d617Schristos	one of the CPPFLAGS, LDFLAGS, or LIBS variables.
1302*75f6d617Schristos	(AC_STRUCT_ST_RDEV): Add.
1303*75f6d617Schristos	(HAVE_ST_FSTYPE_STRING): Add.
1304*75f6d617Schristos	(--with-mvfs-stat-bug, --with-nfs-stat-bug): New options.
1305*75f6d617Schristos	(HAVE_MEMCHR): New macro.
1306*75f6d617Schristos	(AC_CHECK_FUNCS): Add sicprocmask.
1307*75f6d617Schristos
1308*75f6d617Schristos	* diff.h (XTERN): Renamed from EXTERN.
1309*75f6d617Schristos	(struct filedata): Remove dir_p arg.
1310*75f6d617Schristos	(struct comparison): New type.
1311*75f6d617Schristos	(diff_2_files, diff_dirs)" Ise ot/
1312*75f6d617Schristos	(error): Add printf attribute if applicable.
1313*75f6d617Schristos	(free_software_msgid): New decl.
1314*75f6d617Schristos	(pr_program): New decl.
1315*75f6d617Schristos	(fatal): Add noreturn attribute.
1316*75f6d617Schristos	(pfatal_with_name): Likewise.
1317*75f6d617Schristos
1318*75f6d617Schristos	* system.h (__attribute__): New macro.
1319*75f6d617Schristos	(getenv): Don't declare if HAVE_STDLIB_H.
1320*75f6d617Schristos	(CHAR_MAX): New macro.
1321*75f6d617Schristos	(<locale.h>): New include.
1322*75f6d617Schristos	(<locale.h>): Include before <libintl.h>.
1323*75f6d617Schristos	(could_be_mvfs_stat_bug, could_be_nfs_stat_bug,
1324*75f6d617Schristos	dev_may_have_duplicate_ino, same_special_file): New macros.
1325*75f6d617Schristos	(same_file): Use them.
1326*75f6d617Schristos
1327*75f6d617Schristos	* cmp.c (authorship_msgid): New var.
1328*75f6d617Schristos	(free_software_msgid): New decl.
1329*75f6d617Schristos	(error): Now has printf attribute.
1330*75f6d617Schristos	(try_help): Likewise.
1331*75f6d617Schristos	(long_options): Don't assume ASCII.
1332*75f6d617Schristos	(try_help): Now accepts operand arg.
1333*75f6d617Schristos	(main): Check for -1, not EOF, when calling getopt_long.
1334*75f6d617Schristos	Report --ignore-initial value when complaining about it.
1335*75f6d617Schristos	Output copyright and free software info with -v.
1336*75f6d617Schristos	Don't assume ASCII.
1337*75f6d617Schristos	Report last operand when one is missing.
1338*75f6d617Schristos	Report text of extra operand.
1339*75f6d617Schristos	Move block_read into cmpbuf.c.
1340*75f6d617Schristos
1341*75f6d617Schristos	* diff.c (authorship_msgid): New var.
1342*75f6d617Schristos	(quotesys.h): Include.
1343*75f6d617Schristos	(ck_atoi): Remove.
1344*75f6d617Schristos	(function_regexp_list, ignore_regexp_list): Now static.
1345*75f6d617Schristos	(binary_flag): Renamed from binary_I_O.
1346*75f6d617Schristos	(entire_new_file_flag, unidirectional_new_file_flag,
1347*75f6d617Schristos	print_file_same_flag): Now static.
1348*75f6d617Schristos	(numeric_arg): Renamed from ck_atoi.
1349*75f6d617Schristos	New argument specifying the argument type.
1350*75f6d617Schristos	(longopts, main): Don't assume ASCII.
1351*75f6d617Schristos	(longopts): Remove old aliases --file-label, --entire-new-file,
1352*75f6d617Schristos	--ascii, --print.
1353*75f6d617Schristos	(main): Check for -1, not EOF, when calling getopt_long.
1354*75f6d617Schristos	Use numeric_arg to report errors.
1355*75f6d617Schristos	Report error if -l specified but pagination is not supported.
1356*75f6d617Schristos	Report error if -S is specified twice with conflicting values.
1357*75f6d617Schristos	Have --version conform to the new GNU standards.
1358*75f6d617Schristos	Add new --from-file, --to-file, --inhibit-hun,-merge options.
1359*75f6d617Schristos	Make the horizon at least as large as the context.
1360*75f6d617Schristos	Add casts to pacify gcc -Wall.
1361*75f6d617Schristos	(try_help): Add operand arg.
1362*75f6d617Schristos	(option_help_msgid): Doc fix to match above.
1363*75f6d617Schristos	(usage): Indent option_help_msgid.
1364*75f6d617Schristos	(compare_files): Now takes struct comparison
1365*75f6d617Schristos	instead of two directory names and a depth.
1366*75f6d617Schristos	(NONEXISTENT, UNOPENED, ERRNO_ENCODE, ERRNO_DECODE):
1367*75f6d617Schristos	New macros.
1368*75f6d617Schristos	(DIR_P): New macro.
1369*75f6d617Schristos	Report error if fflush does.
1370*75f6d617Schristos
1371*75f6d617Schristos	* cmpbuf.c (block_read): Moved here from cmp.c.
1372*75f6d617Schristos
1373*75f6d617Schristos	* cmpbuf.h (block_read): New decl.
1374*75f6d617Schristos
1375*75f6d617Schristos	* io.c (cmpbuf.h): Include.
1376*75f6d617Schristos	(slurp): Check for arithmetic overflow when computing buffer size.
1377*75f6d617Schristos
1378*75f6d617Schristos	* dir.c (diff_dirs): Check for recursive directory loop.
1379*75f6d617Schristos	Arg is now struct comparison const *.
1380*75f6d617Schristos	(dir_loop): New function
1381*75f6d617Schristos
1382*75f6d617Schristos	* analyze.c (no_discards): Remove.
1383*75f6d617Schristos	(inhibit): Remove.
1384*75f6d617Schristos	(shift_boundaries): Don't inhibit.  If inhibit_hunk_merge is nonzero,
1385*75f6d617Schristos	don't merge hunks.
1386*75f6d617Schristos	(briefly_report): Now returns 2 if trouble, CHANGES otherwise.
1387*75f6d617Schristos	(diff_2_files): Now takes struct comparison.  If briefly_report reports
1388*75f6d617Schristos	trouble, pass it on to caller.
1389*75f6d617Schristos
1390*75f6d617Schristos	* side.c (print_half_line): Add brackets to pacify GCC -Wall.
1391*75f6d617Schristos
1392*75f6d617Schristos	* sdiff.c (quotesys.h): Include.
1393*75f6d617Schristos	(DIFF_PROGRAM, DEFAULT_EDITOR_PROGRAM): Remove.
1394*75f6d617Schristos	(free_software_msgid, editor_program, not_found): New vars.
1395*75f6d617Schristos	(diffbin, edbin): Remove.
1396*75f6d617Schristos	(editor_program): Renamed from edbin.
1397*75f6d617Schristos	(edit, interact): Now take extra string arg.
1398*75f6d617Schristos	(exiterr, fatal, perror_fatal, try_help): Add noreturn attribute.
1399*75f6d617Schristos	(sigset_t, sigemptyset, sigmask, sigaddset, SIG_BLOCK, SIG_SETMASK):
1400*75f6d617Schristos	(sigprocmask): New macros, if !HAVE_SIGPROCMASK.
1401*75f6d617Schristos	(error): Now has printf attribute.
1402*75f6d617Schristos	(longopts, main): Don't assume ASCII.
1403*75f6d617Schristos	(try_help): New operand arg.
1404*75f6d617Schristos	(usage): Conform to new GNU standards.
1405*75f6d617Schristos	(main): Set static vars for editor and diff program.
1406*75f6d617Schristos	Compare getopt_long result to -1, not EOF.
1407*75f6d617Schristos	-v conforms to new GNU standard.
1408*75f6d617Schristos	Complain better about extra and missing operands.
1409*75f6d617Schristos	If HAVE_VFORK, block SIGINT and SIGPIPE in the parent, since when
1410*75f6d617Schristos	the child munges its handlers it may somp on the parent.
1411*75f6d617Schristos	Pass rname to intract.
1412*75f6d617Schristos	Translate not-found message before forking.
1413*75f6d617Schristos	(give_help): Just output it all at once.
1414*75f6d617Schristos	(edit): New args lname, lline, rname, rline.
1415*75f6d617Schristos	(edit): New command 'd'.
1416*75f6d617Schristos	(interact): New args lname, rname.
1417*75f6d617Schristos
1418*75f6d617Schristos	* util.c (quotesys.h): Include.
1419*75f6d617Schristos	(PR_PROGRAM): New macro.
1420*75f6d617Schristos	(pfatal_with_name): Abort if error returns.
1421*75f6d617Schristos	(fatal): Likewise.
1422*75f6d617Schristos	(print_message_queue): Free message chain after printing.
1423*75f6d617Schristos	(currently_recursive): Renamed from current_depth, and now a boolean.
1424*75f6d617Schristos	(begin_output): Report error if fflush does.
1425*75f6d617Schristos	Avoid stdio and gettext in child.
1426*75f6d617Schristos
1427*75f6d617Schristos	* diff3.c (quotesys.h): Include.
1428*75f6d617Schristos	(free_software_msgid): New decl.
1429*75f6d617Schristos	(RANGE_START, RANGE_END): Renamed from START and END.
1430*75f6d617Schristos	(fatal, perror_with_exit, try_help): Add noreturn attribute.
1431*75f6d617Schristos	(error): Add printf attribute.
1432*75f6d617Schristos	(diff_program): Now a ptr, not an array.
1433*75f6d617Schristos	Initialize to DEFAULT_DIFF_PROGRAM instead of DIFF_PROGRAM.
1434*75f6d617Schristos	(longopts, main): Don't assume ASCII.
1435*75f6d617Schristos	(main): Use DIFF environment var to specify name of diff program.
1436*75f6d617Schristos	Compare getopt_long result to -1, not EOF.
1437*75f6d617Schristos	-v now reports version according to new GNU standard.
1438*75f6d617Schristos	Report spelling of extra operand, or last operand before missing one.
1439*75f6d617Schristos	(try_help): Now takes operand arg.
1440*75f6d617Schristos	(option_help_ms): Fix typo: missing comma.
1441*75f6d617Schristos	(usage): Update as per current GNU standards.
1442*75f6d617Schristos	(environ): Remove decl.
1443*75f6d617Schristos	(read_diff): Invoke diff with --inhibit-hunk-merge.
1444*75f6d617Schristos	Translate `not found' message before forking.
1445*75f6d617Schristos	Quote name of diff program.
1446*75f6d617Schristos	Pass horizon lines.
1447*75f6d617Schristos	`memory exhausted' -> `Memory exhausted'
1448*75f6d617Schristos
1449*75f6d617Schristos	* pc/makefile (%.exe): Remove.
1450*75f6d617Schristos	(pc-clean): Remove *.exe
1451*75f6d617Schristos	* pc/makefile.sed (DEFAULT_DIFF_PROGRAM): Renamed from DIFF_PROGRAM.
1452*75f6d617Schristos	When editing mkinstalldirs rule, look for exec_prefix and prefix.
1453*75f6d617Schristos	Add .exe when installing files.
1454*75f6d617Schristos	* pc/emx/config.h (same_file): Add.
1455*75f6d617Schristos	* pc/config.h (same_file): Remove.
1456*75f6d617Schristos	* pc/djgpp/config.h: Adjust to latest patch from eliz.
1457*75f6d617Schristos	* pc/djgpp/makefile.sed: Don't alter PROGRAMS.
1458*75f6d617Schristos	* pc/pc.c: Update FSF address.
1459*75f6d617Schristos	(quote_system_arg): Renamed from system_quote_arg.
1460*75f6d617Schristos
1461*75f6d617Schristos	* README: Add --with-mvfs-stat-bug, --with-nfs-stat-bug.
1462*75f6d617Schristos
1463*75f6d617Schristos	* getmsgids: Add copyright date and update FSF address.
1464*75f6d617Schristos
1465*75f6d617Schristos	* diff.texi: Document recent changes.
1466*75f6d617Schristos	The patch doc still corresponds to patch 2.2, unfortunately.
1467*75f6d617Schristos	Update GNU bug reporting address.  Omit Larry Wall's address;
1468*75f6d617Schristos	it's obsolete and he's busy with perl.
1469*75f6d617Schristos
1470*75f6d617Schristos	* context.c: Fix spacing.
1471*75f6d617Schristos
1472*75f6d617Schristos	* NEWS: Mention --from-file=FILE, --to-file=FILE, ed.
1473*75f6d617Schristos
1474*75f6d617Schristos	* acconfig.h, freesoft.c, message/de.po, message/en_UK.po,
1475*75f6d617Schristos	message/es.po, message/fr.po, message/pl.po, message/sv.po:
1476*75f6d617Schristos	New files.
1477*75f6d617Schristos
1478*75f6d617Schristos	* ed.c: Remove `#if 0'ed code.
1479*75f6d617Schristos
1480*75f6d617Schristos	* normal.c, waitpid.c: Update FSF address.
1481*75f6d617Schristos
1482*75f6d617Schristos1998-03-15  Paul Eggert  <eggert@twinsun.com>
1483*75f6d617Schristos
1484*75f6d617Schristos	* quotesys.c: Renamed from quotearg.c.
1485*75f6d617Schristos
1486*75f6d617Schristos	* quotesys.h: Renamed from quotearg.h
1487*75f6d617Schristos	(__QUOTESYS_P): Renamed from __QUOTEARG_P.
1488*75f6d617Schristos
1489*75f6d617Schristos1997-05-05  Paul Eggert  <eggert@twinsun.com>
1490*75f6d617Schristos
1491*75f6d617Schristos	* quotesys.c, quotesys.h: New file.
1492*75f6d617Schristos
1493*75f6d617SchristosMon Nov 14 05:10:56 1994  Paul Eggert  <eggert@twinsun.com>
1494*75f6d617Schristos
1495*75f6d617Schristos	Add internationalization support.
1496*75f6d617Schristos	Several messages have been changed slightly,
1497*75f6d617Schristos	to make them more consistent and easier to translate.
1498*75f6d617Schristos	All strings that are messages are passed through gettext once before
1499*75f6d617Schristos	being used, so that they can be localized.
1500*75f6d617Schristos	Each function and macro whose first parameter is a gettext msgid
1501*75f6d617Schristos	has had its first parameter's name changed so it ends in `msgid'.
1502*75f6d617Schristos	All arrays of msgids have had their names changed to end in `msgid'.
1503*75f6d617Schristos	`getmsgids' uses this to determine which strings are msgids.
1504*75f6d617Schristos
1505*75f6d617Schristos	* pc/COPYING, pc/INSTALL, pc/config.h,
1506*75f6d617Schristos	pc/djgpp/config.h, pc/djgpp/makefile.sed,
1507*75f6d617Schristos	pc/emx/config.h, pc/emx/diff.def, pc/emx/gnuregex.def,
1508*75f6d617Schristos	pc/emx/makefile.sed,
1509*75f6d617Schristos	pc/makefile, pc/makefile.sed, pc/pc.c: New files, for PC support.
1510*75f6d617Schristos
1511*75f6d617Schristos	* getmsgids: New file.
1512*75f6d617Schristos
1513*75f6d617Schristos	* Makefile.in (PACKAGE, VERSION, diffutils_srcs, D): New vars.
1514*75f6d617Schristos	(version.c, version.texi, messages.po): New files.
1515*75f6d617Schristos	messages.po is built automatically from source files and `getmsgids'.
1516*75f6d617Schristos	(distfiles): Add them, pc/*, and getmsgids.
1517*75f6d617Schristos	(diff.info): Now depends on version.texi.
1518*75f6d617Schristos	(realclean): Clean messages.po, version.*.
1519*75f6d617Schristos	(dist): Just build $D.tar.gz.
1520*75f6d617Schristos	($D.tar.gz): New file, takes over old `dist' function.
1521*75f6d617Schristos	Don't assume $(distfiles) are all in same directory.
1522*75f6d617Schristos
1523*75f6d617Schristos	* configure.in (AC_CHECK_HEADERS): Add libintl.h, locale.h.
1524*75f6d617Schristos	(AC_CHECK_LIB): Check for -lintl.
1525*75f6d617Schristos
1526*75f6d617Schristos	* analyze.c (briefly_report): Rewrite `message (A?"B":"C")' as
1527*75f6d617Schristos	`if (A) message ("B") : message ("C")'; this is for getmsgids.
1528*75f6d617Schristos	(briefly_report, diff_2_files): For label, use file_label if set.
1529*75f6d617Schristos	* diff.c (compare_files): Likewise.
1530*75f6d617Schristos
1531*75f6d617Schristos	* system.h (gettext): Declare; use a stub if ! HAVE_LIBINTL_H.
1532*75f6d617Schristos	(setlocale): Declare; use a stub if ! HAVE_LOCALE_H.
1533*75f6d617Schristos
1534*75f6d617Schristos	* cmp.c, diff.c, diff3.c, sdiff.c (main):
1535*75f6d617Schristos	Invoke setlocale first thing, to tell library we're internationalized.
1536*75f6d617Schristos	(option_help_msgid): New constant.
1537*75f6d617Schristos	(usage): Use it, so message is translated one option at a time.
1538*75f6d617Schristos	* sdiff (help_msgid, give_help): Likewise.
1539*75f6d617Schristos
1540*75f6d617Schristos	* cmp.c (sprintc): Renamed from `printc'.
1541*75f6d617Schristos	Now outputs to a buffer instead of stdout.
1542*75f6d617Schristos	(cmp): Use new sprintc; it's easier to internationalize.
1543*75f6d617Schristos
1544*75f6d617Schristos	* diff.c (main): -D FOO now outputs `/* ! FOO */ instead of
1545*75f6d617Schristos	`/* not FOO */'.
1546*75f6d617Schristos
1547*75f6d617Schristos	* sdiff.c (version_string): Fix decl typo: `const' was missing.
1548*75f6d617Schristos	(trapsigs): Ignore sigaction failure, to be compatible with `signal'.
1549*75f6d617Schristos
1550*75f6d617Schristos	* util.c (struct msg, message5, print_message_queue):
1551*75f6d617Schristos	Allocate just one block of memory to save a message.
1552*75f6d617Schristos
1553*75f6d617SchristosWed Nov  9 17:42:44 1994  Paul Eggert  <eggert@twinsun.com>
1554*75f6d617Schristos
1555*75f6d617Schristos	* sdiff.c (trapsigs): Don't check signal return value, since it's
1556*75f6d617Schristos	bogus under djgpp.
1557*75f6d617Schristos
1558*75f6d617SchristosMon Oct 31 07:27:27 1994  Paul Eggert  <eggert@twinsun.com>
1559*75f6d617Schristos
1560*75f6d617Schristos	* Makefile.in (srcs, diff_o, diff3_o, sdiff_o):
1561*75f6d617Schristos	New files quote.c, quote.o.
1562*75f6d617Schristos
1563*75f6d617Schristos	* diff.h (function_regexp, ignore_regexp): Replace lists of compiled
1564*75f6d617Schristos	regexps with these single compiled regexps.  All users changed.
1565*75f6d617Schristos	(regexp_list,function_regexp_list,ignore_regexp_list): Move to diff.c.
1566*75f6d617Schristos	* diff.c (add_regexp): Build one big regexp instead of a regexp list.
1567*75f6d617Schristos	(summarize_regexp_list): New function.
1568*75f6d617Schristos	(regexp_list): Redesigned struct; moved here from diff.h.
1569*75f6d617Schristos	(function_regexp_list, ignore_regexp_list): Likewise, for vars.
1570*75f6d617Schristos
1571*75f6d617Schristos	* context.c (find_function): Simplify interface:
1572*75f6d617Schristos	don't return size of function line.  All callers changed.
1573*75f6d617Schristos	(print_context_script, find_function): INT_MAX now denotes no
1574*75f6d617Schristos	previous match; this is simpler than `- file->prefix_lines - 1'.
1575*75f6d617Schristos
1576*75f6d617Schristos	* diff3.c (read_diff): Quote arguments with system_quote_arg.
1577*75f6d617Schristos	* sdiff.c (main): Use system_quote_arg to compute command.
1578*75f6d617Schristos	* diff.c (option_list): Quote options with system_quote_arg.
1579*75f6d617Schristos	* util.c (begin_output): Use system_quote_arg to compute command.
1580*75f6d617Schristos
1581*75f6d617Schristos	* util.c (pr_program): New var.
1582*75f6d617Schristos	(analyze_hunk): Fix off-by-1 line length bug.
1583*75f6d617Schristos	Match with one big regexp instead of a list of regexps.
1584*75f6d617Schristos	Use new `trivial_length' local instead of comparing first byte to `\n'.
1585*75f6d617Schristos	Help the compiler with linbuf local vars.
1586*75f6d617Schristos
1587*75f6d617Schristos	* system.h (system_quote_arg):
1588*75f6d617Schristos	New function; replaces SYSTEM_QUOTE_ARG macro.
1589*75f6d617Schristos
1590*75f6d617SchristosSat Oct 15 20:09:12 1994  Paul Eggert  <eggert@twinsun.com>
1591*75f6d617Schristos
1592*75f6d617Schristos	* system.h (_tolower): Define if not already defined.
1593*75f6d617Schristos	* io.c (find_and_hash_each_line): Change tolower to _tolower; this
1594*75f6d617Schristos	speeds up diff -i considerably on some hosts (e.g. Solaris 2.3).
1595*75f6d617Schristos	* util.c (line_cmp): Likewise.
1596*75f6d617Schristos	* ifdef.c (groups_letter_value): Likewise.
1597*75f6d617Schristos
1598*75f6d617Schristos	* diff.h (ignore_some_line_changes): Remove.  All users changed.
1599*75f6d617Schristos	* io.c (find_and_hash_each_line): Don't invoke line_cmp if the length
1600*75f6d617Schristos	differs and -i is in force.  Don't assume ISSPACE ('\n') is nonzero.
1601*75f6d617Schristos
1602*75f6d617Schristos	* diff.h (xmalloc_exit_failure): New variable.
1603*75f6d617Schristos	All `main' programs set this variable at the start.
1604*75f6d617Schristos	xmalloc and xrealloc are now taken from GNU library.
1605*75f6d617Schristos	* cmp.c (main): Align buffer size to word size; some mallocs care.
1606*75f6d617Schristos	* io.c (slurp): Likewise.
1607*75f6d617Schristos	* diff.c (add_exclude): Can now assume xrealloc (0, ...) works.
1608*75f6d617Schristos	(add_regexp): Free storage on failure.  Allocate storage all at one go.
1609*75f6d617Schristos	* system.h (malloc, realloc): Remove unused declarations.
1610*75f6d617Schristos	* diff3.c, sdiff.c, util.c (xmalloc, xrealloc): Remove.
1611*75f6d617Schristos	* sdiff.c (diffarg): Take advantage of cleaner xrealloc semantics.
1612*75f6d617Schristos
1613*75f6d617Schristos	* io.c (ROL): Use sizeof to make it more generic.
1614*75f6d617Schristos
1615*75f6d617Schristos	* Makefile.in (common_o): New variable.
1616*75f6d617Schristos	Link error.o and xmalloc.o into all programs.
1617*75f6d617Schristos	(check): Depend on $(PROGRAMS).
1618*75f6d617Schristos
1619*75f6d617Schristos	* diff.h (error): Change to GNU library standard.  All callers changed.
1620*75f6d617Schristos	* diff3.c (main): Use strerror (EISDIR) instead of "Is a directory".
1621*75f6d617Schristos	(fatal, perror_with_exit): Use `error'.
1622*75f6d617Schristos	* util.c (perror_with_name, fatal): Use GNU `error'.
1623*75f6d617Schristos	(error): Remove.
1624*75f6d617Schristos
1625*75f6d617SchristosWed Oct 12 17:04:40 1994  David J. MacKenzie  (djm@duality.gnu.ai.mit.edu)
1626*75f6d617Schristos
1627*75f6d617Schristos	* cmp.c (main): Set xmalloc_exit_failure.
1628*75f6d617Schristos
1629*75f6d617SchristosSat Oct  1 05:24:19 1994  Paul Eggert  <eggert@twinsun.com>
1630*75f6d617Schristos
1631*75f6d617Schristos	* Version 2.7 released.
1632*75f6d617Schristos
1633*75f6d617Schristos	* configure.in (AC_HEADER_SYS_WAIT): Add.
1634*75f6d617Schristos	(AC_CHECK_HEADERS): Remove sys/wait.h.
1635*75f6d617Schristos	(AC_CHECK_FUNCS): Add tmpnam.
1636*75f6d617Schristos	* system.h (<sys/wait.h>, WEXITSTATUS): Use simpler scheme
1637*75f6d617Schristos	now that HAVE_SYS_WAIT_H is not set on hosts
1638*75f6d617Schristos	that are incompatible with Posix applications.
1639*75f6d617Schristos
1640*75f6d617Schristos	* util.c (dir_file_pathname): Use filename_lastdirchar not strrchr.
1641*75f6d617Schristos	* sdiff.c (expand_name): Likewise.
1642*75f6d617Schristos	(private_tempnam): Use tmpnam if HAVE_TMPNAM; this simplifies porting.
1643*75f6d617Schristos	(exists, letters): Omit if HAVE_TMPNAM.
1644*75f6d617Schristos
1645*75f6d617Schristos	* diff3.c (read_diff): If STAT_BLOCKSIZE yields zero,
1646*75f6d617Schristos	adjust it to a more reasonable value.
1647*75f6d617Schristos
1648*75f6d617SchristosSat Sep 24 20:36:40 1994  Paul Eggert  <eggert@twinsun.com>
1649*75f6d617Schristos
1650*75f6d617Schristos	* sdiff.c (exists, private_tempname): Adopt latest GNU libc algorithm.
1651*75f6d617Schristos	(private_tempnam): Specialize for sdiff to avoid portability problems.
1652*75f6d617Schristos
1653*75f6d617SchristosThu Sep 22 16:47:00 1994  Paul Eggert  <eggert@twinsun.com>
1654*75f6d617Schristos
1655*75f6d617Schristos	* configure.in (AC_ARG_PROGRAM): Added.
1656*75f6d617Schristos	(AC_OUTPUT): Add [date > stamp-h].
1657*75f6d617Schristos
1658*75f6d617Schristos	* Makefile.in (DEFAULT_EDITOR_PROGRAM, DIFF_PROGRAM, LIBOBJS,
1659*75f6d617Schristos	NULL_DEVICE, PR_PROGRAM, PROGRAMS): New variables.
1660*75f6d617Schristos	(check, stamp-h.in, cmp.o, util.o): New targets.
1661*75f6d617Schristos	(edit_program_name): New variable; replaces old binprefix method.
1662*75f6d617Schristos	(install, uninstall): Use it.
1663*75f6d617Schristos	(binprefix): Removed.
1664*75f6d617Schristos	(distfiles): Add stamp-h.in.
1665*75f6d617Schristos	(clean): Clean stamp-h.
1666*75f6d617Schristos	(config.hin, config.h): Use time stamp files.
1667*75f6d617Schristos	(cmp_o): Add $(LIBOBJS).
1668*75f6d617Schristos	(install): Install info files from srcdir if they're not in `.'.
1669*75f6d617Schristos
1670*75f6d617Schristos	* cmp.c, io.c (word): Don't define if already defined.
1671*75f6d617Schristos
1672*75f6d617Schristos	* comp.c (main): Use setmode, not open(..., O_BINARY); this gets stdin.
1673*75f6d617Schristos	Use NULL_DEVICE instead of "/dev/null".
1674*75f6d617Schristos	(cmp): Use %lu instead of %ld when it is more likely to be right.
1675*75f6d617Schristos
1676*75f6d617Schristos	* diff.h (PR_FILE_NAME): Rename to PR_PROGRAM and move to Makefile.in,
1677*75f6d617Schristos	util.c.
1678*75f6d617Schristos
1679*75f6d617Schristos	* diff3.c (main): Give proper diagnostic if too many labels were given.
1680*75f6d617Schristos	(read_diff): Use SYSTEM_QUOTE_ARG.
1681*75f6d617Schristos
1682*75f6d617Schristos	* system.h: <string.h>: Include if HAVE_STRING_H, too.
1683*75f6d617Schristos	<ctype.h>: Include here.  All includers changed.
1684*75f6d617Schristos	(CTYPE_DOMAIN, ISDIGIT, ISPRINT, ISSPACE, ISUPPER): New macros that
1685*75f6d617Schristos	work around common <ctype.h> problems.
1686*75f6d617Schristos	(O_BINARY): Remove.
1687*75f6d617Schristos	(SYSTEM_QUOTE_ARG): New macros.
1688*75f6d617Schristos
1689*75f6d617Schristos	* diff.c: Add comment.
1690*75f6d617Schristos
1691*75f6d617Schristos	* util.c (PR_PROGRAM): Moved here from diff.h.
1692*75f6d617Schristos	(begin_output): Use SYSTEM_QUOTE_ARG.
1693*75f6d617Schristos
1694*75f6d617Schristos	* io.c (read_files): Set mode to binary before returning 1.
1695*75f6d617Schristos
1696*75f6d617Schristos	* sdiff.c (TMPDIR_ENV): New macro.
1697*75f6d617Schristos	(DEFAULT_EDITOR_PROGRAM): Renamed from DEFAULT_EDITOR for consistency.
1698*75f6d617Schristos	(expand_name): Change `isdir' to `is_dir' to avoid theoretical ctype
1699*75f6d617Schristos	namespace contamination.
1700*75f6d617Schristos	(main): Use SYSTEM_QUOTE_ARG.
1701*75f6d617Schristos	(private_tempnam): Don't access "/tmp" directly; use PVT_tmpdir.
1702*75f6d617Schristos
1703*75f6d617SchristosTue Sep 13 18:46:43 1994  Paul Eggert  <eggert@twinsun.com>
1704*75f6d617Schristos
1705*75f6d617Schristos	* configure.in (AC_FUNC_MEMCHR): Remove.  Autoconf didn't adopt this,
1706*75f6d617Schristos	since we need not worry about an old experimental library
1707*75f6d617Schristos	where memchr didn't work.
1708*75f6d617Schristos	(AC_FUNC_MEMCMP): Not needed, since we only test for equality.
1709*75f6d617Schristos	(AC_REPLACE_FUNCS): Add test for memchr.
1710*75f6d617Schristos	(AC_CHECK_FUNCS): Check for memchr, not memcpy, since it'll be cached.
1711*75f6d617Schristos	(AC_CHECK_HEADERS): Add string.h; regex.c uses on some old hosts.
1712*75f6d617Schristos
1713*75f6d617Schristos	* system.h (memcmp): Define in terms of bcmp.
1714*75f6d617Schristos	Use HAVE_MEMCHR to test for all mem* routines.
1715*75f6d617Schristos
1716*75f6d617Schristos	* Makefile.in (srcs): Remove memcmp.c.
1717*75f6d617Schristos	We use bcmp if memcmp doesn't work, since we only test for equality.
1718*75f6d617Schristos
1719*75f6d617SchristosMon Sep 12 15:52:22 1994  Paul Eggert  <eggert@twinsun.com>
1720*75f6d617Schristos
1721*75f6d617Schristos	* configure.in (AC_CONFIG_HEADER): Rename config.h.in to config.hin.
1722*75f6d617Schristos	(AC_ISC_POSIX, AC_MINIX): Go back to these old names for Autoconf 2.
1723*75f6d617Schristos	(AC_CHECK_HEADERS): Remove now-redundant check for <string.h>.
1724*75f6d617Schristos	(AC_CHECK_FUNCS): Check for strchr.
1725*75f6d617Schristos	(AC_FUNC_MEMCHR, AC_FUNC_MEMCMP, AC_CHECK_FUNCS): Use special-purpose
1726*75f6d617Schristos	macros when suitable.
1727*75f6d617Schristos	* memcmp.c: New file.
1728*75f6d617Schristos	* Makefile.in (CPPFLAGS, DEFS, CFLAGS, LDFLAGS, prefix, exec_prefix):
1729*75f6d617Schristos	Default to autoconf-specified strings.
1730*75f6d617Schristos	(COMPILE): Use the defaults.
1731*75f6d617Schristos	(srcs): Add memcmp.c.
1732*75f6d617Schristos	(distfiles): Rename config.h.in->config.hin, install.sh->install-sh.
1733*75f6d617Schristos	(Makefile, config.h, config.hin, config.status): Rework for
1734*75f6d617Schristos	compatibility with Autoconf 2.
1735*75f6d617Schristos	* io.c (binary_file_p): Assume non-broken memchr.
1736*75f6d617Schristos	* memchr.c: Assume compiler understands void *; otherwise
1737*75f6d617Schristos	we don't match GCC's internal declaration of memchr.
1738*75f6d617Schristos	* system.h: Use more modern autoconf approach to standard C headers.
1739*75f6d617Schristos	* version.c: Include <config.h>, not "config.h".
1740*75f6d617Schristos
1741*75f6d617Schristos	* diff.c, diff.h (ignore_some_line_changes):
1742*75f6d617Schristos	New variable; replaces `length_varies'.
1743*75f6d617Schristos	(line_end_char): Replace with '\n'; it wasn't being used consistently.
1744*75f6d617Schristos
1745*75f6d617Schristos	* io.c (find_and_hash_each_line): Fix inconsistencies with -b -w -i and
1746*75f6d617Schristos	incomplete lines.  Put incomplete lines into their own bucket.
1747*75f6d617Schristos	This means line_cmp no longer needs line length arguments,
1748*75f6d617Schristos	and equivalence classes' line lengths no longer need to include \n.
1749*75f6d617Schristos	Invoke line_cmp only if ignore_some_line_changes.
1750*75f6d617Schristos	(prepare_text_end): -B no longer ignores missing newlines.
1751*75f6d617Schristos	(read_files): Allocate another bucket for incomplete lines.
1752*75f6d617Schristos
1753*75f6d617Schristos	* util.c (line_cmp): Now takes just two arguments.  No longer
1754*75f6d617Schristos	optimizes for common case of exact equality; the caller does that
1755*75f6d617Schristos	optimization now.  The caller is changed accordingly.
1756*75f6d617Schristos	Optimize for the common case of mostly equality.
1757*75f6d617Schristos	Use isupper+tolower instead of islower+toupper, for consistency.
1758*75f6d617Schristos
1759*75f6d617Schristos	* waitpid.c (waitpid): Fix typo with internal scoping.
1760*75f6d617Schristos
1761*75f6d617SchristosThu Sep  8 08:23:15 1994  Paul Eggert  <eggert@twinsun.com>
1762*75f6d617Schristos
1763*75f6d617Schristos	* configure.in: Revamp for Autoconf 2.
1764*75f6d617Schristos	* memchr.c, waitpid.c: New source files for substitute functions.
1765*75f6d617Schristos	* Makefile.in (diff_o, diff3_o, sdiff_o): Add $(LIBOBJS).
1766*75f6d617Schristos	(srcs): Add memchr.c, waitpid.c.
1767*75f6d617Schristos	(distfiles): Add install.sh, memchr.c, waitpid.c, install.sh.
1768*75f6d617Schristos	* system.h: Use Autoconf 2 style HAVE_DIRENT_H etc. macros for dirs.
1769*75f6d617Schristos	* dir.c (dir_sort): Prefer NAMLEN (p) to strlen (p->d_name).
1770*75f6d617Schristos	Change VOID_CLOSEDIR to CLOSEDIR_VOID for Autoconf 2.
1771*75f6d617Schristos	* sdiff.c, util.c (memchr, waitpid): Remove; use new substitutes.
1772*75f6d617Schristos	* diff3.c (read_diff): Use new waitpid substitute.
1773*75f6d617Schristos
1774*75f6d617Schristos	* cmp.c, diff.c, diff3.c, sdiff.c (check_stdout, try_help): New fns.
1775*75f6d617Schristos	(usage): Just print more detailed usage message; let caller exit.
1776*75f6d617Schristos	* diff.c (option_help): New variable.
1777*75f6d617Schristos	(filetype): Add Posix.1b file types.
1778*75f6d617Schristos
1779*75f6d617SchristosFri Sep  2 16:01:49 1994  Paul Eggert  <eggert@twinsun.com>
1780*75f6d617Schristos
1781*75f6d617Schristos	* configure.in: Switch to new autoconf names.  Add sys/file.h test.
1782*75f6d617Schristos	* Makefile.in (distclean): Clean config.cache, config.log
1783*75f6d617Schristos	(used by new autoconf).
1784*75f6d617Schristos
1785*75f6d617Schristos	* diff.c, diff3.c, (main), sdiff.c (trapsigs): If we'll have children,
1786*75f6d617Schristos	make sure SIGCHLD isn't ignored.
1787*75f6d617Schristos
1788*75f6d617Schristos	* diff3.c (DIFF_CHUNK_SIZE): Removed.  Get size from STAT_BLOCKSIZE.
1789*75f6d617Schristos	(INT_STRLEN_BOUND): New macro.
1790*75f6d617Schristos
1791*75f6d617Schristos	* ifdef.c (format_group, groups_letter_value):
1792*75f6d617Schristos	Use * instead of [] in prototypes.
1793*75f6d617Schristos
1794*75f6d617Schristos	* system.h: Include <sys/file.h> only if HAVE_SYS_FILE_H.
1795*75f6d617Schristos	(S_IXGRP, S_IXOTH, S_IXUSR): Remove unused macros.
1796*75f6d617Schristos
1797*75f6d617Schristos	* util.c (begin_output): Check fdopen result.
1798*75f6d617Schristos
1799*75f6d617Schristos	The following changes simplify porting to non-Posix environments.
1800*75f6d617Schristos	* cmp.c, diff.c, diff3.c, sdiff.c, (main): Call initialize_main first.
1801*75f6d617Schristos	* diff.c (binary_I_O): New variable for --binary option.
1802*75f6d617Schristos	(main, usage, compare_files): Support --binary option.
1803*75f6d617Schristos	(compare_files): Use filename_lastdirchar to find last
1804*75f6d617Schristos	directory char in a file name.
1805*75f6d617Schristos	* cmp.c (main), diff.c (compare_files), dir.c (compare_names,
1806*75f6d617Schristos	diff_dirs): Use filename_cmp to compare file names.
1807*75f6d617Schristos	Use same_file to determine whether two files are the same.
1808*75f6d617Schristos	* context.c (print_context_label): Check whether ctime yields 0.
1809*75f6d617Schristos	* diff3.c (read_diff), sdiff.c (cleanup, main, waitpid),
1810*75f6d617Schristos	util.c (begin_output): Use popen+pclose if !HAVE_FORK.
1811*75f6d617Schristos	* io.c (sip): If HAVE_SETMODE, test for binary files in O_BINARY mode.
1812*75f6d617Schristos	* sdiff.c (ck_fdopen): Function removed.
1813*75f6d617Schristos	(edit): Use system if !HAVE_FORK.
1814*75f6d617Schristos	(execdiff): Now assumes caller has pushed all args, plus trailing 0.
1815*75f6d617Schristos	All callers changed.
1816*75f6d617Schristos	(private_tempnam): Try TMP if TMPDIR isn't defined.
1817*75f6d617Schristos	Fit temporary filenames into 8.3 limit.
1818*75f6d617Schristos	* system.h (STAT_BLOCKSIZE): Don't define if already defined.
1819*75f6d617Schristos	(min, max): Undef if already defined.
1820*75f6d617Schristos	(filename_cmp, filename_lastdirchar, HAVE_FORK, HAVE_SETMODE,
1821*75f6d617Schristos	initialize_main, O_BINARY, same_file): New macros.
1822*75f6d617Schristos
1823*75f6d617SchristosFri Jun 17 11:23:53 1994  David J. MacKenzie  (djm@geech.gnu.ai.mit.edu)
1824*75f6d617Schristos
1825*75f6d617Schristos	* Makefile.in (info, dvi, diff.dvi): New targets.
1826*75f6d617Schristos	(clean): Remove TeX output files.
1827*75f6d617Schristos
1828*75f6d617SchristosFri Jun 17 05:37:52 1994  Paul Eggert  (eggert@twinsun.com)
1829*75f6d617Schristos
1830*75f6d617Schristos	* cmp.c, io.c (word): Change from typedef to #define, to avoid
1831*75f6d617Schristos	collision with Unicos 8.0 <sys/types.h>, which also typedefs `word'.
1832*75f6d617Schristos
1833*75f6d617SchristosThu Apr 15 00:53:01 1994  Paul Eggert  (eggert@twinsun.com)
1834*75f6d617Schristos
1835*75f6d617Schristos	* diff3.c (scan_diff_line), util.c (print_number_range): Don't
1836*75f6d617Schristos	rely on promotion to make the old-style parameter type agree
1837*75f6d617Schristos	with the prototype parameter type; this doesn't work on
1838*75f6d617Schristos	Apollos running bsd4.3.
1839*75f6d617Schristos
1840*75f6d617SchristosMon Jan  3 02:05:51 1994  Paul Eggert  (eggert@twinsun.com)
1841*75f6d617Schristos
1842*75f6d617Schristos	* Makefile.in (LDFLAGS): Remove -g.  Change all link commands
1843*75f6d617Schristos	to use both $(CFLAGS) and $(LDFLAGS).
1844*75f6d617Schristos
1845*75f6d617SchristosMon Dec 13 12:23:27 1993  Paul Eggert  (eggert@twinsun.com)
1846*75f6d617Schristos
1847*75f6d617Schristos	* system.h: Don't assume dirent.h exists just because
1848*75f6d617Schristos	_POSIX_VERSION is defined.
1849*75f6d617Schristos
1850*75f6d617SchristosFri Dec  3 18:39:39 1993  Paul Eggert  (eggert@twinsun.com)
1851*75f6d617Schristos
1852*75f6d617Schristos	* diff.c (main): allow -pu.
1853*75f6d617Schristos
1854*75f6d617SchristosTue Nov 23 03:51:08 1993  Paul Eggert  (eggert@twinsun.com)
1855*75f6d617Schristos
1856*75f6d617Schristos	* Makefile.in (distclean): Remove config.h.
1857*75f6d617Schristos
1858*75f6d617SchristosWed Nov 10 00:28:27 1993  Paul Eggert  (eggert@twinsun.com)
1859*75f6d617Schristos
1860*75f6d617Schristos	* Version 2.6 released.
1861*75f6d617Schristos
1862*75f6d617Schristos	* analyze.c (too_expensive): New variable, for heuristic to
1863*75f6d617Schristos	limit the worst-case cost to O(N**1.5 log N) at the price of
1864*75f6d617Schristos	producing suboptimal output for large inputs with many differences.
1865*75f6d617Schristos	(diff_2_files): Initialize it.
1866*75f6d617Schristos	(struct partition): New type.
1867*75f6d617Schristos	(SNAKE_LIMIT): New macro; merely documents already-used number 20.
1868*75f6d617Schristos	(diag): New `minimal' arg; all callers changed.  Put results into
1869*75f6d617Schristos	struct partition.  Apply `too_expensive' heuristic.  Tune.
1870*75f6d617Schristos	(compareseq): New `minimal' arg; all callers changed.  Tune.
1871*75f6d617Schristos	(shift_boundaries): Improve heuristic to also coalesce adjacent runs
1872*75f6d617Schristos	of changes more often.
1873*75f6d617Schristos
1874*75f6d617Schristos	* diff.c (long_options, main, usage): Add `--help'.
1875*75f6d617Schristos	(main): Send version number to stdout, not stderr.
1876*75f6d617Schristos	(usage): Send usage to stdout, not stderr.
1877*75f6d617Schristos	(compare_files): Initialize `inf' properly.
1878*75f6d617Schristos
1879*75f6d617Schristos	* io.c (word): Change to `int'; it makes a big difference on x86.
1880*75f6d617Schristos	(sip, slurp): Put off allocating room to hold the whole file until we
1881*75f6d617Schristos	have to read the whole file.  This wins if the file turns out
1882*75f6d617Schristos	to be binary.
1883*75f6d617Schristos
1884*75f6d617Schristos	* util.c (xmalloc, xrealloc): "virtual memory" -> "memory"
1885*75f6d617Schristos	(primes): Omit large primes if INT_MAX is small.
1886*75f6d617Schristos
1887*75f6d617Schristos	* sdiff.c (usage): Send usage to stdout, not stderr.
1888*75f6d617Schristos	(long_options, main, usage): Add `--help'.
1889*75f6d617Schristos	(main): Send version number to stdout, not stderr.  Exit afterwards.
1890*75f6d617Schristos
1891*75f6d617Schristos	* diff3.c (usage): Send usage to stdout, not stderr.
1892*75f6d617Schristos	(long_options, main, usage): Add `--help'.
1893*75f6d617Schristos	(read_diff): Detect integer overflow in buffer size calculations.
1894*75f6d617Schristos
1895*75f6d617Schristos	* cmp.c (word): New type.  All uses of `long' for
1896*75f6d617Schristos	word-at-a-time comparisons changed to `word'.
1897*75f6d617Schristos	(long_options, main, usage): Add `--help'.
1898*75f6d617Schristos	(usage): Send usage to stdout, not stderr.
1899*75f6d617Schristos	(main): Add `-v'.  Send version number to stdout, not stderr.
1900*75f6d617Schristos
1901*75f6d617Schristos	* configure.in (AC_HAVE_HEADERS): Add unistd.h; remove AC_UNISTD_H.
1902*75f6d617Schristos
1903*75f6d617SchristosMon Sep 27 07:20:24 1993  Paul Eggert  (eggert@twinsun.com)
1904*75f6d617Schristos
1905*75f6d617Schristos	* diff.c (add_exclude_file): Cast memchr to (char *)
1906*75f6d617Schristos	to suppress bogus warnings on some nonstandard hosts.
1907*75f6d617Schristos
1908*75f6d617Schristos	* Makefile.in (cmp): Add version.o.
1909*75f6d617Schristos
1910*75f6d617Schristos	* analyze.c (diff_2_files): Work around memcmp bug with size=0.
1911*75f6d617Schristos
1912*75f6d617Schristos	* cmp.c (main, usage, version_string): Add --version option.
1913*75f6d617Schristos
1914*75f6d617Schristos	* system.h (malloc, realloc): Declare only if !HAVE_STDLIB_H.
1915*75f6d617Schristos	(memchr): Declare only if !HAVE_MEMCHR.  These changes are
1916*75f6d617Schristos	needed to keep some nonstandard hosts happy.
1917*75f6d617Schristos
1918*75f6d617Schristos	* util.c (memchr): Make first arg char const *
1919*75f6d617Schristos	to match standard.
1920*75f6d617Schristos	(xmalloc, xrealloc): Cast malloc, realloc
1921*75f6d617Schristos	to (VOID *) to suppress bogus warnings on some nonstandard hosts.
1922*75f6d617Schristos
1923*75f6d617Schristos	* diff3.c (xmalloc, xrealloc): Cast malloc, realloc
1924*75f6d617Schristos	to (VOID *) to suppress bogus warnings on some nonstandard hosts.
1925*75f6d617Schristos
1926*75f6d617Schristos	* sdiff.c (xmalloc, xrealloc): Cast malloc, realloc
1927*75f6d617Schristos	to (VOID *) to suppress bogus warnings on some nonstandard hosts.
1928*75f6d617Schristos	(lf_copy, lf_skip, lf_snarf): Cast memchr to (char *)
1929*75f6d617Schristos	to suppress bogus warnings on some nonstandard hosts.
1930*75f6d617Schristos	(memchr): Make first arg char const *
1931*75f6d617Schristos	to match standard.
1932*75f6d617Schristos
1933*75f6d617SchristosMon Sep 27 00:23:37 1993  Paul Eggert  (eggert@twinsun.com)
1934*75f6d617Schristos
1935*75f6d617Schristos	* Version 2.5 released.
1936*75f6d617Schristos
1937*75f6d617Schristos	* analyze.c (diff_2_files): Work around memcmp bug with size=0.
1938*75f6d617Schristos
1939*75f6d617Schristos	* cmp.c (main, usage, version_string): Add --version option.
1940*75f6d617Schristos	* Makefile.in (cmp): Add version.o.
1941*75f6d617Schristos
1942*75f6d617Schristos	* diff.c (add_exclude_file): Cast memchr to (char *)
1943*75f6d617Schristos	to suppress bogus warnings on some nonstandard hosts.
1944*75f6d617Schristos	* sdiff.c (lf_copy, lf_skip, lf_snarf): Likewise.
1945*75f6d617Schristos
1946*75f6d617Schristos	* diff3.c, sdiff.c, util.c (xmalloc, xrealloc): Cast malloc, realloc
1947*75f6d617Schristos	to (VOID *) to suppress bogus warnings on some nonstandard hosts.
1948*75f6d617Schristos
1949*75f6d617Schristos	* sdiff.c, util.c (memchr): Make first arg char const *
1950*75f6d617Schristos	to match standard.
1951*75f6d617Schristos
1952*75f6d617Schristos	* system.h (malloc, realloc): Declare only if !HAVE_STDLIB_H.
1953*75f6d617Schristos	(memchr): Declare only if !HAVE_MEMCHR.  These changes are
1954*75f6d617Schristos	needed to keep some nonstandard hosts happy.
1955*75f6d617Schristos
1956*75f6d617Schristos	* xmalloc.c: Include <sys/types.h> always; some nonstandard hosts
1957*75f6d617Schristos	need it for size_t even if STDC_HEADERS.
1958*75f6d617Schristos
1959*75f6d617SchristosSat Sep 18 01:33:07 1993  Paul Eggert  (eggert@twinsun.com)
1960*75f6d617Schristos
1961*75f6d617Schristos	* configure.in (AC_STAT_MACROS_BROKEN): Add.
1962*75f6d617Schristos	* system.h (S_IS{BLK,CHR,DIR,FIFO,REG,SOCK}): Fix defns if
1963*75f6d617Schristos	STAT_MACROS_BROKEN.
1964*75f6d617Schristos
1965*75f6d617Schristos	* Makefile.in (diff3, sdiff, cmp): Do not link $(ALLOCA).
1966*75f6d617Schristos
1967*75f6d617Schristos	* analyze.c (discard_confusing_lines): Make defn static, like decl.
1968*75f6d617Schristos	* sdiff.c (xmalloc): Likewise.
1969*75f6d617Schristos
1970*75f6d617Schristos	* ifdef.c (format_group): Ensure isdigit argument isn't < 0.
1971*75f6d617Schristos
1972*75f6d617Schristos	* side.c (print_half_line): Use isprint, since some hosts lack isgraph.
1973*75f6d617Schristos	* util.c (output_1_line): Likewise.  Ensure its argument isn't < 0.
1974*75f6d617Schristos	(xmalloc, xrealloc): Remove needless casts.
1975*75f6d617Schristos
1976*75f6d617Schristos	* system.h (volatile, const):
1977*75f6d617Schristos	Define these before including any system headers,
1978*75f6d617Schristos	so that they're used consistently in all system includes.
1979*75f6d617Schristos	(getenv, malloc, realloc): Declare even if HAVE_STDLIB_H, since some
1980*75f6d617Schristos	<stdlib.h>s don't declare them.
1981*75f6d617Schristos	(memchr): Likewise for <string.h>.
1982*75f6d617Schristos
1983*75f6d617Schristos	* cmp.c, diff3.c, diff.h, sdiff.c: Include "system.h" first.
1984*75f6d617Schristos	* diff.c: Remove redundant "system.h" inclusion.
1985*75f6d617Schristos
1986*75f6d617Schristos	* diff3.c (xmalloc): Now static.
1987*75f6d617Schristos	(xmalloc, realloc): Remove needless casts.
1988*75f6d617Schristos	(READNUM): Ensure isdigit argument isn't negative.
1989*75f6d617Schristos
1990*75f6d617SchristosWed Sep 14 07:14:15 1993  Paul Eggert  (eggert@twinsun.com)
1991*75f6d617Schristos
1992*75f6d617Schristos	* Version 2.4 released.
1993*75f6d617Schristos
1994*75f6d617Schristos	* ifdef.c (scan_char_literal): New function, for new %c'x' and
1995*75f6d617Schristos	%c'\ooo' format specs.
1996*75f6d617Schristos	(format_group, print_ifdef_lines): Use it.  Remove %0 format spec.
1997*75f6d617Schristos
1998*75f6d617Schristos	* cmp.c (cmp): Don't try to read past end of file; this doesn't
1999*75f6d617Schristos	work on ttys.
2000*75f6d617Schristos
2001*75f6d617Schristos	* system.h, version.c: #include <config.h>, not "config.h", to allow
2002*75f6d617Schristos	configuring in a separate directory when the source directory has
2003*75f6d617Schristos	already been configured.
2004*75f6d617Schristos	* Makefile.in (COMPILE): New defn, with proper -I options so that
2005*75f6d617Schristos	`#include <config.h>' works.
2006*75f6d617Schristos	(.c.o, diff3.o, sdiff.o): Use it.
2007*75f6d617Schristos
2008*75f6d617SchristosMon Sep 13 06:45:43 1993  Paul Eggert  (eggert@twinsun.com)
2009*75f6d617Schristos
2010*75f6d617Schristos	* diff.c (main, longopts): Add --line-format=FORMAT option.
2011*75f6d617Schristos	(specify_format): Args no longer const pointers.  All callers changed.
2012*75f6d617Schristos
2013*75f6d617Schristos	* ifdef.c: Add support for %?c, %(A=B?T:E), PRINTF_SPECn formats.
2014*75f6d617Schristos	(struct group): New struct.
2015*75f6d617Schristos	(print_ifdef_lines): Use it to simplify argument passing.
2016*75f6d617Schristos	Remove the convention that last arg -1 signifies that the lines
2017*75f6d617Schristos	from file 2 are the same as the lines from file 1; this
2018*75f6d617Schristos	convention no longer works, now that line numbers might be
2019*75f6d617Schristos	printed out, since the line numbers may differ.
2020*75f6d617Schristos	Add first FILE * argument to output to.  All callers changed.
2021*75f6d617Schristos	Use a faster test for the single-fwrite optimization.
2022*75f6d617Schristos	(format_group, scan_printf_spec, groups_letter_value): New functions.
2023*75f6d617Schristos
2024*75f6d617Schristos	* diff.h (group_format, line_format): No longer const pointers.
2025*75f6d617Schristos	(format_ifdef): 1st arg is no longer const pointer.
2026*75f6d617Schristos
2027*75f6d617Schristos	* configure.in: Configure HAVE_LIMITS_H, HAVE_STDLIB_H.
2028*75f6d617Schristos	* system.h <limits.h>, <stdlib.h>, <string.h>:
2029*75f6d617Schristos	Include only if HAVE_LIMITS_H etc.
2030*75f6d617Schristos
2031*75f6d617Schristos	* system.h (memcmp, memcpy, strchr, strrchr, struct dirent): Prefer
2032*75f6d617Schristos	these standard names to the traditional names (bcmp, bcpy, index,
2033*75f6d617Schristos	rindex, struct direct).  All callers changed.
2034*75f6d617Schristos
2035*75f6d617Schristos	* system.h (PARAMS, VOID):
2036*75f6d617Schristos	Define earlier so that malloc decl can use VOID.
2037*75f6d617Schristos	(STAT_BLOCKSIZE): Simplify ersatz defn; just use 8K.
2038*75f6d617Schristos
2039*75f6d617SchristosFri Sep  3 00:21:02 1993  Paul Eggert  (eggert@twinsun.com)
2040*75f6d617Schristos
2041*75f6d617Schristos	* diff.c (compare_files): Two files with the same name must be
2042*75f6d617Schristos	the same file; avoid a needless `stat' in that case.
2043*75f6d617Schristos
2044*75f6d617SchristosFri Aug 27 06:59:03 1993  Paul Eggert  (eggert@twinsun.com)
2045*75f6d617Schristos
2046*75f6d617Schristos	* Pervasive changes for portability to 64-bit hosts:
2047*75f6d617Schristos	Add prototypes to function declarations.
2048*75f6d617Schristos	Use size_t, not int, when needed.
2049*75f6d617Schristos
2050*75f6d617Schristos	* Other pervasive changes:
2051*75f6d617Schristos	Use `const' more often.
2052*75f6d617Schristos	Use STD{IN,OUT,ERR}_FILENO instead of [012].
2053*75f6d617Schristos	Use 0, not NULL, for portability to broken hosts.
2054*75f6d617Schristos
2055*75f6d617Schristos	* Makefile.in: (srcs, objs, distfiles, cmp): New files cmpbuf.[ch].
2056*75f6d617Schristos	(distfiles): New files config.h.in, mkinstalldirs.
2057*75f6d617Schristos	(.c.o): Add -DHAVE_CONFIG_H.
2058*75f6d617Schristos
2059*75f6d617Schristos	* analyze.c: (diag): Pacify `gcc -Wall' with a useless assignment.
2060*75f6d617Schristos	(diff_2_files): Use l.c.m., not max, of files' buffer sizes.
2061*75f6d617Schristos
2062*75f6d617Schristos	* cmp.c: Make globals static when possible.
2063*75f6d617Schristos
2064*75f6d617Schristos	(file): Now a 2-element array; replaces `file1' and `file2'.
2065*75f6d617Schristos	(file_desc, buffer): Likewise, for file[12]_desc and buf[12].
2066*75f6d617Schristos	(main): Likewise, for stat_buf[12].  Index these variables with `i'.
2067*75f6d617Schristos
2068*75f6d617Schristos	(ignore_initial): New var.
2069*75f6d617Schristos	(long_options): Now const.  Add `--ignore-initial'.
2070*75f6d617Schristos	(usage): Sort options and add `--ignore-initial'.
2071*75f6d617Schristos	(main, cmp): Add `--ignore-initial' support.
2072*75f6d617Schristos
2073*75f6d617Schristos	(main): `cmp - -' now succeeds.
2074*75f6d617Schristos	When comparing standard input to a file, and using a shortcut (e.g.
2075*75f6d617Schristos	looking at file sizes or inode numbers), take the lseek offset into
2076*75f6d617Schristos	account before deciding whether the files are identical.
2077*75f6d617Schristos	Avoid mentioning `dev_t', `ino_t' for portability to nonstandard hosts.
2078*75f6d617Schristos	Use l.c.m. of files' buffer sizes, not 8 * 1024.
2079*75f6d617Schristos	ferror (stdout) does not imply errno has a useful value.
2080*75f6d617Schristos	If 2nd file is "-", treat it first, in case stdin is closed.
2081*75f6d617Schristos
2082*75f6d617Schristos	(cmp): Always compute `char_number', `smaller' for speed and simplicity.
2083*75f6d617Schristos	Say `cmp: EOF on input', not `/usr/gnu/bin/cmp: EOF on input',
2084*75f6d617Schristos	as per Posix.2.
2085*75f6d617Schristos
2086*75f6d617Schristos	(block_compare_and_count): Increment line_number argument.
2087*75f6d617Schristos	Remove end_char argument; it's always '\n'.  All callers changed.
2088*75f6d617Schristos	Do not assume sizeof(long) == 4; this isn't true on some 64-bit hosts.
2089*75f6d617Schristos	(block_compare): Minimize differences with block_compare_and_count.
2090*75f6d617Schristos
2091*75f6d617Schristos	(block_read): Coalesce `bp += nread's.
2092*75f6d617Schristos
2093*75f6d617Schristos	(printc): Remove `FILE *' arg; output to stdout.  All callers changed.
2094*75f6d617Schristos
2095*75f6d617Schristos	* configure.in: Configure HAVE_SIGACTION, RETSIGTYPE, HAVE_VPRINTF.
2096*75f6d617Schristos	Configure into config.h.
2097*75f6d617Schristos
2098*75f6d617Schristos	* context.c (print_context_label):
2099*75f6d617Schristos	Standard input's st_mtime is no longer a special case
2100*75f6d617Schristos	here, since `compare_files' now sets it to the current time.
2101*75f6d617Schristos
2102*75f6d617Schristos	* diff.c (usage): Sort options.
2103*75f6d617Schristos	(filetype): New function.
2104*75f6d617Schristos	(compare_files): Set stdin's st_mtime to be the current time.
2105*75f6d617Schristos	Leave its name "-" instead of changing it to "Standard Input";
2106*75f6d617Schristos	to test whether a file is stdin, we must compare its name to "-" instead
2107*75f6d617Schristos	of its desc to 0, since if it's closed other file descs may be 0.
2108*75f6d617Schristos	When comparing standard input to a file, and using a shortcut (e.g.
2109*75f6d617Schristos	looking at file sizes or inode numbers), take the lseek offset into
2110*75f6d617Schristos	account before deciding whether the files are identical.
2111*75f6d617Schristos	Pretend that nonexistent files have the same filetype as existing files.
2112*75f6d617Schristos	Rename `errorcount' to `failed', since it's boolean.
2113*75f6d617Schristos	In directory comparisons, if a file is neither a regular file nor a
2114*75f6d617Schristos	directory, just print its type and the other file's type.
2115*75f6d617Schristos
2116*75f6d617Schristos	* diff.h (Is_space, textchar): Remove.
2117*75f6d617Schristos	(struct msg, msg_chain, msg_chain_end): Move to util.c.
2118*75f6d617Schristos	(VOID): Move to system.h.
2119*75f6d617Schristos	(line_cmp, version_string, change_letter, print_number_range,
2120*75f6d617Schristos	find_change): New decls.
2121*75f6d617Schristos
2122*75f6d617Schristos	* diff.texi:
2123*75f6d617Schristos	whitespace -> white space.  It now stands for whatever isspace yields.
2124*75f6d617Schristos	Add --ignore-initial.
2125*75f6d617Schristos
2126*75f6d617Schristos	* diff3.c (VOID): Move to system.h.
2127*75f6d617Schristos	(version_string): Now char[].
2128*75f6d617Schristos	(usage): Sort options.
2129*75f6d617Schristos	(process_diff): Pacify `gcc -Wall' with a useless assignment.
2130*75f6d617Schristos	(read_diff): pid is of type pid_t, not int.  Use waitpid if available.
2131*75f6d617Schristos	(output_diff3): Simplify test for `\ No newline at end of file' message.
2132*75f6d617Schristos
2133*75f6d617Schristos	* dir.c (struct dirdata): Rename `files' to `names' to avoid confusion
2134*75f6d617Schristos	with external struct file_data `files'.
2135*75f6d617Schristos
2136*75f6d617Schristos	* io.c (line_cmp): Move declaration to diff.h.
2137*75f6d617Schristos	(textchar): Remove.
2138*75f6d617Schristos	(find_and_hash_each_line): Use locale's definition of white space
2139*75f6d617Schristos	instead of using one hardwired defn for -b and another for -w.
2140*75f6d617Schristos
2141*75f6d617Schristos	* normal.c (change_letter, print_number_range, find_change):
2142*75f6d617Schristos	Move decls to diff.h.
2143*75f6d617Schristos	(print_normal_hunk): Now static.
2144*75f6d617Schristos
2145*75f6d617Schristos	* sdiff.c (SEEK_SET): Move to system.h.
2146*75f6d617Schristos	(version_string): Now char[], not char*.
2147*75f6d617Schristos	(private_tempnam): Remove hardcoded limit on temporary file names.
2148*75f6d617Schristos	(exiterr, perror_fatal, main): When exiting because of a signal,
2149*75f6d617Schristos	exit with that signal's status.
2150*75f6d617Schristos	(lf_refill, main, skip_white, edit, interact): Check for signal.
2151*75f6d617Schristos	(ignore_SIGINT): Renamed from `ignore_signals'.
2152*75f6d617Schristos	(NUM_SIGS, initial_handler): New macros.
2153*75f6d617Schristos	(initial_action, signal_received, sigs_trapped): New vars.
2154*75f6d617Schristos	(catchsig, trapsigs): Use sigaction if possible, since this closes the
2155*75f6d617Schristos	windows of vulnerability that `signal' has.  Use RETSIGTYPE not void.
2156*75f6d617Schristos	When a signal comes in, just set a global variable; this is safer.
2157*75f6d617Schristos	(checksigs, untrapsig): New functions.
2158*75f6d617Schristos	(edit): Pacify `gcc -Wall' with a useless assignment.
2159*75f6d617Schristos	Respond to each empty line with help, not to every other empty line.
2160*75f6d617Schristos	(private_tempnam): Remove hardcoded limit on temporary file name length.
2161*75f6d617Schristos	Don't assume sizeof (pid_t) <= sizeof (int).
2162*75f6d617Schristos
2163*75f6d617Schristos	* system.h: (S_IXOTH, S_IXGRP, S_IXUSR,
2164*75f6d617Schristos	SEEK_SET, SEEK_CUR,
2165*75f6d617Schristos	STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO):
2166*75f6d617Schristos	New macros, if system doesn't define them.
2167*75f6d617Schristos	(volatile): Don't define if already defined.
2168*75f6d617Schristos	(PARAMS): New macro.
2169*75f6d617Schristos	(VOID): Move here from diff.h.
2170*75f6d617Schristos
2171*75f6d617Schristos	* util.c (struct msg, msg_chain, msg_chain_end): Moved here from diff.h.
2172*75f6d617Schristos	(message5): New function.
2173*75f6d617Schristos	(pr_pid): New var.
2174*75f6d617Schristos	(begin_output): Allocate `name' more precisely.
2175*75f6d617Schristos	Put child pid into pr_pid, so that we can wait for it later.
2176*75f6d617Schristos	Don't check execl's return value, since any return must be an error.
2177*75f6d617Schristos	(finish_output): Detect and report output errors.
2178*75f6d617Schristos	Use waitpid if available.  Check pr exit status.
2179*75f6d617Schristos	(line_cmp): Use locale's definition of white space
2180*75f6d617Schristos	instead of using one hardwired defn for -b and another for -w.
2181*75f6d617Schristos	(analyze_cmp): Avoid double negation with `! nontrivial'.
2182*75f6d617Schristos	Pacify `gcc -Wall' be rewriting for-loop into do-while-loop.
2183*75f6d617Schristos	(dir_file_pathname): New function.
2184*75f6d617Schristos
2185*75f6d617Schristos	* version.c (version_string): Now char[], not char*.
2186*75f6d617Schristos
2187*75f6d617SchristosThu Jul 29 20:44:30 1993  David J. MacKenzie  (djm@wookumz.gnu.ai.mit.edu)
2188*75f6d617Schristos
2189*75f6d617Schristos	* Makefile.in (config.status): Run config.status --recheck, not
2190*75f6d617Schristos	configure, to get the right args passed.
2191*75f6d617Schristos
2192*75f6d617SchristosThu Jul 22 10:46:30 1993  Paul Eggert  (eggert@twinsun.com)
2193*75f6d617Schristos
2194*75f6d617Schristos	* Makefile.in (dist): Replace `if [ ! TEST ]; then ACTION; fi'
2195*75f6d617Schristos	with `[ TEST ] || ACTION || exit' so that the containing for-loop exits
2196*75f6d617Schristos	with proper status for `make'.
2197*75f6d617Schristos
2198*75f6d617SchristosThu Jul  8 19:47:22 1993  David J. MacKenzie  (djm@goldman.gnu.ai.mit.edu)
2199*75f6d617Schristos
2200*75f6d617Schristos	* Makefile.in (installdirs): New target.
2201*75f6d617Schristos	(install): Use it.
2202*75f6d617Schristos	(Makefile, config.status, configure): New targets.
2203*75f6d617Schristos
2204*75f6d617SchristosSat Jun  5 23:10:40 1993  Paul Eggert  (eggert@twinsun.com)
2205*75f6d617Schristos
2206*75f6d617Schristos	* Makefile.in (dist): Switch from .z to .gz.
2207*75f6d617Schristos
2208*75f6d617SchristosWed May 26 17:16:02 1993  Paul Eggert  (eggert@twinsun.com)
2209*75f6d617Schristos
2210*75f6d617Schristos	* diff.c (main): Cast args to compare_files, for traditional C.
2211*75f6d617Schristos	* side.c (print_sdiff_common_lines_print_sdiff_hunk): Likewise.
2212*75f6d617Schristos	* analyze.c, diff3.c, sdiff.c, util.c: Don't assume NULL is defined
2213*75f6d617Schristos	properly.
2214*75f6d617Schristos
2215*75f6d617SchristosTue May 25 14:54:05 1993  Paul Eggert  (eggert@twinsun.com)
2216*75f6d617Schristos
2217*75f6d617Schristos	* analyze.c (diff_2_files):  With -q, do not report that files differ
2218*75f6d617Schristos	if all their differences are ignored.
2219*75f6d617Schristos	(briefly_report): New function.
2220*75f6d617Schristos	* diff.h (ignore_some_changes): New variable.
2221*75f6d617Schristos	* diff.c (compare_files): Don't use the file size shortcut if
2222*75f6d617Schristos	ignore_some_changes is nonzero, since the file size may differ
2223*75f6d617Schristos	merely due to ignored changes.
2224*75f6d617Schristos	(main):  Set ignore_some_changes if we might ignore some changes.
2225*75f6d617Schristos	Remove unsystematic assignment of 0 to static vars.
2226*75f6d617Schristos	* io.c (read_files): New argument PRETEND_BINARY says whether to
2227*75f6d617Schristos	pretend the files are binary.
2228*75f6d617Schristos
2229*75f6d617Schristos	* diff3.c (tab_align_flag): New variable, for new -T option.
2230*75f6d617Schristos	(main, usage, output_diff3): Add support for -T.
2231*75f6d617Schristos
2232*75f6d617SchristosSun May 23 15:25:29 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
2233*75f6d617Schristos
2234*75f6d617Schristos	* dir.c (dir_sort): Always init `data' to avoid GCC warning.
2235*75f6d617Schristos
2236*75f6d617SchristosSat May 22 15:35:02 1993  Paul Eggert  (eggert@twinsun.com)
2237*75f6d617Schristos
2238*75f6d617Schristos	* Makefile.in (dist): Change name of package from diff to diffutils.
2239*75f6d617Schristos	Don't bother to build .Z dist; .z suffices.
2240*75f6d617Schristos
2241*75f6d617SchristosFri May 21 16:35:22 1993  Paul Eggert  (eggert@twinsun.com)
2242*75f6d617Schristos
2243*75f6d617Schristos	* diff.c: Include "system.h" to get memchr declaration.
2244*75f6d617Schristos	* system.h (memchr): Declare if !HAVE_MEMCHR, not if
2245*75f6d617Schristos	!HAVE_MEMCHR && !STDC_HEADERS.
2246*75f6d617Schristos
2247*75f6d617SchristosWed May 19 17:43:55 1993  Paul Eggert  (eggert@twinsun.com)
2248*75f6d617Schristos
2249*75f6d617Schristos	* Version 2.3 released.
2250*75f6d617Schristos
2251*75f6d617SchristosFri Apr 23 17:18:44 1993  Paul Eggert  (eggert@twinsun.com)
2252*75f6d617Schristos
2253*75f6d617Schristos	* io.c (find_identical_ends): Do not discard the last HORIZON_LINES
2254*75f6d617Schristos	lines of the prefix, or the first HORIZON_LINES lines of the suffix.
2255*75f6d617Schristos	* diff.c (main, longopts, usage): Add --horizon-lines option.
2256*75f6d617Schristos	* diff3.c (main, process_diff, read_diff): Invoke second diff
2257*75f6d617Schristos	with --horizon-lines determined by the first diff.
2258*75f6d617Schristos	* diff.h, diff3.c (horizon_lines): New variable.
2259*75f6d617Schristos
2260*75f6d617SchristosMon Mar 22 16:16:00 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
2261*75f6d617Schristos
2262*75f6d617Schristos	* system.h [HAVE_STRING_H || STDC_HEADERS] (bcopy, bcmp, bzero):
2263*75f6d617Schristos	Don't define if already defined.
2264*75f6d617Schristos
2265*75f6d617SchristosFri Mar  5 00:20:16 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
2266*75f6d617Schristos
2267*75f6d617Schristos	* diff.c (main): Use NULL in arg to compare_files.
2268*75f6d617Schristos
2269*75f6d617SchristosThu Feb 25 15:26:01 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
2270*75f6d617Schristos
2271*75f6d617Schristos	* system.h: Declare memchr #if !HAVE_MEMCHR && !STDC_HEADERS,
2272*75f6d617Schristos	not #if !HAVE_MEMCHR || !STDC_HEADERS.
2273*75f6d617Schristos
2274*75f6d617SchristosMon Feb 22 15:04:46 1993  Richard Stallman  (rms@geech.gnu.ai.mit.edu)
2275*75f6d617Schristos
2276*75f6d617Schristos	* io.c (find_identical_ends): Move complicated arg outside GUESS_LINES.
2277*75f6d617Schristos
2278*75f6d617SchristosMon Feb 22 12:56:12 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
2279*75f6d617Schristos
2280*75f6d617Schristos	* Makefile.in (.c.o): Add -I$(srcdir); put $(CFLAGS) last before $<.
2281*75f6d617Schristos
2282*75f6d617SchristosSat Feb 20 19:18:56 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
2283*75f6d617Schristos
2284*75f6d617Schristos	* io.c (binary_file_p): Return zero if file size is zero.
2285*75f6d617Schristos
2286*75f6d617SchristosFri Feb 19 17:31:32 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
2287*75f6d617Schristos
2288*75f6d617Schristos	* Version 2.2 released.
2289*75f6d617Schristos
2290*75f6d617Schristos	* system.h [HAVE_STRING_H || STDC_HEADERS] (index, rindex): Don't
2291*75f6d617Schristos	define if already defined.
2292*75f6d617Schristos
2293*75f6d617SchristosWed Feb 17 17:08:00 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
2294*75f6d617Schristos
2295*75f6d617Schristos	* Makefile.in (srcs): Remove limits.h.
2296*75f6d617Schristos
2297*75f6d617SchristosThu Feb 11 03:36:00 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
2298*75f6d617Schristos
2299*75f6d617Schristos	* diff3.c (xmalloc): No longer static.
2300*75f6d617Schristos
2301*75f6d617Schristos	* sdiff.c (edit): Allocate buf dynamically.
2302*75f6d617Schristos
2303*75f6d617Schristos	* dir.c (dir_sort): Handle VOID_CLOSEDIR.
2304*75f6d617Schristos
2305*75f6d617SchristosWed Feb 10 00:15:54 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
2306*75f6d617Schristos
2307*75f6d617Schristos	* limits.h: File deleted (should never have been there).
2308*75f6d617Schristos
2309*75f6d617SchristosTue Feb  9 03:53:22 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
2310*75f6d617Schristos
2311*75f6d617Schristos	* Makefile.in (.c.o, diff3.o, sdiff.o): Put $(CFLAGS) last.
2312*75f6d617Schristos
2313*75f6d617SchristosWed Feb  3 15:42:10 1993  David J. MacKenzie  (djm@goldman.gnu.ai.mit.edu)
2314*75f6d617Schristos
2315*75f6d617Schristos	* system.h: Don't #define const; let configure do it.
2316*75f6d617Schristos
2317*75f6d617SchristosMon Feb  1 02:13:23 1993  Paul Eggert  (eggert@hal.gnu.ai.mit.edu)
2318*75f6d617Schristos
2319*75f6d617Schristos	* Version 2.1 released.
2320*75f6d617Schristos
2321*75f6d617Schristos	* Makefile.in (dist): Survive ln failures.  Create .tar.z
2322*75f6d617Schristos	(gzipped tar) file as well as .tar.Z (compressed tar) file.
2323*75f6d617Schristos
2324*75f6d617SchristosFri Jan  8 22:31:41 1993  Paul Eggert  (eggert@twinsun.com)
2325*75f6d617Schristos
2326*75f6d617Schristos	* side.c (print_half_line): When the input position falls
2327*75f6d617Schristos	outside the column, do not output a tab even if the output
2328*75f6d617Schristos	position still falls within the column.
2329*75f6d617Schristos
2330*75f6d617SchristosMon Dec 21 13:54:36 1992  David J. MacKenzie  (djm@kropotkin.gnu.ai.mit.edu)
2331*75f6d617Schristos
2332*75f6d617Schristos	* Makefile.in (.c.o): Add -I.
2333*75f6d617Schristos
2334*75f6d617SchristosFri Dec 18 14:08:20 1992  Paul Eggert  (eggert@twinsun.com)
2335*75f6d617Schristos
2336*75f6d617Schristos	* configure.in: Add HAVE_FCNTL_H, since system.h uses it.
2337*75f6d617Schristos
2338*75f6d617SchristosTue Nov 24 10:06:48 1992  David J. MacKenzie  (djm@goldman.gnu.ai.mit.edu)
2339*75f6d617Schristos
2340*75f6d617Schristos	* Makefile.in: Note change from USG to HAVE_STRING_H.
2341*75f6d617Schristos
2342*75f6d617SchristosMon Nov 23 18:44:00 1992  Paul Eggert  (eggert@twinsun.com)
2343*75f6d617Schristos
2344*75f6d617Schristos	* io.c (find_and_hash_each_line): When running out of lines,
2345*75f6d617Schristos	double the number of allocated lines, instead of just doubling
2346*75f6d617Schristos	that number minus the prefix lines.  This is more likely to
2347*75f6d617Schristos	avoid the need for further memory allocation.
2348*75f6d617Schristos
2349*75f6d617SchristosWed Nov 18 20:40:28 1992  Paul Eggert  (eggert@twinsun.com)
2350*75f6d617Schristos
2351*75f6d617Schristos	* dir.c (dir_sort): Plug memory leak: space holding directory
2352*75f6d617Schristos	contents was not being reclaimed.  Get directory size from
2353*75f6d617Schristos	struct file_data for initial guess at memory needed.
2354*75f6d617Schristos	Detect errors when reading and closing directory.
2355*75f6d617Schristos	(diff_dirs): Pass struct file_data to dir_sort.  Finish plugging leak.
2356*75f6d617Schristos	* diff.c (compare_files): Pass struct file_data to diff_dirs.
2357*75f6d617Schristos
2358*75f6d617Schristos	* io.c (find_and_hash_each_line): Don't assume alloc_lines is
2359*75f6d617Schristos	nonzero when allocating more lines.
2360*75f6d617Schristos
2361*75f6d617SchristosThu Nov 12 16:02:18 1992  Paul Eggert  (eggert@twinsun.com)
2362*75f6d617Schristos
2363*75f6d617Schristos	* diff.c (main): Add `-U lines' as an alias for `--unified=lines'.
2364*75f6d617Schristos
2365*75f6d617Schristos	* diff3.c (usage): Add third --label option in example.
2366*75f6d617Schristos
2367*75f6d617Schristos	* util.c (analyze_hunk): Fix test for ignoring blank lines.
2368*75f6d617Schristos
2369*75f6d617Schristos	* configure.in, system.h: Avoid USG; use HAVE_TIME_H etc. instead.
2370*75f6d617Schristos
2371*75f6d617SchristosMon Nov  9 05:13:25 1992  Paul Eggert  (eggert@twinsun.com)
2372*75f6d617Schristos
2373*75f6d617Schristos	* diff3.c (main, usage): Add -A or --show-all.
2374*75f6d617Schristos	-m now defaults to -A, not -E.  Allow up to three -L options.
2375*75f6d617Schristos	(output_diff3_edscript, output_diff3_merge):
2376*75f6d617Schristos	Remove spurious differences between these two functions.
2377*75f6d617Schristos	Output ||||||| for -A.  Distinguish between conflicts and overlaps.
2378*75f6d617Schristos	(dotlines, undotlines): New functions that output `Ns', not `N,Ns'.
2379*75f6d617Schristos	(output_diff3_edscript, output_diff3_merge): Use them.
2380*75f6d617Schristos
2381*75f6d617Schristos	* io.c (find_identical_ends): shift_boundaries needs an extra
2382*75f6d617Schristos	identical line at the end, not at the beginning.
2383*75f6d617Schristos
2384*75f6d617Schristos	* sdiff.c (edit): execvp wants char **, not const char **.
2385*75f6d617Schristos
2386*75f6d617SchristosMon Oct 19 04:39:32 1992  Paul Eggert  (eggert@twinsun.com)
2387*75f6d617Schristos
2388*75f6d617Schristos	* context.c (print_context_script, find_function): Context
2389*75f6d617Schristos	line numbers start with - file->prefix_lines, not 0.
2390*75f6d617Schristos
2391*75f6d617Schristos	* io.c (binary_file_p): Undo last change; it was a library bug.
2392*75f6d617Schristos
2393*75f6d617SchristosSun Oct 18 00:17:29 1992  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
2394*75f6d617Schristos
2395*75f6d617Schristos	* io.c (binary_file_p): Consider empty file as non-binary.
2396*75f6d617Schristos
2397*75f6d617SchristosMon Oct  5 05:18:46 1992  Paul Eggert  (eggert@twinsun.com)
2398*75f6d617Schristos
2399*75f6d617Schristos	* diff3.c (main, make_3way_diff, using_to_diff3_block): Don't
2400*75f6d617Schristos	report bogus differences (for one of -mexEX3) just because the
2401*75f6d617Schristos	file0-file1 diffs don't line up with the file0-file2 diffs.
2402*75f6d617Schristos	(This is entirely possible since we don't use diff's -n
2403*75f6d617Schristos	option.)  Always compare file1 to file2, so that diff3 sees
2404*75f6d617Schristos	those changes directly.  Typically, file2 is now the common
2405*75f6d617Schristos	file, not file0.
2406*75f6d617Schristos	(output_diff3_merge): The input file is file 0, not the common file.
2407*75f6d617Schristos
2408*75f6d617Schristos	(FC, FO): New macros; they replace FILE1, FILE0 for two-way diffs,
2409*75f6d617Schristos	to distinguish them from three-way diffs.
2410*75f6d617Schristos
2411*75f6d617Schristos	* diff3.c (using_to_diff3_block): Fold repeated code into loops.
2412*75f6d617Schristos
2413*75f6d617Schristos	* diff3.c (make_3way_diff, process_diff): Have the *_end
2414*75f6d617Schristos	variable point to the next field to be changed, not to the last
2415*75f6d617Schristos	object allocated; this saves an if-then-else.
2416*75f6d617Schristos
2417*75f6d617Schristos	* diff3.c (process_diff): Use D_NUMLINES instead of its definiens.
2418*75f6d617Schristos
2419*75f6d617Schristos	* diff3.c: Make fns and vars static unless they must be external.
2420*75f6d617Schristos
2421*75f6d617SchristosWed Sep 30 09:21:59 1992  Paul Eggert  (eggert@twinsun.com)
2422*75f6d617Schristos
2423*75f6d617Schristos	* analyze.c (diff_2_files): OUTPUT_IFDEF is now robust.
2424*75f6d617Schristos	* diff.h (ROBUST_OUTPUT_STYLE): Likewise.
2425*75f6d617Schristos	(default_line_format): Remove.  All refs removed.
2426*75f6d617Schristos
2427*75f6d617Schristos	* ifdef.c (print_ifdef_lines): Add %L.  Optimize %l\n even if user
2428*75f6d617Schristos	specified it, as opposed to its being the default.
2429*75f6d617Schristos
2430*75f6d617SchristosTue Sep 29 19:01:28 1992  Paul Eggert  (eggert@twinsun.com)
2431*75f6d617Schristos
2432*75f6d617Schristos	* diff.c (longopts, main): --{old,new,unchanged,changed}--group-format
2433*75f6d617Schristos	are new options, so that -D is no longer overloaded.  Set
2434*75f6d617Schristos	no_diff_means_no_output if --unchanged-{line,group}-format allows it.
2435*75f6d617Schristos	* diff.h (enum line_class): New type.
2436*75f6d617Schristos	(group_format, line_format): Use it to regularize option flags.
2437*75f6d617Schristos	All refs changed.
2438*75f6d617Schristos
2439*75f6d617Schristos	* ifdef.c (format_ifdef, print_ifdef_lines): %n is no longer a format.
2440*75f6d617Schristos
2441*75f6d617SchristosMon Sep 28 04:51:42 1992  Paul Eggert  (eggert@twinsun.com)
2442*75f6d617Schristos
2443*75f6d617Schristos	* diff.c (main, usage): Replace --line-prefix with the more general
2444*75f6d617Schristos	--{old,new,unchanged}-line-format options.
2445*75f6d617Schristos	* ifdef.c (format_ifdef, print_ifdef_lines): Likewise.
2446*75f6d617Schristos	* diff.h (line_format): Renamed from line_prefix.  All refs changed.
2447*75f6d617Schristos	* diff.h, ifdef.c (default_line_format): New variable.
2448*75f6d617Schristos	* util.c (output_1_line): New function.
2449*75f6d617Schristos	(print_1_line): Use it.
2450*75f6d617Schristos
2451*75f6d617Schristos	* ifdef.c: (format_ifdef, print_ifdef_lines): Add %0 format.
2452*75f6d617Schristos
2453*75f6d617SchristosSun Sep 27 05:38:13 1992  Paul Eggert  (eggert@twinsun.com)
2454*75f6d617Schristos
2455*75f6d617Schristos	* diff.c (main): Add -E or --line-prefix option.  Add -D'=xxx'
2456*75f6d617Schristos	for common lines.  Change default -D< format from copy of -D>
2457*75f6d617Schristos	format to to -D<%<; similarly for default -D> format.
2458*75f6d617Schristos	* diff.h (common_format, line_prefix): New variables.
2459*75f6d617Schristos	* ifdef.c (format_ifdef): New function.
2460*75f6d617Schristos	(print_ifdef_script, print_ifdef_hunk, print_ifdef_lines):
2461*75f6d617Schristos	Use it for -D'=xxx', -E.
2462*75f6d617Schristos
2463*75f6d617Schristos	* context.c (find_hunk): Glue together two non-ignorable changes that
2464*75f6d617Schristos	are exactly CONTEXT * 2 lines apart.  This shortens output, removes
2465*75f6d617Schristos	a behavioral discontinuity at CONTEXT = 0, and is more compatible
2466*75f6d617Schristos	with traditional diff.
2467*75f6d617Schristos
2468*75f6d617Schristos	* io.c (find_identical_ends): Slurp stdin at most once.
2469*75f6d617Schristos
2470*75f6d617Schristos	* util.c (print_line_line): line_flag is const char *.
2471*75f6d617Schristos
2472*75f6d617SchristosThu Sep 24 15:18:07 1992  Paul Eggert  (eggert@twinsun.com)
2473*75f6d617Schristos
2474*75f6d617Schristos	* ifdef.c (print_ifdef_lines): New function, which fwrites a sequence
2475*75f6d617Schristos	of lines all at once for speed.
2476*75f6d617Schristos	(print_ifdef_script, print_ifdef_hunk): Use it.
2477*75f6d617Schristos
2478*75f6d617SchristosThu Sep 24 05:54:14 1992  Paul Eggert  (eggert@twinsun.com)
2479*75f6d617Schristos
2480*75f6d617Schristos	* diff.c (main): Support new -D options for if-then-else formats.
2481*75f6d617Schristos	(specify_format): New function.
2482*75f6d617Schristos	* diff.h (ifndef_format, ifdef_format, ifnelse_format): New variables.
2483*75f6d617Schristos	* ifdef.c (print_ifdef_hunk): Use the new variables instead of
2484*75f6d617Schristos	a hardwired format.
2485*75f6d617Schristos
2486*75f6d617Schristos	* side.c (print_1sdiff_line): Represent incomplete lines on output.
2487*75f6d617Schristos	(print_sdiff_script): Likewise.  Don't print 'q' at end,
2488*75f6d617Schristos	since that doesn't work with incomplete lines.
2489*75f6d617Schristos	* sdiff.c (interact): Don't assume diff output ends with 'q' line.
2490*75f6d617Schristos	* diff.h (ROBUST_OUTPUT_STYLE): OUTPUT_SDIFF is now robust.
2491*75f6d617Schristos
2492*75f6d617Schristos	* sdiff.c (lf_copy, lf_snarf): Use memchr instead of index,
2493*75f6d617Schristos	to avoid dumping core when files contain null characters.
2494*75f6d617Schristos	(memchr): New function (if memchr is missing).
2495*75f6d617Schristos
2496*75f6d617Schristos	* io.c (sip): New arg SKIP_TEST to skip test for binary file.
2497*75f6d617Schristos	(read_files): Don't bother testing second file if first is binary.
2498*75f6d617Schristos
2499*75f6d617SchristosThu Sep 17 21:17:49 1992  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
2500*75f6d617Schristos
2501*75f6d617Schristos	* system.h [!USG && !_POSIX_VERSION]: Protect from conflicting
2502*75f6d617Schristos	prototype for wait in sys/wait.h.
2503*75f6d617Schristos
2504*75f6d617SchristosWed Sep 16 12:32:18 1992  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
2505*75f6d617Schristos
2506*75f6d617Schristos	* Makefile.in: Include binprefix in -DDIFF_PROGRAM.
2507*75f6d617Schristos
2508*75f6d617SchristosTue Sep 15 14:27:25 1992  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
2509*75f6d617Schristos
2510*75f6d617Schristos	* Version 2.0.
2511*75f6d617Schristos
2512*75f6d617SchristosSat Sep 12 01:31:19 1992  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
2513*75f6d617Schristos
2514*75f6d617Schristos	* util.c, diff.h, system.h [!HAVE_MEMCHR]: Don't use void *
2515*75f6d617Schristos	and const when declaring memchr replacement.  Declare memchr
2516*75f6d617Schristos	if !STDC_HEADERS && !USG.
2517*75f6d617Schristos
2518*75f6d617SchristosThu Sep 10 15:17:32 1992  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
2519*75f6d617Schristos
2520*75f6d617Schristos	* Makefile.in (uninstall): New target.
2521*75f6d617Schristos
2522*75f6d617Schristos	* diff.c (excluded_filename): Use fnmatch, not wildmat.
2523*75f6d617Schristos	(usage): Document -x, -X, --exclude, --exclude-from.
2524*75f6d617Schristos	Makefile.in: Use fnmatch.c, not wildmat.c.
2525*75f6d617Schristos
2526*75f6d617SchristosSun Sep  6 23:46:25 1992  Paul Eggert (eggert@twinsun.com)
2527*75f6d617Schristos
2528*75f6d617Schristos	* configure.in: Add HAVE_MEMCHR.
2529*75f6d617Schristos	* diff.h, util.c: Use it instead of MEMCHR_MISSING.
2530*75f6d617Schristos
2531*75f6d617SchristosSun Sep  6 07:25:49 1992  Paul Eggert (eggert@twinsun.com)
2532*75f6d617Schristos
2533*75f6d617Schristos	* diff.h: (struct line_def): Replace this 3-word struct with char *.
2534*75f6d617Schristos	This uses less memory, particularly for large files with short lines.
2535*75f6d617Schristos	(struct file_data): New member linbuf_base counts number of lines
2536*75f6d617Schristos	in common prefix that are not recorded in linbuf;
2537*75f6d617Schristos	this uses less memory if files are identical or differ only at end.
2538*75f6d617Schristos	New member buffered_lines counts possibly differing lines.
2539*75f6d617Schristos	New member valid_lines counts valid data.
2540*75f6d617Schristos	New member alloc_lines - linbuf_base replaces old linbufsize.
2541*75f6d617Schristos	linbuf[0] now always points at first differing line.
2542*75f6d617Schristos	Remove unused members ltran, suffix_lines.
2543*75f6d617Schristos	Add const where appropriate.
2544*75f6d617Schristos	(Is_space): New macro, for consistent definition of `white space'.
2545*75f6d617Schristos	(excluded_filename, memchr, sip, slurp): New declarations.
2546*75f6d617Schristos	* ed.c (print_ed_hunk): Adjust to diff.h's struct changes.
2547*75f6d617Schristos	* context.c (pr_context_hunk): Likewise.
2548*75f6d617Schristos	* ifdef.c (print_ifdef_script): Likewise.
2549*75f6d617Schristos	* side.c (print_sdiff_script, print_half_line): Likewise.
2550*75f6d617Schristos	* util.c (analyze_hunk, line_cmp, print_1_line): Likewise.
2551*75f6d617Schristos
2552*75f6d617Schristos	* analyze.c (shift_boundaries): Remove unneeded variable `end' and
2553*75f6d617Schristos	unnecessary comparisons of `preceding' and `other_preceding' against 0.
2554*75f6d617Schristos	(diff_2_files): When comparing files byte-by-byte for equality,
2555*75f6d617Schristos	don't slurp them all in at once; just compare them a buffer at a time.
2556*75f6d617Schristos	This can win big if they differ early on.
2557*75f6d617Schristos	Move some code to compare_files to enable this change.
2558*75f6d617Schristos	Use only one buffer for stdin with `diff - -'.
2559*75f6d617Schristos	(discard_confusing_lines, diff_2_files): Coalesce malloc/free calls.
2560*75f6d617Schristos	(build_script): Remove obsolete OUTPUT_RCS code.
2561*75f6d617Schristos
2562*75f6d617Schristos	* diff.c (add_exclude, add_exclude_file, excluded_filename): New fns.
2563*75f6d617Schristos	(main): Use them for the new --exclude and --exclude-from options.
2564*75f6d617Schristos	(compare_files): Don't open a file unless it must be read.
2565*75f6d617Schristos	Treat `diff file file' and `diff file dir' similarly.
2566*75f6d617Schristos	Move some code here from diff_2_files to enable this.
2567*75f6d617Schristos	Simplify file vs dir warning.
2568*75f6d617Schristos
2569*75f6d617Schristos	* dir.c (dir_sort): Support new --exclude* options.
2570*75f6d617Schristos
2571*75f6d617Schristos	* io.c (struct equivclass): Put hash code and line length here instead
2572*75f6d617Schristos	of struct line_def, so that they can be shared.
2573*75f6d617Schristos	(find_and_hash_each_line): Compute equivalence class as we go,
2574*75f6d617Schristos	instead of doing it in a separate pass; this thrashes memory less.
2575*75f6d617Schristos	Make buckets realloc-able, since we can't preallocate them.
2576*75f6d617Schristos	Record one more line start than there are lines, so that we can compute
2577*75f6d617Schristos	any line's length by subtracting its start from the next line's,
2578*75f6d617Schristos	instead of storing the length explicitly.  This saves memory.
2579*75f6d617Schristos	Move prefix-handling code to find_identical_ends;
2580*75f6d617Schristos	this wins with large prefixes.
2581*75f6d617Schristos	Use Is_space, not is_space, for consistent treatment of white space.
2582*75f6d617Schristos	(prepare_text_end): New function.
2583*75f6d617Schristos	(find_identical_ends): Move slurping here, so it's only done when
2584*75f6d617Schristos	needed.  Work even if the buffers are the same (because of `diff - -').
2585*75f6d617Schristos	Compare prefixes a word at a time for speed.
2586*75f6d617Schristos	(find_equiv_class): Delete; now done by find_and_hash_each_line.
2587*75f6d617Schristos	(read_files): Don't slurp unless needed.
2588*75f6d617Schristos	find_equiv_class's work is now folded into find_and_hash_each_line.
2589*75f6d617Schristos	Don't copy stdin buffer if `diff - -'.
2590*75f6d617Schristos	Check for running out of primes.
2591*75f6d617Schristos	(sip, slurp): Split first part of `slurp' into another function `sip'.
2592*75f6d617Schristos	`sip' sets things up and perhaps reads the first ST_BLKSIZE buffer to
2593*75f6d617Schristos	see whether the file is binary; `slurp' now just finishes the job.
2594*75f6d617Schristos	This lets diff_2_files compare binary files lazily.
2595*75f6d617Schristos	Allocate a one-word sentinel to allow word-at-a-time prefix comparison.
2596*75f6d617Schristos	Count prefix lines only if needed, only count the first file's prefix.
2597*75f6d617Schristos	Don't bother to count suffix lines; it's never needed.
2598*75f6d617Schristos	Set up linbuf[0] to point at first differing line.
2599*75f6d617Schristos	(binary_file_p): Change test for binary files:
2600*75f6d617Schristos	if it has a null byte in its first buffer, it's binary.
2601*75f6d617Schristos	(primes): Add more primes.
2602*75f6d617Schristos
2603*75f6d617Schristos	* util.c (line_cmp): Use bcmp for speed.
2604*75f6d617Schristos	Use Is_space, not is_space, for consistent treatment of white space.
2605*75f6d617Schristos	(translate_line_number): Internal line numbers now count from 0
2606*75f6d617Schristos	starting after the prefix.
2607*75f6d617Schristos	(memchr): New function (if memchr is missing).
2608*75f6d617Schristos
2609*75f6d617Schristos	* Makefile.in: Document HAVE_ST_BLKSIZE.  Link with wildmat.o.
2610*75f6d617Schristos	* system.h (STAT_BLOCKSIZE): New macro based on HAVE_ST_BLKSIZE.
2611*75f6d617Schristos	* configure.in: Add AC_ST_BLKSIZE.
2612*75f6d617Schristos	* wildmat.c: New file.
2613*75f6d617Schristos
2614*75f6d617SchristosFri Sep  4 01:28:51 1992  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
2615*75f6d617Schristos
2616*75f6d617Schristos	* sdiff.c (xmalloc): Renamed from ck_malloc.  Callers changed.
2617*75f6d617Schristos
2618*75f6d617SchristosThu Sep  3 15:28:59 1992  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
2619*75f6d617Schristos
2620*75f6d617Schristos	* diff.h: Don't declare free, index, rindex.
2621*75f6d617Schristos
2622*75f6d617SchristosTue Aug 11 22:18:06 1992  John Gilmore  (gnu at cygnus.com)
2623*75f6d617Schristos
2624*75f6d617Schristos	* io.c (binary_file_p):  Use heuristic to avoid declaring info
2625*75f6d617Schristos	files as binary files.  Allow about 1.5% non-printing
2626*75f6d617Schristos	characters (in info's case, ^_).
2627*75f6d617Schristos
2628*75f6d617SchristosTue Jul  7 01:09:26 1992  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
2629*75f6d617Schristos
2630*75f6d617Schristos	* diff.h: Replace function_regexp and ignore_regexp with lists
2631*75f6d617Schristos	of compiled regexps.
2632*75f6d617Schristos	* analyze.c, context.c, util.c: Test whether the lists, not
2633*75f6d617Schristos	the old variables, are empty.
2634*75f6d617Schristos	* util.c (analyze_hunk), context.c (find_function): Compare
2635*75f6d617Schristos	lines with the lists of regexps.
2636*75f6d617Schristos	* diff.c (add_regexp): New function.
2637*75f6d617Schristos	(main): Use it.
2638*75f6d617Schristos
2639*75f6d617Schristos	* diff3: Add -v --version option.
2640*75f6d617Schristos	* Makefile.in: Link with version.o.
2641*75f6d617Schristos
2642*75f6d617Schristos	* system.h: New file.
2643*75f6d617Schristos	* diff.h, cmp.c, diff3.c, sdiff.c: Use it.
2644*75f6d617Schristos
2645*75f6d617Schristos	* diff.h, diff3.c: Include string.h or strings.h, as appropriate.
2646*75f6d617Schristos	Declare malloc and realloc.
2647*75f6d617Schristos
2648*75f6d617Schristos	* diff3.c (perror_with_exit): Include program name in message.
2649*75f6d617Schristos
2650*75f6d617Schristos	* diff3.c: Lowercase error messages for GNU standards.
2651*75f6d617Schristos
2652*75f6d617Schristos	* sdiff.c [USG || STDC_HEADERS]: Define bcopy in terms of memcpy.
2653*75f6d617Schristos
2654*75f6d617Schristos	* sdiff.c: Use the version number from version.c.
2655*75f6d617Schristos	* Makefile.in: Link with version.o.
2656*75f6d617Schristos
2657*75f6d617Schristos	* cmp.c error.c xmalloc.c: New files from textutils.
2658*75f6d617Schristos	* Makefile.in: Add rules for them.
2659*75f6d617Schristos
2660*75f6d617Schristos	* diff.c (longopts): --unidirectional-new-file is like -P, not -N.
2661*75f6d617Schristos	Rename --file-label to --label (leave old name, but undocumented).
2662*75f6d617Schristos
2663*75f6d617Schristos	* sdiff.c, diff.c (usage): Condense messages and fix some errors.
2664*75f6d617Schristos
2665*75f6d617Schristos	* diff3.c (main, usage): Add long-named options.
2666*75f6d617Schristos
2667*75f6d617SchristosFri Jul  3 14:31:18 1992  David J. MacKenzie  (djm@nutrimat.gnu.ai.mit.edu)
2668*75f6d617Schristos
2669*75f6d617Schristos	* diff.h, diff3.c, sdiff.c: Change FOO_MISSING macros to HAVE_FOO.
2670*75f6d617Schristos
2671*75f6d617SchristosThu Jun 25 16:59:47 1992  David J. MacKenzie  (djm@apple-gunkies.gnu.ai.mit.edu)
2672*75f6d617Schristos
2673*75f6d617Schristos	* diff.c: --reversed-ed -> --forward-ed.
2674*75f6d617Schristos
2675*75f6d617SchristosWed Feb 26 12:17:32 1992  Paul Eggert  (eggert@yata.uucp)
2676*75f6d617Schristos
2677*75f6d617Schristos	* analyze.c, diff.c, diff.h, io.c: For -y, compare even if same file.
2678*75f6d617Schristos
2679*75f6d617SchristosFri Feb 14 22:46:38 1992  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
2680*75f6d617Schristos
2681*75f6d617Schristos	* io.c, diff3.c, analyze.c: Add extra parentheses.
2682*75f6d617Schristos
2683*75f6d617SchristosSun Feb  9 00:22:42 1992  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
2684*75f6d617Schristos
2685*75f6d617Schristos	* diff.h (unidirectional_new_file_flag): New variable.
2686*75f6d617Schristos	* diff.c (main): Set that for -P.
2687*75f6d617Schristos	(compare_files): Support -P, somewhat like -N.
2688*75f6d617Schristos	(longopts): Support long name for -P.
2689*75f6d617Schristos
2690*75f6d617SchristosSat Jan  4 20:10:34 1992  Paul Eggert (eggert at yata.uucp)
2691*75f6d617Schristos
2692*75f6d617Schristos	* Makefile.in: Distribute diff.info-* too.
2693*75f6d617Schristos
2694*75f6d617Schristos	* README, sdiff.c: version number now matches version.c.
2695*75f6d617Schristos
2696*75f6d617Schristos	* configure: Fix and document vfork test.
2697*75f6d617Schristos
2698*75f6d617Schristos	* ifdef.c: Don't dump core if `diff -Dx f f'.
2699*75f6d617Schristos
2700*75f6d617SchristosMon Dec 23 23:36:08 1991  David J. MacKenzie  (djm at wookumz.gnu.ai.mit.edu)
2701*75f6d617Schristos
2702*75f6d617Schristos	* diff.h, diff3.c, sdiff.c: Change POSIX ifdefs to
2703*75f6d617Schristos	HAVE_UNISTD_H and _POSIX_VERSION.
2704*75f6d617Schristos
2705*75f6d617SchristosWed Dec 18 17:00:31 1991  David J. MacKenzie  (djm at wookumz.gnu.ai.mit.edu)
2706*75f6d617Schristos
2707*75f6d617Schristos	* Makefile.in (srcs): Add sdiff.c.
2708*75f6d617Schristos	(tapefiles): Add diff.texi and diff.info.
2709*75f6d617Schristos
2710*75f6d617Schristos	* diff.h, diff3.c, sdiff.c: Use HAVE_VFORK_H instead of
2711*75f6d617Schristos	VFORK_HEADER and VFORK_WORKS.
2712*75f6d617Schristos
2713*75f6d617SchristosTue Dec 17 00:02:59 1991  Paul Eggert  (eggert at yata.uucp)
2714*75f6d617Schristos
2715*75f6d617Schristos	* Makefile.in (all): Add diff.info, sdiff.
2716*75f6d617Schristos
2717*75f6d617Schristos	* configure, diff.c, sdiff.c:
2718*75f6d617Schristos	Prefix long options with `--', not `+'.
2719*75f6d617Schristos	* diff.c: Regularize option names.
2720*75f6d617Schristos
2721*75f6d617Schristos	* configure: Fix check for vfork.
2722*75f6d617Schristos	* configure, diff.c, diff.h, diff3.c, sdiff.c:
2723*75f6d617Schristos	Use Posix definitions when possible.
2724*75f6d617Schristos
2725*75f6d617Schristos	* context.c: Align context with tab if -T is given.  Tune.
2726*75f6d617Schristos	* diff.c, diff.h, side.c: Calculate column widths so that tabs line up.
2727*75f6d617Schristos	* io.c: Add distinction between white space and printing chars.
2728*75f6d617Schristos	* side.c: Don't expand tabs unless -t is given.
2729*75f6d617Schristos	* side.c, util.c: Tab expansion now knows about '\b', '\f', '\r', '\v'.
2730*75f6d617Schristos	* util.c: -w skips all white space.  Remove lint.  Tune.
2731*75f6d617Schristos
2732*75f6d617Schristos	* sdiff.c: Support many more diff options, e.g. `-', `sdiff file dir'.
2733*75f6d617Schristos	Ignore interrupts while the subsidiary editor is in control.
2734*75f6d617Schristos	Clean up temporary file and kill subsidiary diff if interrupted.
2735*75f6d617Schristos	Ensure subsidiary diff doesn't ignore SIGPIPE.
2736*75f6d617Schristos	Don't get confused while waiting for two subprocesses.
2737*75f6d617Schristos	Don't let buffers overflow.  Check for I/O errors.
2738*75f6d617Schristos	Convert to GNU style.  Tune.
2739*75f6d617Schristos
2740*75f6d617Schristos	* sdiff.c, util.c: Don't lose errno.
2741*75f6d617Schristos	Don't confuse sdiff with messages like `Binary files differ'.
2742*75f6d617Schristos	* sdiff.c, side.c: Don't assume that common lines are identical.
2743*75f6d617Schristos	Simplify --sdiff-merge-assist format.
2744*75f6d617Schristos
2745*75f6d617SchristosMon Sep 16 16:42:01 1991  Tom Lord  (lord at churchy.gnu.ai.mit.edu)
2746*75f6d617Schristos
2747*75f6d617Schristos	* Makefile.in, sdiff.c: introduced sdiff front end to diff.
2748*75f6d617Schristos
2749*75f6d617Schristos	* Makefile.in, analyze.c, diff.c, diff.h, io.c, side.c: Added
2750*75f6d617Schristos	sdiff-style output format to diff.
2751*75f6d617Schristos
2752*75f6d617SchristosMon Aug 26 16:44:55 1991  David J. MacKenzie  (djm at pogo.gnu.ai.mit.edu)
2753*75f6d617Schristos
2754*75f6d617Schristos	* Makefile.in, configure: Only put $< in Makefile if using VPATH,
2755*75f6d617Schristos	because older makes don't understand it.
2756*75f6d617Schristos
2757*75f6d617SchristosFri Aug  2 12:22:30 1991  David J. MacKenzie  (djm at apple-gunkies)
2758*75f6d617Schristos
2759*75f6d617Schristos	* configure: Create config.status.  Remove it and Makefile if
2760*75f6d617Schristos	interrupted while creating them.
2761*75f6d617Schristos
2762*75f6d617SchristosThu Aug  1 22:24:31 1991  David J. MacKenzie  (djm at apple-gunkies)
2763*75f6d617Schristos
2764*75f6d617Schristos	* configure: Check for +srcdir etc. arg and look for
2765*75f6d617Schristos	Makefile.in in that directory.  Set VPATH if srcdir is not `.'.
2766*75f6d617Schristos	* Makefile.in: Get rid of $(archpfx).
2767*75f6d617Schristos
2768*75f6d617SchristosTue Jul 30 21:28:44 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
2769*75f6d617Schristos
2770*75f6d617Schristos	* Makefile.in (prefix): Renamed from DESTDIR.
2771*75f6d617Schristos
2772*75f6d617SchristosWed Jul 24 23:08:56 1991  David J. MacKenzie  (djm at wookumz.gnu.ai.mit.edu)
2773*75f6d617Schristos
2774*75f6d617Schristos	* diff.h, diff3.c: Rearrange ifdefs to use POSIX,
2775*75f6d617Schristos	STDC_HEADERS, VFORK_MISSING, DIRENT.  This way it works on
2776*75f6d617Schristos	more systems that aren't pure USG or BSD.
2777*75f6d617Schristos	Don't not define const if __GNUC__ is defined -- that would
2778*75f6d617Schristos	break with -traditional.
2779*75f6d617Schristos	* configure: Check for those features.
2780*75f6d617Schristos
2781*75f6d617SchristosWed Jul 10 01:39:23 1991  David J. MacKenzie  (djm at wookumz.gnu.ai.mit.edu)
2782*75f6d617Schristos
2783*75f6d617Schristos	* configure, Makefile.in: $(INSTALLPROG) -> $(INSTALL).
2784*75f6d617Schristos
2785*75f6d617SchristosSat Jul  6 16:39:04 1991  David J. MacKenzie  (djm at geech.gnu.ai.mit.edu)
2786*75f6d617Schristos
2787*75f6d617Schristos	* Replace Makefile with configure and Makefile.in.
2788*75f6d617Schristos	Update README with current compilation instructions.
2789*75f6d617Schristos
2790*75f6d617SchristosSat Jul  6 14:03:29 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
2791*75f6d617Schristos
2792*75f6d617Schristos	* util.c (setup_output): Just save the args for later use.
2793*75f6d617Schristos	(begin_output): Do the real work, with the values that were saved.
2794*75f6d617Schristos	It's safe to call begin_output more than once.
2795*75f6d617Schristos	Print the special headers for context format here.
2796*75f6d617Schristos	* analyze.c (diff_2_files): Don't print special headers here.
2797*75f6d617Schristos	* context.c (pr_context_hunk, pr_unidiff_hunk): Call begin_output.
2798*75f6d617Schristos	* ed.c (print_ed_hunk, print_forward_ed_hunk, print_rcs_hunk):
2799*75f6d617Schristos	* normal.c (print_normal_hunk): Likewise.
2800*75f6d617Schristos	* ifdef.c (print_ifdef_hunk): Likewise.
2801*75f6d617Schristos	* util.c (finish_output): Don't die if begin_output was not called.
2802*75f6d617Schristos
2803*75f6d617SchristosThu Jun 20 23:10:01 1991  David J. MacKenzie  (djm at geech.gnu.ai.mit.edu)
2804*75f6d617Schristos
2805*75f6d617Schristos	* Makefile: Add TAGS, distclean, and realclean targets.
2806*75f6d617Schristos	Set SHELL.
2807*75f6d617Schristos
2808*75f6d617SchristosTue Apr 30 13:54:36 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
2809*75f6d617Schristos
2810*75f6d617Schristos	* diff.h (TRUE, FALSE): Undefine these before defining.
2811*75f6d617Schristos
2812*75f6d617SchristosThu Mar 14 18:27:27 1991  Richard Stallman  (rms@mole.ai.mit.edu)
2813*75f6d617Schristos
2814*75f6d617Schristos	* Makefile (objs): Include $(ALLOCA).
2815*75f6d617Schristos
2816*75f6d617SchristosSat Mar  9 22:34:03 1991  Richard Stallman  (rms at mole.ai.mit.edu)
2817*75f6d617Schristos
2818*75f6d617Schristos	* diff.h: Include regex.h.
2819*75f6d617Schristos
2820*75f6d617SchristosThu Feb 28 18:59:53 1991  Richard Stallman  (rms at mole.ai.mit.edu)
2821*75f6d617Schristos
2822*75f6d617Schristos	* Makefile (diff3): Link with GNU getopt.
2823*75f6d617Schristos
2824*75f6d617SchristosSat Feb 23 12:49:43 1991  Richard Stallman  (rms at mole.ai.mit.edu)
2825*75f6d617Schristos
2826*75f6d617Schristos	* io.c (find_equiv_class): Make hash code unsigned before mod.
2827*75f6d617Schristos
2828*75f6d617Schristos	* diff.h (files): Add EXTERN.
2829*75f6d617Schristos
2830*75f6d617SchristosSun Jan 13 21:33:01 1991  Richard Stallman  (rms at mole.ai.mit.edu)
2831*75f6d617Schristos
2832*75f6d617Schristos	* diff.c: +print option renamed +paginate.  Remove +all-text.
2833*75f6d617Schristos
2834*75f6d617SchristosMon Jan  7 06:18:01 1991  David J. MacKenzie  (djm at geech.ai.mit.edu)
2835*75f6d617Schristos
2836*75f6d617Schristos	* Makefile (dist): New target, replacing diff.tar and
2837*75f6d617Schristos	diff.tar.Z, to encode version number in distribution directory
2838*75f6d617Schristos	and tar file names.
2839*75f6d617Schristos
2840*75f6d617SchristosSun Jan  6 18:42:23 1991  Michael I Bushnell  (mib at geech.ai.mit.edu)
2841*75f6d617Schristos
2842*75f6d617Schristos	* Version 1.15 released.
2843*75f6d617Schristos
2844*75f6d617Schristos	* version.c: Updated from 1.15 alpha to 1.15
2845*75f6d617Schristos
2846*75f6d617Schristos	* context.c (print_context_number_range,
2847*75f6d617Schristos	print_unidiff_number_range): Don't print N,M when N=M, print
2848*75f6d617Schristos	just N instead.
2849*75f6d617Schristos
2850*75f6d617Schristos	* README: Updated for version 1.15.
2851*75f6d617Schristos	Makefile: Updated for version 1.15.
2852*75f6d617Schristos
2853*75f6d617Schristos	* diff3.c (main): Don't get confused if one of the arguments
2854*75f6d617Schristos	is a directory.
2855*75f6d617Schristos
2856*75f6d617Schristos	* diff.c (compare_files): Don't get confused if comparing
2857*75f6d617Schristos	standard input to a directory; print error instead.
2858*75f6d617Schristos
2859*75f6d617Schristos	* analyze.c (diff_2_files), context.c (print_context_header,
2860*75f6d617Schristos	print_context_script), diff.c (main), diff.h (enum
2861*75f6d617Schristos	output_style): Tread unidiff as an output style in its own
2862*75f6d617Schristos	right.  This also generates an error when both -u and -c are
2863*75f6d617Schristos	given.
2864*75f6d617Schristos
2865*75f6d617Schristos	* diff.c (main): Better error messages when regexps are bad.
2866*75f6d617Schristos
2867*75f6d617Schristos	* diff.c (compare_files): Don't assume stdin is opened.
2868*75f6d617Schristos
2869*75f6d617Schristos	* diff3.c (read_diff): Don't assume things about the order of
2870*75f6d617Schristos	descriptor assignment and closes.
2871*75f6d617Schristos
2872*75f6d617Schristos	* util.c (setup_output): Don't assume things about the order
2873*75f6d617Schristos	of descriptor assignment and closes.
2874*75f6d617Schristos
2875*75f6d617Schristos	* diff.c (compare_files): Set a flag so that closes don't
2876*75f6d617Schristos	happen more than once.
2877*75f6d617Schristos
2878*75f6d617Schristos	* diff.c (main): Don't just flush stdout, do a close.  That
2879*75f6d617Schristos	way on broken systems we can still get errors.
2880*75f6d617Schristos
2881*75f6d617SchristosMon Dec 24 16:24:17 1990  Richard Stallman  (rms at mole.ai.mit.edu)
2882*75f6d617Schristos
2883*75f6d617Schristos	* diff.c (usage): Use = for args of long options.
2884*75f6d617Schristos
2885*75f6d617SchristosMon Dec 17 18:19:20 1990  Michael I Bushnell  (mib at geech.ai.mit.edu)
2886*75f6d617Schristos
2887*75f6d617Schristos	* context.c (print_context_label): Labels were interchanged badly.
2888*75f6d617Schristos
2889*75f6d617Schristos	* context.c (pr_unidiff_hunk): Changes to deal with files
2890*75f6d617Schristos	ending in incomplete lines.
2891*75f6d617Schristos	* util.c (print_1_line): Other half of the changes.
2892*75f6d617Schristos
2893*75f6d617SchristosMon Dec  3 14:23:55 1990  Richard Stallman  (rms at mole.ai.mit.edu)
2894*75f6d617Schristos
2895*75f6d617Schristos	* diff.c (longopts, usage): unidiff => unified.
2896*75f6d617Schristos
2897*75f6d617SchristosWed Nov  7 17:13:08 1990  Richard Stallman  (rms at mole.ai.mit.edu)
2898*75f6d617Schristos
2899*75f6d617Schristos	* analyze.c (diff_2_files): No warnings about newlines for -D.
2900*75f6d617Schristos
2901*75f6d617Schristos	* diff.c (pr_unidiff_hunk): Remove ref to output_patch_flag.
2902*75f6d617Schristos
2903*75f6d617SchristosTue Oct 23 23:19:18 1990  Richard Stallman  (rms at mole.ai.mit.edu)
2904*75f6d617Schristos
2905*75f6d617Schristos	* diff.c (compare_files): For -D, compare even args are same file.
2906*75f6d617Schristos	* analyze.c (diff_2_files): Likewise.
2907*75f6d617Schristos	Also, output even if files have no differences.
2908*75f6d617Schristos
2909*75f6d617Schristos	* analyze.c (diff_2_files): Print missing newline messages last.
2910*75f6d617Schristos	Return 2 if a newline is missing.
2911*75f6d617Schristos	Print them even if files end with identical text.
2912*75f6d617Schristos
2913*75f6d617SchristosMon Oct 22 19:40:09 1990  Richard Stallman  (rms at mole.ai.mit.edu)
2914*75f6d617Schristos
2915*75f6d617Schristos	* diff.c (usage): Return 2.
2916*75f6d617Schristos
2917*75f6d617SchristosWed Oct 10 20:54:04 1990  Richard Stallman  (rms at mole.ai.mit.edu)
2918*75f6d617Schristos
2919*75f6d617Schristos	* diff.c (longopts): Add +new-files.
2920*75f6d617Schristos
2921*75f6d617SchristosSun Sep 23 22:49:29 1990  Richard Stallman  (rms at mole.ai.mit.edu)
2922*75f6d617Schristos
2923*75f6d617Schristos	* context.c (print_context_script): Handle unidiff_flag.
2924*75f6d617Schristos	(print_context_header): Likewise.
2925*75f6d617Schristos	(print_unidiff_number_range, pr_unidiff_hunk): New functions.
2926*75f6d617Schristos	* diff.c (longopts): Add element for +unidiff.
2927*75f6d617Schristos	(main): Handle +unidiff and -u.
2928*75f6d617Schristos	(usage): Mention them.
2929*75f6d617Schristos
2930*75f6d617SchristosWed Sep  5 16:33:22 1990  Richard Stallman  (rms at mole.ai.mit.edu)
2931*75f6d617Schristos
2932*75f6d617Schristos	* io.c (find_and_hash_each_line): Deal with missing final newline
2933*75f6d617Schristos	after buffering necessary context lines.
2934*75f6d617Schristos
2935*75f6d617SchristosSat Sep  1 16:32:32 1990  Richard Stallman  (rms at mole.ai.mit.edu)
2936*75f6d617Schristos
2937*75f6d617Schristos	* io.c (find_identical_ends): ROBUST_OUTPUT_FORMAT test was backward.
2938*75f6d617Schristos
2939*75f6d617SchristosThu Aug 23 17:17:20 1990  Richard Stallman  (rms at mole.ai.mit.edu)
2940*75f6d617Schristos
2941*75f6d617Schristos	* diff3.c (WIFEXITED): Undef it if WEXITSTATUS is not defined.
2942*75f6d617Schristos	* context.c (find_function): Don't try to return values.
2943*75f6d617Schristos
2944*75f6d617SchristosWed Aug 22 11:54:39 1990  Richard Stallman  (rms at mole.ai.mit.edu)
2945*75f6d617Schristos
2946*75f6d617Schristos	* diff.h (O_RDONLY): Define if not defined.
2947*75f6d617Schristos
2948*75f6d617SchristosTue Aug 21 13:49:26 1990  Richard Stallman  (rms at mole.ai.mit.edu)
2949*75f6d617Schristos
2950*75f6d617Schristos	* Handle -L option.
2951*75f6d617Schristos	* context.c (print_context_label): New function.
2952*75f6d617Schristos	(print_context_header): Use that.
2953*75f6d617Schristos	* diff.c (main): Recognize the option.
2954*75f6d617Schristos	(usage): Updated.
2955*75f6d617Schristos	* diff.h (file_label): New variable.
2956*75f6d617Schristos	* diff3.c (main): Recognize -L instead of -t.
2957*75f6d617Schristos
2958*75f6d617Schristos	* diff3.c (main): Support -m without other option.
2959*75f6d617Schristos
2960*75f6d617Schristos	* diff3.c (WEXITSTATUS, WIFEXITED): Define whenever not defined.
2961*75f6d617Schristos
2962*75f6d617Schristos	* diff3.c (bcopy, index, rindex): Delete definitions; not used.
2963*75f6d617Schristos	(D_LINENUM, D_LINELEN): Likewise.
2964*75f6d617Schristos	(struct diff_block): lengths includes newlines.
2965*75f6d617Schristos	(struct diff3_block): Likewise.
2966*75f6d617Schristos	(always_text, merge): New variables.
2967*75f6d617Schristos	(read_diff): Return address of end, not size read.  Calls changed.
2968*75f6d617Schristos	Pass -a to diff if given to diff3.
2969*75f6d617Schristos	current_chunk_size now an int.  Detect error in `pipe'.
2970*75f6d617Schristos	Check for incomplete line of output here.
2971*75f6d617Schristos	(scan_diff_line): Don't make scan_ptr + 2 before knowing it is valid.
2972*75f6d617Schristos	No need to check validity of diff output here.
2973*75f6d617Schristos	Include newline in length of line.
2974*75f6d617Schristos	(main): Compute rev_mapping here.  Handle -a and -m.
2975*75f6d617Schristos	Error message if excess -t operands.  Error for incompatible options.
2976*75f6d617Schristos	Error if `-' given more than once.
2977*75f6d617Schristos	Fix error storing in tag_strings.
2978*75f6d617Schristos	(output_diff3): REV_MAPPING is now an arg.  Call changed.
2979*75f6d617Schristos	Change syntax of "missing newline" message.
2980*75f6d617Schristos	Expect length of line to include newline.
2981*75f6d617Schristos	(output_diff3_edscript): Return just 0 or 1.
2982*75f6d617Schristos	REV_MAPPING is now an arg.  Call changed.
2983*75f6d617Schristos	(output_diff3_merge): New function.
2984*75f6d617Schristos	(process_diff): Better error message for bad diff format.
2985*75f6d617Schristos	(fatal, perror_with_exit): Return status 2.
2986*75f6d617Schristos
2987*75f6d617Schristos	* analyze.c (diff_2_files): Report missing newline in either
2988*75f6d617Schristos	or both files, if not robust output style.
2989*75f6d617Schristos
2990*75f6d617Schristos	* util.c (setup_output): Detect error from pipe.
2991*75f6d617Schristos	No need to close stdin.
2992*75f6d617Schristos
2993*75f6d617Schristos	* util.c (print_1_line): Change format of missing-newline msg.
2994*75f6d617Schristos	Change if statements to switch.
2995*75f6d617Schristos
2996*75f6d617Schristos	* io.c (slurp): Don't mention differences in final newline if -B.
2997*75f6d617Schristos
2998*75f6d617Schristos	* io.c (binary_file_p): Use ISO char set as criterion, not ASCII.
2999*75f6d617Schristos
3000*75f6d617Schristos	* io.c (find_identical_ends): Increase value of BEG0 by 1.
3001*75f6d617Schristos	Other changes in backwards scan to avoid decrementing pointers
3002*75f6d617Schristos	before start of array, and set LINES properly.
3003*75f6d617Schristos
3004*75f6d617Schristos	* diff.h (ROBUST_OUTPUT_STYLE): New macro.
3005*75f6d617Schristos	* io.c (find_identical_ends, find_and_hash_each_line): Use that macro.
3006*75f6d617Schristos
3007*75f6d617Schristos	* diff.h (dup2): Don't define if XENIX.
3008*75f6d617Schristos
3009*75f6d617Schristos	* diff.c (main): Check for write error at end.
3010*75f6d617Schristos
3011*75f6d617Schristos	* context.c (find_function): Don't return a value.
3012*75f6d617Schristos	Use argument FILE rather than global files.
3013*75f6d617Schristos
3014*75f6d617Schristos	* analyze.c: Add external function declarations.
3015*75f6d617Schristos	* analyze.c (build_script): Turn off explicit check for final newline.
3016*75f6d617Schristos
3017*75f6d617Schristos	* analyze.c (discard_confusing_lines): Make integers unsigned.
3018*75f6d617Schristos
3019*75f6d617SchristosTue Jul 31 21:37:16 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3020*75f6d617Schristos
3021*75f6d617Schristos	* io.c (find_and_hash_each_line): Correct the criterion
3022*75f6d617Schristos	for leaving out the newline from the end of the line.
3023*75f6d617Schristos
3024*75f6d617SchristosTue May 29 21:28:16 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3025*75f6d617Schristos
3026*75f6d617Schristos	* dir.c (diff_dirs): Free things only if nonzero.
3027*75f6d617Schristos
3028*75f6d617SchristosMon Apr 16 18:31:05 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3029*75f6d617Schristos
3030*75f6d617Schristos	* diff.h (NDIR_IN_SYS): New macro controls location of ndir.h.
3031*75f6d617Schristos
3032*75f6d617Schristos	* diff3.c (xmalloc, xrealloc): Don't die if size == 0 returns 0.
3033*75f6d617Schristos
3034*75f6d617SchristosSun Mar 25 15:58:42 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3035*75f6d617Schristos
3036*75f6d617Schristos	* analyze.c (discard_confusing_lines):
3037*75f6d617Schristos	`many' wasn't being used; use it.
3038*75f6d617Schristos	Canceling provisionals near start of run must handle already
3039*75f6d617Schristos	canceled provisionals.
3040*75f6d617Schristos	Canceling subruns of provisionals was canceling last nonprovisional.
3041*75f6d617Schristos
3042*75f6d617SchristosSat Mar 24 14:02:51 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3043*75f6d617Schristos
3044*75f6d617Schristos	* analyze.c (discard_confusing_lines):
3045*75f6d617Schristos	Threshold for line occurring many times scales by square root
3046*75f6d617Schristos	of total lines.
3047*75f6d617Schristos	Within each run, cancel any long subrun of provisionals.
3048*75f6d617Schristos	Don't update `provisional' while canceling provisionals.
3049*75f6d617Schristos	In big outer loop, handle provisional and nonprovisional separately.
3050*75f6d617Schristos
3051*75f6d617SchristosThu Mar 22 16:35:33 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3052*75f6d617Schristos
3053*75f6d617Schristos	* analyze.c (discard_confusing_lines):
3054*75f6d617Schristos	The first loops to discard provisionals from ends failed to step.
3055*75f6d617Schristos	In second such loops, keep discarding all consecutive provisionals.
3056*75f6d617Schristos	Increase threshold for stopping discarding, and also check for
3057*75f6d617Schristos	consecutive nondiscardables as separate threshold.
3058*75f6d617Schristos
3059*75f6d617SchristosFri Mar 16 00:33:08 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3060*75f6d617Schristos
3061*75f6d617Schristos	* diff3.c (read_diff): Pass -- as first arg to diff.
3062*75f6d617Schristos
3063*75f6d617Schristos	* diff3.c: Include wait.h or define equivalent macros.
3064*75f6d617Schristos	(read_diff): Don't use stdio printing error in the inferior.
3065*75f6d617Schristos	Remember the pid and wait for it.  Report failing status.
3066*75f6d617Schristos	Report failure of vfork.
3067*75f6d617Schristos
3068*75f6d617SchristosSun Mar 11 17:10:32 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3069*75f6d617Schristos
3070*75f6d617Schristos	* diff3.c (main): Accept -t options and pass to output_diff3_edscript.
3071*75f6d617Schristos	(usage): Mention -t.
3072*75f6d617Schristos	(read_diff): Use vfork.
3073*75f6d617Schristos	(vfork): Don't use it on Sparc.
3074*75f6d617Schristos
3075*75f6d617Schristos	* diff.h (vfork): Don't use it on Sparc.
3076*75f6d617Schristos
3077*75f6d617SchristosTue Mar  6 22:37:20 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3078*75f6d617Schristos
3079*75f6d617Schristos	* diff3.c (dup2): Don't define on Xenix.
3080*75f6d617Schristos
3081*75f6d617Schristos	* Makefile: Comments for Xenix.
3082*75f6d617Schristos
3083*75f6d617SchristosThu Mar  1 17:19:23 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3084*75f6d617Schristos
3085*75f6d617Schristos	* analyze.c (diff_2_files): `message' requires three args.
3086*75f6d617Schristos
3087*75f6d617SchristosFri Feb 23 10:56:50 1990  David J. MacKenzie  (djm at albert.ai.mit.edu)
3088*75f6d617Schristos
3089*75f6d617Schristos	* diff.h, util.c, diff3.c: Change 'void *' to 'VOID *', with
3090*75f6d617Schristos	VOID defined as void if __STDC__, char if not.
3091*75f6d617Schristos
3092*75f6d617SchristosSun Feb 18 20:31:58 1990  David J. MacKenzie  (djm at albert.ai.mit.edu)
3093*75f6d617Schristos
3094*75f6d617Schristos	* Makefile: Add rules for getopt.c, getopt1.c, getopt.h.
3095*75f6d617Schristos
3096*75f6d617Schristos	* getopt.c, getopt.h, getopt1.c: New files.
3097*75f6d617Schristos
3098*75f6d617Schristos	* main.c (main, usage): Add long options.
3099*75f6d617Schristos
3100*75f6d617Schristos	* analyze.c (shift_boundaries): Remove unused var 'j_end'.
3101*75f6d617Schristos
3102*75f6d617SchristosThu Feb  8 02:43:16 1990  Jim Kingdon  (kingdon at pogo.ai.mit.edu)
3103*75f6d617Schristos
3104*75f6d617Schristos	* GNUmakefile: include ../Makerules before Makefile.
3105*75f6d617Schristos
3106*75f6d617SchristosFri Feb  2 23:21:38 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3107*75f6d617Schristos
3108*75f6d617Schristos	* analyze.c (diff_2_files): If -B or -I, don't return 1
3109*75f6d617Schristos	if all changes were ignored.
3110*75f6d617Schristos
3111*75f6d617SchristosWed Jan 24 20:43:57 1990  Richard Stallman  (rms at albert.ai.mit.edu)
3112*75f6d617Schristos
3113*75f6d617Schristos	* diff3.c (fatal): Output to stderr.
3114*75f6d617Schristos
3115*75f6d617SchristosThu Jan 11 00:25:56 1990  David J. MacKenzie  (djm at hobbes.ai.mit.edu)
3116*75f6d617Schristos
3117*75f6d617Schristos	* diff.c (usage): Mention -v.
3118*75f6d617Schristos
3119*75f6d617SchristosWed Jan 10 16:06:38 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3120*75f6d617Schristos
3121*75f6d617Schristos	* diff3.c (output_diff3_edscript): Return number of overlaps.
3122*75f6d617Schristos	(main): If have overlaps, exit with status 1.
3123*75f6d617Schristos
3124*75f6d617SchristosSun Dec 24 10:29:20 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3125*75f6d617Schristos
3126*75f6d617Schristos	* io.c (find_equiv_class): Fix typo that came from changing init of B
3127*75f6d617Schristos	to an assignment.
3128*75f6d617Schristos
3129*75f6d617Schristos	* version.c: New file.
3130*75f6d617Schristos	* diff.c (main): -v prints version number.
3131*75f6d617Schristos
3132*75f6d617Schristos	* io.c (binary_file_p): Null char implies binary file.
3133*75f6d617Schristos
3134*75f6d617SchristosFri Nov 17 23:44:55 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3135*75f6d617Schristos
3136*75f6d617Schristos	* util.c (print_1_line): Fix off by 1 error.
3137*75f6d617Schristos
3138*75f6d617SchristosThu Nov 16 13:51:10 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3139*75f6d617Schristos
3140*75f6d617Schristos	* util.c (xcalloc): Function deleted.
3141*75f6d617Schristos
3142*75f6d617Schristos	* io.c (slurp): Null-terminate the buffer.
3143*75f6d617Schristos
3144*75f6d617Schristos	* io.c (read_files): Delete unused vars.
3145*75f6d617Schristos
3146*75f6d617Schristos	* io.c (find_equiv_class): Don't index by N if too low.
3147*75f6d617Schristos
3148*75f6d617Schristos	* dir.c (dir_sort): Delete the extra declaration of compare_names.
3149*75f6d617Schristos
3150*75f6d617Schristos	* diff.h: Don't declare xcalloc.  Declare some other functions.
3151*75f6d617Schristos
3152*75f6d617Schristos	* analyze.c (shift_boundaries):
3153*75f6d617Schristos	Test for END at end of range before indexing by it.
3154*75f6d617Schristos	Fix misspelling of `preceding' in var names.
3155*75f6d617Schristos
3156*75f6d617SchristosSat Nov 11 14:04:16 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3157*75f6d617Schristos
3158*75f6d617Schristos	* diff3.c (using_to_diff3_block): Delete unused vars.
3159*75f6d617Schristos	(make_3way_diff, process_diff_control, read_diff, output_diff3): Likewise.
3160*75f6d617Schristos
3161*75f6d617SchristosMon Nov  6 18:15:50 EST 1989 Jay Fenlason (hack@ai.mit.edu)
3162*75f6d617Schristos
3163*75f6d617Schristos	* README Fix typo.
3164*75f6d617Schristos
3165*75f6d617SchristosFri Nov  3 15:27:47 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3166*75f6d617Schristos
3167*75f6d617Schristos	* diff.c (usage): Mention -D.
3168*75f6d617Schristos
3169*75f6d617Schristos	* ifdef.c (print_ifdef_hunk): Write comments on #else and #endif.
3170*75f6d617Schristos
3171*75f6d617SchristosSun Oct 29 16:41:07 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3172*75f6d617Schristos
3173*75f6d617Schristos	* diff.c (compare_files): Don't fflush for identical files.
3174*75f6d617Schristos
3175*75f6d617SchristosWed Oct 25 17:57:12 1989  Randy Smith  (randy at apple-gunkies.ai.mit.edu)
3176*75f6d617Schristos
3177*75f6d617Schristos	* diff3.c (using_to_diff3_block): When defaulting lines from
3178*75f6d617Schristos	FILE0, only copy up to just under the *lowest* line mentioned
3179*75f6d617Schristos	in the next diff.
3180*75f6d617Schristos
3181*75f6d617Schristos	* diff3.c (fatal): Add \n to error messages.
3182*75f6d617Schristos
3183*75f6d617SchristosWed Oct 25 15:05:49 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3184*75f6d617Schristos
3185*75f6d617Schristos	* Makefile (tapefiles): Add ChangeLog.
3186*75f6d617Schristos
3187*75f6d617SchristosTue Oct  3 00:51:17 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3188*75f6d617Schristos
3189*75f6d617Schristos	* diff3.c (process_diff, create_diff3_block): Init ->next field.
3190*75f6d617Schristos
3191*75f6d617SchristosFri Sep 29 08:16:45 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3192*75f6d617Schristos
3193*75f6d617Schristos	* util.c (line_cmp): Alter end char of line 2, not line 1.
3194*75f6d617Schristos
3195*75f6d617SchristosWed Sep 20 00:12:37 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3196*75f6d617Schristos
3197*75f6d617Schristos	* Makefile (diff.tar): Expect ln to fail on some files;
3198*75f6d617Schristos	copy them with cp.
3199*75f6d617Schristos
3200*75f6d617SchristosMon Sep 18 02:54:29 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3201*75f6d617Schristos
3202*75f6d617Schristos	* Handle -D option:
3203*75f6d617Schristos	* io.c (find_and_hash_each_line): Keep all lines of 1st file.
3204*75f6d617Schristos	* diff.c (main): Handle -D option.
3205*75f6d617Schristos	(compare_files): Reject -D if files spec'd are directories.
3206*75f6d617Schristos	* analyze.c (diff_2_files): Handle OUTPUT_IFDEF case.
3207*75f6d617Schristos
3208*75f6d617SchristosFri Sep  1 20:15:50 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3209*75f6d617Schristos
3210*75f6d617Schristos	* diff.c (option_list): Rename arg VECTOR as OPTIONVEC.
3211*75f6d617Schristos
3212*75f6d617SchristosMon Aug 28 17:58:27 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3213*75f6d617Schristos
3214*75f6d617Schristos	* diff.c (compare_files): Clear entire inf[i].stat.
3215*75f6d617Schristos
3216*75f6d617SchristosWed Aug 23 17:48:47 1989  Richard Stallman  (rms at apple-gunkies.ai.mit.edu)
3217*75f6d617Schristos
3218*75f6d617Schristos	* io.c (find_identical_ends): Sign was backward
3219*75f6d617Schristos	determining where to bound the scan for the suffix.
3220*75f6d617Schristos
3221*75f6d617SchristosWed Aug 16 12:49:16 1989  Richard Stallman  (rms at hobbes.ai.mit.edu)
3222*75f6d617Schristos
3223*75f6d617Schristos	* analyze.c (diff_2_files): If -q, treat all files as binary.
3224*75f6d617Schristos	* diff.c (main): Detect -q, record in no_details_flag.
3225*75f6d617Schristos
3226*75f6d617SchristosSun Jul 30 23:12:00 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3227*75f6d617Schristos
3228*75f6d617Schristos	* diff.c (usage): New function.
3229*75f6d617Schristos	(main): Call it.
3230*75f6d617Schristos
3231*75f6d617SchristosWed Jul 26 02:02:19 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3232*75f6d617Schristos
3233*75f6d617Schristos	* diff.c (main): Make -C imply -c.
3234*75f6d617Schristos
3235*75f6d617SchristosThu Jul 20 17:57:51 1989  Chris Hanson  (cph at kleph)
3236*75f6d617Schristos
3237*75f6d617Schristos	* io.c (find_and_hash_each_line): Bug fix in context handling,
3238*75f6d617Schristos	introduced by last change.
3239*75f6d617Schristos
3240*75f6d617SchristosFri Jul 14 17:39:20 1989  Chris Hanson  (cph at kleph)
3241*75f6d617Schristos
3242*75f6d617Schristos	* analyze.c: To make RCS work correctly on files that don't
3243*75f6d617Schristos	necessarily end in newline, introduce some changes that cause
3244*75f6d617Schristos	diffs to be sensitive to missing final newline.  Because
3245*75f6d617Schristos	non-RCS modes don't want to be affected by these changes, they
3246*75f6d617Schristos	are conditional on `output_style == OUTPUT_RCS'.
3247*75f6d617Schristos	(diff_2_files) [OUTPUT_RCS]: Suppress the "File X missing
3248*75f6d617Schristos	newline" message.
3249*75f6d617Schristos	(build_script) [OUTPUT_RCS]: Cause the last line to compare as
3250*75f6d617Schristos	different if exactly one of the files is missing its final
3251*75f6d617Schristos	newline.
3252*75f6d617Schristos
3253*75f6d617Schristos	* io.c (find_and_hash_each_line): Bug fix in
3254*75f6d617Schristos	ignore_space_change mode.  Change line's length to include the
3255*75f6d617Schristos	newline.  For OUTPUT_RCS, decrement last line's length if
3256*75f6d617Schristos	there is no final newline.
3257*75f6d617Schristos	(find_identical_ends) [OUTPUT_RCS]: If one of the files is
3258*75f6d617Schristos	missing a final newline, make sure it's not included in either
3259*75f6d617Schristos	the prefix or suffix.
3260*75f6d617Schristos
3261*75f6d617Schristos	* util.c (print_1_line): Change line output routine to account
3262*75f6d617Schristos	for line length including the newline.
3263*75f6d617Schristos
3264*75f6d617SchristosTue Jun 27 02:35:28 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
3265*75f6d617Schristos
3266*75f6d617Schristos	* Makefile: Inserted $(archpfx) where appropriate.
3267*75f6d617Schristos
3268*75f6d617SchristosWed May 17 20:18:43 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3269*75f6d617Schristos
3270*75f6d617Schristos	* diff3.c [USG]: Include fcntl.h.
3271*75f6d617Schristos
3272*75f6d617Schristos	* diff.h [USG]: New compilation flags HAVE_NDIR, HAVE_DIRECT.
3273*75f6d617Schristos
3274*75f6d617SchristosWed Apr 26 15:35:57 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3275*75f6d617Schristos
3276*75f6d617Schristos	* dir.c (diff_dirs): Two new args, NONEX1 and NONEX2, say to pretend
3277*75f6d617Schristos	nonex dirs are empty.
3278*75f6d617Schristos	(dir_sort): New arg NONEX, likewise.
3279*75f6d617Schristos	* diff.c (compare_files): Pass those args.
3280*75f6d617Schristos	Sometimes call diff_dirs if subdir exists in just one place.
3281*75f6d617Schristos
3282*75f6d617SchristosWed Apr 12 01:10:27 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3283*75f6d617Schristos
3284*75f6d617Schristos	* io.c (find_identical_ends): Set END0 *after* last char
3285*75f6d617Schristos	during backward scan for suffix.
3286*75f6d617Schristos
3287*75f6d617SchristosSat Apr  8 15:49:49 1989  Randall Smith  (randy at apple-gunkies.ai.mit.edu)
3288*75f6d617Schristos
3289*75f6d617Schristos	* diff3.c (using_to_diff3_block): Now find high marks in files 1
3290*75f6d617Schristos	and 2 through mapping off of the last difference instead of the
3291*75f6d617Schristos	first.
3292*75f6d617Schristos
3293*75f6d617Schristos	* diff3.c: Many trivial changes to spelling inside comments.
3294*75f6d617Schristos
3295*75f6d617SchristosFri Feb 24 12:38:03 1989  Randall Smith  (randy at gluteus.ai.mit.edu)
3296*75f6d617Schristos
3297*75f6d617Schristos	* util.c, normal.c, io.c, ed.c, dir.c, diff.h, diff.c, context.c,
3298*75f6d617Schristos	analyze.c, Makefile: Changed copyright header to conform with new
3299*75f6d617Schristos	GNU General Public license.
3300*75f6d617Schristos	* diff3.c: Changed copyright header to conform with new GNU
3301*75f6d617Schristos	General Public license.
3302*75f6d617Schristos	* COPYING: Made a hard link to /gp/rms/COPYING.
3303*75f6d617Schristos
3304*75f6d617SchristosFri Feb 24 10:01:58 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3305*75f6d617Schristos
3306*75f6d617Schristos	* io.c (slurp): Leave 2 chars space at end of buffer, not one.
3307*75f6d617Schristos	(find_identical_ends): Special case if either file is empty;
3308*75f6d617Schristos	don't try to make a sentinel since could crash.
3309*75f6d617Schristos
3310*75f6d617SchristosWed Feb 15 14:24:48 1989  Jay Fenlason  (hack at apple-gunkies.ai.mit.edu)
3311*75f6d617Schristos
3312*75f6d617Schristos	* diff3.c (message)  Re-wrote routine to avoid using alloca()
3313*75f6d617Schristos
3314*75f6d617SchristosWed Feb 15 06:19:14 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3315*75f6d617Schristos
3316*75f6d617Schristos	* io.c (find_identical_ends): Delete the variable `bytes'.
3317*75f6d617Schristos
3318*75f6d617SchristosSun Feb 12 11:50:36 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3319*75f6d617Schristos
3320*75f6d617Schristos	* io.c (slurp): ->bufsize is nominal amount we have room for;
3321*75f6d617Schristos	add room for sentinel when calling xmalloc or xrealloc.
3322*75f6d617Schristos
3323*75f6d617Schristos	* io.c (find_identical_ends): Do need overrun check in finding suffix.
3324*75f6d617Schristos
3325*75f6d617SchristosFri Feb 10 01:28:15 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3326*75f6d617Schristos
3327*75f6d617Schristos	* diff.c (main): -C now takes arg to specify context length.
3328*75f6d617Schristos	Now -p to show C function name--Damned IEEE!
3329*75f6d617Schristos	Fatal error if context length spec'd twice.
3330*75f6d617Schristos
3331*75f6d617Schristos	* ed.c (print_ed_hunk): Now special treatment only for lines containing
3332*75f6d617Schristos	precisely a dot and nothing else.  Output `..', end the insert,
3333*75f6d617Schristos	substitute that one line, then resume the insert if nec.
3334*75f6d617Schristos
3335*75f6d617Schristos	* io.c (find_and_hash_lines): When backing up over starting context,
3336*75f6d617Schristos	don't move past buffer-beg.
3337*75f6d617Schristos
3338*75f6d617Schristos	* io.c (find_identical_ends): Use sentinels to make the loops faster.
3339*75f6d617Schristos	If files are identical, skip the 2nd loop and return quickly.
3340*75f6d617Schristos	(slurp): Leave 1 char extra space after each buffer.
3341*75f6d617Schristos
3342*75f6d617Schristos	* analyze.c (diff_2_files): Mention difference in final newlines.
3343*75f6d617Schristos
3344*75f6d617SchristosWed Jan 25 22:44:44 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3345*75f6d617Schristos
3346*75f6d617Schristos	* dir.c (diff_dirs): Use * when calling fcn ptr variable.
3347*75f6d617Schristos
3348*75f6d617SchristosSat Dec 17 14:12:06 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3349*75f6d617Schristos
3350*75f6d617Schristos	* Makefile: New vars INSTALL and LIBS used in some rules;
3351*75f6d617Schristos	provide default defns plus commented-put defns for sysV.
3352*75f6d617Schristos
3353*75f6d617SchristosThu Nov 17 16:42:53 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3354*75f6d617Schristos
3355*75f6d617Schristos	* dir.c (dir_sort): Open-trouble not fatal; just say # files is -1.
3356*75f6d617Schristos	(diff_dirs): If dir_sort does that, give up and return 2.
3357*75f6d617Schristos
3358*75f6d617Schristos	* diff.c (compare_files): Don't open directories.
3359*75f6d617Schristos	Don't close them specially either.
3360*75f6d617Schristos	Cross-propagate inf[i].dir_p sooner.
3361*75f6d617Schristos
3362*75f6d617SchristosSun Nov 13 11:19:36 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3363*75f6d617Schristos
3364*75f6d617Schristos	* diff.h: Declare index, rindex.
3365*75f6d617Schristos
3366*75f6d617Schristos	* diff.c (compare_files): If comparing foodir with b/f,
3367*75f6d617Schristos	use foodir/f, not foodir/b/f.
3368*75f6d617Schristos
3369*75f6d617Schristos	* diff.c (compare_files): Don't print "are identical" msg for 2 dirs.
3370*75f6d617Schristos	Status now 1 if one file is a dir and the other isn't, etc.
3371*75f6d617Schristos
3372*75f6d617SchristosThu Nov  3 16:30:24 1988  Randall Smith  (randy at gluteus.ai.mit.edu)
3373*75f6d617Schristos
3374*75f6d617Schristos	* Makefile: Added a define for diff3 to define DIFF_PROGRAM.
3375*75f6d617Schristos
3376*75f6d617Schristos	* util.c: Added hack to make sure that perror was not called with
3377*75f6d617Schristos	a null pointer.
3378*75f6d617Schristos
3379*75f6d617Schristos	* diff.c: Changed S_IFDIR to S_IFMT in masking type of file bits
3380*75f6d617Schristos	out.
3381*75f6d617Schristos
3382*75f6d617Schristos	* diff3.c: Included USG compatibility defines.
3383*75f6d617Schristos
3384*75f6d617Schristos	* diff.h: Moved sys/file.h into #else USG section (not needed or
3385*75f6d617Schristos	wanted on System V).
3386*75f6d617Schristos
3387*75f6d617Schristos	* ed.c, analyze.c, context.c: Shortened names to 12 characters for
3388*75f6d617Schristos	the sake of System V (too simple not to do).
3389*75f6d617Schristos
3390*75f6d617Schristos
3391*75f6d617SchristosCopyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1997, 1998, 1999,
3392*75f6d617Schristos2000, 2001, 2002 Free Software Foundation, Inc.
3393*75f6d617Schristos
3394*75f6d617SchristosThis file is part of GNU Diffutils.
3395*75f6d617Schristos
3396*75f6d617SchristosThis program is free software; you can redistribute it and/or modify
3397*75f6d617Schristosit under the terms of the GNU General Public License as published by
3398*75f6d617Schristosthe Free Software Foundation; either version 2, or (at your option)
3399*75f6d617Schristosany later version.
3400*75f6d617Schristos
3401*75f6d617SchristosThis program is distributed in the hope that they will be useful,
3402*75f6d617Schristosbut WITHOUT ANY WARRANTY; without even the implied warranty of
3403*75f6d617SchristosMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
3404*75f6d617SchristosGNU General Public License for more details.
3405*75f6d617Schristos
3406*75f6d617SchristosYou should have received a copy of the GNU General Public License
3407*75f6d617Schristosalong with this program; see the file COPYING.  If not, write to
3408*75f6d617Schristosthe Free Software Foundation, Inc., 59 Temple Place - Suite 330,
3409*75f6d617SchristosBoston, MA 02111-1307, USA.
3410