12021-08-01  Jim Meyering  <meyering@fb.com>
2
3	version 3.8
4	* NEWS: Record release date.
5
6	build: update gnulib to latest
7
82021-07-31  Jim Meyering  <meyering@fb.com>
9
10	cmp: avoid reading uninitialized memory
11	[This *is* useful, so reapply. ]
12	When comparing buffers a word at a time, cmp could read up to
13	sizeof (word) - 1 uninitialized bytes.
14	* src/cmp.c (cmp): Set not just a single guaranteed-differing
15	sentinel byte just beyond any final read byte, but also ensure
16	that any following bytes are defined, if those may be read via
17	block_compare's word-at-a-time comparison.  Reported by Bruno Haible
18	in https://lists.gnu.org/r/diffutils-devel/2021-07/msg00003.html
19
202021-07-28  Bruno Haible  <bruno@clisp.org>
21
22	cmp: avoid reading uninitialized memory
23	One or both of the sentinel bytes were copies of uninitialized values.
24	* src/cmp.c (cmp): Use arbitrary initialized values for the
25	sentinel bytes.
26
272021-07-28  Jim Meyering  <meyering@fb.com>
28
29	cmp: revert preceding change
30	It did not solve the problem. The next patch does.
31
322021-07-27  Jim Meyering  <meyering@fb.com>
33
34	cmp: avoid reading uninitialized memory
35	When comparing buffers a word at a time, cmp could read up to
36	sizeof (word) - 1 uninitialized bytes.
37	* src/cmp.c (cmp): Set not just a single guaranteed-differing
38	sentinel byte just beyond any final read byte, but also ensure
39	that any following bytes are defined, if those may be read via
40	block_compare's word-at-a-time comparison.  Reported by Bruno Haible
41	in https://lists.gnu.org/r/diffutils-devel/2021-07/msg00003.html
42
432021-07-19  Paul Eggert  <eggert@cs.ucla.edu>
44
45	build: update gnulib submodule to latest
46
472021-05-21  Paul Eggert  <eggert@cs.ucla.edu>
48
49	diff: better --color help
50	* src/diff.c (option_help_msgid): Reword --color help without
51	using the confusing word “default”.  Problem reported
52	by Peter Oliver (Bug#48532).
53
542021-05-20  Paul Eggert  <eggert@cs.ucla.edu>
55
56	doc: fix URL in HACKING
57
582021-03-24  Paul Eggert  <eggert@cs.ucla.edu>
59
60	diff: pacify compiler re style
61	* src/diff.c (usage): Prefer &"string"[N] to "string" + N.
62	Some compilers complain about the latter, as they worry C++
63	refugees will think it’s string concatnation.
64
65	diff3: avoid signed int overflow
66	* src/diff3.c (main): Avoid signed integer overflow in the very
67	unlikely case of more than INT_MAX incompatible options.  Instead,
68	use one bit to record the presence of each type of incompatible
69	option, and report an error if more than one bit is set.
70
71	maint: don’t bother with -Wno-return-local-addr
72	* configure.ac (WERROR_CFLAGS): Don’t bother with
73	-Wno-return-local-addr as it doesn’t seem to work.
74	Anyway, it’s no longer needed on Ubuntu 20.10.
75
76	maint: disable -Wstack-protector
77	* configure.ac (WERROR_CFLAGS): Disable -Wstack-protector, as it
78	has a false alarm with lib/vasnprintf.c on Ubuntu 20.10 and it’s
79	not worth working around.  Coreutils already disables it.
80
81	diff: plug memory leak in ifdef.c
82	Problem reported by Than (Bug#47362).
83	Fix the bug by using xmalloca instead of vararrays.
84	* bootstrap.conf (gnulib_modules): Add xmalloca; remove vararrays.
85	* configure.ac: Remove AC_C_VARARRAYS.
86	* src/ifdef.c: Include xmalloca.h instead of xalloc.h.
87	(do_printf_spec): Use xmalloca instead of an xmalloc
88	that lacks a corresponding ‘free’ if HAVE_C_VARARRAYS
89	due to a typo in 2017-05-18T05:51:31Z!meyering@fb.com.
90
91	build: update gnulib submodule to latest
92
932021-01-02  Paul Eggert  <eggert@cs.ucla.edu>
94
95	maint: work around GCC -Wreturn-local-addr bug
96	* configure.ac: Do not use -Wreturn-local-addr in Gnulib,
97	to suppress a false alarm in vasnprintf.c.
98
992021-01-01  Jim Meyering  <meyering@fb.com>
100
101	maint: update all copyright year number ranges
102	Run "make update-copyright" and then...
103	* gnulib: Update to latest with copyright year adjusted.
104	* tests/init.sh: Sync with gnulib to pick up copyright year.
105	* bootstrap: Likewise.
106
1072020-12-05  Jim Meyering  <meyering@fb.com>
108
109	build: require autoconf-2.64
110	* configure.ac: Require 2.64, up from 2.63, to align with gnulib.
111
1122020-03-15  Jim Meyering  <meyering@fb.com>
113
114	build: update gnulib to latest
115
116	doc: adjust formatting to make apropos (man -k) work better
117	* man/Makefile.am $(dist_man1_MANS): Adjust sed substitution
118	to also remove the space after "GNU". This avoids the single
119	leading space on each man page title line.  I'm guessing that
120	interfered with indexing/searching, causing "man -k diff3" to
121	print this: diff3 (1) - (unknown subject).
122	Reported by Dan Jacobon in http://bugs.gnu.org/39769.
123
1242020-01-19  Jim Meyering  <meyering@fb.com>
125
126	doc: correct an ancient "At present"
127	* doc/diffutils.texi (Unified Format): Correct the now
128	seriously outdated "At present" (referring to early 1990s)
129	statement to be more of a historical note.
130	Reported by Roland Illig in http://bugs.gnu.org/39184.
131
1322020-01-05  Jim Meyering  <meyering@fb.com>
133
134	doc: use program name, not "GNU", in the nroff/man header
135	* man/Makefile.am (dist_man1_MANS): Elide "GNU " prefix
136	from the generated prog+one-line-summary, so that help2man
137	uses the program name rather than "GNU" as the nroff "name".
138	Reported by Dan Jacobson in http://bugs.gnu.org/38574.
139
1402020-01-01  Jim Meyering  <meyering@fb.com>
141
142	maint: update all copyright year number ranges
143	Run "make update-copyright" and then...
144	* gnulib: Update to latest with copyright year adjusted.
145	* tests/init.sh: Sync with gnulib to pick up copyright year.
146	* bootstrap: Likewise.
147
1482019-12-29  Jim Meyering  <meyering@fb.com>
149
150	maint: avoid gnulib-tool deprecation warnings, and build failure
151	* bootstrap.conf (gnulib_modules): Use getopt-gnu, rather than
152	obsolete "getopt" module. Use nstrftime in place of strftime.
153	(avoided_gnulib_modules): Do not avoid the "lock" module. That
154	would lead to a build failure due to "glthread/lock.h not found".
155
156	maint: avoid syntax-check failure
157	* po/POTFILES.in: Add argmatch.h; remove xstrtol-error.c
158
159	maint: disable two and reenable many warning options
160	* configure.ac (GNULIB_WARN_CFLAGS): Disable -Wduplicated-branches
161	and -Wreturn-local-addr, due to a couple of false-positive warnings.
162	(WARN_CFLAGS): Reenable many warnings that now (with recent gcc)
163	provoke no false positive.
164
165	maint: avoid gnulib's lock-tests module
166	* bootstrap.conf (avoided_gnulib_modules): Also --avoid=lock-tests
167	to avoid gnulib-related build failure.
168
1692019-12-23  Jim Meyering  <meyering@fb.com>
170
171	build: update gnulib to latest
172	* gnulib: Update submodule to latest.
173	* bootstrap: Copy from gnulib.
174	* tests/init.sh: Likewise.
175
1762019-12-20  Jim Meyering  <meyering@fb.com>
177
178	maint: tweak bootstrap.conf
179	* bootstrap.conf (buildreq): Require at least autoconf 2.62,
180	up from 2.61, just as grep and coreutils do.
181	(bootstrap_post_import_hook): "Copy pkg-config's pkg.m4 ...",
182	copied from grep's bootstrap.conf.
183	(avoided_gnulib_modules): Pull this definition to the top.
184	Formatting.
185
1862019-10-01  Dave Odell  <dmo2118@gmail.com>  (tiny change)
187
188	cmp: add test case for Bug#37558
189	* tests/cmp: New test case (Bug#37558).
190
1912019-10-01  Paul Eggert  <eggert@cs.ucla.edu>
192
193	cmp: fix -l width bug
194	Problem reported by Dave Odell (Bug#37558).
195	* src/cmp.c (cmp): Treat negative ‘bytes’ as infinite, fixing a
196	bug introduced in the 2019-08-27 patch that fixed Bug#35256.
197
1982019-08-27  Paul Eggert  <eggert@cs.ucla.edu>
199
200	diff: don’t mistreat -N in arg as a large number
201	Problem reported by alec (Bug#35256).
202	* NEWS: Mention the fix.
203	* bootstrap.conf (gnulib_modules): Use strtoimax and xstrtoimax,
204	not strtoumax and strtoumax.
205	* src/cmp.c (bytes): Now signed, with -1 representing no limit.
206	All uses changed.
207	* src/cmp.c (specify_ignore_initial, main):
208	* src/diff.c (main):
209	* src/ifdef.c (format_group):
210	* src/sdiff.c (interact):
211	Use strtoimax, not strtoumax.
212
213	build: update gnulib submodule to latest
214
2152019-07-19  Paul Eggert  <eggert@cs.ucla.edu>
216
217	maint: ignore ‘configure’ temporaries
218	* .gitignore: Ignore confdefs*, conftest*.
219
220	maint: avoid Gnulib setlocale module
221	Problem reported for MS-Windows by Richard Gering (Bug#34376).
222	Diffutils doesn’t need any of the Gnulib fixes for setlocale.
223	* bootstrap.conf (gnulib_tool_option_extras):
224	Avoid the setlocale module.
225
2262019-05-24  KO Myung-Hun  <komh@chollian.net>
227
228	tests: init.cfg: use $PATH_SEPARATOR not ':'
229	On OS/2, a path separator is semi-colon ';' not colon ':'.
230	* tests/init.cfg: Replace ':' with $PATH_SEPARATOR.
231
2322019-01-20  Jim Meyering  <meyering@fb.com>
233
234	build: ensure no VLA is used
235	Cause developer builds to fail for any use of a VLA.
236	VLAs (variable length arrays) limit portability.
237	* configure.ac (nw): Remove -Wvla from the list of disabled warnings,
238	thus enabling the warning when configured with --enable-gcc-warnings.
239	(GNULIB_NO_VLA) Define, disabling use of VLAs in gnulib.  This commit
240	is functionally equivalent to coreutils' v8.30-44-gd26dece5d.
241
242	build: update gnulib to latest
243	* gnulib: Update to latest.
244	* po/POTFILES.in: Add lib/xstdopen.c.
245
2462019-01-06  Paul Eggert  <eggert@cs.ucla.edu>
247
248	diff: use xstdopen, not stdopen
249	* bootstrap.conf (gnulib_modules):
250	* src/cmp.c, src/diff.c, src/diff3.c, src/sdiff.c (main):
251	Use xstdopen, not stdopen.
252
253	build: update gnulib submodule to latest
254
2552019-01-05  Jim Meyering  <meyering@fb.com>
256
257	maint: convert all TABs to equivalent spaces in indentation
258	Using this file,
259
260	cat > leading-blank.exempt <<\EOF
261	(\.gitmodules|help2man|pre-commit)$
262	(?:^|\/)ChangeLog[^/]*$
263	(?:^|\/)(?:GNU)?[Mm]akefile[^/]*$
264	\.(?:am|mk)$
265	EOF
266
267	run the following command to convert all non-conforming leading white
268	space to be all spaces:
269
270	git ls-files \
271	  | pcregrep -vf leading-blank.exempt \
272	  | xargs pcregrep -l '^ *\t' \
273	  | xargs perl -MText::Tabs -ni -le \
274	    '$m=/^( *\t[ \t]*)(.*)/; print $m ? expand($1) . $2 : $_'
275
276	Since that changed old NEWS, I also ran "make update-NEWS-hash"
277	to update the old_NEWS_hash value in cfg.mk.
278
2792019-01-05  Paul Eggert  <eggert@cs.ucla.edu>
280
281	diff: fix cmp, diff3, sdiff with stdin closed
282	* NEWS: Mention this.
283	* src/cmp.c, src/diff3.c, src/sdiff.c: Include stdopen.h.
284	(main): Call stdopen early.
285	* src/cmp.c (main): Simplify now that we need not worry about
286	stdin being closed.
287	* src/diff.c (main): Translate stdopen diagnostic.
288
289	diff: remove unportable ‘diff -N - f <&-’ feature
290	* NEWS: Mention this.
291	* bootstrap.conf (gnulib_modules): Add stdopen.
292	* doc/diffutils.texi (Comparing Directories):
293	Do not document behavior if stdin is closed.
294	* src/diff.c: Include stdopen.h.
295	(main): Call stdopen early.
296	(compare_files) [__hpux]: Remove recently-introduced
297	special case for HP-UX exec with stdin closed.
298	* tests/new-file: Remove tests of the removed feature.
299
300	build: update gnulib submodule to latest
301
3022019-01-03  Bruno Haible  <bruno@clisp.org>
303
304	diff: recognize file descriptors closed by the parent process on HP-UX
305	* src/diff.c (compare_files): Use fcntl to distinguish a file
306	descriptor closed by the parent process from a file descriptor
307	that references /dev/null.
308
3092019-01-01  Jim Meyering  <meyering@fb.com>
310
311	maint: update all copyright dates via "make update-copyright"
312	* gnulib: Also update submodule for its copyright updates.
313
3142018-12-31  Jim Meyering  <meyering@fb.com>
315
316	maint: post-release administrivia
317	* NEWS: Add header line for next release.
318	* .prev-version: Record previous version.
319	* cfg.mk (old_NEWS_hash): Auto-update.
320
321	version 3.7
322	* NEWS: Record release date.
323
324	maint: distribute new file, init.cfg
325	Otherwise, strip-trailing-cr would fail on a system without valgrind.
326	* tests/Makefile.am (EXTRA_DIST): Include init.cfg.
327
3282018-12-30  Dennis Lambe Jr  <malsyned@malsyned.net>
329
330	diff: adjust ANSI escapes for compatibility with less -R
331	GNU less can display ANSI-colored text with the -R flag, but this
332	support has some limitations. One of them is that if an escape
333	sequence starts on one line and ends on a different line, only the
334	first line will be colored in less.
335
336	As a result, when diff creates colored output with multi-line deletes
337	or adds, less will only color the first line.
338
339	This change resets ANSI color to the default at the end of
340	each line and restarts it at the beginning of the next. It patches
341	normal and context mode. Side-by-side already worked in my testing.
342	* src/context.c (print_context_label, pr_context_hunk): As above.
343	(pr_unidiff_hunk, print_context_header): Likewise.
344	* src/normal.c (print_normal_hunk): Likewise.
345	* tests/colors: Adjust existing tests to accommodate this.
346	* NEWS (Improvements): Mention it.
347	Proposed in http://bugs.gnu.org/31105
348
3492018-12-29  Jim Meyering  <meyering@fb.com>
350
351	tests: fix colors test on systems lacking fractional timestamp support
352	* tests/colors: The .NNNNNNNNN suffix is not printed on some systems.
353	Adapt the test to accommodate those systems.
354
355	tests: strip-trailing-cr: avoid failure with ASAN
356	Valgrind cannot operate on an ASAN-compiled binary.
357	* tests/strip-trailing-cr (valgrind): Define as no-op when diff
358	was compiled with sanitizer support.
359
3602018-12-28  Jim Meyering  <meyering@fb.com>
361
362	tests: add test for --strip-trailing-cr UMR bug
363	* tests/strip-trailing-cr: New file. Test for today's bug fix.
364	* tests/Makefile.am (TESTS): Add it.
365
366	tests: import test infrastructure from coreutils
367	* tests/init.cfg: New file, for require_valgrind_ definition (from coreutils).
368	* tests/Makefile.am (PATH): Don't set stderr_fileno_ here, since it is
369	now initialized in init.cfg.
370
3712018-12-28  Paul Eggert  <eggert@cs.ucla.edu>
372	    Jim Meyering  <jim@meyering.net>
373
374	diff: fix UMR with --strip-trailing-cr
375	Problem reported by Hongxu Chen (Bug#31935).
376	* src/io.c (prepare_text): Strip trailing CR before
377	doing the rest of the analysis.
378	* NEWS: Mention the fix.
379
3802018-12-28  Bruno Haible  <bruno@clisp.org>
381
382	tests: colors: avoid test failure on AIX 7
383	* tests/colors: Splice the argument into the printf format string.
384
3852018-12-27  Bruno Haible  <address@hidden>
386
387	maint: don't use an undocumented Autoconf macro
388	* configure.ac: Use AC_CONFIG_HEADERS instead of AC_CONFIG_HEADER.
389
3902018-12-23  Jim Meyering  <meyering@fb.com>
391
392	build: avoid build failure with --enable-gcc-warnings and latest gcc
393	* src/diff.c (usage): Assert that each line length is no longer than
394	the minimum required size of 4095.  This lets newer gcc (currently
395	9.0.0 20181219) infer that it need not issue this warning:
396	diff.c:1012:19: error: '%.*s' directive output between 0 and 2147483647
397	bytes may exceed minimum required size of 4095
398	[-Werror=format-overflow=]
399	1012 |        printf ("  %.*s", msglen, msg);
400
401	build: update gnulib to latest; and bootstrap and init.sh
402
403	build: make the autoconf-2.63 requirement explicit
404	* configure.ac: AC_PREREQ: Require 2.63, not 2.59. And quote properly.
405	Autoconf-2.63 has been required for some time via gnulib.
406	This merely makes it explicit.
407
4082018-12-20  Jim Meyering  <meyering@fb.com>
409
410	maint: use https: in gnu mirror URL prefix, not http
411	This appears in the generated release announcement message.
412	* cfg.mk (url_dir_list): Use https: prefix, not http:.
413
4142018-07-24  Paul Eggert  <eggert@cs.ucla.edu>
415
416	cmp: fix bug in -b diagnostic
417	Problem reported by mancha (Bug#32249).
418	* src/cmp.c (count_newlines): Restore old value of sentinel.
419	* tests/cmp: Test for the bug.
420
421	build: update gnulib submodule to latest
422
4232018-05-14  Paul Eggert  <eggert@cs.ucla.edu>
424
425	doc: prepend "GNU" to NAME in man pages
426	Requested by RMS.
427	* src/cmp.c, src/diff.c, src/diff3.c, src/sdiff.c:
428	Prepend "GNU" to first comment, so that the man page says "GNU".
429
4302018-04-20  Paul Eggert  <eggert@cs.ucla.edu>
431
432	sdiff: port to mingw
433	Problem reported by Ross Burton (Bug#31218).
434	* src/sdiff.c (checksigs): Use ‘raise’, not ‘kill’.
435
4362018-03-23  Paul Eggert  <eggert@cs.ucla.edu>
437
438	build: update gnulib submodule to latest
439
4402018-01-14  Jim Meyering  <meyering@fb.com>
441
442	tests: fix quoting error in previous change
443	* tests/colors: Double-quote $PATH.
444
4452018-01-06  Jim Meyering  <meyering@fb.com>
446
447	tests: port tests/colors to some env-munging shell
448	* tests/colors: Also set PATH="$PATH" in env invocation.
449
450	maint: update gnulib and copyright dates for 2018
451	* gnulib: Update to latest.
452	* all files: Run "make update-copyright".
453	* bootstrap: Update from gnulib.
454
455	maint: suppress gcc's new -Wcast-function-type in gnulib
456	* configure.ac (WERROR_CFLAGS): Suppress gcc's new -Wcast-function-type
457	warning in gnulib, because it would trigger on this:
458	sig-handler.h:47:12: error: cast between incompatible function types\
459	  from 'void (* const)(int,  siginfo_t *, void *)' \
460	  {aka 'void (* const)(int,  struct <anonymous> *, void *)'} \
461	  to 'void (*)(int)' [-Werror=cast-function-type]
462	return (sa_handler_t) a->sa_sigaction;
463
4642017-10-22  Jim Meyering  <meyering@fb.com>
465
466	tests: add expected-failing test for minor subopimality
467	In some unusual cases, diff -u prints suboptimal output.
468	* tests/large-subopt: New test script.
469	* tests/Makefile.am (TESTS): Add it.
470	(XFAIL_TESTS): Add it here, too, to record that this test is
471	currently expected to fail.
472	* tests/large-subopt.in1, tests/large-subopt.in2: Inputs derived from
473	those in http://bugs.gnu.org/28796
474
4752017-09-23  Jim Meyering  <meyering@fb.com>
476
477	gnulib: update to latest
478
4792017-05-21  Jim Meyering  <meyering@fb.com>
480
481	maint: make the announcement template Cc the devel- list
482	* cfg.mk (announcement_Cc_): Define.
483
484	maint: post-release administrivia
485	* NEWS: Add header line for next release.
486	* .prev-version: Record previous version.
487	* cfg.mk (old_NEWS_hash): Auto-update.
488
489	version 3.6
490	* NEWS: Record release date.
491
4922017-05-19  Jim Meyering  <meyering@fb.com>
493
494	gnulib: update to latest
495
4962017-05-18  Jim Meyering  <meyering@fb.com>
497
498	maint: update to work with GCC7's -Werror=implicit-fallthrough=
499	* src/system.h (FALLTHROUGH): Define.
500	Use new FALLTHROUGH macro in place of comments
501	* src/cmp.c: FIXME
502	* src/diff3.c: FIXME
503	* src/ifdef.c: FIXME
504	* src/sdiff.c: FIXME
505	* src/side.c: FIXME
506	* src/util.c: FIXME
507
508	gnulib: update to latest
509
5102017-05-09  Jim Meyering  <meyering@fb.com>
511
512	tests: new-file: closed-stdin: also ensure stdout was empty
513	* tests/new-file: Also require that "out" be empty.
514
5152017-05-06  Jim Meyering  <meyering@fb.com>
516
517	maint: stop using @acronym{...} in texinfo sources
518	* doc/diffutils.texi: Remove all uses of @acronym{...},
519	per recommendation by Karl Berry.
520	* cfg.mk (local-checks-to-skip): Remove exemption, enabling
521	the @acronym{-prohibiting syntax-check rule.
522
5232017-05-05  Paul Eggert  <eggert@cs.ucla.edu>
524
525	cmp: improve EOF diagnostic
526	This improves on yesterday's change, following up on a
527	remark by Jim Meyering (Bug#22816#21).
528	* doc/diffutils.texi (Invoking cmp, cmp Options): Follow POSIX more
529	closely in the documentation of the information appended to the EOF
530	diagnostic.
531	* src/cmp.c (cmp): Be more specific about the shorter file's length
532	and fix some off-by-1 issues in reporting line counts.
533	* tests/cmp: Adjust to match new behavior.
534	Don't assume internal details about stdio buffering.
535
5362017-05-04  Benno Schulenberg  <bensberg@justemail.net>
537
538	diff: describe each --help option with a single string
539	* src/diff.c: To ease translating, fuse four description pieces
540	into two whole ones.  Also reword and rewrap one of them to fit
541	within eighty characters.
542
5432017-05-04  Paul Eggert  <eggert@cs.ucla.edu>
544
545	cmp: report prefix length when one file is shorter
546	Requested by Dan Jacobson (Bug#22816).
547	* NEWS:
548	* doc/diffutils.texi (Invoking cmp, cmp Options): Document this.
549	* src/cmp.c (cmp): Implement it.
550	* tests/Makefile.am (TESTS): Add cmp.
551	* tests/cmp: New file.
552
5532017-05-02  Jim Meyering  <meyering@fb.com>
554
555	tests: add test for latest fix
556	* NEWS (Bug fixes): Describe it.
557	* tests/invalid-re: New test for just-fixed bug.
558	* tests/Makefile.am (TESTS): Add it.
559
560	gnulib: update to latest
561
5622017-04-27  Paul Eggert  <eggert@cs.ucla.edu>
563
564	diff: don't crash if regexp is invalid
565	Problem reported by Marcel Böhme in:
566	http://lists.gnu.org/archive/html/bug-diffutils/2017-04/msg00002.html
567	* src/diff.c (add_regexp): Exit if re_compile_pattern fails.
568
5692017-03-24  julama  <julama@fake-box.com>
570
571	tests: avoid false failure for unreadable /proc/cmdline
572	* tests/brief-vs-stat-zero-kernel-lies: Use "test -r" rather than
573	just "test -f".  This avoids a false test failure on a linux system
574	with grsecurity and its GRKERNSEC_PROC_USER option enabled, for which
575	/proc/cmdline is unreadable.  Reported in https://bugs.gnu.org/26155
576
5772017-02-01  Jim Meyering  <meyering@fb.com>
578
579	tests: avoid false failure with some shells on debian, freebsd
580	* tests/colors: Move the TERM=dumb setting into the code run by
581	"returns_", since some shells do not propagate envvar setting through
582	to a use of a function like this.  That would cause this test to fail
583	because results were colorized when they should not have been.
584	Reported by Nelson Beebe.
585
5862017-01-31  Jim Meyering  <meyering@fb.com>
587
588	maint: add "introduced in 3.4" in latest NEWS entry
589	* NEWS: Update.  Also, thanks to Nelson Beebe for reporting this.
590
591	diff: avoid UMR with ---presume-output-tty
592	* src/diff.c (main): Always define presume_output_tty.
593	Otherwise, it would be read uninitialized.
594	Introduced in v3.3-45-g17e2698
595	* NEWS (Bug fixes): Mention it.
596
597	gnulib: update to latest; and update bootstrap and init.sh
598
599	maint: change "time stamp" to "timestamp" globally
600	This avoids a new syntax-check failure.
601	* ChangeLog-2008: Perform that change.
602	* doc/diffutils.texi: Likewise.
603	* NEWS: Likewise.
604	* cfg.mk: Update the old news hash accordingly.
605
6062017-01-01  Jim Meyering  <meyering@fb.com>
607
608	maint: update gnulib and copyright dates for 2017
609	* gnulib: Update to latest.
610	* all files: Run "make update-copyright".
611
6122016-11-08  Jim Meyering  <meyering@fb.com>
613
614	tests: use "returns_" rather than explicit comparison with "$?"
615	* tests/colors: Use "returns_ 1" rather than testing $? = 1
616	* tests/basic: Likewise.
617	* tests/binary: Likewise.
618	* tests/filename-quoting: Likewise.
619	* tests/function-line-vs-leading-space: Likewise.
620	* tests/ignore-matching-lines: Likewise.
621	* tests/label-vs-func: Likewise.
622	* tests/new-file: Likewise.
623	* tests/no-dereference: Likewise.
624	* tests/no-newline-at-eof: Likewise.
625	* tests/stdin: Likewise.
626
6272016-10-25  Paul Eggert  <eggert@cs.ucla.edu>
628
629	diff: fix big performance degradation in 3.4
630	* NEWS, doc/diffutils.texi (Overview): Document this.
631	* src/analyze.c (diff_2_files): Restore too_expensive heuristic,
632	but this time with a floor that is 16 times the old floor.  This
633	should fix Bug#16848, by generating good-quality output for its
634	test case, while not introducing Bug#24715, by running nearly as
635	fast as diff-3.3 for that test case.
636
637	build: update gnulib submodule to latest
638
6392016-10-16  Jim Meyering  <meyering@fb.com>
640
641	maint: use die rather than error
642	Use "die (N, ..." rather than "error (N, ..." whenever N is a nonzero
643	constant.  That lets the compiler know that control never goes beyond
644	that point, and thus makes unnecessary the occasional following
645	"abort ();" or "break;" statement we have historically added to inform
646	static analysis tools of this aspect of "error" semantics.
647	* src/die.h: New file.
648	* src/Makefile.am (noinst_HEADERS): Add it.
649	* src/cmp.c: Use die in place of error whenever the first
650	argument is a nonzero constant.  Also remove any immediately-
651	following call to abort, and include "die.h".
652	* src/diff.c: Likewise.
653	* src/diff3.c: Likewise.
654	* src/sdiff.c: Likewise.
655	* src/util.c: Likewise.
656
6572016-10-02  Jim Meyering  <meyering@fb.com>
658
659	gnulib: update to latest
660
661	build: avoid GCC 7's new warnings
662	* src/util.c (get_funky_string): Adjust comment so that GCC 7's
663	-Wimplicit-fallthrough recognizes it.
664	* src/diff3.c (main): Cast boolean MERGE to "int" to avoid this:
665	diff3.c:341:25: error: '~' on a boolean expression \
666	[-Werror=bool-operation]
667
6682016-08-30  Jim Meyering  <meyering@fb.com>
669
670	gnulib: update to latest
671
6722016-08-29  Jim Meyering  <meyering@fb.com>
673
674	gnulib: update to latest, to port to upcoming GCC 7
675	This fixes compilation errors when using gcc-7-to-be that were
676	due to missing backslashes in gnulib's intprops.h and an API
677	change in functions like __builtin_add_overflow.  This ports
678	to GCC 7's newer built-in overflow-checking functions.
679
6802016-08-28  Paul Eggert  <eggert@cs.ucla.edu>
681
682	diff: don't assume ptrdiff_t <= long long int
683	* src/system.h (printint, pI): Port to (theoretical) platforms
684	where ptrdiff_t is wider than long long int (Bug#24311).
685
6862016-08-27  Paul Eggert  <eggert@cs.ucla.edu>
687
688	diff: port line numbers to mingw64
689	Problem reported by Peter Rosin (Bug#24311).
690	* src/system.h (printint, pI): New typedef and macro.
691	All uses of 'long int' and "%l" in printf format replaced by
692	'printint' and "%"pI respectively.
693	* src/ifdef.c (do_printf_spec): Don't assume pI is length 1.
694
6952016-08-20  Jim Meyering  <meyering@fb.com>
696
697	maint: post-release administrivia
698	* NEWS: Add header line for next release.
699	* .prev-version: Record previous version.
700	* cfg.mk (old_NEWS_hash): Auto-update.
701
702	version 3.5
703	* NEWS: Record release date.
704
7052016-08-16  Jim Meyering  <meyering@fb.com>
706
707	build: arrange to build with -fno-common, when possible
708	* configure.ac (WERROR_CFLAGS): Add -fno-common, when possible.
709	This would have prevented the duplicate definition of
710	presume_output_tty that was fixed in v3.4-10-gc2dc91f.
711
7122016-08-16  Hanno Böck  <hanno@hboeck.de>
713
714	diff: avoid duplicate definition of presume_output_tty
715	* src/util.c (presume_output_tty): Remove this definition.
716	The other is in diff.h.  Reported in https://bugs.gnu.org/24248
717
7182016-08-14  Jim Meyering  <meyering@fb.com>
719
720	gnulib: update to latest
721
722	tests: diff3: work around missing seq on some systems
723	* tests/diff3 (seq): Provide a seq replacement function,
724	since at least AIX, SunOS 5.10, OpenBSD-5.8 lack it.
725	Reported by Assaf Gordon in https://bugs.gnu.org/24227#8
726
7272016-08-13  Jim Meyering  <meyering@fb.com>
728
729	diff3: fix leaks, for real
730	* src/diff3.c (struct diff_block)[lint]: Add member, n2.
731	(free_diff_block, next_to_n2): New functions.
732	* tests/diff3: Add more test coverage.
733
734	maint: require that commit messages be of a certain form
735	* bootstrap.conf (bootstrap_epilogue): Merge from coreutils, so that
736	a local commit hook will now help enforce consistent commit messages.
737	* Makefile.am (check-git-hook-script-sync): New rule, largely copied
738	from coreutils.
739	* scripts/git-hooks/commit-msg: New file, from coreutils, but
740	with adapted list of program names.
741	* scripts/git-hooks/applypatch-msg: New file, from git.
742	* scripts/git-hooks/pre-applypatch: Likewise.
743	* scripts/git-hooks/pre-commit: Likewise.
744
7452016-08-13  Bastian Beischer  <bastian.beischer@rwth-aachen.de>
746
747	diff3: fix heap use-after-free; add minimal diff3 test coverage
748	Commit v3.3-42-g3b74a90, "FIXME: src/diff3: plug a leak" added an
749	invalid use of free, leading to use-after-free in nearly any invocation
750	of diff3.  Revert that commit.
751	* NEWS (Bug fixes): Mention it.
752	* tests/diff3: New file, to add minimal test coverage.
753	* tests/Makefile.am (TESTS): Add it.
754	Reported by Bastian Beischer in http://bugs.gnu.org/24210
755
7562016-08-13  Jim Meyering  <meyering@fb.com>
757
758	build: ignore texinfo build artifacts
759	* .gitignore: Ignore texinfo artifacts in doc/.
760
761	maint: diff3: remove an unreachable statement
762	* src/diff3.c (main): Remove unreachable "return" after exit from main.
763
7642016-08-08  Jim Meyering  <meyering@fb.com>
765
766	diff: disable colorization for TERM=dumb
767	* src/diff.c (main): With --color or --color=auto, when TERM is
768	"dumb", disable colorization.  Suggested by Daniel Colascione.
769	* NEWS (Bug fixes): Mention it.
770	* tests/colors: Add a test that would fail without this change,
771	yet passes with it.
772
773	maint: post-release administrivia
774	* NEWS: Add header line for next release.
775	* .prev-version: Record previous version.
776	* cfg.mk (old_NEWS_hash): Auto-update.
777
778	version 3.4
779	* NEWS: Record release date.
780
7812016-08-06  Jim Meyering  <meyering@fb.com>
782
783	gnulib: update to latest
784
785	tests: tweak built_programs definition
786	* tests/Makefile.am (built_programs): Adjust to work around what
787	may be a problem due to interaction between Solaris 10's /bin/sh
788	and an old version of GNU make. Reported by Dagobert Michelsen
789	in https https://bugs.gnu.org/24137.
790
7912016-08-02  Jim Meyering  <meyering@fb.com>
792
793	gnulib: update to latest
794
795	tests: skip a /proc/self-dependent test on the Hurd
796	* tests/brief-vs-stat-zero-kernel-lies: The Hurd's /proc/self
797	is not useful, so detect that and skip the test that requires it.
798	Reported by Assaf Gordon in https://debbugs.gnu.org/24121#29
799
8002016-08-01  Jim Meyering  <meyering@fb.com>
801
802	tests/colors: fix portability problem with touch --date
803	* tests/colors (epoch): Don't use GNU touch's --date=$epoch option.
804	Use the portable -t 197001010000.00.
805	Reported by Assaf Gordon in https://debbugs.gnu.org/24121#8
806
807	build: Solaris 9: avoid link failure due to isblank use
808	* bootstrap.conf (gnulib_modules): Add isblank, to avoid a link
809	error on Solaris 9 Sparc.  Reported by Dagobert Michelsen.
810
811	test: improve test infrastructure
812	* tests/envvar-check: New file, copied from grep, with the addition
813	of the EDITOR and GREP_OPTIONS envvar names.
814	* tests/Makefile.am (EXTRA_DIST): Add it.
815	(TESTS_ENVIRONMENT): Revamp, to be more like that of grep.
816
8172016-07-31  Jim Meyering  <meyering@fb.com>
818
819	maint: remove gl/lib/reg*.c.diff; no longer needed
820	* gl/lib/regcomp.c.diff: Remove file, now that gnulib's
821	regcomp.c compiles regex.c with -Wno-unused-parameter.
822	* gl/lib/regex_internal.c.diff: This file induced a change to ensure
823	that the "Idx" type was unsigned and to remove a few "VAR < 0"
824	comparisons.  These days, it is probably fine to stay in sync with
825	gnulib/glibc's copies
826	of these files, so remove these patches, too.
827	* gl/lib/regexec.c.diff: Likewise.
828	Prompted by a report by Assaf Gordon and a suggestion from Paul Eggert.
829
830	tests: colors: fix a portability problem and work around a shell bug
831	* tests/colors (e): Fix a portability bug: use printf '\033'
832	rather than '\e' to generate the required byte sequence, since
833	for some shells (at least dash 0.5.8), the latter doesn't work.
834	Work around a shell bug whereby "local tab=$(printf '\t')"
835	would result in an empty value for "$tab": hoist each "tab"
836	definition up/out of its function to global scope.
837	Reported by Assaf Gordon in http://debbugs.gnu.org/24116#8
838
8392016-07-23  Jim Meyering  <meyering@fb.com>
840
841	gnulib: update to latest; and tests/init.sh
842	* gnulib: Update to latest.
843	* init.sh: Update from gnulib.
844
8452016-05-30  Jim Meyering  <meyering@fb.com>
846
847	maint: arrange for "make distcheck" to work with unreleased automake
848	* dist-check.mk (my-distcheck): Remove all .deps directories
849	before performing the recursive comparison.
850
8512016-05-24  Glenn Morris  <rgm@gnu.org>
852
853	doc: fix a reference to emacs' emerge node
854	* doc/diffutils.texi (Interactive Merging): Correct a reference to
855	emacs' emerge node: s/emerge/Emerge/.
856	This addresses http://debbugs.gnu.org/23613
857
8582016-04-30  Jim Meyering  <meyering@fb.com>
859
860	maint: arrange for better URLs in generated announcement message
861	* cfg.mk (url_dir_list): Define.  I had been correcting the generated
862	URLs by hand, just before the announcement.  This is better.
863
8642016-03-15  Jim Meyering  <meyering@fb.com>
865
866	maint: don't ignore gitlog-to-changelog failure
867	* Makefile.am (gen-ChangeLog): Don't ignore failure of
868	gitlog-to-changelog. This syncs to coreutils' copy of this rule.
869
8702016-03-06  Giuseppe Scrivano  <gscrivano@gnu.org>
871
872	diff: --color: fix an infinite recursion bug
873	* src/diff.h (presume_output_tty): New extern variable.
874	* src/diff.c (PRESUME_OUTPUT_TTY_OPTION): New enum.
875	(group_format_option): Add '-presume-output-tty'.
876	(main): Handle PRESUME_OUTPUT_TTY_OPTION.
877	* src/util.c: New variable `presume_output_tty'.
878	(check_color_output): Handle presume_output_tty.
879	(set_color_context): Call process_signals only when color_context is
880	not RESET_CONTEXT.
881	* tests/colors: Check that diff doesn't crash when interrupted
882	in the middle of a color sequence.
883
884	Reported by Gisle Vanem in http://debbugs.gnu.org/22067
885
8862016-01-31  Jim Meyering  <meyering@fb.com>
887
888	maint: update prereq version of gettext
889	* configure.ac: Increase designated gettext version to 0.19.2
890	* bootstrap.conf (buildreq): Likewise.
891	Remove now-unnecessary code to remove gettext-provided files.
892
893	gnulib: update to latest
894
8952016-01-01  Jim Meyering  <meyering@fb.com>
896
897	FIXME: src/diff3: plug a leak
898
8992016-01-01  Jim Meyering  <meyering@fb.com>
900
901	maint: update copyright year, bootstrap, init.sh
902	Run "make update-copyright" and then...
903
904	* gnulib: Update to latest.
905	* tests/init.sh: Update from gnulib.
906	* bootstrap: Likewise.
907
9082015-12-06  Jim Meyering  <meyering@fb.com>
909
910	diff --brief no longer mistakenly reports diff. with 0-sized /proc/ files
911	Normally, it is safe to assume two regular files are different when
912	their st_size values are different.  However, that assumption may
913	be invalid if either value is zero, as happens with files on Linux
914	/proc and /sys file systems. Since skipping this optimization will
915	usually cost very little (one read syscall, to read zero bytes),
916	it is fine to accommodate those unusual files.
917	* src/analyze.c (diff_2_files): Do not assume regular files differ
918	just because their st_size values differ when one or more is 0.
919	* src/diff.c (compare_files): Likewise.
920	* tests/brief-vs-proc-stat-zero: New test.
921	* tests/Makefile.am: Add it.
922	* NEWS (Bug fixes): Describe it.
923	Reported by Stephan Müller in http://debbugs.gnu.org/21942
924
925	tests: arrange to print any skipped-test explanation to tty, too
926	I noticed that when a test was skipped, the reason was not printed.
927	This fixes it.  In coreutils, this variable is set in init.cfg,
928	but there is no point in putting the definition so far from the
929	code that chooses the file descriptor number in tests/Makefile.am.
930	* tests/Makefile.am (TESTS_ENVIRONMENT) [stderr_fileno_]: Define
931	here (to 9), right next to the companion "9>&2".
932
9332015-11-29  Jim Meyering  <meyering@fb.com>
934
935	build: add gperf to the list of required programs
936	* bootstrap.conf (buildreq): Add gperf to the list.
937	Reported by Stephan Müller in http://debbugs.gnu.org/21945
938
9392015-11-29  Giuseppe Scrivano  <gscrivano@gnu.org>
940
941	tests: Add tests for --color and --palette
942	* tests/colors: New file.
943	* tests/Makefile.am (TESTS): Add colors.
944
945	doc: mention --color and --palette in NEWS
946
947	diff: add --palette
948	* bootstrap (gnulib_modules): Add 'argmatch'.
949	* doc/diffutils.texi: Add documentation for --palette
950	* src/diff.h (set_color_palette): New prototype.
951	* src/diff.c (set_color_palette): New function.
952	(color_palette): New variable.
953	* src/utils.c: Include "argmatch.h".
954	(struct bin_str): New struct.
955	(struct color_ext_type): New struct.
956	(color_indicator): New array.
957	(indicator_name): New array.
958	(indicator_no): New enum.
959	(parse_state): New enum.
960	(put_indicator): New function.
961	(get_funky_string): New function. Copied from coreutils ls.
962	(parse_diff_color):  New function. Copied from coreutils ls
963	"parse_ls_color" function.
964	(set_color_context): Use put_indicator instead of directly
965	outputting the sequence.
966	* po/POTFILES.in: Add 'lib/argmatch.c'
967
968	diff: add support for --color
969	* doc/diffutils.texi (diff Options): Add documentation for --color.
970	Copied from coreutils ls --color.
971	* src/context.c (pr_unidiff_hunk): Set the color context.
972	(print_context_header): Likewise.
973	(pr_context_hunk): Likewise.
974	* src/diff.h (enum colors_style): New enum to record when to use colors.
975	(colors_style): New variable to memorize the argument value.
976	(set_color_context): Add function definition.
977	* src/diff.c: : Define COLOR_OPTION.
978	(specify_colors_style): New function.
979	(longopts): Add --color.
980	(main): Handle --color argument.
981	(option_help_msgid): Add usage string for --color.
982	* src/normal.c (print_normal_hunk): Set the color context.
983	* src/side.c (print_1sdiff_line): Likewise.
984	* src/util.c (print_1_line_nl): New function.
985	(print_1_line): Make it a wrapper of 'print_1_line_nl'.
986	(colors_enabled): New boolean variable.
987	(begin_output): Call check_color_output once the output file is
988	configured.
989	(output_1_line): Periodically call `process_signals'.
990	(caught_signals): New sigset_t.
991	(colors_enabled): New boolean variable.
992	(interrupt_signal): New sig_atomic_t.
993	(stop_signal_count): New sig_atomic_t.
994	(check_color_output): New function.
995	(install_signal_handlers): Likewise. Copied from coreutils ls.
996	(process_signals): Likewise.  Copied from coreutils ls.
997	(set_color_context): New function.
998	(sighandler): Likewise.  Copied from coreutils ls.
999	(stophandler): Likewise.  Copied from coreutils ls.
1000
10012015-09-24  Andreas Grünbacher  <agruen@gnu.org>
1002
1003	diff: Improve help text of option --label
1004	* src/diff.c (option_help_msgid): Improve help text of option --label.
1005
10062015-09-01  Jim Meyering  <meyering@fb.com>
1007
1008	build: correct man-page generation rule
1009	The PATH was set incorrectly, so that the diff used by
1010	help2man was the one from $PATH, rather than the just-built
1011	one.
1012	* man/Makefile.am (bin_dir): New variable, to...
1013	(dist_man1_MANS): ...prepend ../src to PATH, not just "..".
1014	Also, add a test to ensure that each $(bin_dir)/$$base is
1015	executable, so this doesn't happen again.
1016	In http://debbugs.gnu.org/21023, Rodrigo Valiña
1017	Gutiérrez reported that diff.1 from the diffutils-3.3 tarball
1018	contained no description of the then-new --no-dereference option.
1019
10202015-07-10  Jim Meyering  <meyering@fb.com>
1021
1022	doc: --no-dereference: improve wording/description
1023	* doc/diffutils.texi (Comparing Directories): Correct grammar.
1024	(diff Options) [--no-dereference]: Say a little more.
1025
10262015-01-01  Jim Meyering  <meyering@fb.com>
1027
1028	maint: update copyright year ranges to include 2015; update gnulib
1029
10302014-12-12  KO Myung-Hun  <komh@chollian.net>
1031
1032	diff: skip test if seek is not possible on OS/2 kLIBC
1033	This fixes the problem that 'diff - file' and 'cat file | diff - file'
1034	fail due to a seek failure with a message 'diff.exe: -: Invalid seek',
1035	because seek does not work on stdin and a pipe on OS/2 kLIBC.
1036
1037	* src/io.c (sip): Set skip_test to true if seek is not possible on
1038	OS/2 kLIBC.
1039
10402014-12-09  Jim Meyering  <meyering@fb.com>
1041
1042	gnulib: update to latest
1043
10442014-12-09  KO Myung-Hun  <komh78@gmail.com>
1045
1046	build: double-quote use of $PATH
1047	* man/Makefile.am (dist_man1_MANS): On OS/2, PATH_SEPARATOR is ';',
1048	but unquoted, that is interpreted as the shell's statement
1049	terminator.  Quote it.
1050
10512014-10-27  Paul Eggert  <eggert@cs.ucla.edu>
1052
1053	diff: fix integer overflow problem with --tabsize
1054	Reported by Tobias Stoeckmann in: http://bugs.gnu.org/18857
1055	* src/diff.c (main): Don't overflow if INTMAX_MAX / 2 < tabsize.
1056	* tests/bignum: New file, to test for this bug.
1057	* tests/Makefile.am (TESTS): Add it.
1058
10592014-09-03  Paul Eggert  <eggert@cs.ucla.edu>
1060
1061	doc: mention diff -B fix in NEWS
1062
1063	diff: fix bug with diff -B and incomplete lines
1064	Reported by Navin Kabra via Eric Blake in:
1065	http://bugs.gnu.org/18402
1066	* src/util.c (analyze_hunk): Don't mishandle incomplete
1067	lines at end of file.
1068	* tests/no-newline-at-eof: Test for the bug.
1069
1070	diff: fix performance bug with prefix computation
1071	* src/io.c (find_identical_ends): Fix performance bug:
1072	the test for when the prefix was needed messed up by
1073	the 2002-02-28 integer-overflow fixes, causing performance to be
1074	worse than it needed to be.
1075
10762014-08-23  Jim Meyering  <meyering@fb.com>
1077
1078	gnulib: update to latest, as well as bootstrap
1079
1080	maint: update copyright year range in texinfo documentation
1081	* doc/diffutils.texi: Update copyright.
1082
10832014-04-15  Jim Meyering  <meyering@fb.com>
1084
1085	maint: update bug-reporting address
1086	* README: Change bug-gnu-utils@... to bug-diffutils@gnu.org.
1087	* doc/diffutils.texi: Likewise.
1088	Reported by Jamie Landeg Jones.
1089
10902014-03-26  Paul Eggert  <eggert@penguin.cs.ucla.edu>
1091
1092	diff: fix two "..." typos in --help output
1093	* src/diff.c (option_help_msgid): Remove two "..." typos (Bug#17102).
1094
10952014-03-25  Paul Eggert  <eggert@cs.ucla.edu>
1096
1097	doc: improve documentation about reading and stdin
1098	See Bug#17075.
1099	* doc/diffutils.texi (Comparison): Say that files need not be read.
1100	(Invoking diff): Remove confusing remark about 'diff - -'.
1101	It's not that useful, and it's not portable anyway.
1102
11032014-02-24  Paul Eggert  <eggert@cs.ucla.edu>
1104
1105	diff, sdiff: minor integer overflow fixes
1106	* src/context.c (find_hunk):
1107	Simplify, now that 2 * context + 1 cannot overflow.
1108	* src/diff.c (main):
1109	* src/sdiff.c (interact):
1110	Don't rely on undefined behavior on signed integer overflow.
1111	* src/diff.c (main): Don't let contexts exceed CONTEXT_MAX.
1112	* src/system.h (CONTEXT_MAX): New macro.
1113
1114	diff: fix bug with -I and overlapping hunks
1115	Problem reported by Vincent Lefevre in <http://bugs.gnu.org/16864>.
1116	* src/context.c (find_hunk): Threshold is CONTEXT only if
1117	the second change is ignorable.
1118	* tests/ignore-matching-lines: New test.
1119	* tests/Makefile.am (TESTS): Add it.
1120
11212014-02-23  Paul Eggert  <eggert@cs.ucla.edu>
1122
1123	diff: remove TOO_EXPENSIVE heuristic
1124	Problem reported by Vincent Lefevre in <http://bugs.gnu.org/16848>.
1125	The simplest solution is to remove the TOO_EXPENSIVE heuristic
1126	that I added to GNU diff in 1993.  Although appropriate for
1127	circa-1993 hardware, these days the heuristic seems to be more
1128	trouble than it's worth.
1129	* NEWS: Document this.
1130	* doc/diffutils.texi (Overview): Modernize citations.
1131	Remove mention of TOO_EXPENSIVE heuristic.
1132	* src/analyze.c (diff_2_files): Adjust to TOO_EXPENSIVE-related
1133	API changes in gnulib's diffseq module.
1134
1135	build: update gnulib submodule to latest
1136
11372014-01-31  Paul Eggert  <eggert@cs.ucla.edu>
1138
1139	diff: exit with status 1, not 2, when binary files differ
1140	Problem reported by Vincent Lefevre in <http://bugs.gnu.org/16608>.
1141	* NEWS:
1142	* doc/diffutils.texi (Binary, Invoking diff): Document this.
1143	* src/analyze.c (briefly_report): Return void, not int.
1144	All uses changed.  Do not futz with exit status.  Simplify.
1145	* tests/binary: Adjust to match new behavior.
1146
11472013-09-26  Paul Eggert  <eggert@cs.ucla.edu>
1148
1149	build: omit -Wsuggest-attribute=pure for lib
1150	* configure.ac (WARN_CFLAGS): Omit -Wsuggest-attribute=pure
1151	when compiling the lib subdirectory.  Reported for Fedora 19
1152	by Eric Blake in <http://bugs.gnu.org/15463>.
1153
11542013-08-22  Paul Eggert  <eggert@cs.ucla.edu>
1155
1156	cmp, diff, sdiff: tune by using rawmemchr
1157	On my platform (AMD Phenom II X4 910e, Fedora 17 x86-64), this sped up
1158	'cmp -n 8GiB /dev/full /dev/zero' by a factor of 3.8, and
1159	'cmp -sn 8GiB /dev/full /dev/zero' by a factor of 1.8.
1160	* bootstrap.conf (gnulib_modules): Add rawmemchr.
1161	* src/cmp.c (cmp): Optimize the common case where buffers are the same,
1162	by using count_newlines rather than block_compare_and_count.
1163	(block_compare_and_count): Remove.
1164	(count_newlines): New function.
1165	* src/cmp.c (count_newlines):
1166	* src/io.c (prepare_text):
1167	* src/sdiff.c (lf_copy, lf_skip, lf_snarf):
1168	Use rawmemchr instead of memchr, for speed.
1169
11702013-08-12  Paul Eggert  <eggert@cs.ucla.edu>
1171
1172	cmp: tune 'cmp a b' for GCC x86
1173	Performance problem reported by David Balažic in:
1174	http://lists.gnu.org/archive/html/bug-diffutils/2013-08/msg00013.html
1175	* src/system.h (word): Make it size_t, not uintmax_t.
1176	This sped up plain cmp 90% on my tests (GCC 4.8.1, x86).
1177
11782013-07-06  Paul Eggert  <eggert@cs.ucla.edu>
1179
1180	build: update gnulib submodule to latest
1181
11822013-05-06  Stefano Lattarini  <stefano.lattarini@gmail.com>
1183
1184	build: enable 'subdir-objects' automake option
1185	The future major Automake version (2.0, ETA at least one year from now)
1186	might enable that option unconditionally, so better get prepared in due
1187	time.
1188
1189	* configure.ac (AM_INIT_AUTOMAKE): Adjust.
1190	(AM_PROG_CC_C_O): New, required by Automake up to 1.13.x when the
1191	'subdir-objects' is in use.
1192
11932013-04-28  Paul Eggert  <eggert@cs.ucla.edu>
1194
1195	build: update gnulib submodule to latest
1196
11972013-04-03  Paul Eggert  <eggert@cs.ucla.edu>
1198
1199	diff: fix bug with Asian file names
1200	Problem reported by Errembault Philippe in:
1201	http://lists.gnu.org/archive/html/bug-diffutils/2013-03/msg00012.html
1202	* NEWS: Document this.
1203	* src/dir.c (compare_names): Fall back on file_name_cmp if
1204	compare_collated returns 0, unless ignoring file name case.
1205	(diff_dirs): Don't bother with the O(N**2) stuff unless ignoring
1206	file name case.
1207	* tests/Makefile.am (TESTS): Add strcoll-0-names.
1208	* tests/strcoll-0-names: New file.
1209
1210	diff: remove unnecessary decl
1211	* src/dir.c (compare_names_for_qsort): Remove declaration.
1212	Not needed now that we assume C89.
1213
1214	diff: tune compare_names_for_qsort
1215	* src/dir.c (compare_collated): New function.
1216	(compare_names): Use it.
1217	(compare_names_for_qsort): Use it.  This is a bit more efficient
1218	as it can avoid a double invocation of file_name_cmp when
1219	file_name_cmp returns zero.
1220
12212013-03-30  Jim Meyering  <meyering@fb.com>
1222
1223	doc: mention new option, --no-dereference in 3.3's NEWS
1224	* NEWS (New feeatures): Update 3.3's news to mention --no-dereference.
1225	Reported by Denis Excoffier.
1226	* Makefile.am (old_NEWS_hash): Update, since this modifies old, and
1227	normally-immutable NEWS.
1228
12292013-03-26  Paul Eggert  <eggert@cs.ucla.edu>
1230
1231	tests: port to Solaris 10 /bin/sh
1232	* tests/Makefile.am (TESTS_ENVIRONMENT):
1233	Use "FOO=val; export FOO" rather than "export FOO=val",
1234	as the latter form doesn't work with Solaris /bin/sh.
1235	Problem found when trying to run "make check" on Solaris 10.
1236
12372013-03-24  Jim Meyering  <meyering@fb.com>
1238
1239	maint: post-release administrivia
1240	* NEWS: Add header line for next release.
1241	* .prev-version: Record previous version.
1242	* cfg.mk (old_NEWS_hash): Auto-update.
1243
1244	version 3.3
1245	* NEWS: Record release date.
1246
12472013-03-23  Paul Eggert  <eggert@cs.ucla.edu>
1248
1249	doc: fix menu typo
1250	* doc/diffutils.texi (Comparing Three Files): Fix out-of-order menu.
1251	Bug caught by Texinfo 5.0.
1252
1253	maint: update build procedure to recent gettext etc.
1254	* bootstrap.conf (gnulib_modules): Add vararrays.
1255	(needed_gnulib_files, unnecessary_gettext_files): New vars.
1256	(bootstrap_post_import_hook): New function, to implement these vars.
1257	(excluded_files): Remove; 'bootstrap' no longer supports this.
1258	Its function is now performed by unnecessary_gettext_files.
1259	(buildreq): Update automake to 1.12.2, to avoid CVE-2012-3386.
1260	* configure.ac (AM_GNU_GETTEXT_VERSION): Bump from 0.17 to 0.18.2,
1261	to lessen the probability that we'll have outlandishly old files
1262	during a build.
1263	* m4/vararrays.m4: Remove from repository, as we now use the
1264	gnulib version.
1265
12662013-03-21  Jim Meyering  <jim@meyering.net>
1267
1268	build: update gnulib to latest and adapt; update bootstrap, too
1269	Blindly updating to the latest from gnulib, bootstrap would
1270	fail due to failure of our local patches to apply.  Hence,
1271	these first two updates.
1272	* gl/lib/regex_internal.c.diff: Update offsets, so this patch
1273	applies to the latest from gnulib.
1274	* gl/lib/regex_internal.h.diff: Remove file.  No longer needed.
1275	* bootstrap: Update from gnulib.
1276
12772013-01-06  Paul Eggert  <eggert@cs.ucla.edu>
1278
1279	tests: port to hosts lacking fmt, make -C
1280	* tests/Makefile.am (built_programs): Don't assume fmt works.
1281	Don't rely on 'make -C', either.
1282
1283	maint: update .gitignore for recent gnulib
1284	* .gitignore: Add tests/*.trs and several *.h and *.sed files in lib,
1285
12862013-01-04  Jim Meyering  <jim@meyering.net>
1287
1288	build: update gnulib submodule to latest
1289
1290	maint: update all copyright year number ranges
1291	Run "make update-copyright".
1292
12932012-10-23  Eric Blake  <eblake@redhat.com>
1294
1295	build: default to --enable-gcc-warnings in a git tree
1296	Anyone building from cloned sources can be assumed to have a new
1297	enough environment, such that enabling gcc warnings by default will
1298	be useful.  Tarballs still default to no warnings, and the default
1299	can still be overridden with --disable-gcc-warnings.
1300	* configure.ac (gl_gcc_warnings): Set default based on environment.
1301
13022012-10-03  Paul Eggert  <eggert@cs.ucla.edu>
1303
1304	* doc/diffutils.texi (cmp Options): Document -l format better.
1305
13062012-09-10  Jim Meyering  <meyering@redhat.com>
1307
1308	maint: use xasprintf in place of xmalloc+sprintf
1309	* bootstrap.conf (gnulib_modules): Add gnulib's xvasprintf module.
1310	* src/util.c: Include "xvasprintf.h".
1311	(begin_output): Use xasprintf in place of xmalloc+sprintf.
1312
13132012-09-10  Andreas Gruenbacher  <agruen@gnu.org>
1314
1315	diff: encode file names with special characters
1316	* src/util.c (c_escape_char): New function.
1317	(c_escape): New function.
1318	(begin_output): Escape file names when needed.
1319	* src/context.c (print_context_header): New names parameter.
1320	(print_context_label): New name parameter.
1321	* src/diff.h (print_context_header): Change prototype.
1322	* tests/filename-quoting: New file.
1323	* NEWS: Document this change.
1324
13252012-08-30  Paul Eggert  <eggert@cs.ucla.edu>
1326
1327	diff: silence GCC warning instead of slowing down
1328	* src/dir.c (find_dir_file_pathname): Use 'IF_LINT (volatile)' to
1329	silence the gcc warning, rather than using 'volatile', as the
1330	warning appears to be bogus.
1331
13322012-08-28  Jim Meyering  <meyering@redhat.com>
1333
1334	diff: avoid possible longjmp-triggered misbehavior
1335	* src/dir.c (find_dir_file_pathname): gcc 4.8.0 20120825 reported
1336	that a local variable's value might be clobbered.  Declare "match"
1337	to be volatile.
1338
1339	build: update gnulib, bootstrap and init.sh to latest
1340
1341	maint: avoid new syntax-check failure due to @xref use
1342	* doc/diffutils.texi: Change several "; @xref{..." to ".  @xref{...",
1343	since @xref should start a sentence.
1344
13452012-05-15  Paul Eggert  <eggert@cs.ucla.edu>
1346
1347	maint: remove ms subdirectory
1348	diffutils is now designed to build with Cygwin or MinGW.
1349	The old DJGPP stuff probably doesn't work anyway.
1350	* Makefile.am (SUBDIRS): Remove ms.
1351	* NEWS: Document this.
1352	* configure.ac (AC_CONFIG_FILES): Remove ms/Makefile.
1353	* ms/Makefile.am, ms/README, ms/config.bat, ms/config.sed:
1354	* ms/config.site: Remove.
1355
13562012-05-14  Paul Eggert  <eggert@cs.ucla.edu>
1357
1358	maint: update bootstrap from gnulib
1359	* bootstrap: Update from gnulib.
1360
1361	main: port subcommands to mingw
1362	Problem reported by Eli Zaretskii in
1363	<http://lists.gnu.org/archive/html/bug-gnu-utils/2012-05/msg00013.html>.
1364	Approach suggested by Bruno Haible as option (4) in
1365	<http://lists.gnu.org/archive/html/bug-gnu-utils/2012-05/msg00036.html>.
1366	* bootstrap.conf (gnulib_modules): Add system-quote.
1367	* src/diff3.c, src/sdiff.c, src/util.c:
1368	Include <system-quote.h>, not <sh-quote.h>.
1369	* src/diff3.c (read_diff):
1370	* src/sdiff.c (main, edit):
1371	* src/util.c (begin_output):
1372	Use system_quote_argv, for portability to Mingw.
1373	* src/sdiff.c (NUM_SIGS, handler_index_of_SIGINT): Now enum
1374	values, not macros; this is cleaner and avoids a GCC warning if
1375	!HAVE_WORKING_VFORK.
1376	* src/util.c (begin_output) [! HAVE_WORKING_FORK]: Do not use -f,
1377	for consistency with the HAVE_WORKING_FORK code.
1378
1379	maint: update bootstrap from gnulib
1380	* bootstrap: Update from gnulib.
1381
1382	maint: m4/gnulib-cache.m4 is not under version control
1383	This is like what coreutils does, and suppresses 'git status' chatter.
1384	* .gitignore: Add /m4/gnulib-cache.m4.
1385
1386	Use binary mode when testing for binary files.
1387	This reverts the 2006-01-05 change and modernizes to the current API.
1388	Idea suggested by Eli Zaretskii in:
1389	http://lists.gnu.org/archive/html/bug-gnu-utils/2012-05/msg00066.html
1390	* src/cmp.c (main):
1391	* src/diff.c (main, compare_files):
1392	Use set_binary_mode rather than SET_BINARY.
1393	* src/diff.c (compare_files): Omit unnecessary use of O_BINARY.
1394	* src/io.c (sip): Sample unknown files in binary mode, to see
1395	whether they are binary.
1396	(read_files): Read binary files in binary mode.
1397
1398	build: update gnulib submodule to latest
1399
14002012-05-13  Stefano Lattarini  <stefano.lattarini@gmail.com>
1401
1402	build: omit obsolete AM_PROG_CC_STDC macro
1403	The Automake-provided macro 'AM_PROG_CC_STDC' has been superseded by
1404	the Autoconf-provided one 'AC_PROG_CC' since October 2002, and will
1405	be removed in the next major automake version.
1406	* configure.ac (AM_PROG_CC_STDC): Drop it.
1407
14082012-05-05  Jim Meyering  <meyering@redhat.com>
1409
1410	diff: fix a typo that was always disabling the same_special_file macro
1411	* src/system.h (same_special_file): Correct cpp guard expression:
1412	s/HAVE_ST_RDEV/HAVE_STRUCT_STAT_ST_RDEV/.  Reported by Eli Zaretskii.
1413
14142012-04-17  Jim Meyering  <meyering@redhat.com>
1415
1416	maint: update bootstrap from gnulib
1417	* bootstrap: Update from gnulib.
1418
14192012-03-07  Eric Blake  <eblake@redhat.com>
1420
1421	usage: improve wording of --ignore-matching-lines
1422	* src/diff.c (option_help_msgid): Tweak wording.
1423
14242012-03-04  Paul Eggert  <eggert@cs.ucla.edu>
1425
1426	doc: explain -I RE better in --help output
1427	* src/diff.c, src/sdiff.c (option_help_msgid): For -I RE,
1428	change "whose lines all match" to "all whose lines match" to avoid
1429	unintended interpretation.  Reported by Danijel Tasov in
1430	<http://bugs.debian.org/648411>.
1431
14322012-02-12  Paul Eggert  <eggert@cs.ucla.edu>
1433
1434	sdiff: remove dependency on sigprocmask
1435	* bootstrap.conf (gnulib_modules): Remove sigprocmask.
1436	* src/sdiff.c (temporary_file): No need to invoke sigprocmask
1437	here, since the signal handler merely sets a flag.
1438
14392012-02-04  Paul Eggert  <eggert@cs.ucla.edu>
1440
1441	diff: -N, --unidirectional-new-file now compare to "-" too
1442	* NEWS: Document this.
1443	* doc/diffutils.texi (Comparing Directories): Likewise.
1444	Also, document that these options work at the top level.
1445	* src/diff.c (compare_files): Treat EBADF like ENOENT, to handle
1446	the case where "-" is closed.  Allow the other file to be
1447	STDIN_FILENO, in case it's "-".
1448	* tests/Makefile.am (TESTS): Add new-file.
1449	* tests/new-file: New file.
1450
14512012-01-25  Paul Eggert  <eggert@cs.ucla.edu>
1452
1453	maint: quote 'like this' or "like this", not `like this'
1454	This is in response to a recent change in the GNU coding standards,
1455	which now suggest quoting 'like this' or "like this", instead of
1456	`like this' or ``like this''.
1457	* HACKING, NEWS, README, README-hacking, TODO, doc/diagmeet.note:
1458	* doc/diffutils.texi, ms/config.bat, ms/config.site:
1459	* src/analyze.c, src/cmp.c, src/context.c, src/diff.c:
1460	* src/diff.h, src/diff3.c, src/dir.c, src/ifdef.c, src/io.c:
1461	* src/sdiff.c, src/side.c, src/system.h, src/util.c:
1462	* tests/help-version:
1463	Quote 'like this' or "like this" in commentary.
1464	* cfg.mk (old_NEWS_hash): Adjust to reflect new NEWS quoting.
1465	* man/help2man: Update to 1.40.4 version, with quoting fixed as above.
1466	* po/en.po: Remove translation involving `, as it's no longer needed.
1467	* src/cmp.c (try_help, specify_ignore_initial, usage, main):
1468	* src/diff.c (main, try_help, option_help_msgid, specify_value)
1469	(compare_files):
1470	* src/diff3.c (main, try_help, option_help_msgid, usage)
1471	(read_diff):
1472	* src/dir.c (compare_names):
1473	* src/sdiff.c (try_help, usage, check_child_status, main):
1474	* src/util.c (finish_output):
1475	* tests/help-version:
1476	Quote 'like this' in output.
1477
1478	build: update gnulib submodule to latest
1479
14802012-01-12  Jim Meyering  <meyering@redhat.com>
1481
1482	build: accommodate newer bootstrap from gnulib
1483	* bootstrap.conf (gnulib_tool_option_extras): Add both --symlink
1484	and --makefile-name=gnulib.mk.  Also remove now-obsolete $bt/ prefix.
1485	* bootstrap: Update from gnulib.
1486	* tests/init.sh: Update from gnulib.
1487	* lib/Makefile.am: Initialize numerous variables, so that
1488	generated code in gnulib.mk may use += to append to them.
1489
1490	maint: avoid new syntax-check failure
1491	* src/diff.c (compare_files): Use STREQ, not strcmp.
1492
14932012-01-08  Bruno Haible  <bruno@clisp.org>
1494
1495	New option --no-dereference.
1496	* src/diff.h (no_dereference_symlinks): New variable.
1497	* src/diff.c: Include xreadlink.h.
1498	(longopts): Add --no-dereference option.
1499	(main): Accept --no-dereference option.
1500	(option_help_msgid): Mention the --no-dereference option.
1501	(compare_files): If no_dereference_symlinks is true, use lstat()
1502	instead of stat(). Compare symbolic links by comparing their values.
1503	* bootstrap.conf (gnulib_modules): Add lstat, stat, xreadlink.
1504	* doc/diffutils.texi (Comparing Directories, diff Options): Mention the
1505	--no-dereference option.
1506	* tests/no-dereference: New file.
1507	* tests/Makefile.am (TESTS): Add it.
1508
15092012-01-01  Jim Meyering  <meyering@redhat.com>
1510
1511	maint: update all copyright year number ranges
1512	Run "make update-copyright".
1513
15142011-12-14  Jim Meyering  <meyering@redhat.com>
1515
1516	build: update to latest gnulib and adapt
1517	* tests/binary: Reverse arguments to compare to avoid failure of
1518	new syntax-check rule.
1519	* configure.ac: Use -Wno-format-nonliteral.
1520	Mark functions as pure of const, per recommendations enabled by
1521	new gcc -W options.  Use _GL_ATTRIBUTE_PURE and _GL_ATTRIBUTE_CONST.
1522	* lib/cmpbuf.h (buffer_lcm, block_compare):
1523	Apply pure and/or const attributes.
1524	* src/cmp.c (block_compare): Likewise.
1525	* src/context.c (find_hunk): Likewise.
1526	* src/diff.h (lines_differ): Likewise.
1527	* src/diff3.c (skipwhite): Likewise.
1528	* src/dir.c (dir_loop): Likewise.
1529	* src/util.c (find_change, find_reverse_change): Likewise.
1530	(translate_line_number): Likewise.
1531
1532	build: stop distributing gzip'd releases;  xz is enough
1533	* configure.ac (AM_INIT_AUTOMAKE): Add no-dist-gzip.
1534
15352011-11-29  Jim Meyering  <meyering@redhat.com>
1536
1537	tests: use "compare exp out", not "compare out exp"
1538	Likewise, when an empty file is expected, use "compare /dev/null out",
1539	not "compare out /dev/null". I.e., specify the expected/desired contents
1540	via the first file name.  Prompted by a suggestion from Bruno Haible
1541	in http://thread.gmane.org/gmane.comp.gnu.grep.bugs/4020/focus=29154
1542
1543	Run these commands:
1544
1545	  git grep -l -E 'compare [^ ]+ exp' \
1546	    |xargs perl -pi -e 's/\b(compare) (\S+) (exp\S*)/$1 $3 $2/'
1547	  git grep -l -E 'compare [^ ]+ /dev/null' \
1548	    |xargs perl -pi -e 's,\b(compare) (\S+) (/dev/null),$1 $3 $2,'
1549
1550	But manually convert this one:
1551
1552	  -compare out exp-$(echo $opt|tr ' ' _)
1553	  +compare exp-$(echo $opt|tr ' ' _) out
1554
1555	and avoid an inappropriate change to cfg.mk.
1556
15572011-10-12  Stefano Lattarini  <stefano.lattarini@gmail.com>
1558
1559	tests: use more portable fd redirection in TESTS_ENVIRONMENT
1560	* tests/Makefile.am (TESTS_ENVIRONMENT): Redirection with `exec 9>&2'
1561	is not portable to various Korn shells, and to (at least) HP-UX 11
1562	/bin/sh.  Use a more portable idiom.
1563	See http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/22488 for
1564	lots of discussion.
1565
15662011-10-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
1567
1568	tests: make test runner a script, not a shell function
1569	All the test scripts in the diffutils testsuite are shell scripts,
1570	so the current definition of TESTS_ENVIRONMENT, which adaptively
1571	run tests using either perl or the shell depending on their kind,
1572	is an overkill.
1573
1574	Moreover, this change is required in order for the testsuite to
1575	continue to work with the new testsuite harness that is planned
1576	to be introduced in Automake 1.12 (which, as of the writing date,
1577	is still under development and in late alpha state).
1578
1579	See also related discussion on bug-coreutils:
1580	 <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8887>
1581
1582	* tests/Makefile.am (TESTS_ENVIRONMENT): Remove definition of the
1583	`shell_or_perl_' shell function, which is not required anymore.
1584	(LOG_COMPILER): New, define to `$(SHELL)'.
1585	* tests/binary: Make executable.
1586	* tests/colliding-file-names: Likewise.
1587	* tests/excess-slash: Likewise.
1588	* tests/no-newline-at-eof: Likewise.
1589
15902011-10-04  Claudio Bley  <claudio.bley@gmail.com>
1591
1592	portability: use SET_BINARY rather than xfreopen (NULL, ...
1593	* src/diff.c: Include binary-io.h, not xfreopen.h.
1594	(main): Use SET_BINARY (...) rather than xfreopen (NULL, X, ...),
1595	because the latter doesn't work on MinGW and crashes using MSVC.
1596	* src/cmp.c (main): Likewise.
1597
15982011-10-04  Jim Meyering  <meyering@redhat.com>
1599
1600	build: update gnulib submodule to latest
1601
16022011-09-02  Jim Meyering  <meyering@redhat.com>
1603
1604	post-release administrivia
1605	* NEWS: Add header line for next release.
1606	* .prev-version: Record previous version.
1607	* cfg.mk (old_NEWS_hash): Auto-update.
1608
1609	version 3.2
1610	* NEWS: Record release date.
1611
1612	build: update bootstrap and tests/init.sh from gnulib
1613	* bootstrap: Update from gnulib.
1614	* tests/init.sh: Likewise.
1615
1616	build: update gnulib submodule to latest
1617
16182011-09-01  Jim Meyering  <meyering@redhat.com>
1619
1620	doc: diffutils' texi-derived doc may now be in debian's "main" section
1621	* NEWS (Packaging): Mention the "no front/back-cover" change.
1622
16232011-08-14  Jim Meyering  <meyering@redhat.com>
1624
1625	maint: avoid new "make sytnax-check" failure.
1626	* src/diff.h (find_dir_file_pathname): Mark declaration with "extern"
1627	keyword, in order to placate the tight-scope syntax check.
1628
16292011-08-14  Paul Eggert  <eggert@cs.ucla.edu>
1630
1631	* src/io.c (find_and_hash_each_line): Refactor for brevity.
1632
16332011-08-14  Roland McGrath  <roland@hack.frob.com>
1634
1635	diff, sdiff: new option --ignore-trailing-space (-Z)
1636	Derived from Roland McGrath's patch (dated June 2004!) in:
1637	http://lists.gnu.org/archive/html/bug-gnu-utils/2004-07/msg00000.html
1638	* NEWS:
1639	* doc/diffutils.texi (White Space, Blank Lines)
1640	(sdiff Option Summary, diff Options, sdiff Options): Document -Z.
1641	* src/diff.h (IGNORE_TRAILING_SPACE)
1642	(IGNORE_TAB_EXPANSION_AND_TRAILING_SPACE): New constants, for -Z.
1643	* src/diff.c (shortopts, longopts, main, option_help_msgid):
1644	* src/sdiff.c (longopts, option_help_msgid, main):
1645	* src/io.c (find_and_hash_each_line):
1646	* src/util.c (lines_differ, analyze_hunk): Support -Z.
1647
16482011-08-13  Paul Eggert  <eggert@cs.ucla.edu>
1649
1650	* bootstrap.conf (gnulib_modules): Remove timegm.
1651	This fixes a problem noted by Andreas Schwab in:
1652	http://lists.gnu.org/archive/html/bug-diffutils/2011-08/msg00035.html
1653
16542011-08-13  Tim Waugh  <twaugh@redhat.com>
1655
1656	diff: --ignore-file-name-case now applies at top level too
1657	Derived from Tim Waugh's patch in:
1658	http://lists.gnu.org/archive/html/bug-diffutils/2011-08/msg00034.html
1659	* NEWS, doc/diffutils.texi (diff Options): Document this.
1660	* src/diff.c (compare_files): Implement this, by using
1661	find_dir_file_pathname.
1662	* src/diff.h (find_dir_file_pathname): New decl.
1663	* src/dir.c: Include filenamecat.h.
1664	(find_dir_file_pathname): New function.
1665
16662011-08-13  Paul Eggert  <eggert@cs.ucla.edu>
1667
1668	* .gitignore: Add lib/unistr, lib/unused-parameter.h.
1669
16702011-08-10  Jim Meyering  <meyering@redhat.com>
1671
1672	post-release administrivia
1673	* NEWS: Add header line for next release.
1674	* .prev-version: Record previous version.
1675	* cfg.mk (old_NEWS_hash): Auto-update.
1676
1677	version 3.1
1678	* NEWS: Record release date.
1679
1680	build: use largefile module and update to latest gnulib
1681	* configure.ac: Remove AC_SYS_LARGEFILE, subsumed by ...
1682	* bootstrap.conf (gnulib_modules): ...this.  Use largefile module.
1683	* gnulib: Update to latest.
1684
16852011-08-08  Santiago Vila  <sanvila@unex.es>
1686
1687	doc: insert comma in --help line for --ignore-space-change (-b)
1688	* src/diff.c (option_help_msgid): Insert omitted comma between
1689	"-b" and "--ignore-space-change".  (tiny change)
1690
16912011-08-04  Jim Meyering  <meyering@redhat.com>
1692
1693	doc: relax restriction on front-cover and back-cover texts
1694	* doc/diffutils.texi (copying): Relax restriction on front-cover
1695	and back-cover texts (just as m4 did here:
1696	http://git.savannah.gnu.org/cgit/m4.git/commit?id=ee1e92ec).
1697	Reported by Santiago Vila.  Fix suggested by Eric Blake.
1698
16992011-08-03  Jim Meyering  <meyering@redhat.com>
1700
1701	tests: update init.sh from gnulib
1702	* tests/init.sh: Update from gnulib.
1703
1704	build: update gnulib submodule to latest
1705
17062011-07-03  Jim Meyering  <meyering@redhat.com>
1707
1708	maint: remove inclusion of unused header, for "make syntax-check"
1709	* src/diff3.c: Don't include <inttostr.h>.  Not used.
1710	* src/context.c: Likewise.
1711
17122011-06-19  Jim Meyering  <meyering@redhat.com>
1713
1714	build: don't require perl when building from a tarball
1715	But do ensure -- in all other circumstances -- that the man/*.1
1716	files are rebuilt whenever the version number changes.
1717	* configure.ac (SRC_VERSION_C): Define.
1718	* man/Makefile.am (dist_man1_MANS): Rename from $(man1_MANS),
1719	so that we distribute those pesky man/*.1 files.
1720	(EXTRA_DIST): Reflect name change.
1721	(MAINTAINERCLEANFILES): Define this, not DISTCLEANFILES,
1722	now that these generated files are distributed.
1723	($(dist_man1_MANS)): Depend on $(SRC_VERSION_C), so we get the
1724	full dependency when not building from a tarball.
1725
17262011-06-13  Jim Meyering  <meyering@redhat.com>
1727
1728	doc: do not distribute generated man/*.1 man files
1729	* man/help2man: New file.
1730	* man/Makefile.am: Use $(srcdir)/help2man.
1731	Convert $(dist_man1_MANS) to $(man1_MANS), to tell automake
1732	not to distribute the generated man/*.1 files.  Now they're
1733	generated at build-from-tarball time.
1734	($(man1_MANS)): Depend on version.c, so that man pages are
1735	regenerated whenever the version string changes.
1736
1737	build: ccache works better without embedded version strings
1738	* src/Makefile.am: Generate version.c and version.h and put the
1739	new symbol in a tiny library to be used by each program.
1740	(LDADD): Add the new library.
1741	* src/cmp.c (main): Use Version, not PACKAGE_VERSION, so the .o
1742	file does not change with each commit-derived version increment.
1743	* src/diff.c (main): Likewise.
1744	* src/diff3.c (main): Likewise.
1745	* src/sdiff.c (main): Likewise.
1746	* src/system.h: Include "version.h".
1747	* .gitignore: Add version.[ch]
1748
17492011-06-12  Jim Meyering  <meyering@redhat.com>
1750
1751	doc: ensure each program has a man/*.x file: add "SEE ALSO" references
1752	* man/cmp.x: New file.
1753	* man/diff3.x: New file.
1754	* man/sdiff.x: New file.
1755	* man/diff.x: Add xrefs to the other three programs, and to patch.
1756	* man/Makefile.am (EXTRA_DIST): List new files.
1757	(cmp.1, diff3.1, sdiff.1): Depend on each .x file.
1758
1759	doc: rename diff.texi to diffutils.texi
1760	This makes the .texi basename the same as the package name,
1761	which is consistent with most other GNU packages.
1762	* doc/diffutils.texi: Rename from...
1763	* doc/diff.texi: ...removed.
1764	* doc/Makefile.am (info_TEXINFOS): Reflect name change.
1765	(diffutils_TEXINFOS): Likewise.
1766	* cfg.mk (gendocs_options_): Remove this customization.  It is no
1767	longer needed, now that the .texi name matches that of the package.
1768	* man/Makefile.am ($(dist_man1_MANS)): Remove now-unnecessary sed
1769	filter.
1770	* README: Update references to diffutils.texi etc. here, too.
1771	* .gitignore: Update here, too.
1772	Suggested by Karl Berry.
1773
17742011-06-08  Karl Berry  <karl@freefriends.org>
1775
1776	cmp, diff, diff3, sdiff: edit and align --help text.
1777	* cmp.c (option_help_msgid, usage),
1778	* diff.c (option_help_msgid, usage),
1779	* diff3.c (option_help_msgid, usage),
1780	* sdiff.c (option_help_msgid, usage): align descriptions in the --help
1781	output and slightly edit content.
1782
17832011-05-27  Paul Eggert  <eggert@cs.ucla.edu>
1784
1785	diff: don't use locales after local-specific sorting fails
1786	* src/dir.c (compare_names): Don't invoke strcasecmp if
1787	locale-specific sorting fails, because POSIX.1-2008 says strcasecmp
1788	has unspecified behavior outside the POSIX locale.  See:
1789	http://lists.gnu.org/archive/html/bug-diffutils/2011-05/msg00008.html
1790
1791	bootstrap: Avoid multithreading.
1792	* bootstrap.conf (gnulib_tool_option_extras):
1793	Add "--avoid=localename --avoid=lock", because we don't want to
1794	bring in the multithreading code that recent gnulib changes would
1795	otherwise bring in.
1796	(excluded_files): Remove m4/lock.m4; no longer needed, now that
1797	we use --avoid=lock.
1798
1799	build: update gnulib submodule to latest
1800
18012011-05-23  Karl Berry  <karl@gnu.org>
1802
1803	maint: update README-hacking
1804	* README-hacking: Update a la coreutils for git, etc.
1805
18062011-05-23  Jim Meyering  <meyering@redhat.com>
1807
1808	maint: update gnulib to latest with accompanying tight-scope tweaks
1809	* cfg.mk: Include $(srcdir)/dist-check.mk using "-include",
1810	to accommodate the new sc_tight_scope rule.
1811	(_gl_TS_extern): Define, to tell gnulib's tight_scope rule that
1812	headers here mark externs with "XTERN".
1813	* gnulib: Update to latest.
1814
18152011-05-18  Jim Meyering  <meyering@redhat.com>
1816
1817	maint: use gnulib's new readme-release module
1818	* bootstrap.conf (gnulib_modules): Add readme-release.
1819	(bootstrap_epilogue): Add the recommended perl one-liner.
1820	* README-release: Remove file; it is now generated from gnulib.
1821	* .gitignore: Add it.
1822
1823	build: update gnulib submodule to latest
1824
1825	maint: prepare for the tight-scope check
1826	* src/diff.h: Mark function declarations with "extern" in
1827	preparation for the tight-scope check.
1828	(ignore_white_space): Separate enum decl from declaration
1829	of this variable.
1830	* src/Makefile.am (diff_SOURCES): Move diff.h from here to ...
1831	(noinst_HEADERS): ...here.
1832	For convenience, since the tight-scope rule uses $(noinst_HEADERS).
1833
1834	maint: don't use now-removed gnulib "exit" module
1835	* bootstrap.conf (gnulib_modules): Remove "exit" module.
1836	It no longer exists.
1837
18382011-03-26  Jim Meyering  <meyering@redhat.com>
1839
1840	build: update gnulib submodule to latest
1841
1842	* .x-sc_space_tab: Remove file.  Instead, ...
1843	* cfg.mk (exclude_file_name_regexp--sc_space_tab): ...define this.
1844
1845	maint: fix typo in unused rule
1846	* cfg.mk (config-save): Fix typo: add leading "_" in variable name.
1847
18482011-03-18  Jim Meyering  <meyering@redhat.com>
1849
1850	doc: add a reference to wdiff(1) from diff.1
1851	* man/diff.x: New file, to add "SEE ALSO" reference to wdiff(1).
1852	* man/Makefile.am (diff.1): Depend on diff.x.
1853	($(dist_man1_MANS)): Tell help2man to include diff.x.
1854	(EXTRA_DIST): Add diff.x.
1855	Suggestion from Dan Jacobson in http://bugs.debian.org/613319
1856
18572011-03-18  Eric Blake  <eblake@redhat.com>
1858
1859	docs: info should mention -L
1860	* doc/diff.texi (diff Options): Document -L.
1861
1862	docs: diff --help should mention -L
1863	* src/diff.c (option_help_msgid): Document -L.
1864
18652011-02-15  Jim Meyering  <meyering@redhat.com>
1866
1867	doc: speak of the --test (-a) option, not "the -a or --test option"
1868	Convert using this command:
1869	perl -pi -e \
1870	  's/(\@option{-.}) or (\@option{--.*?}) option/$2 ($1) option/' \
1871	  doc/diff.texi
1872	Then convert some more with this:
1873	perl -pi -e \
1874	    's/the (\@option{-.}) or (\@option{--.*?})$/the $2 ($1)/' \
1875	  doc/diff.texi
1876	Then convert more manually.
1877
1878	Suggested by Dan Jacobson
1879
18802011-01-24  Jim Meyering  <meyering@redhat.com>
1881
1882	maint: remove all uses of vfork: use fork instead
1883	Our use of vfork now provokes warnings from gcc-4.6.0.
1884	Also, vfork is no longer even specified by POSIX.1-2008.
1885	* src/diff3.c (read_diff): Change each use of vfork to "fork".
1886	Remove #ifdef'd code.
1887	* src/util.c (begin_output, finish_output): Likewise.
1888	* src/sdiff.c (cleanup, main, edit): Likewise.
1889	(handler_index_of_SIGPIPE): Remove now-unused definition.
1890	* src/system.h: Don't include <vfork.h>.
1891	(vfork): Remove definition.
1892	* ms/config.site: Remove reference to vfork cache variable.
1893
1894	tests: avoid newer but less-portable tail option syntax
1895	* tests/function-line-vs-leading-space: Use sed -n '3,$p' rather than
1896	tail -n+3.  Older versions of tail do not accept that newer syntax.
1897	Reported by Sudhakara Peram.
1898
1899	tests: fix an erroneous test
1900	On most systems, like-named files were compared, by luck.
1901	However, on others, different-named files would be compared
1902	since their names were being treated as equal -- but they had
1903	different content, so the test would fail.
1904	* tests/colliding-file-names: Use different sets of file names
1905	in d1 and d2 so that they cannot accidentally match.
1906	Put the same line in each test file.  This is required
1907	when files named e.g., abc and ABC are compared.
1908	This test was failing on a NixOS 86_64-darwin system.
1909
1910	build: update gnulib submodule to latest
1911
1912	tests: fix typo that silently disabled all tests
1913	* tests/Makefile.am (TESTS): Fix typo: s/jESTS/TESTS/
1914
19152011-01-23  Jim Meyering  <meyering@redhat.com>
1916
1917	build: update gnulib submodule to latest
1918
1919	maint: avoid new syntax-check failure
1920	* src/diff.c (specify_value): Use !STREQ(...), not strcmp(...) != 0.
1921	* src/diff3.c (main): Likewise.
1922
19232011-01-03  Jim Meyering  <meyering@redhat.com>
1924
1925	maint: update copyright year ranges to include 2011
1926	Run "make update-copyright", so "make syntax-check" works in 2011.
1927
1928	build: update gnulib submodule to latest
1929
19302010-12-16  Paul Eggert  <eggert@cs.ucla.edu>
1931
1932	bootstrap: adjust to recent gnulib changes
1933	* bootstrap.conf (excluded_files): Do not exclude m4/size_max.m4
1934	and m4/xsize.m4 when using an external gettext, since they are
1935	now needed by other gnulib modules.
1936
19372010-12-16  Jim Meyering  <meyering@redhat.com>
1938
1939	doc: add contributor guidelines: HACKING
1940	* HACKING: New file, copied 99% from the one in grep's repository.
1941
19422010-10-09  Jim Meyering  <meyering@redhat.com>
1943
1944	maint: describe policy on copyright year number ranges
1945	* README: Mention coreutils' long-standing policy on use of M-N
1946	ranges in copyright year lists.  Requested by Richard Stallman.
1947
19482010-09-04  Jim Meyering  <meyering@redhat.com>
1949
1950	maint: adjust init.sh use to conform
1951	* tests/help-version: Use one line: "${srcdir=.}/init.sh"; ...
1952	* tests/basic: Likewise.
1953	* tests/binary: Likewise.
1954	* tests/colliding-file-names: Likewise.
1955	* tests/excess-slash: Likewise.
1956	* tests/function-line-vs-leading-space: Likewise.
1957	* tests/help-version: Likewise.
1958	* tests/label-vs-func: Likewise.
1959	* tests/no-newline-at-eof: Likewise.
1960	* tests/stdin: Likewise.
1961
1962	maint: avoid shadowing warning
1963	* src/dir.c (diff_dirs): Rename shadowed local cmp to "c".
1964
19652010-09-03  Jim Meyering  <meyering@redhat.com>
1966
1967	build: use gettext-h, not gettext
1968	* bootstrap.conf (gnulib_modules): Use gettext-h, not gettext.
1969	The latter is overkill for a package that uses
1970	AM_GNU_GETTEXT([external]...
1971
1972	build: update build/test tools from gnulib
1973	* bootstrap: Update from gnulib.
1974	* tests/init.sh: Likewise.
1975
1976	build: update gnulib submodule to latest
1977
19782010-08-14  Jim Meyering  <meyering@redhat.com>
1979
1980	diff -r: avoid printing excess slashes in concatenated file names
1981	* bootstrap.conf (gnulib_modules): Add filenamecat.
1982	* src/diff.c: Include "filenamecat.h".
1983	(compare_files): Use file_name_concat, rather than dir_file_pathname.
1984	* src/util.c (dir_file_pathname): Remove now-unused function.
1985	* src/diff.h: Remove its declaration.
1986	* tests/excess-slash: New script to test for this.
1987	* tests/Makefile.am (TESTS): Add it.
1988	Forwarded by Santiago Vila from <bugs.debian.org/586301a>,
1989	reported by Jari Aalto.
1990
19912010-08-12  Paul Eggert  <eggert@cs.ucla.edu>
1992
1993	diff: avoid spurious diffs when two distinct dir entries compare equal
1994	Problem reported by Christoph Anton Mitterer in:
1995	http://lists.gnu.org/archive/html/bug-diffutils/2010-08/msg00000.html
1996
1997	* NEWS: Mention this bug fix.
1998	* src/dir.c (compare_names_for_qsort): Fall back on file_name_cmp
1999	if two distinct entries in the same directory compare equal.
2000	(diff_dirs): Prefer a file_name_cmp match when available.
2001	* tests/Makefile.am (TESTS): New test colliding-file-names.
2002	* tests/colliding-file-names: New file.
2003
20042010-05-09  Jim Meyering  <meyering@redhat.com>
2005
2006	build: update gnulib submodule to latest
2007
2008	build: don't define macros that gnulib provides
2009	* bootstrap.conf (gnulib_modules): Add signal, stdint.
2010	* lib/cmpbuf.c (SA_RESTART, SA_INTERRUPT): Remove definitions.
2011	(SIZE_MAX, PTRDIFF_MAX): Likewise.
2012	Include <stdint.h>.
2013	* src/system.h (WEXITSTATUS, WIFEXITED): Remove definitions.
2014	(SA_RESTART, SA_INTERRUPT): Likewise.
2015
2016	build: rely on gnulib's sigprocmask module
2017	* src/sdiff.c: Remove #if-!HAVE_SIGPROCMASK-guarded code.
2018	* bootstrap.conf (gnulib_modules): Add sigprocmask.
2019
20202010-05-04  Jim Meyering  <meyering@redhat.com>
2021
2022	doc: README-release: don't mention To:, Cc:, etc announcement headers,
2023	now that those are supplied automatically via gnulib's maint.mk.
2024	* README-release: sync with coreutils.
2025
2026	maint: teach web-doc-generating code how to do its job
2027	* cfg.mk (gendocs_options): Define, so that gendocs.sh knows
2028	the name of our texinfo source file.
2029	* gnulib: Update to latest, for new gnu-web-doc-update and maint.mk.
2030
20312010-05-03  Jim Meyering  <meyering@redhat.com>
2032
2033	doc: update release procedure
2034	* README-release: Rearrange slightly: post the announcement to
2035	Savannah first, so you can include a link to that post in the email.
2036	Sync a few details from coreutils' README-release.
2037
2038	post-release administrivia
2039	* NEWS: Add header line for next release.
2040	* .prev-version: Record previous version.
2041	* cfg.mk (old_NEWS_hash): Auto-update.
2042
2043	version 3.0
2044	* NEWS: Record release date.
2045
2046	build: update gnulib submodule to latest
2047
20482010-04-30  Jim Meyering  <meyering@redhat.com>
2049
2050	build: use gnulib's sys_wait module
2051	* bootstrap.conf (gnulib_modules): Use gnulib's sys_wait module,
2052	now that we assume its presence.
2053
2054	build: update gnulib submodule to latest
2055	* bootstrap: Also update from gnulib.
2056	* tests/init.sh: Likewise
2057
2058	maint: remove now-useless #if HAVE_HEADER_H guards
2059	* src/system.h: Include <sys/wait.h> unconditionally,
2060	now that gnulib guarantees its presence.
2061	* lib/cmpbuf.c: Likewise for <unistd.h> and <inttypes.h>.
2062
20632010-04-16  Jim Meyering  <meyering@redhat.com>
2064
2065	tests: use original no-newline-at-eof test, but with -U1, not -U2
2066	* tests/no-newline-at-eof: Revert to the smaller test, but with
2067	-U1 rather than -U2, since that actually triggers the bug.
2068
20692010-04-16  Paul Eggert  <eggert@cs.ucla.edu>
2070
2071	Followon improvements for the fix for Debian bug 577832.
2072	* src/io.c (find_and_hash_each_line): Omit the inserted newline in
2073	a simpler way.
2074	* tests/no-newline-at-eof: Fix the test case so that it rejects
2075	the old, buggy behavior.
2076
20772010-04-16  Jim Meyering  <meyering@redhat.com>
2078
2079	build: update gnulib submodule to latest
2080
2081	tests: test for the no-newline-at-EOF bug
2082	* tests/no-newline-at-eof: New file.
2083	* tests/Makefile.am (TESTS): Add it.
2084
20852010-04-16  Jim Meyering  <meyering@redhat.com>
2086
2087	diff: fix a regression when at least one input lacks a newline-at-EOF,
2088	and the final hunk plus context-length aligns exactly with the end
2089	of the newline-lacking file.  Diff would fail to output the required
2090	"\ No newline at end of file" line, thus rendering the output invalid.
2091	This bug appears to have been introduced by 2006-05-07
2092	commit 58d0483b, "(find_identical_ends): Fix huge performance bug...",
2093	at least to the extent that reverting that change fixes the bug.
2094	Considering the stated effect of that change and lack of metrics,
2095	reverting it is not an option, so here we take a more direct approach.
2096
2097	Given these inputs,
2098
2099	    printf '\n1'>a; printf '\n0\n\n1'>b
2100
2101	and running diff like this:
2102
2103	    ./diff -U1 a b
2104
2105	for input file "b", the pointer, files[1].linbuf[4][-1], to
2106	the last byte on the final line was mistakenly pointing at the
2107	sentinel newline at EOF, rather than at the preceding byte.
2108
2109	  (gdb) p files[1].linbuf[4][-1]
2110	  $3 = 10 '\n'
2111
2112	Thus, this test in the final print_1_line call:
2113
2114	  if ((!line_flag || line_flag[0]) && limit[-1] != '\n')
2115	    fprintf (out, "\n\\ %s\n", _("No newline at end of file"));
2116
2117	would fail, because limit[-1] (which is files[1].linbuf[4][-1])
2118	was mistakenly '\n', rather than the desired '1'.
2119
2120	My first thought was simply to adjust the final linbuf[line] setting,
2121	at the end of io.c's find_and_hash_each_line function function:
2122
2123	       if (p == bufend)
2124	-       break;
2125	+       {
2126	+         if (current->missing_newline)
2127	+           --linbuf[line];
2128	+         break;
2129	+       }
2130
2131	But that would make diff misbehave with this input
2132	(same as above, but with a newline appended to "a"),
2133
2134	    printf '\n1\n'>a; printf '\n0\n\n1'>b
2135	    ./diff -U1 a b
2136
2137	due to the block (100 lines above) that is triggered in that case
2138	(but not in the both-files-missing-newline case):
2139
2140	      if (p == bufend
2141	          && current->missing_newline
2142	          && ROBUST_OUTPUT_STYLE (output_style))
2143	        {
2144	          /* This line is incomplete.  If this is significant,
2145	             put the line into buckets[-1].  */
2146	          if (ignore_white_space < IGNORE_SPACE_CHANGE)
2147	            bucket = &buckets[-1];
2148
2149	          /* Omit the inserted newline when computing linbuf later.  */
2150	          p--;
2151	          bufend = suffix_begin = p;
2152	        }
2153
2154	Note how "p" is decremented and "bufend" adjusted.
2155	When that happens, we certainly don't want to decrement
2156	"bufend" yet again.
2157
2158	Since there is no other way to determine at the end whether "bufend"
2159	was already decremented, add a new variable to serve as witness.
2160
2161	* NEWS (Bug fixes): Mention it.
2162	Reported by Timo Juhani Lindfors in http://bugs.debian.org/577832.
2163	Forwarded by Santiago Vila.
2164
21652010-04-16  Jim Meyering  <meyering@redhat.com>
2166
2167	tests: update init.sh from gnulib
2168	* tests/init.sh: Update from gnulib.
2169
21702010-04-08  Jim Meyering  <meyering@redhat.com>
2171
2172	build: include cfg.mk and dist-check.mk in the distribution tarball
2173	* Makefile.am (EXTRA_DIST): Add cfg.mk and dist-check.mk.
2174
2175	maint: update to latest gnulib
2176	* cfg.mk (sc_cross_check_PATH_usage_in_tests): Remove rule,
2177	now that it's in gnulib's maint.mk.
2178	* gnulib: Update to latest.
2179
21802010-04-07  Jim Meyering  <meyering@redhat.com>
2181
2182	tests: make new PATH-crosschecking syntax-check tighter
2183	* cfg.mk (sc_cross_check_PATH_usage_in_tests): Use grep's -x (match
2184	entire line) option with -F.
2185
2186	tests: pull latest help-version from gzip
2187	* tests/help-version: Update from gzip.
2188	* Makefile.am (TESTS_ENVIRONMENT): Export VERSION,
2189	as required for this new help-version script.
2190
2191	tests: add syntax-check rule to verify that tests use proper PATH
2192	* cfg.mk (sc_cross_check_PATH_usage_in_tests): New rule, that is
2193	useful only in conjunction with the help-version script.
2194
2195	tests: use path_prepend_ consistently; remove unnecessary VERBOSE check
2196	* tests/basic: Likewise.
2197	* tests/binary: Likewise.
2198	* tests/function-line-vs-leading-space: Likewise.
2199	* tests/label-vs-func: Likewise.
2200	* tests/stdin: Likewise.
2201
22022010-04-06  Eric Blake  <eblake@redhat.com>
2203
2204	maint: ignore generated files
2205	* .gitignore: Ignore recent gnulib additions.
2206
2207	maint: update to latest bootstrap
2208	* bootstrap: Copy from gnulib/build-aux.
2209
22102010-04-05  Jim Meyering  <meyering@redhat.com>
2211
2212	tests: get latest init.sh from gnulib
2213	* tests/init.sh: Update from gnulib.
2214
2215	build: update gnulib submodule to latest; adapt
2216	* cfg.mk (local-checks-to-skip): Add new sc_texinfo_acronym, to skip it.
2217
2218	diff -F/-p: don't depend on locale-specific white-space definition
2219	* src/context.c: Include "c-ctype.h".
2220	Use c_isspace, not isspace.
2221
22222010-03-18  Jim Meyering  <meyering@redhat.com>
2223
2224	tests: exercise new behavior of -F RE
2225	* tests/function-line-vs-leading-space: New file.
2226	* tests/Makefile.am (TESTS): Add it.
2227
22282010-03-18  Yannick Moy  <yannick.moy@adacore.com>
2229
2230	with -F or -p, emit better function lines: no leading white space
2231	* src/diff.c (print_context_function): For languages like Ada
2232	that allow local functions and procedures, the plain context
2233	function line may start with enough blank characters that the
2234	function name does not get completely printed in the 40
2235	characters limit.  This patch solves this problem by removing
2236	these useless initial blank characters.
2237	* NEWS (Changes in behavior): Mention this change.
2238
22392010-03-17  Jim Meyering  <meyering@redhat.com>
2240
2241	build: don't require a specific version of help2man
2242	* bootstrap.conf (buildreq): Bootstrap can't deal with it,
2243	perhaps because the command name contains a digit.
2244
2245	build: make bootstrap ensure that help2man is available
2246	* bootstrap.conf (buildreq): Add help2man.
2247
22482010-02-23  Jim Meyering  <meyering@redhat.com>
2249
2250	tests: test for the "Binary files A and B differ" diagnostic
2251	* tests/binary: New script.
2252	* tests/Makefile.am (TESTS): Add it.
2253
2254	revert 2002 change that removed "Binary " from "files A and B differ"
2255	With this change, "printf '\0'|diff - /dev/null" now prints
2256	"Binary files - and /dev/null differ" once again.
2257	This reverts 2002-06-28 commit a352f0980,
2258	"(briefly_report): Don't say "Binary files differ", ...".
2259	* src/analyze.c (briefly_report): Do include the "Binary " prefix
2260	in the diagnostic, when !brief.
2261	* NEWS (Changes in behavior): Mention the diagnostic change.
2262	Reported by Andreas Hoenen in http://bugs.debian.org/570064.
2263
22642010-02-14  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
2265
2266	avoid compilation failure on systems lacking both fork and vfork
2267	* src/sdiff.c [!HAVE_WORKING_FORK && !HAVE_WORKING_VFORK] (main):
2268	Pass the right number of arguments to shell_quote_copy.
2269	* src/util.c [!HAVE_WORKING_FORK && !HAVE_WORKING_VFORK] (begin_output):
2270	Likewise.
2271
22722010-02-11  Jim Meyering  <meyering@redhat.com>
2273
2274	post-release administrivia
2275	* NEWS: Add header line for next release.
2276	* .prev-version: Record previous version.
2277	* cfg.mk (old_NEWS_hash): Auto-update.
2278
2279	version 2.9
2280	* NEWS: Record release date.
2281
2282	doc: document the release procedure
2283	* README-release: New file.
2284
22852010-02-10  Jim Meyering  <meyering@redhat.com>
2286
2287	maint: change use of "|" to more maintainable "||" (no semantic change)
2288	* src/analyze.c (diff_2_files): Using the "||" operator happens to
2289	be equivalent to using "|" in this case.  It is also clearer and
2290	less prone to inadvertent bug introduction, in case the variable,
2291	"changes" were ever to take on a value not in {0,1}.
2292	Patch by Tim Waugh, via Mike Frysinger.
2293
2294	portability: avoid "diff - ..." failure at least on *BSD and Solaris
2295	The new "stdin" test was failing on many types of systems.
2296	* src/diff.c (compare_files): Guard use of xfreopen (NULL, "rb", ...
2297	also with O_BINARY, so as to avoid this unnecessary call on
2298	systems where it's not needed (on some it fails with "Bad address".
2299
23002010-02-09  Jim Meyering  <meyering@redhat.com>
2301
2302	tests: honor VERBOSE
2303	* tests/basic: Enable "set -x" if $VERBOSE.
2304	* tests/help-version: Likewise.
2305	* tests/label-vs-func: Likewise.
2306	* tests/stdin: Likewise.
2307
23082010-02-04  Jim Meyering  <meyering@redhat.com>
2309
2310	build: update gnulib submodule to latest
2311
2312	sync with gnulib
2313	* gl/lib/regcomp.c.diff: Adjust to apply to the latest in gnulib.
2314	* gnulib: Update submodule to latest.
2315
23162010-02-04  Jim Meyering  <meyering@redhat.com>
2317
2318	build: do not override gnulib-provided AM_CFLAGS options
2319	Avoid a warning from automake:
2320	lib/Makefile.am:23: AM_CFLAGS multiply defined in condition TRUE ...
2321	lib/gnulib.mk:30: ... `AM_CFLAGS' previously defined here
2322	lib/Makefile.am:18:   `lib/gnulib.mk' included from here
2323
2324	* lib/Makefile.am (AM_CFLAGS): Append $(WARN_CFLAGS) and
2325	$(WERROR_CFLAGS), i.e., use "+=", not "=".
2326	This was introduced via 2009-12-17 commit e58efa5b
2327	"build: enable warnings and -Werror.",
2328	but fortunately is not a bug, because the definition
2329	it would have overridden was always empty.
2330
23312010-01-17  Jim Meyering  <meyering@redhat.com>
2332
2333	maint: add to .gitignore
2334	* .gitignore: Ignore more.
2335
23362010-01-15  Jim Meyering  <meyering@redhat.com>
2337
2338	doc: add to TODO
2339	* TODO: Add an item, suggested by Dan Jacobson.
2340
23412010-01-13  Jim Meyering  <meyering@redhat.com>
2342
2343	tests: ensure that an argument of "-" is treated as standard input
2344	* tests/stdin: New test.
2345	* tests/Makefile.am (TESTS): Add it.
2346
23472010-01-10  Jim Meyering  <meyering@redhat.com>
2348
2349	tests: now "make distcheck" runs more tests, incl. syntax-check
2350	* cfg.mk: Include dist-check.mk, from coreutils.
2351	* Makefile.am (distcheck-hook): Define rule, to hook to...
2352	* dist-check.mk: New file.
2353
23542010-01-09  Jim Meyering  <meyering@redhat.com>
2355
2356	build: update gnulib to latest, for fixed syntax-check rule
2357
2358	maint: record updated NEWS hash
2359	* cfg.mk (old_NEWS_hash): Update to account for GFDL change.
2360
2361	build: update gnulib submodule to latest
2362
2363	tests: add a test of basic functionality
2364	* tests/basic: Start adding tests.
2365	* tests/Makefile.am (TESTS): Add it.
2366
2367	maint: udpate GFDL license to 1.3
2368	* doc/diff.texi: Update to use GFDL version 1.3.
2369
23702010-01-04  Eric Blake  <ebb9@byu.net>
2371
2372	build: allow compilation on cygwin
2373	* src/Makefile.am (cmp_LDADD): Move LIBICONV...
2374	(LDADD): ...into global flags, since all programs need it.
2375
23762010-01-03  Jim Meyering  <meyering@redhat.com>
2377
2378	maint: record update-copyright options for this package
2379	* cfg.mk: Next time, just run "make update-copyright".
2380
2381	tests: prepend ../src, not "." to PATH
2382	* tests/help-version: Correct PATH.
2383
23842010-01-01  Jim Meyering  <meyering@redhat.com>
2385
2386	maint: update all FSF copyright year lists to include 2010
2387	Use this command:
2388	git ls-files |grep -vE '^(\..*|COPYING|gnulib)$' |xargs \
2389	env UPDATE_COPYRIGHT_USE_INTERVALS=1 build-aux/update-copyright
2390
23912009-12-31  Jim Meyering  <meyering@redhat.com>
2392
2393	maint: newer gnulib; don't hard-code my GPG key ID
2394	* cfg.mk (gpg_key_ID): Remove definition, now that maint.mk automates it.
2395	* gnulib: Update to latest.
2396
2397	tests: exercise diff -p's function-name matching
2398	* tests/label-vs-func: New file.
2399	* tests/Makefile.am (TESTS): Add label-vs-func.
2400	Reported by Simon Arlott <simon@fire.lp0.eu>
2401	http://article.gmane.org/gmane.linux.kernel.janitors/14260
2402
2403	tests: use gnulib's init.sh
2404	* tests/Makefile.am (EXTRA_DIST): Add init.sh.
2405	Remove test-lib.sh.
2406	* tests/init.sh: New file.
2407	* tests/test-lib.sh: Remove file.
2408	* tests/help-version: Use init.sh, not test-lib.sh.
2409
24102009-11-28  Jim Meyering  <meyering@redhat.com>
2411
2412	maint: don't let trailing spaces in diffs perturb make syntax-check
2413	* .x-sc_space_tab: New file.
2414
24152009-11-22  Jim Meyering  <meyering@redhat.com>
2416
2417	build: enable warnings and -Werror.
2418	* src/Makefile.am (AM_CFLAGS): Enable warnings and -Werror.
2419	Set to this: $(WARN_CFLAGS) $(WERROR_CFLAGS)
2420	* lib/Makefile.am (AM_CFLAGS): Similarly, but use this:
2421	$(GNULIB_WARN_CFLAGS) $(WERROR_CFLAGS)
2422	* configure.ac (GNULIB_WARN_CFLAGS): Don't turn off -Wuninitialized.
2423
2424	build: avoid a warning from gnulib's sh-quote.c
2425	* gl/lib/sh-quote.c.diff: New file, to avoid a warning.
2426
2427	maint: avoid warnings via patched versions of gnulib's regex functions
2428	* gl/lib/regcomp.c.diff: New file.
2429	* gl/lib/regex_internal.c.diff: Likewise.
2430	* gl/lib/regex_internal.h.diff: Likewise.
2431	* gl/lib/regexec.c.diff: Likewise.
2432
2433	build: update gnulib submodule to latest
2434
24352009-11-20  Eric Blake  <ebb9@byu.net>
2436
2437	build: ignore more files
2438	* .gitignore: Add config.cache, *.exe.
2439
24402009-11-20  Eric Blake  <ebb9@byu.net>
2441
2442	build: fix test run on cygwin
2443	This, plus a gnulib update for xalloc-die-tests, are necessary
2444	for make check to pass on cygwin.
2445
2446	* tests/Makefile.am (built_programs): Ignore $(EXEEXT).
2447	* src/Makefile.am (paths.h): Add missing dependency.
2448
24492009-11-20  Jim Meyering  <meyering@redhat.com>
2450
2451	maint: remove vestiges of nanosleep
2452	* src/Makefile.am (LDADD): Remove $(LIB_NANOSLEEP), now
2453	that we no longer use the nanosleep module.
2454	Spotted by Eric Blake.
2455
2456	maint: don't pull in gnulib's nanosleep unnecessarily
2457	* bootstrap.conf (gnulib_modules): Remove nanosleep.  Not needed.
2458	Spotted by Eric Blake.
2459
2460	maint: cfg.mk: remove factored-out ftp host/dir definitions
2461	* cfg.mk (gnu_ftp_host-alpha, gnu_ftp_host-beta gnu_ftp_host-stable):
2462	(gnu_rel_host, url_dir_list): Remove definitions.  The defaults,
2463	now provided by maint.mk, are the same.
2464	* gnulib: Update for latest, including those maint.mk additions.
2465
2466	build: link with now-required libraries
2467	* src/Makefile.am (LDADD): Add gnulib-required libraries.
2468	(cmp_LDADD): Add $(LIBICONV), for cmp's use of proper_name_utf8.
2469
2470	maint: lib/xfreopen.c contains translatable strings
2471	* po/POTFILES.in: Add lib/xfreopen.c.
2472
2473	maint: remove hard-coded macro definitions provided by intprops.h
2474	* lib/cmpbuf.c: Include "intprops.h" rather than open-coding macros
2475	like TYPE_SIGNED and TYPE_MINIMUM.
2476
2477	maint: add gnulib's announce-gen module
2478	* bootstrap.conf (gnulib_modules): Add announce-gen
2479
2480	build: suppress warnings about bindtextdomain and textdomain
2481	* src/system.h (bindtextdomain, textdomain) [!ENABLE_NLS]: Define away.
2482
2483	build: use more gnulib modules
2484	* bootstrap.conf (gnulib_modules): Add mktime, nanosleep, strptime
2485	and timegm.
2486
2487	use xfreopen rather than freopen
2488	* src/cmp.c: Include "xfreopen.h".
2489	Use xfreopen in place of freopen.
2490	* src/diff.c Likewise, and...
2491	(main): Set exit_failure to EXIT_TROUBLE, rather than to 2.
2492	* src/diff3.c: Likewise.
2493	* bootstrap.conf (gnulib_modules): Add xfreopen.
2494
2495	build: enable many warnings
2496	* configure.ac: Add support for --enable-gcc-warnings.
2497	* bootstrap.conf (gnulib_modules): Add manywarnings.
2498	* Makefile.am (AM_CFLAGS): Add $(WARN_CFLAGS) $(WERROR_CFLAGS)
2499
2500	build: update gnulib submodule to latest
2501
2502	maint: add an assertion to suppress clang-detected warning
2503	The clang static analyzer reported that a NULL parent could be
2504	dereferenced.  However, that cannot happen, because for all callers,
2505	the parameter, parent, is always non-NULL at that point.
2506	* src/diff.c: Include <assert.h>.
2507	Assert that parent is not NULL.
2508
2509	maint: remove dead assignment from diff3.c
2510	* src/diff3.c (make_3way_diff): Remove dead assignment.
2511
25122009-11-17  Jim Meyering  <meyering@redhat.com>
2513
2514	build: update gnulib submodule to latest
2515
2516	maint: hide build commands behind $(AM_V_GEN)
2517	* src/Makefile.am (paths.h): Use $(AM_V_GEN), and split a long line.
2518	* man/Makefile.am ($(dist_man1_MANS)): Use $(AM_V_GEN) here, too.
2519
25202009-11-16  Jim Meyering  <meyering@redhat.com>
2521
2522	build: let automake generate better man-installation rules
2523	* man/Makefile.am (dist_man1_MANS): Rename from dist_man_MANS,
2524	to enable better automake-generated installation rules.
2525
2526	admin: ignore all of gnulib-tests
2527	* .gitignore: Add gnulib-tests
2528
25292009-11-16  Eric Blake  <ebb9@byu.net>
2530
2531	build: avoid link failure when libsigsegv is used
2532	* src/Makefile.am (LDADD): Link against LIBSIGSEGV.
2533
25342009-11-16  Jim Meyering  <meyering@redhat.com>
2535
2536	maint: define/use PROGRAM_NAME and AUTHORS; use propername module
2537	* bootstrap.conf (gnulib_modules): Add propername.
2538	* src/cmp.c (PROGRAM_NAME, AUTHORS): Define.
2539	(main): Use them in use of version_etc.
2540	* src/diff.c (PROGRAM_NAME, AUTHORS, main): Likewise.
2541	* src/diff3.c (PROGRAM_NAME, AUTHORS, main): Likewise.
2542	* src/sdiff.c (PROGRAM_NAME, AUTHORS, main): Likewise.
2543	* src/system.h: Include "propername.h".
2544
2545	maint: no longer define *_FILENO constants
2546	* src/system.h (STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO):
2547	Remove definitions.  Now guaranteed by gnulib.
2548
2549	maint: bug-diffutils@gnu.org is the new bug-reporting address
2550	* configure.ac (AC_INIT): Use bug-diffutils@..., not bug-gnu-utils
2551	as the bug-reporting address.
2552	* NEWS (Administrivia): Mention this.
2553	* src/cmp.c (usage): Remove hard-coded address.
2554	Instead, use gnulib's emit_bug_reporting_address function.
2555	* src/diff.c (usage, option_help_msgid): Likewise.
2556	* src/diff3.c (usage): Likewise.
2557	* src/sdiff.c (usage): Likewise.
2558
2559	sdiff, diff3: exec diff, not $(bindir)/diff
2560	* src/Makefile.am (paths.h): Emit a definition of DEFAULT_DIFF_PROGRAM
2561	that is simply "diff" (or whatever $(transform) would convert that to,
2562	e.g., "gdiff").  This makes it so that tests can work without first
2563	installing diff, and so that the binaries do not hard-code $(prefix).
2564	* NEWS (Changes in behavior): Mention this.
2565
25662009-11-14  Jim Meyering  <meyering@redhat.com>
2567
2568	tests: add the first script; hook up gnulib-tests
2569	* configure.ac (AC_CONFIG_FILES): Add tests/Makefile and
2570	gnulib-tests/Makefile.
2571	* tests/help-version: New file, from coreutils.
2572	* tests/test-lib.sh: Likewise.
2573	* tests/Makefile.am: New file, from gzip.
2574	* Makefile.am (SUBDIRS): Add tests and gnulib-tests.
2575	* tests/t-local.sh: New, empty(for now) file.
2576
25772009-11-13  Jim Meyering  <meyering@redhat.com>
2578
2579	build: require gettext-0.17
2580	* configure.ac: Require gettext-0.17; it was released two years ago.
2581
2582	build: correct gettext configure-time support
2583	* configure.ac: Use AM_GNU_GETTEXT([external], [need-ngettext]),
2584	rather than AM_GNU_GETTEXT([external], [need-formatstring-macros]).
2585	Reported by Martin Jacobs in
2586	http://thread.gmane.org/gmane.comp.parsers.bison.bugs/3181
2587
25882009-11-12  Jim Meyering  <meyering@redhat.com>
2589
2590	build: generalize autoheader check
2591	* bootstrap: Look for AC_CONFIG_HEADER as well as AC_CONFIG_HEADERS.
2592
25932009-11-11  Jim Meyering  <meyering@redhat.com>
2594
2595	maint: use a git submodule for gnulib
2596	* .gitmodules: New file, to track gnulib.
2597	* gnulib: New file, created by running this:
2598	git submodule add git://git.sv.gnu.org/gnulib.git gnulib
2599
2600	maint: tell git what it can ignore
2601	* .gitignore: Ignore generated files.
2602