2021-08-01  Jim Meyering  <meyering@fb.com>

	version 3.8
	* NEWS: Record release date.

	build: update gnulib to latest

2021-07-31  Jim Meyering  <meyering@fb.com>

	cmp: avoid reading uninitialized memory
	[This *is* useful, so reapply. ]
	When comparing buffers a word at a time, cmp could read up to
	sizeof (word) - 1 uninitialized bytes.
	* src/cmp.c (cmp): Set not just a single guaranteed-differing
	sentinel byte just beyond any final read byte, but also ensure
	that any following bytes are defined, if those may be read via
	block_compare's word-at-a-time comparison.  Reported by Bruno Haible
	in https://lists.gnu.org/r/diffutils-devel/2021-07/msg00003.html

2021-07-28  Bruno Haible  <bruno@clisp.org>

	cmp: avoid reading uninitialized memory
	One or both of the sentinel bytes were copies of uninitialized values.
	* src/cmp.c (cmp): Use arbitrary initialized values for the
	sentinel bytes.

2021-07-28  Jim Meyering  <meyering@fb.com>

	cmp: revert preceding change
	It did not solve the problem. The next patch does.

2021-07-27  Jim Meyering  <meyering@fb.com>

	cmp: avoid reading uninitialized memory
	When comparing buffers a word at a time, cmp could read up to
	sizeof (word) - 1 uninitialized bytes.
	* src/cmp.c (cmp): Set not just a single guaranteed-differing
	sentinel byte just beyond any final read byte, but also ensure
	that any following bytes are defined, if those may be read via
	block_compare's word-at-a-time comparison.  Reported by Bruno Haible
	in https://lists.gnu.org/r/diffutils-devel/2021-07/msg00003.html

2021-07-19  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib submodule to latest

2021-05-21  Paul Eggert  <eggert@cs.ucla.edu>

	diff: better --color help
	* src/diff.c (option_help_msgid): Reword --color help without
	using the confusing word “default”.  Problem reported
	by Peter Oliver (Bug#48532).

2021-05-20  Paul Eggert  <eggert@cs.ucla.edu>

	doc: fix URL in HACKING

2021-03-24  Paul Eggert  <eggert@cs.ucla.edu>

	diff: pacify compiler re style
	* src/diff.c (usage): Prefer &"string"[N] to "string" + N.
	Some compilers complain about the latter, as they worry C++
	refugees will think it’s string concatnation.

	diff3: avoid signed int overflow
	* src/diff3.c (main): Avoid signed integer overflow in the very
	unlikely case of more than INT_MAX incompatible options.  Instead,
	use one bit to record the presence of each type of incompatible
	option, and report an error if more than one bit is set.

	maint: don’t bother with -Wno-return-local-addr
	* configure.ac (WERROR_CFLAGS): Don’t bother with
	-Wno-return-local-addr as it doesn’t seem to work.
	Anyway, it’s no longer needed on Ubuntu 20.10.

	maint: disable -Wstack-protector
	* configure.ac (WERROR_CFLAGS): Disable -Wstack-protector, as it
	has a false alarm with lib/vasnprintf.c on Ubuntu 20.10 and it’s
	not worth working around.  Coreutils already disables it.

	diff: plug memory leak in ifdef.c
	Problem reported by Than (Bug#47362).
	Fix the bug by using xmalloca instead of vararrays.
	* bootstrap.conf (gnulib_modules): Add xmalloca; remove vararrays.
	* configure.ac: Remove AC_C_VARARRAYS.
	* src/ifdef.c: Include xmalloca.h instead of xalloc.h.
	(do_printf_spec): Use xmalloca instead of an xmalloc
	that lacks a corresponding ‘free’ if HAVE_C_VARARRAYS
	due to a typo in 2017-05-18T05:51:31Z!meyering@fb.com.

	build: update gnulib submodule to latest

2021-01-02  Paul Eggert  <eggert@cs.ucla.edu>

	maint: work around GCC -Wreturn-local-addr bug
	* configure.ac: Do not use -Wreturn-local-addr in Gnulib,
	to suppress a false alarm in vasnprintf.c.

2021-01-01  Jim Meyering  <meyering@fb.com>

	maint: update all copyright year number ranges
	Run "make update-copyright" and then...
	* gnulib: Update to latest with copyright year adjusted.
	* tests/init.sh: Sync with gnulib to pick up copyright year.
	* bootstrap: Likewise.

2020-12-05  Jim Meyering  <meyering@fb.com>

	build: require autoconf-2.64
	* configure.ac: Require 2.64, up from 2.63, to align with gnulib.

2020-03-15  Jim Meyering  <meyering@fb.com>

	build: update gnulib to latest

	doc: adjust formatting to make apropos (man -k) work better
	* man/Makefile.am $(dist_man1_MANS): Adjust sed substitution
	to also remove the space after "GNU". This avoids the single
	leading space on each man page title line.  I'm guessing that
	interfered with indexing/searching, causing "man -k diff3" to
	print this: diff3 (1) - (unknown subject).
	Reported by Dan Jacobon in http://bugs.gnu.org/39769.

2020-01-19  Jim Meyering  <meyering@fb.com>

	doc: correct an ancient "At present"
	* doc/diffutils.texi (Unified Format): Correct the now
	seriously outdated "At present" (referring to early 1990s)
	statement to be more of a historical note.
	Reported by Roland Illig in http://bugs.gnu.org/39184.

2020-01-05  Jim Meyering  <meyering@fb.com>

	doc: use program name, not "GNU", in the nroff/man header
	* man/Makefile.am (dist_man1_MANS): Elide "GNU " prefix
	from the generated prog+one-line-summary, so that help2man
	uses the program name rather than "GNU" as the nroff "name".
	Reported by Dan Jacobson in http://bugs.gnu.org/38574.

2020-01-01  Jim Meyering  <meyering@fb.com>

	maint: update all copyright year number ranges
	Run "make update-copyright" and then...
	* gnulib: Update to latest with copyright year adjusted.
	* tests/init.sh: Sync with gnulib to pick up copyright year.
	* bootstrap: Likewise.

2019-12-29  Jim Meyering  <meyering@fb.com>

	maint: avoid gnulib-tool deprecation warnings, and build failure
	* bootstrap.conf (gnulib_modules): Use getopt-gnu, rather than
	obsolete "getopt" module. Use nstrftime in place of strftime.
	(avoided_gnulib_modules): Do not avoid the "lock" module. That
	would lead to a build failure due to "glthread/lock.h not found".

	maint: avoid syntax-check failure
	* po/POTFILES.in: Add argmatch.h; remove xstrtol-error.c

	maint: disable two and reenable many warning options
	* configure.ac (GNULIB_WARN_CFLAGS): Disable -Wduplicated-branches
	and -Wreturn-local-addr, due to a couple of false-positive warnings.
	(WARN_CFLAGS): Reenable many warnings that now (with recent gcc)
	provoke no false positive.

	maint: avoid gnulib's lock-tests module
	* bootstrap.conf (avoided_gnulib_modules): Also --avoid=lock-tests
	to avoid gnulib-related build failure.

2019-12-23  Jim Meyering  <meyering@fb.com>

	build: update gnulib to latest
	* gnulib: Update submodule to latest.
	* bootstrap: Copy from gnulib.
	* tests/init.sh: Likewise.

2019-12-20  Jim Meyering  <meyering@fb.com>

	maint: tweak bootstrap.conf
	* bootstrap.conf (buildreq): Require at least autoconf 2.62,
	up from 2.61, just as grep and coreutils do.
	(bootstrap_post_import_hook): "Copy pkg-config's pkg.m4 ...",
	copied from grep's bootstrap.conf.
	(avoided_gnulib_modules): Pull this definition to the top.
	Formatting.

2019-10-01  Dave Odell  <dmo2118@gmail.com>  (tiny change)

	cmp: add test case for Bug#37558
	* tests/cmp: New test case (Bug#37558).

2019-10-01  Paul Eggert  <eggert@cs.ucla.edu>

	cmp: fix -l width bug
	Problem reported by Dave Odell (Bug#37558).
	* src/cmp.c (cmp): Treat negative ‘bytes’ as infinite, fixing a
	bug introduced in the 2019-08-27 patch that fixed Bug#35256.

2019-08-27  Paul Eggert  <eggert@cs.ucla.edu>

	diff: don’t mistreat -N in arg as a large number
	Problem reported by alec (Bug#35256).
	* NEWS: Mention the fix.
	* bootstrap.conf (gnulib_modules): Use strtoimax and xstrtoimax,
	not strtoumax and strtoumax.
	* src/cmp.c (bytes): Now signed, with -1 representing no limit.
	All uses changed.
	* src/cmp.c (specify_ignore_initial, main):
	* src/diff.c (main):
	* src/ifdef.c (format_group):
	* src/sdiff.c (interact):
	Use strtoimax, not strtoumax.

	build: update gnulib submodule to latest

2019-07-19  Paul Eggert  <eggert@cs.ucla.edu>

	maint: ignore ‘configure’ temporaries
	* .gitignore: Ignore confdefs*, conftest*.

	maint: avoid Gnulib setlocale module
	Problem reported for MS-Windows by Richard Gering (Bug#34376).
	Diffutils doesn’t need any of the Gnulib fixes for setlocale.
	* bootstrap.conf (gnulib_tool_option_extras):
	Avoid the setlocale module.

2019-05-24  KO Myung-Hun  <komh@chollian.net>

	tests: init.cfg: use $PATH_SEPARATOR not ':'
	On OS/2, a path separator is semi-colon ';' not colon ':'.
	* tests/init.cfg: Replace ':' with $PATH_SEPARATOR.

2019-01-20  Jim Meyering  <meyering@fb.com>

	build: ensure no VLA is used
	Cause developer builds to fail for any use of a VLA.
	VLAs (variable length arrays) limit portability.
	* configure.ac (nw): Remove -Wvla from the list of disabled warnings,
	thus enabling the warning when configured with --enable-gcc-warnings.
	(GNULIB_NO_VLA) Define, disabling use of VLAs in gnulib.  This commit
	is functionally equivalent to coreutils' v8.30-44-gd26dece5d.

	build: update gnulib to latest
	* gnulib: Update to latest.
	* po/POTFILES.in: Add lib/xstdopen.c.

2019-01-06  Paul Eggert  <eggert@cs.ucla.edu>

	diff: use xstdopen, not stdopen
	* bootstrap.conf (gnulib_modules):
	* src/cmp.c, src/diff.c, src/diff3.c, src/sdiff.c (main):
	Use xstdopen, not stdopen.

	build: update gnulib submodule to latest

2019-01-05  Jim Meyering  <meyering@fb.com>

	maint: convert all TABs to equivalent spaces in indentation
	Using this file,

	cat > leading-blank.exempt <<\EOF
	(\.gitmodules|help2man|pre-commit)$
	(?:^|\/)ChangeLog[^/]*$
	(?:^|\/)(?:GNU)?[Mm]akefile[^/]*$
	\.(?:am|mk)$
	EOF

	run the following command to convert all non-conforming leading white
	space to be all spaces:

	git ls-files \
	  | pcregrep -vf leading-blank.exempt \
	  | xargs pcregrep -l '^ *\t' \
	  | xargs perl -MText::Tabs -ni -le \
	    '$m=/^( *\t[ \t]*)(.*)/; print $m ? expand($1) . $2 : $_'

	Since that changed old NEWS, I also ran "make update-NEWS-hash"
	to update the old_NEWS_hash value in cfg.mk.

2019-01-05  Paul Eggert  <eggert@cs.ucla.edu>

	diff: fix cmp, diff3, sdiff with stdin closed
	* NEWS: Mention this.
	* src/cmp.c, src/diff3.c, src/sdiff.c: Include stdopen.h.
	(main): Call stdopen early.
	* src/cmp.c (main): Simplify now that we need not worry about
	stdin being closed.
	* src/diff.c (main): Translate stdopen diagnostic.

	diff: remove unportable ‘diff -N - f <&-’ feature
	* NEWS: Mention this.
	* bootstrap.conf (gnulib_modules): Add stdopen.
	* doc/diffutils.texi (Comparing Directories):
	Do not document behavior if stdin is closed.
	* src/diff.c: Include stdopen.h.
	(main): Call stdopen early.
	(compare_files) [__hpux]: Remove recently-introduced
	special case for HP-UX exec with stdin closed.
	* tests/new-file: Remove tests of the removed feature.

	build: update gnulib submodule to latest

2019-01-03  Bruno Haible  <bruno@clisp.org>

	diff: recognize file descriptors closed by the parent process on HP-UX
	* src/diff.c (compare_files): Use fcntl to distinguish a file
	descriptor closed by the parent process from a file descriptor
	that references /dev/null.

2019-01-01  Jim Meyering  <meyering@fb.com>

	maint: update all copyright dates via "make update-copyright"
	* gnulib: Also update submodule for its copyright updates.

2018-12-31  Jim Meyering  <meyering@fb.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

	version 3.7
	* NEWS: Record release date.

	maint: distribute new file, init.cfg
	Otherwise, strip-trailing-cr would fail on a system without valgrind.
	* tests/Makefile.am (EXTRA_DIST): Include init.cfg.

2018-12-30  Dennis Lambe Jr  <malsyned@malsyned.net>

	diff: adjust ANSI escapes for compatibility with less -R
	GNU less can display ANSI-colored text with the -R flag, but this
	support has some limitations. One of them is that if an escape
	sequence starts on one line and ends on a different line, only the
	first line will be colored in less.

	As a result, when diff creates colored output with multi-line deletes
	or adds, less will only color the first line.

	This change resets ANSI color to the default at the end of
	each line and restarts it at the beginning of the next. It patches
	normal and context mode. Side-by-side already worked in my testing.
	* src/context.c (print_context_label, pr_context_hunk): As above.
	(pr_unidiff_hunk, print_context_header): Likewise.
	* src/normal.c (print_normal_hunk): Likewise.
	* tests/colors: Adjust existing tests to accommodate this.
	* NEWS (Improvements): Mention it.
	Proposed in http://bugs.gnu.org/31105

2018-12-29  Jim Meyering  <meyering@fb.com>

	tests: fix colors test on systems lacking fractional timestamp support
	* tests/colors: The .NNNNNNNNN suffix is not printed on some systems.
	Adapt the test to accommodate those systems.

	tests: strip-trailing-cr: avoid failure with ASAN
	Valgrind cannot operate on an ASAN-compiled binary.
	* tests/strip-trailing-cr (valgrind): Define as no-op when diff
	was compiled with sanitizer support.

2018-12-28  Jim Meyering  <meyering@fb.com>

	tests: add test for --strip-trailing-cr UMR bug
	* tests/strip-trailing-cr: New file. Test for today's bug fix.
	* tests/Makefile.am (TESTS): Add it.

	tests: import test infrastructure from coreutils
	* tests/init.cfg: New file, for require_valgrind_ definition (from coreutils).
	* tests/Makefile.am (PATH): Don't set stderr_fileno_ here, since it is
	now initialized in init.cfg.

2018-12-28  Paul Eggert  <eggert@cs.ucla.edu>
	    Jim Meyering  <jim@meyering.net>

	diff: fix UMR with --strip-trailing-cr
	Problem reported by Hongxu Chen (Bug#31935).
	* src/io.c (prepare_text): Strip trailing CR before
	doing the rest of the analysis.
	* NEWS: Mention the fix.

2018-12-28  Bruno Haible  <bruno@clisp.org>

	tests: colors: avoid test failure on AIX 7
	* tests/colors: Splice the argument into the printf format string.

2018-12-27  Bruno Haible  <address@hidden>

	maint: don't use an undocumented Autoconf macro
	* configure.ac: Use AC_CONFIG_HEADERS instead of AC_CONFIG_HEADER.

2018-12-23  Jim Meyering  <meyering@fb.com>

	build: avoid build failure with --enable-gcc-warnings and latest gcc
	* src/diff.c (usage): Assert that each line length is no longer than
	the minimum required size of 4095.  This lets newer gcc (currently
	9.0.0 20181219) infer that it need not issue this warning:
	diff.c:1012:19: error: '%.*s' directive output between 0 and 2147483647
	bytes may exceed minimum required size of 4095
	[-Werror=format-overflow=]
	1012 |        printf ("  %.*s", msglen, msg);

	build: update gnulib to latest; and bootstrap and init.sh

	build: make the autoconf-2.63 requirement explicit
	* configure.ac: AC_PREREQ: Require 2.63, not 2.59. And quote properly.
	Autoconf-2.63 has been required for some time via gnulib.
	This merely makes it explicit.

2018-12-20  Jim Meyering  <meyering@fb.com>

	maint: use https: in gnu mirror URL prefix, not http
	This appears in the generated release announcement message.
	* cfg.mk (url_dir_list): Use https: prefix, not http:.

2018-07-24  Paul Eggert  <eggert@cs.ucla.edu>

	cmp: fix bug in -b diagnostic
	Problem reported by mancha (Bug#32249).
	* src/cmp.c (count_newlines): Restore old value of sentinel.
	* tests/cmp: Test for the bug.

	build: update gnulib submodule to latest

2018-05-14  Paul Eggert  <eggert@cs.ucla.edu>

	doc: prepend "GNU" to NAME in man pages
	Requested by RMS.
	* src/cmp.c, src/diff.c, src/diff3.c, src/sdiff.c:
	Prepend "GNU" to first comment, so that the man page says "GNU".

2018-04-20  Paul Eggert  <eggert@cs.ucla.edu>

	sdiff: port to mingw
	Problem reported by Ross Burton (Bug#31218).
	* src/sdiff.c (checksigs): Use ‘raise’, not ‘kill’.

2018-03-23  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib submodule to latest

2018-01-14  Jim Meyering  <meyering@fb.com>

	tests: fix quoting error in previous change
	* tests/colors: Double-quote $PATH.

2018-01-06  Jim Meyering  <meyering@fb.com>

	tests: port tests/colors to some env-munging shell
	* tests/colors: Also set PATH="$PATH" in env invocation.

	maint: update gnulib and copyright dates for 2018
	* gnulib: Update to latest.
	* all files: Run "make update-copyright".
	* bootstrap: Update from gnulib.

	maint: suppress gcc's new -Wcast-function-type in gnulib
	* configure.ac (WERROR_CFLAGS): Suppress gcc's new -Wcast-function-type
	warning in gnulib, because it would trigger on this:
	sig-handler.h:47:12: error: cast between incompatible function types\
	  from 'void (* const)(int,  siginfo_t *, void *)' \
	  {aka 'void (* const)(int,  struct <anonymous> *, void *)'} \
	  to 'void (*)(int)' [-Werror=cast-function-type]
	return (sa_handler_t) a->sa_sigaction;

2017-10-22  Jim Meyering  <meyering@fb.com>

	tests: add expected-failing test for minor subopimality
	In some unusual cases, diff -u prints suboptimal output.
	* tests/large-subopt: New test script.
	* tests/Makefile.am (TESTS): Add it.
	(XFAIL_TESTS): Add it here, too, to record that this test is
	currently expected to fail.
	* tests/large-subopt.in1, tests/large-subopt.in2: Inputs derived from
	those in http://bugs.gnu.org/28796

2017-09-23  Jim Meyering  <meyering@fb.com>

	gnulib: update to latest

2017-05-21  Jim Meyering  <meyering@fb.com>

	maint: make the announcement template Cc the devel- list
	* cfg.mk (announcement_Cc_): Define.

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

	version 3.6
	* NEWS: Record release date.

2017-05-19  Jim Meyering  <meyering@fb.com>

	gnulib: update to latest

2017-05-18  Jim Meyering  <meyering@fb.com>

	maint: update to work with GCC7's -Werror=implicit-fallthrough=
	* src/system.h (FALLTHROUGH): Define.
	Use new FALLTHROUGH macro in place of comments
	* src/cmp.c: FIXME
	* src/diff3.c: FIXME
	* src/ifdef.c: FIXME
	* src/sdiff.c: FIXME
	* src/side.c: FIXME
	* src/util.c: FIXME

	gnulib: update to latest

2017-05-09  Jim Meyering  <meyering@fb.com>

	tests: new-file: closed-stdin: also ensure stdout was empty
	* tests/new-file: Also require that "out" be empty.

2017-05-06  Jim Meyering  <meyering@fb.com>

	maint: stop using @acronym{...} in texinfo sources
	* doc/diffutils.texi: Remove all uses of @acronym{...},
	per recommendation by Karl Berry.
	* cfg.mk (local-checks-to-skip): Remove exemption, enabling
	the @acronym{-prohibiting syntax-check rule.

2017-05-05  Paul Eggert  <eggert@cs.ucla.edu>

	cmp: improve EOF diagnostic
	This improves on yesterday's change, following up on a
	remark by Jim Meyering (Bug#22816#21).
	* doc/diffutils.texi (Invoking cmp, cmp Options): Follow POSIX more
	closely in the documentation of the information appended to the EOF
	diagnostic.
	* src/cmp.c (cmp): Be more specific about the shorter file's length
	and fix some off-by-1 issues in reporting line counts.
	* tests/cmp: Adjust to match new behavior.
	Don't assume internal details about stdio buffering.

2017-05-04  Benno Schulenberg  <bensberg@justemail.net>

	diff: describe each --help option with a single string
	* src/diff.c: To ease translating, fuse four description pieces
	into two whole ones.  Also reword and rewrap one of them to fit
	within eighty characters.

2017-05-04  Paul Eggert  <eggert@cs.ucla.edu>

	cmp: report prefix length when one file is shorter
	Requested by Dan Jacobson (Bug#22816).
	* NEWS:
	* doc/diffutils.texi (Invoking cmp, cmp Options): Document this.
	* src/cmp.c (cmp): Implement it.
	* tests/Makefile.am (TESTS): Add cmp.
	* tests/cmp: New file.

2017-05-02  Jim Meyering  <meyering@fb.com>

	tests: add test for latest fix
	* NEWS (Bug fixes): Describe it.
	* tests/invalid-re: New test for just-fixed bug.
	* tests/Makefile.am (TESTS): Add it.

	gnulib: update to latest

2017-04-27  Paul Eggert  <eggert@cs.ucla.edu>

	diff: don't crash if regexp is invalid
	Problem reported by Marcel Böhme in:
	http://lists.gnu.org/archive/html/bug-diffutils/2017-04/msg00002.html
	* src/diff.c (add_regexp): Exit if re_compile_pattern fails.

2017-03-24  julama  <julama@fake-box.com>

	tests: avoid false failure for unreadable /proc/cmdline
	* tests/brief-vs-stat-zero-kernel-lies: Use "test -r" rather than
	just "test -f".  This avoids a false test failure on a linux system
	with grsecurity and its GRKERNSEC_PROC_USER option enabled, for which
	/proc/cmdline is unreadable.  Reported in https://bugs.gnu.org/26155

2017-02-01  Jim Meyering  <meyering@fb.com>

	tests: avoid false failure with some shells on debian, freebsd
	* tests/colors: Move the TERM=dumb setting into the code run by
	"returns_", since some shells do not propagate envvar setting through
	to a use of a function like this.  That would cause this test to fail
	because results were colorized when they should not have been.
	Reported by Nelson Beebe.

2017-01-31  Jim Meyering  <meyering@fb.com>

	maint: add "introduced in 3.4" in latest NEWS entry
	* NEWS: Update.  Also, thanks to Nelson Beebe for reporting this.

	diff: avoid UMR with ---presume-output-tty
	* src/diff.c (main): Always define presume_output_tty.
	Otherwise, it would be read uninitialized.
	Introduced in v3.3-45-g17e2698
	* NEWS (Bug fixes): Mention it.

	gnulib: update to latest; and update bootstrap and init.sh

	maint: change "time stamp" to "timestamp" globally
	This avoids a new syntax-check failure.
	* ChangeLog-2008: Perform that change.
	* doc/diffutils.texi: Likewise.
	* NEWS: Likewise.
	* cfg.mk: Update the old news hash accordingly.

2017-01-01  Jim Meyering  <meyering@fb.com>

	maint: update gnulib and copyright dates for 2017
	* gnulib: Update to latest.
	* all files: Run "make update-copyright".

2016-11-08  Jim Meyering  <meyering@fb.com>

	tests: use "returns_" rather than explicit comparison with "$?"
	* tests/colors: Use "returns_ 1" rather than testing $? = 1
	* tests/basic: Likewise.
	* tests/binary: Likewise.
	* tests/filename-quoting: Likewise.
	* tests/function-line-vs-leading-space: Likewise.
	* tests/ignore-matching-lines: Likewise.
	* tests/label-vs-func: Likewise.
	* tests/new-file: Likewise.
	* tests/no-dereference: Likewise.
	* tests/no-newline-at-eof: Likewise.
	* tests/stdin: Likewise.

2016-10-25  Paul Eggert  <eggert@cs.ucla.edu>

	diff: fix big performance degradation in 3.4
	* NEWS, doc/diffutils.texi (Overview): Document this.
	* src/analyze.c (diff_2_files): Restore too_expensive heuristic,
	but this time with a floor that is 16 times the old floor.  This
	should fix Bug#16848, by generating good-quality output for its
	test case, while not introducing Bug#24715, by running nearly as
	fast as diff-3.3 for that test case.

	build: update gnulib submodule to latest

2016-10-16  Jim Meyering  <meyering@fb.com>

	maint: use die rather than error
	Use "die (N, ..." rather than "error (N, ..." whenever N is a nonzero
	constant.  That lets the compiler know that control never goes beyond
	that point, and thus makes unnecessary the occasional following
	"abort ();" or "break;" statement we have historically added to inform
	static analysis tools of this aspect of "error" semantics.
	* src/die.h: New file.
	* src/Makefile.am (noinst_HEADERS): Add it.
	* src/cmp.c: Use die in place of error whenever the first
	argument is a nonzero constant.  Also remove any immediately-
	following call to abort, and include "die.h".
	* src/diff.c: Likewise.
	* src/diff3.c: Likewise.
	* src/sdiff.c: Likewise.
	* src/util.c: Likewise.

2016-10-02  Jim Meyering  <meyering@fb.com>

	gnulib: update to latest

	build: avoid GCC 7's new warnings
	* src/util.c (get_funky_string): Adjust comment so that GCC 7's
	-Wimplicit-fallthrough recognizes it.
	* src/diff3.c (main): Cast boolean MERGE to "int" to avoid this:
	diff3.c:341:25: error: '~' on a boolean expression \
	[-Werror=bool-operation]

2016-08-30  Jim Meyering  <meyering@fb.com>

	gnulib: update to latest

2016-08-29  Jim Meyering  <meyering@fb.com>

	gnulib: update to latest, to port to upcoming GCC 7
	This fixes compilation errors when using gcc-7-to-be that were
	due to missing backslashes in gnulib's intprops.h and an API
	change in functions like __builtin_add_overflow.  This ports
	to GCC 7's newer built-in overflow-checking functions.

2016-08-28  Paul Eggert  <eggert@cs.ucla.edu>

	diff: don't assume ptrdiff_t <= long long int
	* src/system.h (printint, pI): Port to (theoretical) platforms
	where ptrdiff_t is wider than long long int (Bug#24311).

2016-08-27  Paul Eggert  <eggert@cs.ucla.edu>

	diff: port line numbers to mingw64
	Problem reported by Peter Rosin (Bug#24311).
	* src/system.h (printint, pI): New typedef and macro.
	All uses of 'long int' and "%l" in printf format replaced by
	'printint' and "%"pI respectively.
	* src/ifdef.c (do_printf_spec): Don't assume pI is length 1.

2016-08-20  Jim Meyering  <meyering@fb.com>

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

	version 3.5
	* NEWS: Record release date.

2016-08-16  Jim Meyering  <meyering@fb.com>

	build: arrange to build with -fno-common, when possible
	* configure.ac (WERROR_CFLAGS): Add -fno-common, when possible.
	This would have prevented the duplicate definition of
	presume_output_tty that was fixed in v3.4-10-gc2dc91f.

2016-08-16  Hanno Böck  <hanno@hboeck.de>

	diff: avoid duplicate definition of presume_output_tty
	* src/util.c (presume_output_tty): Remove this definition.
	The other is in diff.h.  Reported in https://bugs.gnu.org/24248

2016-08-14  Jim Meyering  <meyering@fb.com>

	gnulib: update to latest

	tests: diff3: work around missing seq on some systems
	* tests/diff3 (seq): Provide a seq replacement function,
	since at least AIX, SunOS 5.10, OpenBSD-5.8 lack it.
	Reported by Assaf Gordon in https://bugs.gnu.org/24227#8

2016-08-13  Jim Meyering  <meyering@fb.com>

	diff3: fix leaks, for real
	* src/diff3.c (struct diff_block)[lint]: Add member, n2.
	(free_diff_block, next_to_n2): New functions.
	* tests/diff3: Add more test coverage.

	maint: require that commit messages be of a certain form
	* bootstrap.conf (bootstrap_epilogue): Merge from coreutils, so that
	a local commit hook will now help enforce consistent commit messages.
	* Makefile.am (check-git-hook-script-sync): New rule, largely copied
	from coreutils.
	* scripts/git-hooks/commit-msg: New file, from coreutils, but
	with adapted list of program names.
	* scripts/git-hooks/applypatch-msg: New file, from git.
	* scripts/git-hooks/pre-applypatch: Likewise.
	* scripts/git-hooks/pre-commit: Likewise.

2016-08-13  Bastian Beischer  <bastian.beischer@rwth-aachen.de>

	diff3: fix heap use-after-free; add minimal diff3 test coverage
	Commit v3.3-42-g3b74a90, "FIXME: src/diff3: plug a leak" added an
	invalid use of free, leading to use-after-free in nearly any invocation
	of diff3.  Revert that commit.
	* NEWS (Bug fixes): Mention it.
	* tests/diff3: New file, to add minimal test coverage.
	* tests/Makefile.am (TESTS): Add it.
	Reported by Bastian Beischer in http://bugs.gnu.org/24210

2016-08-13  Jim Meyering  <meyering@fb.com>

	build: ignore texinfo build artifacts
	* .gitignore: Ignore texinfo artifacts in doc/.

	maint: diff3: remove an unreachable statement
	* src/diff3.c (main): Remove unreachable "return" after exit from main.

2016-08-08  Jim Meyering  <meyering@fb.com>

	diff: disable colorization for TERM=dumb
	* src/diff.c (main): With --color or --color=auto, when TERM is
	"dumb", disable colorization.  Suggested by Daniel Colascione.
	* NEWS (Bug fixes): Mention it.
	* tests/colors: Add a test that would fail without this change,
	yet passes with it.

	maint: post-release administrivia
	* NEWS: Add header line for next release.
	* .prev-version: Record previous version.
	* cfg.mk (old_NEWS_hash): Auto-update.

	version 3.4
	* NEWS: Record release date.

2016-08-06  Jim Meyering  <meyering@fb.com>

	gnulib: update to latest

	tests: tweak built_programs definition
	* tests/Makefile.am (built_programs): Adjust to work around what
	may be a problem due to interaction between Solaris 10's /bin/sh
	and an old version of GNU make. Reported by Dagobert Michelsen
	in https https://bugs.gnu.org/24137.

2016-08-02  Jim Meyering  <meyering@fb.com>

	gnulib: update to latest

	tests: skip a /proc/self-dependent test on the Hurd
	* tests/brief-vs-stat-zero-kernel-lies: The Hurd's /proc/self
	is not useful, so detect that and skip the test that requires it.
	Reported by Assaf Gordon in https://debbugs.gnu.org/24121#29

2016-08-01  Jim Meyering  <meyering@fb.com>

	tests/colors: fix portability problem with touch --date
	* tests/colors (epoch): Don't use GNU touch's --date=$epoch option.
	Use the portable -t 197001010000.00.
	Reported by Assaf Gordon in https://debbugs.gnu.org/24121#8

	build: Solaris 9: avoid link failure due to isblank use
	* bootstrap.conf (gnulib_modules): Add isblank, to avoid a link
	error on Solaris 9 Sparc.  Reported by Dagobert Michelsen.

	test: improve test infrastructure
	* tests/envvar-check: New file, copied from grep, with the addition
	of the EDITOR and GREP_OPTIONS envvar names.
	* tests/Makefile.am (EXTRA_DIST): Add it.
	(TESTS_ENVIRONMENT): Revamp, to be more like that of grep.

2016-07-31  Jim Meyering  <meyering@fb.com>

	maint: remove gl/lib/reg*.c.diff; no longer needed
	* gl/lib/regcomp.c.diff: Remove file, now that gnulib's
	regcomp.c compiles regex.c with -Wno-unused-parameter.
	* gl/lib/regex_internal.c.diff: This file induced a change to ensure
	that the "Idx" type was unsigned and to remove a few "VAR < 0"
	comparisons.  These days, it is probably fine to stay in sync with
	gnulib/glibc's copies
	of these files, so remove these patches, too.
	* gl/lib/regexec.c.diff: Likewise.
	Prompted by a report by Assaf Gordon and a suggestion from Paul Eggert.

	tests: colors: fix a portability problem and work around a shell bug
	* tests/colors (e): Fix a portability bug: use printf '\033'
	rather than '\e' to generate the required byte sequence, since
	for some shells (at least dash 0.5.8), the latter doesn't work.
	Work around a shell bug whereby "local tab=$(printf '\t')"
	would result in an empty value for "$tab": hoist each "tab"
	definition up/out of its function to global scope.
	Reported by Assaf Gordon in http://debbugs.gnu.org/24116#8

2016-07-23  Jim Meyering  <meyering@fb.com>

	gnulib: update to latest; and tests/init.sh
	* gnulib: Update to latest.
	* init.sh: Update from gnulib.

2016-05-30  Jim Meyering  <meyering@fb.com>

	maint: arrange for "make distcheck" to work with unreleased automake
	* dist-check.mk (my-distcheck): Remove all .deps directories
	before performing the recursive comparison.

2016-05-24  Glenn Morris  <rgm@gnu.org>

	doc: fix a reference to emacs' emerge node
	* doc/diffutils.texi (Interactive Merging): Correct a reference to
	emacs' emerge node: s/emerge/Emerge/.
	This addresses http://debbugs.gnu.org/23613

2016-04-30  Jim Meyering  <meyering@fb.com>

	maint: arrange for better URLs in generated announcement message
	* cfg.mk (url_dir_list): Define.  I had been correcting the generated
	URLs by hand, just before the announcement.  This is better.

2016-03-15  Jim Meyering  <meyering@fb.com>

	maint: don't ignore gitlog-to-changelog failure
	* Makefile.am (gen-ChangeLog): Don't ignore failure of
	gitlog-to-changelog. This syncs to coreutils' copy of this rule.

2016-03-06  Giuseppe Scrivano  <gscrivano@gnu.org>

	diff: --color: fix an infinite recursion bug
	* src/diff.h (presume_output_tty): New extern variable.
	* src/diff.c (PRESUME_OUTPUT_TTY_OPTION): New enum.
	(group_format_option): Add '-presume-output-tty'.
	(main): Handle PRESUME_OUTPUT_TTY_OPTION.
	* src/util.c: New variable `presume_output_tty'.
	(check_color_output): Handle presume_output_tty.
	(set_color_context): Call process_signals only when color_context is
	not RESET_CONTEXT.
	* tests/colors: Check that diff doesn't crash when interrupted
	in the middle of a color sequence.

	Reported by Gisle Vanem in http://debbugs.gnu.org/22067

2016-01-31  Jim Meyering  <meyering@fb.com>

	maint: update prereq version of gettext
	* configure.ac: Increase designated gettext version to 0.19.2
	* bootstrap.conf (buildreq): Likewise.
	Remove now-unnecessary code to remove gettext-provided files.

	gnulib: update to latest

2016-01-01  Jim Meyering  <meyering@fb.com>

	FIXME: src/diff3: plug a leak

2016-01-01  Jim Meyering  <meyering@fb.com>

	maint: update copyright year, bootstrap, init.sh
	Run "make update-copyright" and then...

	* gnulib: Update to latest.
	* tests/init.sh: Update from gnulib.
	* bootstrap: Likewise.

2015-12-06  Jim Meyering  <meyering@fb.com>

	diff --brief no longer mistakenly reports diff. with 0-sized /proc/ files
	Normally, it is safe to assume two regular files are different when
	their st_size values are different.  However, that assumption may
	be invalid if either value is zero, as happens with files on Linux
	/proc and /sys file systems. Since skipping this optimization will
	usually cost very little (one read syscall, to read zero bytes),
	it is fine to accommodate those unusual files.
	* src/analyze.c (diff_2_files): Do not assume regular files differ
	just because their st_size values differ when one or more is 0.
	* src/diff.c (compare_files): Likewise.
	* tests/brief-vs-proc-stat-zero: New test.
	* tests/Makefile.am: Add it.
	* NEWS (Bug fixes): Describe it.
	Reported by Stephan Müller in http://debbugs.gnu.org/21942

	tests: arrange to print any skipped-test explanation to tty, too
	I noticed that when a test was skipped, the reason was not printed.
	This fixes it.  In coreutils, this variable is set in init.cfg,
	but there is no point in putting the definition so far from the
	code that chooses the file descriptor number in tests/Makefile.am.
	* tests/Makefile.am (TESTS_ENVIRONMENT) [stderr_fileno_]: Define
	here (to 9), right next to the companion "9>&2".

2015-11-29  Jim Meyering  <meyering@fb.com>

	build: add gperf to the list of required programs
	* bootstrap.conf (buildreq): Add gperf to the list.
	Reported by Stephan Müller in http://debbugs.gnu.org/21945

2015-11-29  Giuseppe Scrivano  <gscrivano@gnu.org>

	tests: Add tests for --color and --palette
	* tests/colors: New file.
	* tests/Makefile.am (TESTS): Add colors.

	doc: mention --color and --palette in NEWS

	diff: add --palette
	* bootstrap (gnulib_modules): Add 'argmatch'.
	* doc/diffutils.texi: Add documentation for --palette
	* src/diff.h (set_color_palette): New prototype.
	* src/diff.c (set_color_palette): New function.
	(color_palette): New variable.
	* src/utils.c: Include "argmatch.h".
	(struct bin_str): New struct.
	(struct color_ext_type): New struct.
	(color_indicator): New array.
	(indicator_name): New array.
	(indicator_no): New enum.
	(parse_state): New enum.
	(put_indicator): New function.
	(get_funky_string): New function. Copied from coreutils ls.
	(parse_diff_color):  New function. Copied from coreutils ls
	"parse_ls_color" function.
	(set_color_context): Use put_indicator instead of directly
	outputting the sequence.
	* po/POTFILES.in: Add 'lib/argmatch.c'

	diff: add support for --color
	* doc/diffutils.texi (diff Options): Add documentation for --color.
	Copied from coreutils ls --color.
	* src/context.c (pr_unidiff_hunk): Set the color context.
	(print_context_header): Likewise.
	(pr_context_hunk): Likewise.
	* src/diff.h (enum colors_style): New enum to record when to use colors.
	(colors_style): New variable to memorize the argument value.
	(set_color_context): Add function definition.
	* src/diff.c: : Define COLOR_OPTION.
	(specify_colors_style): New function.
	(longopts): Add --color.
	(main): Handle --color argument.
	(option_help_msgid): Add usage string for --color.
	* src/normal.c (print_normal_hunk): Set the color context.
	* src/side.c (print_1sdiff_line): Likewise.
	* src/util.c (print_1_line_nl): New function.
	(print_1_line): Make it a wrapper of 'print_1_line_nl'.
	(colors_enabled): New boolean variable.
	(begin_output): Call check_color_output once the output file is
	configured.
	(output_1_line): Periodically call `process_signals'.
	(caught_signals): New sigset_t.
	(colors_enabled): New boolean variable.
	(interrupt_signal): New sig_atomic_t.
	(stop_signal_count): New sig_atomic_t.
	(check_color_output): New function.
	(install_signal_handlers): Likewise. Copied from coreutils ls.
	(process_signals): Likewise.  Copied from coreutils ls.
	(set_color_context): New function.
	(sighandler): Likewise.  Copied from coreutils ls.
	(stophandler): Likewise.  Copied from coreutils ls.

