diff options
author | Jim Meyering <meyering@redhat.com> | 2009-11-11 19:41:53 +0100 |
---|---|---|
committer | Jim Meyering <meyering@redhat.com> | 2009-11-11 22:18:36 +0100 |
commit | 90ac0e3b3bf7c069c0559c650beb5a0afa4b7614 (patch) | |
tree | d5f67ce471a5880f794b4197b75af21362a35bcd /ChangeLog-2008 | |
parent | cb0791d7a466db7406b040a2670cbb27dfc184b1 (diff) | |
download | diffutils-90ac0e3b3bf7c069c0559c650beb5a0afa4b7614.tar.gz |
maint: rename ChangeLog to ChangeLog-2008
* ChangeLog-2008: Rename from ChangeLog.
* Makefile.am (EXTRA_DIST): Add ChangeLog-2008.
* .gitignore: Ignore ChangeLog.
Diffstat (limited to 'ChangeLog-2008')
-rw-r--r-- | ChangeLog-2008 | 4274 |
1 files changed, 4274 insertions, 0 deletions
diff --git a/ChangeLog-2008 b/ChangeLog-2008 new file mode 100644 index 0000000..fefec3f --- /dev/null +++ b/ChangeLog-2008 @@ -0,0 +1,4274 @@ +2008-01-30 Paul Eggert <eggert@cs.ucla.edu> + + * doc/diff.texi: Update Back-Cover text to reflect new GNU wording. + +2008-01-24 Paul Eggert <eggert@cs.ucla.edu> + + * src/side.c [!HAVE_MBRTOWC]: Supply defns for mbstate_t and mbrtowc. + Problem reported by Bruno Haible. + +2008-01-23 Paul Eggert <eggert@cs.ucla.edu> + + * src/side.c (print_half_line): Don't convert to unsigned char + unnecessarily. + + Don't mishandle multibyte characters in side-by-side format. + Problem reported by Erik Karlsson in + <http://lists.gnu.org/archive/html/bug-gnu-utils/2008-01/msg00030.html>. + * bootstrap.conf (gnulib_modules): Add wcwidth. + * src/side.c: Include <wchar.h>. + (print_half_line): Compute number of bytes and print widths of + multibyte characters. Inspired by an alternative solution from + Bruno Haible in + <http://lists.gnu.org/archive/html/bug-gnu-utils/2008-01/msg00032.html>. + +2007-12-04 Paul Eggert <eggert@cs.ucla.edu> + + * NEWS: New diff option --suppress-blank-empty (no longer -u default). + * doc/diff.texi (Detailed Unified): Trailing spaces are no longer + omitted. + (Trailing Blanks): New section. + (diff Options) Mention new option. + * src/diff.h (suppress_blank_entry): New decl. + * src/context.c (pr_unidiff_hunk): Support --suppress-blank-empty. + * src/util.c (print_1_line): Likewise. + * src/diff.c (longopts, main, option_help_msgid): Likewise. + (SUPPRESS_BLANK_EMPTY_OPTION): New constant. + + * configure.ac: Invoke gl_USE_SYSTEM_EXTENSIONS after gl_EARLY, + since gnulib now requires this order. + + * bootstrap: Import from gnulib. + +2007-08-17 Paul Eggert <eggert@cs.ucla.edu> + + Break out diffseq.h into a separate file, so that gettext can use + this code. Idea and code from Bruno Haible. + * bootstrap.conf (gnulib_modules): Add diffseq. + * src/analyze.c (xvec, yvec, fdiag, bdiag, too_expensive, SNAKE_LIMIT): + (struct partition, diag, compareseq): Remove; now in diffseq.h. + (ELEMENT, EQUAL, OFFSET, EXTRA_CONTEXT_FIELDS, NOTE_DELETE, NOTE_INSERT): + (USE_HEURISTIC): New macros. + Include "diffseq.h". + (diff_2_files): Rewrite to use new diffseq.h interface. + + * bootstrap: Import from gnulib. + +2007-08-15 Paul Eggert <eggert@cs.ucla.edu> + + * src/diff.c (compare_files): Use last_component rather than base_name, + adjusting to gnulib API change. This avoids a memory leak. + * src/sdiff.c (expand_name): Likewise. + * src/util.c (dir_file_pathname): Likewise. + + * doc/diff.texi (Copying This Manual): Adjust to new fdl.texi layout. + +2007-07-19 Paul Eggert <eggert@cs.ucla.edu> + + * doc/diff.texi (White Space): Note that newline always ends a line, + so -w doesn't ignore newline-related changes. Problem reported by + David Kastrup. + + * COPYING: New file. + * AUTHORS: Update from GPLv2 to GPLv3. + * Makefile.am: Likewise. + * NEWS: Likewise. + * README: Likewise. + * README-hacking: Likewise. + * bootstrap: Likewise. + * bootstrap.conf: Likewise. + * configure.ac: Likewise. + * exgettext: Likewise. + * doc/Makefile.am: Likewise. + * lib/Makefile.am: Likewise. + * lib/cmpbuf.c: Likewise. + * lib/cmpbuf.h: Likewise. + * lib/prepargs.c: Likewise. + * m4/vararrays.m4: Likewise. + * man/Makefile.am: Likewise. + * ms/Makefile.am: Likewise. + * ms/README: Likewise. + * ms/config.bat: Likewise. + * ms/config.sed: Likewise. + * ms/config.site: Likewise. + * po/POTFILES.in: Likewise. + * src/Makefile.am: Likewise. + * src/analyze.c: Likewise. + * src/cmp.c: Likewise. + * src/context.c: Likewise. + * src/diff.c: Likewise. + * src/diff.h: Likewise. + * src/diff3.c: Likewise. + * src/dir.c: Likewise. + * src/ed.c: Likewise. + * src/io.c: Likewise. + * src/normal.c: Likewise. + * src/sdiff.c: Likewise. + * src/system.h: Likewise. + * src/util.c: Likewise. + + * src/ifdef.c: Fix typo: "GNU DIFF General Public License" should be + "GNU General Public License". Reported by Erich Guenther. + * src/side.c: Likewise. + +2007-06-18 Paul Eggert <eggert@cs.ucla.edu> + + * bootstrap.conf (gnulib_modules): Add inttypes. + * src/context.c (print_context_label): Don't assume that time_t + fits in long int, since it doesn't in FreeBSD/arm. Problem + reported by Xin Li in + <http://lists.gnu.org/archive/html/bug-gnu-utils/2007-06/msg00091.html>. + +2007-06-06 Paul Eggert <eggert@cs.ucla.edu> + + * NEWS: Mention new sdiff aliases 1 and 2 for l and r. + * doc/diff.texi (Merge Commands): Likewise. + * src/sdiff.c (give_help): Give help for them. + (edit): Support them. + +2007-04-11 Paul Eggert <eggert@cs.ucla.edu> + + * doc/diff.texi (Detailed diff3 Normal): "range is a singleton" -> + "there is only one line", for clarity. Suggested by Jerry Peek. + +2007-04-04 Paul Eggert <eggert@cs.ucla.edu> + + * TODO: Mention possible sdiff improvement. + + * bootstrap: Sync from gnulib. + * src/cmp.c: Don't include exit.h; no longer needed. + * src/diff.c: Likewise. + * src/sdiff.c: Likewise. + * src/dir.c: Don't include strcase.h; no longer needed. + * README-alpha: Remove, replacing with: + * README-hacking: New file, taken from coreutils with some changes. + The rename is required by the change to 'bootstrap'. + +2006-11-15 Paul Eggert <eggert@cs.ucla.edu> + + * src/analyze.c (build_reverse_script): Fix typo in comment. + Problem and fix reported by Daniel Hipschman. + +2006-11-14 Paul Eggert <eggert@cs.ucla.edu> + + Don't assume SIGPIPE exists, and that sigblock and sigsetmask + exist if sigprocmask does not. Problem reported by Paul Edwards + for MVS 3.8. + * configure.ac (sigblock): Check whether this function is + available, if sigprocmask is not. + * src/sdiff.c (sigs): Omit SIGPIPE if it's not defined. + Put SIGINT last; all uses changed. + (handler_index_of_SIGPIPE): Omit if SIGPIPE is not defined. + (sigblock, sigsetmask) [!HAVE_SIGBLOCK]: New macros. + (sigprocmask): Don't dump core if O is null. + +2006-11-04 Paul Eggert <eggert@cs.ucla.edu> + + * src/sdiff.c (sigprocmask) [! HAVE_SIGPROCMASK]: Cast 2nd arg to + sigset_t *, since it might be a literal 0. Problem reported by + Paul Edwards for MVS 3.8. + +2006-09-05 Paul Eggert <eggert@cs.ucla.edu> + + * NEWS: diff -u no longer outputs trailing white space unless the + input data has it. Suggested by Jim Meyering. + * doc/diff.texi (Detailed Unified): Document this. + * src/context.c (pr_unidiff_hunk): Implement this. + + Modernize bootstrap procedure to match current gnulib. + * bootstrap: Sync with coreutils bootstrap, except check that + the directory build-aux exists before trying to copy to it. + * bootstrap.conf: New file. + (gnulib_modules): Add config-h, dup2, extensions, fcntl, fdl, + stat-macros, unistd. + * configure.ac: Invoke gl_EARLY and gl_INIT rather than + GNULIB_AUTOCONF_SNIPPET. + (AC_CONFIG_HEADER): Rename config.h to lib/config.h. + (AC_CHECK_HEADERS_ONCE): Don't check for fcntl.h, locale.h, + sys/file.h, unistd.h. We now use the fcntl and unistd modules, + and locale.h can be assumed for any C89 compiler. + (DIFFUTILS_PREREQUISITES): Remove. No longer needed now that + we use the stdint module. + (AC_CHECK_FUNCS_ONCE): Remove dup2, which is no longer needed + now that we use the dup2 module. + (AM_GNU_GETTEXT): Use need-formatstring-macros, and ... + (AM_GNU_GETTEXT_VERSION): specify version 0.15 instead of 0.14.5, + to be consistent with coreutils. + * lib/Makefile.am (noinst_LIBRARIES): + (lib_SOURCES, libdiffutils_a_LIBADD): + (libdiffutils_a_DEPENDENCIES, BUILT_SOURCES, EXTRA_DIST): + (MOSTLYCLEANFILES): Remove; now computed automatically. + (noinst_HEADERS, libdiffutils_a_SOURCES): Just append + our special files now. + * lib/cmpbuf.c: Include config.h unconditionally, since we + no longer define HAVE_CONFIG_H. + * lib/prepargs.c: Likewise. + * src/Makefile.am (LDADD): Use $(LIBINTL), not @LIBINTL@. + (diff_LDADD): Use $(LIB_CLOCK_GETTIME), not @LIB_CLOCK_GETTIME@. + * src/dir.c (dir_read): Use _D_EXACT_NAMLEN, not NAMELEN. + * src/system.h (volatile): Remove, since we assume C89 or better. + Include stat-macros.h. + (S_IRWXU, S_IRWXG, S_IRWXO, S_IRUSR, S_IWUSR): + Remove, since we now use stat-macros.h. + (SEEK_SET, SEEK_CUR): Remove, since we assume C89 or better. + Include unistd.h unconditionally, since we use unistd. + Likewise for fcntl.h. + (dup2): Remove, since we now use dup2. + (O_RDONLY, O_RWDR, O_BINARY): Remove, since we now use + fcntl. + Include dirent.h unconditionally. + (NAMLEN): Remove, replacing with.... + (_D_EXACT_NAMLEN): New macro. + Include inttypes.h unconditionally. + (PTRDIFF_MAX, SIZE_MAX, UINTMAX_MAX, strtoumax): Remove, since + we now use inttypes. + Include locale.h unconditionally. + (setlocale): Remove, since we now assume locale.h. + +2006-09-04 Jim Meyering <jim@meyering.net> + + * src/context.c (print_context_function): Do not print + trailing white space in a context header. + +2006-05-09 Paul Eggert <eggert@cs.ucla.edu> + + * src/cmp.c (cmp): The previous fix wasn't quite right either, as + it mishandled 'cmp A B >/dev/null' when A is shorter than B and + differs before A's end-of-file, by outputting a bogus EOF message. + Also, it was inefficient if A and B were large. + +2006-05-07 Jim Meyering <jim@meyering.net> (tiny change) + + Fix bug introduced in 2006-03-09 change: + cmp always exits successfully, when stdout is redirected to /dev/null. + * src/cmp.c (cmp): When there's a difference, arrange to return nonzero + also when comparison_type is the new (from 2006-03-09) type_no_stdout. + +2006-05-07 Paul Eggert <eggert@cs.ucla.edu> + + * src/context.c (pr_context_hunk, pr_unidiff_hunk): + Prefer fputs or fputc to fprintf, since it's a tad more efficient + with unlocked-IO on glibc. Long ago we avoided fputs to + work around an ancient SunOS bug, but that's no longer relevant. + * src/diff3.c (output_diff3, dotlines, undotlines): + (output_diff3_edscript, output_diff3_merge): Likewise. + This also avoids a gcc -Wformat-security warning reported + by Jim Meyering. + * src/ed.c (print_ed_hunk, print_forward_ed_hunk, print_rcs_hunk): + Likewise. + * src/normal.c (print_normal_hunk): Likewise. + +2006-05-06 Paul Eggert <eggert@cs.ucla.edu> + + * src/io.c (find_identical_ends): Fix huge performance bug that I + introduced in the 2001-11-25 change: the code to remove the + identical suffix also looked at the trailing sentinel, which meant + the common suffix length was always incorrectly calculated to be + zero. Problem and fix reported by Daniel Hipschman. Instead of + his fix, revert to the pre-2001 code. + + * doc/diff.texi: Switch from GFDL 1.1 to 1.2. + +2006-03-13 Paul Eggert <eggert@cs.ucla.edu> + + * src/system.h (PARAMS, PROTOTYPES): Remove; no longer needed. + (IF_LINT): New macro, to pacify GCC. + * src/analyze.c (diag, compareseq): Use IF_LINT. + * src/cmp.c (cmp): Likewise. + * src/diff3.c (process_diff): Likewise. Also, prefer NULL to 0. + * src/ifdef.c (do_printf_spec, scan_char_literal): Likewise. + * src/sdiff.c (edit): Likewise. + +2006-03-09 Paul Eggert <eggert@cs.ucla.edu> + + * src/cmp.c (type_no_stdout): New constant. + (main): Use it to avoid bug when the "EOF on foo" message is + generated and stdout is /dev/null. + Problem reported by Vincent Lefevre (Debian bug 356083). + +2006-01-04 Paul Eggert <eggert@cs.ucla.edu> + + * README-alpha: Describe CVS access better, using the README-alpha + from GNU tar. + * AUTHORS: Simplify list by removing legalisms. + * THANKS: Add Larry Wall, who contributed to manual. Update email + addresses. + * Makefile.am (SUBDIRS): Remove m4. Put lib first, then other + source files, so documentation can rely on programs being built. + * bootstrap: Import changes from Bison bootstrap. Add gettext, + gettime, sh-quote, stat-time, verify, version-etc-fsf modules. + Remove posixver module. Retrieve doc/fdl.texi from gnulib. + Handle gettext.m4 like glibc21.m4. Don't remove po/en.po. + * configure.ac (AC_PREREQ): Bump to 2.59. + (AC_INIT): Bump version to 2.8.7-cvs. + (AC_CONFIG_AUX_DIR): Change from config to build-aux. + Prefer AC_CHECK_HEADERS_ONCE to AC_CHECK_HEADERS + and AC_CHECK_FUNCS_ONCE to AC_CHECK_FUNCS. + Remove jm_AC_TYPE_INTMAX_T, jm_AC_TYPE_UINTMAX_T, + AC_STRUCT_ST_MTIM_NSEC. + (DIFFUTILS_PREREQUISITES): New macro. Call it. + (REGEX_MALLOC): Remove; no longer needed. + (AM_GNU_GETTEXT_VERSION): Now 0.14.15. + (AM_GNU_GETTEXT): Call. + (LIB_CLOCK_GETTIME): Remove; bootstrap now does that. + (AC_FUNC_SETMODE_DOS): Remove. + (AC_CONFIG_FILES): Remove m4/Makefile. + * doc/diff.texi: Use @- at end of lines that should end in white space, + so that Emacs doesn't remove the white space. + (diff Options): "diff -NUM" is a pure extension to POSIX, so support + it unconditionally. + * lib/Makefile.am (noinst_HEADERS): Remove quotesys.h. + (lib_SOURCES): Remove quotesys.c. + (DISTCLEANFILES): Remove. + (EXTRA_DIST): Remove setmode.h, waitpid.c. + * lib/cmpbuf.c (block_read): Reword to avoid gcc -W warning. + * lib/setmode.c, lib/setmode.h: Remove. + * m4/setmode.m4, m4/gnu-source.m4, m4/Makefile.am.in: Remove. + * m4/jm-glibc-io.m4: Remove. + * src/cmp.c: Don't include <setmode.h>. + (specify_ignore_initial): Reword to avoid gcc -W warnings. + (main): Use freopen instead of setmode, since freopen is in POSIX. + * src/context.c: Revert most 2004-09-01 changes. Then: + (TIMESPEC_NS): Remove. All uses replaced by + get_stat_mtime_ns. + Include stat-time.h, strftime.h. + (nstrtime): Remove decl. + * src/diff.c: Revert most 2004-09-01 changes. Then: + Don't include <posixver.h>, <quotesys.h>, <setmode.h>. + Include <sh-quote.h>, <stat-time.h>, <timespec.h>. + All uses of quotesys replaced by sh-quote. + (main, compare_files): + Use freopen instead of setmode, since freopen is in POSIX. + (main): Don't complain about "diff -NUM'. + (main, set_mtime_to_now): + Adjust to stat-time.h macros when accessing nanoseconds. + * src/diff3.c: Include sh-quote.h rather than quotesys. All uses + changed. + * src/dir.c (dir_read): excluded_filename renamed to + excluded_file_name. + * src/io.c: Don't include <setmode.h>. + (sip, read_files): Remove binary file stuff, leaving a FIXME behind. + A DOS expert needs to look at this. + * src/diff.c: Include sh-quote.h rather than quotesys.h. + All uses changed. + * src/system.h: Include verify.h. + (verify): Remove. All uses changed to verify.h version. + Include <intprops.h>. + (TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM): Remove. Now uses + intprops.h versions. + (O_BINARY): New defns, taken from coreutils. + * src/util.c: Include sh-quote.h rather than quotesys.h. + All uses changed. + +2004-09-01 Paul Eggert <eggert@cs.ucla.edu> + + * src/diff.c (recursive, new_file, unidirectional_new_file): + (report_identical_files): + Move into struct diffopt. All uses changed. + (exclude_options, compare_files, specify_style, check_stdout): + New arg OPT. All uses changed. + (GDIFF_MAIN): Remove. All uses removed. + (function_regexp_list, ignore_regexp_list): No longer static; now + locals in 'main'. + (main): Set opt.function_regexp, opt.ignore_regexp if using regexps; + all other code now tests these pointers rather than inspecting fastmap + internals. + New local OPT to hold former statics; initialize it. + (init_regexp_list): New function, used by main. + (summarize_regexp_list): Now returns struct re_pattern_buffer *, and + assumes reglist->regexps is not NULL. All uses changed. + + * src/context.c (find_function_last_search): Move into struct diffopt. + All uses changed. + (pr_context_label, pr_context_header, + print_context_script, find_function, find_hunk, mark_ignorable, + pr_context_hunk, pr_unidiff_hunk): New arg OPT. All uses changed. + (print_context_number_range, + print_unidiff_number_range): New arg OUT. All uses changed. + +2004-07-19 Stepan Kasal <kasal@ucw.cz> + + * src/ed.c (print_ed_hunk): Optimize the case where an insert's + last line is a single-dot line. + +2004-06-30 Paul Eggert <eggert@cs.ucla.edu> + + * lib/setmode.c: + Don't include <stdbool.h>, since setmode.h now does this. + Include setmode.h first, to catch interface errors. + Assume HAVE_SETMODE_DOS is defined. + + * lib/setmode.h: Include stdbool.h. + +2004-04-26 Paul Eggert <eggert@cs.ucla.edu> + + * bootstrap: Don't remove po/en.po. + +2004-04-13 Paul Eggert <eggert@twinsun.com> + + * NEWS, configure.ac (AC_INIT): Version 2.8.7. + * configure.ac (AM_GNU_GETTEXT_VERSION): Add. + (XGETTEXT): Restore from pre-2004-04-12 version. This fixes + a bug that lost many msgids in doc/diffutils.pot. + * bootstrap: New file. + * exgettext: Don't generate a temporary file, as this runs afoul + of "make distcheck" which operates with read-only directories. + * Makefile.am (EXTRA_DIST): Add bootstrap. + Remove config/config.rpath as it is deduced automatically these days. + +2004-04-12 Paul Eggert <eggert@twinsun.com> + + * NEWS, configure.ac (AC_INIT): Version 2.8.6. + + * NEWS: Add news for 2.8.4, 2.8.6. + + * README: Move copyright notice to end. Defer to "configure + --help" for special "configure" options. Suggest latest libiconv. + Update version numbers of Autoconf etc. to current. + + * configure.ac: Quote various arguments better. + (AC_CONFIG_MACRO_DIR): Add call, specifying "m4". + (AC_CONFIG_HEADER): Replaces AM_CONFIG_HEADER. + (gl_USE_SYSTEM_EXTENSIONS): Replaces AC_GNU_SOURCE. + (AC_ISC_POSIX): Remove; nobody ports to ancient ISC any more. + (AC_PROG_CPP, AC_PROG_INSTALL, AC_C_INLINE, + AC_HEADER_STDBOOL, AC_HEADER_STDC, AM_GNU_GETTEXT, XGETTEXT, + AC_HEADER_STAT, AC_FUNC_VPRINTF, jm_FUNC_GLIBC_UNLOCKED_IO, + jm_FUNC_GNU_STRFTIME, jm_FUNC_MALLOC, jm_FUNC_REALLOC, + jm_PREREQ_C_STACK, jm_PREREQ_ERROR, jm_PREREQ_HARD_LOCALE, + jm_PREREQ_QUOTEARG, jm_PREREQ_REGEX, AC_FUNC_FNMATCH_GNU, jm_AC_DOS): + Remove; not needed here, as our files don't use them directly + or we rely on gnulib modules. + (AC_C_CONST): Remove; we assume C89 now. + (AC_CHECK_HEADERS): Remove libintl.h, limits.h, stdlib.h, string.h, + time.h. + (AC_CHECK_TYPE): Remove ptrdiff_t, ssize_t. + (AC_CHECK_FUNCS): Remove diraccess, strchr, strerror, tmpnam). + (AC_REPLACE_FUNCS): Remove memchr, mkstemp, strcasecmp. + (GNULIB_AUTOCONF_SNIPPET): Add call. This replaces much of + the above. + (AC_CONFIG_FILES): Remove lib/posix/Makefile. + (AC_CONFIG_COMMANDS): Remove. + + * doc/diff.texi (dircategory): Change to "Text creation and + manipulation" from "GNU packages". + (Translations): New node. + (Overview): Improve quality of algorithm citations. + (Binary): -q doesn't exactly cause diff to assume files are binary. + (Normal): Place after Side by Side, since it's less important. + (Detailed Context, Detailed Unified, Detailed ed, + Detailed if-then-else, diff3 Hunks, Detailed diff3 Normal): + Place at end of menu. + (Detailed Unified): Mention that fractional timestamps are + omitted on hosts that don't support them. + Mention what happens when hunks contain just one line. + (Line Group Formats, Reject Names): Fix duplicate-word typos. + (Comparing Directories): Trailing white space and empty lines are + ignored in the -X file. + (diff Options): Add --strip-trailing-cr. + (Projects): gnu -> gvc@gnu.org. + + * lib/Makefile.am (SUBDIRS): Remove. + (EXTRA_DIST, noinst_HEADERS): Remove most entries. + (libdiffutils_a_SOURCES): Now just lib_SOURCES. + (lib_SOURCES): New macro. + (DISTCLEANFILES, MOSTLYCLEANFILES): Set to empty now. + (gnulib.mk): Include: this does most of the work eliminated + by the above changes. + + * lib/inttostr.c (inttostr): Protect i < 0 by compile-time + test intended to suppress compiler warnings. + * lib/inttostr.h: Include limits.h unilaterally. + (CHAR_BIT): Remove. + (PARAMS): Remove; all uses changed. + * lib/setmode.c (__attribute__): New macro. + (set_binary_mode): Define only if HAVE_SETMODE_DOS. + Otherwise define a dummy static char, as C89 requires + that we define something. + * lib/setmode.h (set_binary_mode): Return true, not 1. + + * src/analyze.c, src/context.c, src/diff.c, src/io.c, src/util.c: + Do not include regex.h, as diff.h does this now. + + * src/cmp.c: Sort includes. Include <exit.h>, <unlocked-io.h>. + (specify_comparison_type): Don't report an error if the comparison + type has already been specified the same way as this one. + + * src/cmp.c (usage): Mention exit status. + * src/diff.c (option_help_msgid): Likewise. + * src/diff3.c (usage): Likewise. + * src/sdiff.c (usage): Likewise. + + * src/cmp.c (main): Adjust to latest gnulib c_stack_action + calling conventions. + * src/diff.c (main): Likewise. + * src/diff3.c (main): Likewise. + * src/sdiff.c (main): Likewise. + + * src/cmp.c (main): Adjust to latest version_etc calling conventions. + * src/diff.c (main): Likewise. + * src/diff3.c (main): Likewise. + * src/sdiff.c (main): Likewise. + + * src/diff.c: Include <exit.h>. + (binary): Define to true if not declared. + (longopts): Set tabsize flag to 1. + (main): Don't output nanoseconds if platform lacks them. + Don't treat files as binary if !binary. + (set_mtime_to_now): Use 0, not NULL. + (compare_files): Mark files as nonexistent if it looks like + 'patch' created inaccessible regular empty files to denote + nonexistent backups. Don't compare such files. + Clear st_* members of status of nonexistent file. + Remove now-unnecessary tests. + + * src/diff.h: Include regex.h, unlocked-io.h. + (struct file_data.changed): Now char *, not bool *, to save + space on hosts where bool takes more space than char. + All uses changed. + + * src/diff3.c: Include unlocked-io.h. + (strip_trailing_cr): New var. + (STRIP_TRAILING_CR_OPTION): New enum. + (longopts, main, option_help_msgid, read_diff): + Add --strip-trailing-cr support. + (read_diff): Exit with status 126 (not 127) if errno != ENOENT + after failed execvp in child. Report this in parent. + + * src/dir.c: Include <strcase.h>. + (failed_locale_specific_sorting): Renamed from failed_strcoll. + All uses changed. + (compare_names): Don't invoke strcasecmp first thing when + ignore_file_name_case; if locale_specific_sorting, we should + just use that. + + * src/ifdef.c (next_line): Remove; replace with... + (next_line0, next_line1): New vars. + (print_ifdef_script, print_ifdef_hunk): + Use them to fix line-number computation bug. + + * src/io.c (find_and_hash_each_line): Don't convert char * + to unsigned char *; just leave pointers as char *. This + lessens the number of potentially-dangerous casts. + * src/util.c (lines_differ): Likewise. + + * src/sdiff.c: Include <unlocked-io.h>, <exit.h>. + (check_child_status): Renamed from ck_editor_status, and + accept a new arg MAX_OK_STATUS. All callers changed. + Handle status 126/127 as per POSIX. + (edit): Likewise. + (main): Likewise. Fix getopt typo: -E wasn't supported. + + * src/system.h (S_IRWXU, S_IRWXG, S_IRWXO): Define if not defined. + (S_IXUSR, S_IXGRP, S_IXOTH): Remove. + Include <time.h> unconditionally, since we can assume C89 now. + Likewise for <stdlib.h>, <string.h>. + (getenv, EXIT_SUCCESS, EXIT_FAILURE, SSIZE_MAX, strchr, strrchr, + memcmp, memcpy): Remove decl; no longer needed. + (strcasecoll, strcasecmp): Define if not built in. + (CTYPE_DOMAIN, ISPRINT, ISSPACE, TOLOWER, _tolower, errno): Remove; + we now assume C89 or better. All uses changed. + Include <stdbool.h> unconditionally now, since gnulib supports it + if the C compiler doesn't. All boolean uses of 0 and 1 now + changed to false and true. + (lin_is_printable_as_long_int): Renamed from lin_is_printable_as_long. + + * src/util.c (begin_output): Fix bug: 0 wasn't cast to char * arg, + which led to undefined behavior on 64-bit hosts. + Use more-standard test for exit status 126 versus 127. + (finish_output): Likewise. + (analyze_hunk): Do not cast bool to int. + +2004-03-15 Paul Eggert <eggert@twinsun.com> + + * src/cmp.c (main): Don't consider two files with the same name to + be the same, if their initial skip values differ. This fixes a + bug reported by Hideki Iwamoto in + <http://mail.gnu.org/archive/html/bug-gnu-utils/2004-03/msg00024.html>. + +2004-03-11 Paul Eggert <eggert@twinsun.com> + + * src/analyze.c (diag): Return void, not lin, since the return + value wasn't needed. All callers changed. + (diag, diff_2_files): + Use 'true' and 'false' instead of '1' and '0', when appropriate. + (compareseq): Use lin const * local variables instead of lin *. + Don't bother checking diag's return value. + (shift_boundaries, build_reverse_script, build_script, diff_2_files): + Use char arrays, not bool arrays, since + sizeof (bool) might be greater than 1. + +2004-02-09 Paul Eggert <eggert@twinsun.com> + + * m4/setmode.m4 (AC_FUNC_SETMODE_DOS): AC_LIBOBJ(setmode) if + we would return true. + +2002-10-14 Paul Eggert <eggert@twinsun.com> + + * src/Makefile.am (diff3.$(OBJEXT), diff.$(OBJEXT), + sdiff.$(OBJEXT)): Rename from (misspelled) diff3.$(OBJECT), + diff.$(OBJECT), sdiff.$(OBJECT). Patch by Paul D. Smith in + <http://mail.gnu.org/pipermail/bug-gnu-utils/2002-October/003251.html>. + Bug reported by Chris Bainbridge. + +2002-10-13 Paul Eggert <eggert@twinsun.com> + + * src/Makefile.am (MOSTLYCLEANFILES): Add paths.ht. + (paths.h): Send output to paths.ht first, and then rename to + paths.h at the end. This avoids problems if the disk is full. + It also works around what appears to be a bug with GNU make -j + (3.79.1); see <http://bugs.gentoo.org/show_bug.cgi?id=8934>. + +2002-06-27 Paul Eggert <eggert@twinsun.com> + + * NEWS, configure.ac (AC_INIT): Version 2.8.4. + + * config/config.sub: Sync with latest version maintained in other + packages. + + * lib/file-type.h: Protect against double inclusion. Detect + whether <sys/stat.h> has been included. Fix from Jim Meyering. + + * src/analyze.c (briefly_report): Don't say "Binary files differ", + since one of the files may not be a binary file. + Bug reported by Dan Jacobson. + +2002-06-22 Paul Eggert <eggert@twinsun.com> + + * lib/c-stack.c (segv_handler, c_stack_action) [! defined + SA_SIGINFO]: Do not assume SA_SIGINFO behavior. + Bug reported by Jim Meyering on NetBSD 1.5.2. + +2002-06-16 Paul Eggert <eggert@twinsun.com> + + * NEWS, configure.ac (AC_INIT): Version 2.8.3. + + * config/depcomp, config/missing, README: Update to automake 1.6.2. + + * po/LINGUAS: Add en_US. + * po/en_US.po: New file. + * po/POTFILES.in: Remove lib/freesoft.c. + Add lib/file-type.c, lib/version-etc.c, lib/xmalloc.c. + +2002-06-15 Paul Eggert <eggert@twinsun.com> + + * doc/diff.texi (Special Files): Document behavior of symlink + loops. + + * lib/Makefile.am (noinst_HEADERS): Remove freesoft.h. + Add version-etc.h. + (libdiffutils_a_SOURCES): Remove freesoft.c. Add version-etc.c. + * lib/freesoft.c, lib/freesoft.h: Remove. + * lib/version-etc.h (PARAMS): Remove; we now assume C89 at least. + + * lib/version-etc.h (version_etc): Remove package and version args. + (version_etc_copyright): Remove. + * lib/version-etc.c: Likewise. + Do not include unlocked-io.h; no longer needed. + Include gettext.h rather than libinto.h. + (_): Define unconditionally. + (version_etc): Adjust wording to match current GNU coding standards. + Translate "(C)" if possible. + + * lib/version-etc.c, lib/version-etc.h: New files, taken from + fileutils. + + * src/Makefile.am (cmp_SOURCES, diff3_SOURCES, sdiff_SOURCES, + diff_SOURCES): Remove version.c. + (MAINTAINERCLEANFILES, $(srcdir)/version.c): Remove. + + * src/cmp.c: Include version-etc.h, not freesoft.h. + (copyright_notice): Remove. + (main): Use version_etc to print version. + * src/diff.c, src/diff3.c, src/sdiff.c: Likewise. + + * src/cmp.c (version_string): Remove decl. + * src/diff.h, src/diff3.c, src/sdiff.c: Likewise. + +2002-06-11 Paul Eggert <eggert@twinsun.com> + + * lib/fnmatch.c, lib/fnmatch_loop.c (WIDE_CHAR_SUPPORT): + New macro. Use it uniformly instead of + (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H). + It also uses HAVE_BTOWC, to fix a porting bug on Solaris 2.5.1 + reported by Vin Shelton. + * m4/fnmatch.m4 (_AC_LIBOBJ_FNMATCH): Check for btowc. + + * NEWS, configure.ac (AC_INIT): Version 2.8.2. + + * ABOUT-NLS, config/config.guess, config/config.sub, + config/depcomp, config/texinfo.tex, lib/posix/regex.h, + m4/c-bs-a.m4, m4/gettext.m4, m4/gnu-source.m4, m4/lib-link.m4, + m4/malloc.m4: + Update to recent version (maintained in other packages). + * m4/prereq.m4 (jm_PREREQ_EXCLUSIVE): AC_FUNC_FNMATCH_GNU + no longer takes a lib. + + * README: Incorporate contents from INSTALLME. + * INSTALLME: Remove. + * Makefile.am (EXTRA_DIST): Remove INSTALLME. + + * configure.ac (AC_GNU_SOURCE): Move up, so that it affects + later compilations properly. + (DEFAULT_DIFF_PROGRAM, AC_TYPE_SIGNAL): Remove. + (jm_AC_TYPE_INTMAX_T): Add. + (AC_FUNC_FNMATCH_GNU): Use this, instead of AC_FUNC_FNMATCH. + (AC_CONFIG_LINKS): regex.hin renamed from regex_.h. + + * doc/diff.texi: Reword "@option{-f} and @option{--foo}" to + "@option{-f} or @option{--foo}". + Use @acronym instead of @sc where appropriate. + (Specified Lines): Renamed from Specified Folding. + (Comparison, Blank Lines): + Clarify wordings for Blank Lines and Specified Lines nodes. + (Binary): Mention --verbose and --print-bytes. + (Tabs, sdiff Option Summary, diff Options): + New option --tabsize=COLUMNS. + + * lib/Makefile.am (EXTRA_DIST): Add fnmatch_loop.c. + (noinst_HEADERS): fnmatch_.h renamed from fnmatch.hin. + regex_.h renamed from regex.hin. + Add file-type.h. + (libdiffutils_a_SOURCES): Add file-type.c. + (DISTCLEANFILES): Remove fnmatch.hno, regex.hno. + + * lib/c-stack.c (__attribute__): New macro. + (EOVERFLOW): Define if not defined. + (stack_t): Define to struct sigaltstack if not defined or declared. + Include <sys/resource.h>, <ucontext.h> if available. + Include <stdio.h> if DEBUG. + Do not include <inttypes.h> or <stdint.h>. + (c_stack_die): Remove info and context args. All uses changed. + (segv_action): Likewise. + (alternate_signal_stack): Change uintmax_t to long, to ease porting. + (get_stack_location, min_address_from_argv, max_address_from_argv, + null_action): New functions. + (stack_base, stack_size): New vars. + (segv_handler): context arg may not be used. + Use global stack_base, stack_size if + ! HAVE_XSI_STACK_OVERFLOW_HEURISTIC. + Add debug code. + Invoke die (rather than segv_action) to exit. + (c_stack_action): Accept new argv arg, and simpler handler arg. + All uses changed. Move code into new functions above. + Allow null action. + [! (defined SA_ONSTACK && defined _SC_PAGESIZE)]: Assume all segvs + are stack overflows. + (main) [DEBUG]: Describe what output should be like. + + * lib/c-stack.h (siginfo_t, c_stack_die): Remove decl. + + * lib/file-type.c, lib/file-type.h: New files. These contain code + that was in src/diff.c, but is now librarified and spiffed up a + bit. Jim Meyering suggested this. + + * lib/fnmatch.c (alloca, __builtin_expect): Define for non-GCC hosts. + <strings.h>: Include only if HAVE_STRINGS_H. + <stddef.h>: Include if we include stdlib.h. + Do not comment out all code if ! HAVE_FNMATCH_GNU. + (getenv): Do not declare if HAVE_DECL_GETENV. + (__strchrnul, __wcschrnul): Remove; not used. + (MEMPCPY): Use mempcpy if not _LIBC; use memcpy if neither _LIBC + nor HAVE_MEMPCPY. + (FOLD) [HANDLE_MULTIBYTE]: Do not pass wide char to ISUPPER. + (STRLEN, STRCAT, MEMPCPY) [HANDLE_MULTIBYTE && !defined _LIBC]: + Use wcslen rather than __wcslen, and likewise for wcscat, wmempcpy. + (MEMPCPY) [HANDLE_MULTIBYTE]: Use wmempcpy if not _LIBC; use wmemcpy + if neither _LIBC nor HAVE_WMEMPCPY. + * lib/fnmatch_.h (__const): Do not define to empty, as this breaks + Sun cc. The code doesn't work with K&R anyway. + * lib/fnmatch_loop.c (struct patternlist.str): Size 1, not 0, + as C89 requires this. + (NEW_PATTERN): Use offsetof, not sizeof, since str now has size 1. + * lib/fnmatch_.h: Import from glibc fnmatch.h. + * lib/fnmatch.c, lib/fnmatch_loop.c: Import from glibc. + + * lib/posixver.c: Include posixver.h. + + * lib/regex_.h: Renamed from lib/regex.hin. + + * m4/c-stack.m4 (jm_PREREQ_C_STACK): Do not AC_REQUIRE + jm_AC_TYPE_UINTMAX_T and do not use uintmax_t. + Check for sys/resource.h, uccontext.h. + Check for decls and existence of getcontext, sigaltstack. + Check for stack_t. + + * m4/codeset.m4, m4/glibc21.m4, m4/lcmessage.m4: Remove. + + * m4/fnmatch.m4: Update to latest Autoconf CVS for AC_FUNC_FNMATCH_GNU. + * m4/gnu-source.m4: Likewise, for AC_GNU_SOURCE (renamed from + AC__GNU_SOURCE). + + * m4/mbstate_t.m4 (AC_TYPE_MBSTATE_T): Renamed from AC_MBSTATE_T. + All uses changed. Upgrade to recent Autoconf CVS. + + * m4/stdbool.m4 (AC_HEADER_STDBOOL): Do not cast pointer to + bool in integer constant expression; C99 does not allow it. + Reported by Bruno Haible. + + * po/LINGUAS: Add hu, pt_BR. + * po/hu.po, po/pt_BR.po: New files. + + * src/Makefile.am (noinst_HEADERS): Remove diff.h. + (DEFS): Remove. + (diff_sources): Add diff.h. + (MOSTLYCLEANFILES): New macro. + (cmp.$(OBJEXT) diff3.$(OBJECT) diff.$(OBJECT) sdiff.$(OBJECT)): Depend + on paths.h. + (paths.h): New rule. + + * src/analyze.c, src/cmp.c, src/diff.c, src/diff3.c, src/io.c, + src/sdiff.c: Include <file-type.h>. + + * src/cmp.c: Include paths.h. + (copyright_notice): Renamed from copyright_string. + Now a msgid, so that copyright symbol can be translated. + All uses changed. + * src/diff.c, src/diff3.c, src/sdiff.c: Likewise. + + * src/diff.c: Include posixver.h. + (TABSIZE_OPTION): New constant. + (main): Allow widths up to SIZE_MAX. + (filetype): Move to lib/file-type.c and rename to file_type. + All uses changed. + + * src/diff.c (longopts, main, usage): New option --tabsize=COLUMNS. + * src/io.c (find_and_hash_each_line): Likewise. + + * src/diff.h (TAB_WIDTH): Remove. + (tabsize): New decl. + (sdiff_half_width, sdiff_column2_offset): Now size_t rather than + unsigned int. + + * src/diff3.c (skipwhite, readnum): New functions. + (process_diff_control): Use them. + (SKIPWHITE, READNUM): Remove. + (read_diff): Don't worry about errno == ENOEXEC. + + * src/sdiff.c (catchsig, signal_handler, initial_action): Signal + handlers return void, not RETSIGTYPE, since we no longer support + K&R. + (TABSIZE_OPTION): New constant. + (longopts, usage, main): New option --tabsize=COLUMNS. + (cleanup): New arg signo. All uses changed. + (ck_editor_status, main, edit): Don't worry about ENOEXEC. + + * src/side.c (tab_from_to, print_half_line, print_1sdiff_line): + New option --tabsize=COLUMNS. + + * src/system.h (S_ISBLK, S_ISCHR, S_ISDIR, S_ISFIFO, S_ISREG, + S_ISSOCK): Remove; now in lib/file-type.h. + + * src/util.c (finish_output): Check for ENOEXEC. + (lines_differ, output_1_line): New option --tabsize=COLUMNS. + (analyze_hunk): If -b or -w is also specified, -B now considers + lines to be empty if they contain only white space. + +2002-04-05 Paul Eggert <eggert@sic.twinsun.com> + + * NEWS, configure.ac (AC_INIT): Version 2.8.1. + + * configure.ac (AC_HEADER_STDBOOL): Add. + (AC_CHECK_HEADERS): Remove stdbool.h. + * m4/stdbool.m4: New file. + * m4/prereq.m4 (jm_PREREQ_EXCLUDE): + Use AC_HEADER_STDBOOL rather than AC_CHECK_HEADERS(stdbool.h). + (jm_PREREQ_HASH): Likewise. + + * src/system.h (SSIZE_MAX): Define if limits.h doesn't. + + * src/analyze.c (diff_2_files): Assign PTRDIFF_MAX - 1 to a + size_t variable, just in case there's a problem with ptrdiff_t + versus size_t. + + * lib/cmpbuf.c (errno): Remove decl; K&R C is no longer supported. + Include limits.h. + (SIZE_MAX, SSIZE_MAX): Define if standard headers don't. + (MIN): New macro. + (block_read): Do not attempt to read more than SSIZE_MAX bytes, as the + resulting behavior is implementation-defined. Work around bug in + Tru64 5.1, which can't read more than INT_MAX bytes at a time. + * src/cmp.c (cmp): Use block_read instead of read, to work + around Tru64 5.1 bug. + * src/diff3.c (read_diff): Likewise. + * src/diff3.c: Include cmpbuf.h. + + * THANKS: Add Ulrich Drepper. + + * INSTALLME: Mention GNU texinfo. + + * doc/diff.texi: + Use new @copying directive. + Put @contents first, not last, since Texinfo now suggests this. + Fix bug in -w documentation noted by Karl Berry. + Mention links for speedup. + New node "Speedups" for future speedups. + Just say "Index", not "Concept Index". + +2002-03-26 Paul Eggert <eggert@twinsun.com> + + * src/Makefile.am: + (INCLUDES): Remove this obsolete macro, replacing it with: + (AM_CPPFLAGS): New macro. + +2002-03-26 Albert Chin-A-Young <china@thewrittenword.com> + + * src/Makefile.am (datadir): Remove, as it conflicts with --datadir. + +2002-03-26 Paul Eggert <eggert@twinsun.com> + + * doc/diff.texi (dircategory GNU packages): Fix typo: a "* " was + missing before the menu entry. Bug diagnosed by Adam Heath. + Also, put this dircategory after the Individual utilities dircategory, + to work around a compatibility problem with Debian install-info. + +2002-03-24 Eli Zaretskii <eliz@is.elta.co.il> + + * src/io.c (sip): Do not mishandle buffered count when reverting + to text mode. + +2002-03-23 Paul Eggert <eggert@twinsun.com> + + * NEWS, configure.ac (AC_INIT): Version 2.8. + * configure.ac (AC_PREREQ): 2.53. + * INSTALLME: Upgrade to gettext 0.11.1 and help2man 1.27. + + * doc/diff.texi: Upgrade the description of `patch' to GNU patch + 2.5.4, and revamp the documentation accordingly. + + * src/diff.c (main): Fix typo that prevented diff -y from working. + Bug reported by Mitsuru Chinen. + +2002-03-15 Paul Eggert <eggert@twinsun.com> + + * lib/c-stack.c (c_stack_die) [!HAVE_SIGINFO_T]: Don't use info. + Bug reported by Eli Zaretskii. + +2002-03-15 Eli Zaretskii <eliz@is.elta.co.il> + + * ms/config.sed: Tweak editing of install-info-am target. + +2002-03-12 Paul Eggert <eggert@twinsun.com> + + * NEWS, configure.ac (AC_INIT): Version 2.7.10. + + * NEWS: cmp -l -s and cmp -s -l are not allowed. + Deprecate diff -h, -H, -L, -P, --inhibit-hunk-merge. + + * configure.ac (jm_PREREQ_HARD_LOCALE): Add. + (AM_INIT_AUTOMAKE): Do not distribute shar file. + + * doc/diff.texi (Overview): byte != character. + (Detailed Context, Detailed Unified, Alternate Names, diff Options): + Do not document diff -L. + (Comparing Directories, Making Patches, diff Options): + Do not document diff -P. + (diff Performance, sdiff Option Summary, diff Options, sdiff Options): + Do not document diff -H. + (diff Performance, diff Options): Do not document --horizon-lines. + (cmp Options): Prefer -b to -c. + (cmp Options, diff Options, diff3 Options, patch Options, + sdiff Options): Put short options next to the similar long options. + Document --help, and use the same wording for --verbose. + (diff3 Options): Fix typo in description of -E, which used wrongly used + "-e" instead of "-E". + + * lib/hard-locale.c (alloca): Remove. + Include stdlib.h if available, for malloc. + (hard_locale): Use malloc, not alloca, so that we need not worry about + alloca issues. Test for storage allocation failure. + + * m4/prereq.m4 (jm_PREREQ): Add jm_PREREQ_HARD_LOCALE. + (jm_PREREQ_HARD_LOCALE): New macro. + + * src/cmp.c (specify_comparison_type): New function. + (check_stdout): "indices and codes" -> "byte numbers and values" + (main): Detect clashing options. + (cmp): Use "byte" rather than "char" if a translation for "byte" + is available, even when in the POSIX locale. + + * src/diff.c (option_help_msgid): Do not document -L, -P, + --horizon-lines, --inhibit-hunk-merge, -H. + * src/diff.h: -L -> --label + +2002-03-11 Paul Eggert <eggert@twinsun.com> + + * NEWS, configure.ac (AC_INIT): Version 2.7.9. + + * INSTALLME: Update to autoconf 2.53, automake 1.6, help2man + 1.25 with patch. + + * configure.ac (AC_INIT): + Change package name from diff to diffutils. + (AM_INIT_AUTOMAKE): Use new form, with option gnits, + rather than old from that duplicated AC_INIT. + (AM_MISSING_PROG): Add help2man. + (REGEX_MALLOC): Define. + (AC_CONFIG_FILES): Add man/Makefile. + + * Makefile.am (AUTOMAKE_OPTIONS): Remove. + * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove. + * lib/Makefile.am (AUTOMAKE_OPTIONS): Likewise. + * ms/Makefile.am (AUTOMAKE_OPTIONS): Likewise. + * src/Makefile.am (AUTOMAKE_OPTIONS): Likewise. + + * lib/c-stack.c: Include <errno.h> + (ENOTSUP): Define if errno.h doesn't. + (SA_NODEFER, SA_ONSTACK, SA_RESETHAND, SA_SIGINFO, SIGSTKSZ, + _SC_PAGESIZE, ALTERNATE_STACK_SIZE, stack_t, sigaltstack): + Remove; we now assume them all when + HAVE_XSI_STACK_OVERFLOW_HEURISTIC, so we don't need + substitutes. + (<ucontext.h>): Include only if HAVE_XSI_STACK_OVERFLOW_HEURISTIC. + (alternate_signal_stack): Now of size SIGSTKSZ. + (segv_handler): Simplify, under the assumption that + HAVE_XSI_STACK_OVERFLOW_HEURISTIC is nonzero. + (c_stack_action): Likewise. + (exit_failure) [DEBUG]: Initialize to 0, not 1. + (recurse, main) [DEBUG]: Remove main args. + + * m4/c-stack.m4 (AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC): Change + wording of message. Do not check for stdbool.h or ucontext.h, + or for ucontext_t or sigaction or sigaltstack. + + * po/LINGUAS: Add zh_TW. + + * Makefile.am (SUBDIRS): Add man. + * man/Makefile.am: New file. + * src/cmp.c (usage): Reword for help2man. + * src/diff.c (option_help_msgid): Likewise. + * src/diff3.c (option_help_msgid, usage): Likewise. + * src/sdiff3.c (option_help_msgid, usage): Likewise. + Reword for help2man. + + * THANKS: Add email address for Tower. + + * config/config.guess, config/config.sub, config/depcomp, + config/install-sh, config/mdate-sh, config/missing, + config/mkinstalldirs, config/texinfo.tex: Update + to recent version (maintained in other packages). + +2002-03-04 Bruno Haible <haible@ilog.fr> + + * m4/gettext.m4 (AM_GNU_GETTEXT): Set LIBINTL and LTLIBINTL to empty if + no preinstalled GNU gettext was found. + +2002-03-02 Eli Zaretskii <eliz@is.elta.co.il> + + * ms/config.sed: Tweak editing of install-info-am and + uninstall-info-am targets, to include 8+3-butchered names of Info + files. + +2002-02-28 Paul Eggert <eggert@twinsun.com> + + * NEWS, configure.ac (AC_INIT, AM_INIT_AUTOMAKE): Version 2.7.8. + + * doc/diff.texi: Add vr index. + Update copyright to 2002. + (Standards conformance): New chapter. + (Binary): Differing binary files are trouble unless the user asked for + brief output. + (Detailed Context): Prefer ISO time stamp format in discussion. + (Detailed Unified, Pagination): Likewise. + (Less Context): Likewise. Also use short option. + (Alternate Names): Separate option from arg. + (Making Patches): Mention -U 2. + (diff Options): Deprecate -LINES, as POSIX 1003.1-2001 does not + allow it. + + * INSTALLME: Update advice for Solaris installation problems. + We no longer use a test version of gettext. + Autoconf test version updated from 2.52f to 2.52h. + POSIX 1003.1-2001 patch for Automake. + + * configure.ac (AC__GNU_SOURCE): Add this, + replacing AH_VERBATIM of _GNU_SOURCE. + (tempname): Use AC_LIBOBJS, not LIBOBJS=, as now required by autoconf. + (jm_PREREQ_C_STACK): Add. + (AC_CONFIG_FILES): Remove intl/Makefile. + (AM_GNU_GETTEXT): Add external arg, from gettext 0.11. + + * lib/c-stack.c, lib/c-stack.h, lib/exitfail.c, lib/exitfail.h, + lib/posixver.c, lib/posixver.h, m4/c-stack.m4, m4/gnu-source.m4, + po/cs.po, po/ja.po: New files. + + * intl/ChangeLog, intl/Makefile.in, intl/VERSION, + intl/bindtextdom.c, intl/config.charset, intl/dcgettext.c, + intl/dcigettext.c, intl/dcngettext.c, intl/dgettext.c, + intl/dngettext.c, intl/explodename.c, intl/finddomain.c, + intl/gettext.c, intl/gettextP.h, intl/gmo.h, intl/hash-string.h, + intl/intl-compat.c, intl/l10nflist.c, intl/libgnuintl.h, + intl/loadinfo.h, intl/loadmsgcat.c, intl/localcharset.c, + intl/locale.alias, intl/localealias.c, intl/localename.c, + intl/ngettext.c, intl/os2compat.c, intl/os2compat.h, intl/osdep.c, + intl/plural-eval.c, intl/plural-exp.c, intl/plural-exp.h, + intl/plural.c, intl/plural.y, intl/ref-add.sin, intl/ref-del.sin, + intl/textdomain.c, m4/isc-posix.m4, m4/libtool.m4: Remove. + + * ABOUT-NLS: Update to Gettext 0.11. + + * Makefile.am (SUBDIRS): Remove intl. + + * config/config.guess, config/config.rpath, config/config.sub, + config/texinfo.tex, config/depcomp, config/texinfo.tex, + lib/tempname.c: Update to latest version from other packages. + + * lib/xalloc.h (xalloc_exit_failure): Remove; subsumed by exit_failure. + * lib/xmalloc.c: Include exitfail.h. + (xalloc_exit_failure): Remove; subsumed by exit_failure. + All uses changed. + + * lib/Makefile.am (noinst_HEADERS): Add c-stack.h, exitfail.h. + (libdiffutils_a_SOURCES): Add c-stack.c, exitfail.c, quotesys.c. + (INCLUDES): Remove. + + * lib/cmpbuf.h (buffer_lcm): New arg LCM_MAX. + * lib/cmpbuf.c: Include errno.h. + (errno): Declare if !STDC_HEADERS. + Include signal.h. + (SA_RESTART): Define if not already defined. + Include <inttypes.h>. + (PTRDIFF_MAX): Define if not already defined. + (TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM): Likewise. + (block_read): Accommodate ancient AIX hosts that set errno to EINTR + after uncaught SIGCONT. + (buffer_lcm): Return a reasonable size if the multiple is too large. + New arg LCM_MAX. All callers changed. + + * lib/hard-locale.c: Include "hard-locale.h". + (hard_locale): Ignore ENABLE_NLS, since we want to operate on + locales other than LC_MESSAGES. + + * m4/prereq.m4 (jm_PREREQ): Add jm_PREREQ_POSIXVER. + (jm_PREREQ_POSIXVER): New macro. + + * m4/setmode.m4 (AC_FUNC_SETMODE_DOS): + Check for fcntl.h and unistd.h unconditionally. + Suggested by Bruno Haible. + + * po/LINGUAS: Add cs, ja. + * po/POTFILES.in: Add lib/c-stack.c, src/dir.c. + + * src/Makefile.am (datadir): @DATADIRNAME@ -> share. + (INCLUDES): Remove intl. + (LDADD): Change INTLLIBS to LIBINTL. + No longer need to link libdiffutils.a twice. + + * src/analyze.c (diff_2_files): + Avoid arithmetic overflow in buffer size calculation. + + * src/cmp.c: Include c-stack.h, exitfail.h. + (hard_locale_LC_MESSAGES): Depend on ENABLE_NLS. + (try_help, check_stdout, main, cmp): 2 -> EXIT_TROUBLE. + (main): Check for stack overflow. + 0 -> EXIT_SUCCESS. + 1 -> EXIT_FAILURE. + (cmp): Likewise. + Accommodate ancient AIX hosts that set errno to + EINTR after uncaught SIGCONT. + + * src/context.c (pr_context_hunk): + Do not dump core if an enormous context causes an + arithmetic overflow. + (pr_unidiff_hunk): Likewise. + (find_hunk): Likewise. + + * src/diff.h: unsigned -> unsigned int. + * src/diff.c: Include c-stack.h, exitfail.h. + Do not include signal.h. + (specify_style, specify_value): Bring these routines back, as POSIX + requires that the order of options not matter. + (shortopts): New constant. + (group_format_option, line_format_option): New constants. + (main): 0 -> EXIT_SUCCESS, 1 -> EXIT_FAILURE, 2 -> EXIT_TROUBLE. + Ensure that order of options does not matter. + Check for stack overflow. + If contexts overflow, substitute LIN_MAX, as that's good enough. + If multiple contexts are specified, use their maximum. + -c is equivalent to -C 3 now, instead of having an implicit context; + likewise for -u and -U 3. + Use specify_style and specify_value. + (SIGCHLD): Do not define; now done in a header. + Use new style time stamp format for -u / -U. + Reject numeric-string options if operating in POSIX 1003.1-2001 mode. + Avoid overflow problems with tab width. + Simplify from-file and to-file code. + (usage): Do not mention obsolete options. + (filetype): Do not mention whether a file is executable. + Add typed memory objects. + (compare_files): 0 -> EXIT_SUCCESS, 1 -> EXIT_FAILURE, 2 -> + EXIT_TROUBLE. + + * src/diff3.c: Include c-stack.h, exitfail.h. + (ALLOCATE): Remove. All uses changed to xmalloc, or to xmalloc plus + an overflow check. + (myread): Remove. + (main): Check for stack overflow. + 0 -> EXIT_SUCCESS, 1 -> EXIT_FAIULRE, 2 -> EXIT_TROUBLE. + (try_help): Likewise. + (process_diff): Check for integer overflow, to avoid core dumps. + 2 -> EXIT_TROUBLE. + (read_diff): Exit with status 126 if the file is not executable, + for compatibility with POSIX 1003.1-2001. + Accommodate ancient AIX hosts that set errno to EINTR after uncaught + SIGCONT. + Check for integer overflow to avoid core dumps. + (fatal, perror_with_exit): 2 -> EXIT_TROUBLE. + + * src/dir.c (dir_read): + Ignore st_size of directories: POSIX says it's garbage. + Check for integer overflow to avoid core dumps. + (diff_dirs): 0 -> EXIT_SUCCESS, 2 -> EXIT_TROUBLE. + + * src/ifdef.c: Include <xalloc.h>. + (format_group, print_ifdef_lines): Avoid core dumps with bad formats. + (do_printf_spec): Avoid alloca. + + * src/io.c (sip): + Avoid integer overflow and core dumps if buffer alignments are + preposterously incompatible. + (slurp): Do not dump core if the file is growing as we read it. + If a regular file grows, keep reading until we catch up with its EOF. + (find_and_hash_each_line): Check for integer overflow to avoid cores. + (GUESS_LINES): Remove. + (guess_lines): New function. Avoid integer overflow. + (find_identical_ends): Use it. + Avoid integer overflow and possible core dumps. + + * src/sdiff.c: Include c-stack.h, exitfail.h. Do not include signal.h. + 0 -> EXIT_SUCCESS, 1 -> EXIT_FAILURE, 2 -> EXIT_TROUBLE. + (ck_editor_status): New function. + (main): Check for stack overflow. + Adopt POSIX convention for subsidiary programs not found. + (diffarg): Check for integer overflow to avoid core dumps. + (trapsigs): Remove SA_INTERRUPT special case; now done by header. + (SIGCHLD): Likewise. + (edit): Adopt POSIX convention for subsidiary programs not found. + + * src/side.c: unsigned -> unsigned int. + + * src/system.h: Don't use alloca or include <alloca.h>. + unsigned -> unsigned int + (EXIT_SUCCESS, EXIT_FAILURE, EXIT_TROUBLE): Define if not defined. + Include signal.h. + (SA_RESTART): Define if not defined. + (SIGCHLD): Likewise. + + * src/util.c: 2 -> EXIT_TROUBLE. + Adopt POSIX convention for ENOEXEC and exit status 126. + unsigned -> unsigned int + +2002-01-24 Paul Eggert <eggert@twinsun.com> + + * NEWS, configure.ac (AC_INIT, AM_INIT_AUTOMAKE): Version 2.7.7. + + * intl/plural.c: Regenerate with Bison 1.31. + + * ABOUT-NLS, intl/*: Update to Gettext 0.11-pre5++. + * INSTALL: Update to Autoconf 2.52f. + + * INSTALLME: New file. + * Makefile.am (EXTRA_DIST): Add config/config.rpath, INSTALLME. + (DISTCLEANFILES): Remove. + * NEWS: Reformat for imminent 2.8 release. + * README: Mention INSTALLME. + * README-alpha: Move most of contents to INSTALLME. + * THANKS: Add Bruno Haible, Jim Meyering, and Eli Zaretskii. + + * config: New subdirectory, containing the following files from .: + config.guess, config.sub, depcomp, missing, install-sh, mkinstalldirs. + Move the following files here from doc: texinfo.tex, mdate-sh. + * config/config.guess, config/config.sub, config/texinfo.tex: + Update to latest version from FSF. + * config/config.rpath: New file, from Gettext 0.11-pre5++. + + * configure.ac (AC_INIT): Use new 3-arg form. + (AC_CONFIG_SRCDIR): Specify src/diff.c here, not in AC_INIT. + (ALL_LINGUAS): Remove: now in po/LINGUAS as per Gettext 0.11. + (AC_CONFIG_AUX_DIR): New macro invocation. + + * lib/Makefile.am (noinst_HEADERS): Add gettext.h. + * lib/gettext.h: New file, from Gettext 0.11-pre5++. + * lib/prepargs.c: Include <string.h>. Reported by Bruno Haible. + + * m4/codeset.m4, m4/gettext.m4, glibc21.m4, iconv.m4, isc-posix.m4, + lcmessage.m4, progtest.m4: Upgrade to Gettext 0.11-pre5++. + * m4/lib-ld.m4, m4/lib-link.m4, m4/lib-prefix.m4: New files, from + Gettext 0.11-pre5++. + + * po/LINGUAS: New file. + * po/Makefile.in.in: Upgrade to Gettext 0.11-pre5++. + * po/Makevars, po/Rules-quot, po/boldquot.sed: New files, + from Gettext 0.11-pre5++. + + * src/cmp.c (copyright_string): Update to 2002. + * src/diff.c (copyright_string): Likewise. + * src/diff3.c (copyright_string): Likewise. + * src/sdiff.c (copyright_string): Likewise. + + * src/cmp.c (specify_ignore_initial): Renamed from + parse_ignore_initial, with different signature, to take the + maximum of multiple options rather than the last one. + All uses changed. + + * src/cmp.c (bytes, specify_ignore_initial, cmp): Use UINTMAX_MAX + instead of (uintmax_t) -1, to avoid warnings on some compilers. + * src/io.c (file_block_read): Likewise, for SIZE_MAX. + + * src/cmp.c (usage): Reformat messages to ease translation. + * src/diff3.c (usage): Likewise. + * src/sdiff.c (usage): Likewise. + + * src/cmp.c (main): Two files with the same name are identical + only if the same offset is specified. + (block_compare_and_count): Avoid cast to unsigned char. + + * src/diff3.c (main): Remove unused variable. + + * src/dir.c: Include <setjmp.h> + (struct dirdata): New member nnames. + (locale_specific_sorting, failed_strcoll): New vars. + (dir_read): Renamed from dir_sort. Don't sort the dir. + Set new nnames member of struct dirdata. All callers changed. + (compare_names): Don't check for errno after strcasecmp. + Use strcoll only if locale_specific_sorting is nonzero. + If strcoll fails, longjmp out rather than returning a value + that might result in an invalid comparison function that might + make qsort dump core. + (diff_dirs): Sort the directory ourselves. Use setjmp to recover + from strcoll failure, falling back on native byte comparison. + Make local variables volatile if they need to preserve their value + after setjmp/longjmp. + + * src/sdiff.c (handler_index_of_SIGINT, handler_index_of_SIGPIPE): + New macros. + (main): Do not confuse signal numbers with their indices. + Bug reported by Bruno Haible. + (edit): Cat lin to long before printing with %ld, since lin might + be narrow than long. + + * src/system.h (UINTMAX_MAX): New macro. + Include gettext.h, not libgettext.h. + (N_): Do not wrap arg in parentheses. Fix from Bruno Haible. + + * src/util.c (finish_output): Ensure that werrno is initialized. + (lines_differ): Have an explicit do-nothing case for + IGNORE_NO_WHITE_SPACE, to pacify gcc -Wall. + +2001-12-29 Eli Zaretskii <eliz@is.elta.co.il> + + * src/sdiff.c (interact): After extracting rlen from the editor + command, test for a terminating null character, not for a newline. + + * ms/config.bat: Allow longer source directory names without + overflowing the line length limits. Create the cache in the + build directory, not in the source directory + * ms/config.sed: Fix AC_CONFIG_LINKS for when symlinks are + unavailable. + +2001-12-23 Paul Eggert <eggert@twinsun.com> + + * NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 2.7.6. + + * configure.ac (ALL_LINGUAS): Add tr. + + * src/util.c (begin_output): + Have child exit with status 127 rather than reporting + failure on its own. Set errno to 0 before invoking popen. + (finish_output): Report errno on pclose failure. + Distinguish between subsidiary program not found, and failure. + + * src/sdiff.c (not_found, execdiff): Remove. + (DIFF_PROGRAM_OPTION): New constant. + (longopts, option_help_msgid, main): Add --diff-program=PROGRAM. + (check_stdout): New function. + (main): Remove DIFF_PROGRAM. Check stdout after printing version. + Use check_stdout after printing help. Use execvp/perror_fatail rather + than execdiff. Set errno to 0 before invoking popen. + Check for pclose failure properly. + (main, edit): If child exec fails, exit with 127 rather than trying to + print diagnostic. + Distinguish between subsidiary program failing and not being found. + (edit): Handle signals the same way, regardless of whether we're using + system or fork+exec. Check for system returning -1. + + * src/diff3.c (DIFF_PROGRAM_OPTION, HELP_OPTION): New constants. + (longopts, main): Use them. + (longopts, main, option_help_msgid): New option --diff-option=PROGRAM. + (main): Remove DIFF_PROGRAM support. + Check stdout after printing version. + (check_stdout): Report errno info if fclose fails. + (read_diff): Have child exit with status 127 when program is not found, + rather than trying to have the child report failure. Check for + pclose returning -1. + + * src/diff.c (DEFAULT_WIDTH): Remove. + (main): Use 130 instead of DEFAULT_WIDTH, since it's not really + builder-settable. Do not prepend DIFF_OPTIONS. + (check-stdout): If fclose (stdout) fails, print errno info. + (option_help_msgid): Default context is 3, not 2. + (usage): Work even if ptrdiff_t is wider than int. + + * doc/diff.texi (diff Options): Remove DIFF_OPTIONS. + (Invoking diff3, Invoking sdiff): Remove DIFF_PROGRAM. + (diff3 Options, sdiff Options): Add --diff-program. + + * src/cmp.c (valid_suffixes): + Add '0', to support suffixes like "MB" and "MiB". + (check_stdout): Don't assume that the translations of "write failed" + and of "standard output" lack '%'. + (main): Check stdout after printing version. + + * lib/setmode.c: [HAVE_FCNTL_H && HAVE_SETMODE_DOS]: Include <fcntl.h>. + [!HAVE_SETMODE_DOS]: Do not include <unistd.h>. + (set_binary_mode): Return mode (not 1) if fd is a tty. + Do not assume that O_TEXT is zero. + + * doc/diff.texi (cmp Options): + In byte counts, a plain suffix (without any integer) + is assumed to modify the integer 1. Index terms like "kibibyte". + Document plain "k". + + (Reporting Bugs): Mention bug-report archive and test version + location. Ask for "diff --version" in bug reports. + +2001-12-13 Paul Eggert <eggert@twinsun.com> + + * src/diff.c (DEFAULT_WIDTH): Remove; couldn't be changed without + also changing option_help_msgid. All uses replaced with 130. + + * lib/setmode.c: Include fcntl.h and unistd.h only if + HAVE_SETMODE_DOS. + (setmode): Assume a file is binary unless the mode is O_TEXT. + * ms/README: Fix minor typos. + +2001-12-13 Eli Zaretskii <eliz@is.elta.co.il> + + * ms/README: New file. + + * lib/setmode.c (set_binary_mode) [HAVE_SETMODE_DOS]: Don't assume + O_TEXT has a zero value. If FD is a terminal device, do nothing + and return MODE, thus pretending that it was already in the + requested MODE. + [HAVE_FCNTL_H]: Include fcntl.h (needed for O_BINARY). + + * ms/config.sed: Remove the split prevention of config.status. + Fix Sed commands for converting absolute file names into + top_srcdir-relative ones. + + * ms/config.bat: Fix typos. + +2001-12-12 Neal H Walfield <neal@cs.uml.edu> + + * diff.c (option_help_msgid): Correct the default context width + from 2 to 3. + +2001-12-11 Paul Eggert <eggert@twinsun.com> + + * m4/Makefile.am.in: Remove jm-glibc-io.m4 + + * NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 2.7.5. + + * configure.ac (PR_PROGRAM): Use AC_DEFINE_UNQUOTED, so that + $PR_PROGRAM is expanded by sh. + (ptrdiff_t, ssize_t): Use AC_CHECK_TYPE with a default of int, + not AC_CHECK_TYPES. + (jm_AC_DOS, AC_FUNC_SETMODE_DOS): New macros. + (AC_CONFIG_FILES): Add ms/Makefile. + + * doc/diff.texi: Add --no-ignore-file-name-case. + File name case sensitivity now affects file name exclusion. + Fix typos. + + * src/util.c: Include dirname.h. + (dir_file_pathname): Use base_name rather than file_name_lastdirchar. + + * src/system.h (S_IXUSR, S_IXGRP, S_IXOTH): New macros. + Include <libgettext.h> rather than rolling it ourselves. + (file_name_lastdirchar, HAVE_SETMODE, set_binary_mode): Remove. + + * src/sdiff.c: Include <dirname.h>. + (expand_name): Use base_name rather than file_name_lastdirchar, for + portability to DOS. + (main): Initialize xalloc_exit_failure before possibly invoking + any memory allocator. + + * src/io.c: Include setmode.h. + + * src/diff3.c (main): + Initialize xalloc_exit_failure before possibly invoking any memory + allocator. + + * src/diff.c: Include dirname.h, setmode.h. + + (main): Later values and/or styles now silently override earlier. + (specify_value, specify_style): Likewise. All callers changed. + Remove. + (binary, main, option_help_msgid, compare_files): + HAVE_SETMODE -> HAVE_SETMODE_DOS. + (NO_IGNORE_FILE_NAME_CASE_OPTION): New constant. + (longopts, main, option_help_msgid): Support it. + (exclude_options): New function. + (main): Use it. Initialize xalloc_exit_failure before potentially + allocating memory. + + (filetype): Distinguish executable files from others, as POSIX + suggests. + + (compare_files): Use base_name instead of file_name_lastdirchar. + + * src/cmp.c: Include <hard-locale.h>, <setmode.h>. + (hard_locale_LC_MESSAGES): New macro. + (sprintc): Remove int width arg; it's now the caller's responsibility + to pad. All callers changed. + (stat_buf): New static var; was formerly a local var in 'main'. + (valid_suffixes): Add 'K', for 'KiB'. + (option_help_msgid): Don't confuse bytes with characters. + (main): Set xalloc_exit_failure before invoking anything that might + allocate memory. Fix bug: -n was incorrectly ignored when optimizing + the case of regular files with different lengths. + (cmp): Use an index column wide enough to store this comparison's + indexes. In locales other than the POSIX locale, say "byte" + rather than "char". + + * ms/config.bat: pc -> ms + + * ms/Makefile.am, m4/setmode.m4, lib/setmode.c, lib/setmode.h: + New file. + + * lib/Makefile.am (noinst_HEADERS): Add dirname.h, setmode.h. + (libdiffutils_a_SOURCES): Add basename.c, setmode.c. + + * Makefile.am (SUBDIRS): Add ms. + +2001-12-10 Paul Eggert <eggert@twinsun.com> + + * m4/fnmatch.m4: Test for FNM_CASEFOLD. + +2001-12-03 Paul Eggert <eggert@twinsun.com> + + * lib/posix/regex.h: Fix copyright notice. + +2001-12-03 Paul Eggert <eggert@twinsun.com> + + * NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 2.7.4. + + * diff.texi (direntry, Overview, Comparison, Binary, Invoking cmp): + Use "byte" rather than "character" when talking about cmp, since + it compares bytes, not character. + (Invoking cmp): New trailing operands FROM-SKIP and TO-SKIP. + -i or --ignore-initial now accepts FROM-SKIP:TO-SKIP. + New option -n or --bytes. + Count operands now may be in octal or hex, and may be followed by a + size multiplier. + + * configure.ac (DEFAULT_DIFF_PROGRAM): + Define to "diff", not "$bindir/diff" (which didn't work anyway). + (AC_CHECK_MEMBERS): Add struct stat.st_blksize, struct stat.st_rdev. + (AC_STRUCT_ST_BLKSIZE, AC_STRUCT_ST_RDEV): Remove; obsolescent. + (AC_FUNC_FORK): Use this, instead of obsolescent AC_FUNC_VFORK. + (AC_CONFIG_FILES, AC_CONFIG_COMMANDS): Add. + (AC_OUTPUT): Remove args; they were obsolescent. + + * util.c (setup_output, begin_output, finish_output): + HAVE_FORK -> HAVE_WORKING_FORK || HAVE_WORKING_VFORK. + * sdiff.c (diffpid, cleanup, main, edit): Likewise. + * diff3.c (read_diff): Likewise. + + * system.h (STAT_BLOCKSIZE): + Use HAVE_STRUCT_STAT_ST_BLKSIZE, not HAVE_ST_BLKSIZE. + (vfork): New macro. + (HAVE_FORK): Remove. + (set_binary_mode): New macro. + + * sdiff.c (main): HAVE_VFORK -> HAVE_WORKING_VFORK. + (edit): Reopen the temporary file after the editor has run, in case + the editor operates by unlinking the old file and linking a new one. + (P_tmpdir): Rename from PVT_tmpdir; this fixes a typo. + All uses changed. + + * io.c (sip, read_files): + Remove tests for HAVE_SETMODE; use set_binary_mode + instead of setmode. + (sip): Fix typo in backward lseek when reverting to text mode. + + * config.site, config.sed, config.bat: New file. + + * Makefile.am (EXTRA_DIST): Add xstrtol.c. + (noinst_HEADERS): Add xstrtol.h. + (libdiffutils_a_SOURCES): Add xstrtoumax.c. + + * cmp.c: <xstrtol.h>: Include. + (ignore_initial): Now an array with 2 elements. All uses changed. + (bytes): New var. + (HELP_OPTION): New constant. + (long_options, main): Use it. + (long_options, option_help_msgid, main, cmp): + Add support for -n or --bytes. + (parse_ignore_initial): New function. + (option_help_msgid, main): Add -i M:N. + (usage, main): Add two optional trailing operands, a la BSD. + (main): setmode -> set_binary_mode. + (cmp): Report byte number of what we've seen, not of the entire file. + This is to be consistent with the line number, which is always relative + with what we've seen. + +2001-12-02 Paul Eggert <eggert@twinsun.com> + + * diff.c (main, compare_files): setmode -> set_binary_mode. + + * xstrtol.c (__xstrtol): Don't accept 'Ki'; require 'KiB'. + + * xstrtol.c (__xstrtol): Add support for IEC 60027-2. + +2001-11-25 Paul Eggert <eggert@twinsun.com> + + * NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 2.7.3. + + * README-alpha: New file. + + * src/Makefile.am (INCLUDES): Add -I../lib, for regex.h. + + * configure.ac: + Don't set LIB_CLOCK_GETTIME to 'none required'; set it to + the empty string instead. + + * lib/Makefile.am (EXTRA_DIST): Add strtoimax.c, strtol.c. + + * Makefile.am (SUBDIRS): Put intl before lib, so that libintl.h exists. + + * lib/Makefile.am (noinst_HEADERS): Add unlocked-io.h. + + * configure.ac (__EXTENSIONS__): New define, for the unlocked macros. + + * README: Add copyright notice. + Remove stuff that doesn't apply any more. + + * doc/diff.texi: offsets -> indices for cmp + + * src/cmp.c (option_help_msgid): offsets -> indices + + * src/diff.c (option_help_msgid): + Don't mention --binary on POSIX hosts. + + * src/sdiff.c (STRIP_TRAILING_CR_OPTION): New constant. + (longopts, option_help_msgid, main): Add -E, --ignore-tab-expansion, + --strip-trailing-cr. + + * doc/diff.texi: Change direcategory from Utilities to GNU Packages. + Add individual utilities. + Switch to Free Documentation License. + @code -> @command + @samp -> @option + GNU -> @sc{gnu} + Expand tabs to spaces, except when in an example that actually + uses tabs. + Prefer @node with just one arg. + Document -E or --ignore-tab-expansion, --strip-trailing-cr, + --ignore-file-name-case. + Regular expressions are now grep style, not Emacs style. + cmp's -c or --print-chars option is now -b or --print-bytes. + Time stamps now depend on LC_TIME. + -p now implies ^[[:alpha:]$_]. + Flags now include ' and 0. + cmp -i is an alias for --ignore-initial + Document --from-file, --to-file. + Document DIFF_OPTIONS. + + * configure.ac (AC_CHECK_FUNCS): Add gettimeofday, clock_gettime. + (LIB_CLOCK_GETTIME): New subst. + + * src/system.h: Assume C89 or better. + (_GNU_SOURCE): Remove; config.h now defines it. + (alloca): Declare like coreutils does it. + (verify, TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM, O_RDWR, + S_IRUSR, S_IWUSR): New macros. + (STAT_BLOCKSIZE): Parenthesize definiens. + <inttypes.h>: Include if HAVE_INTTYPES_H. + (CHAR_MAX, INT_MAX): Remove. + (PTRDIFF_MAX, SIZE_MAX): New macros. + (strtoumax): New decl. + Include stddef.h. + (bzero): Remove. + (bindtextdomain, textdomain, N_): New macros. + (ISPRINT, ISSPACE): Remove ifndef wrappers. + (ISUPPER, ISDIGIT): Remove. + (TOLOWER): New macro. + (MIN): Renamed from min; all callers changed. + (MAX): Likewise, from max. + (lin): New type. + (LIN_MAX): New macro. + (file_name_cmp): Renamed from filename_cmp. All callers changed. + (file_name_lastdirchar): Renamed from file_name_lastdirchar. + All callers changed. + (could_be_mvfs_stat_bug, could_be_nfs_stat_bug, + dev_may_have_duplicate_ino): Remove. + (HAVE_SETMODE, NULL_DEVICE): New macros. + (same_file): Do not check attributes. + (same_file_attributes): New macro. + + * src/util.c: Assume C89 or better. + int -> bool for booleans. + int -> lin for line numbers. + int -> size_t for sizes. + Use angle-brackets when including quotesys.h. + Include error.h, regex.h, xalloc.h. + (message5): sizeof -> offsetof + (begin_output): Invoke pr without -f. + (lines_differ): Renamed from line_cmp, and return bool not 3-way int. + All callers changed. + Add support for IGNORE_TAB_EXPANSION. + (change_letter): Now an array rather than a function. All + callers changed. + (translate_range): Translate line numbers to long, not lin, + for convenience with printf. + (analyze_hunk): Return enum changes instead of a count of + inserts and deletes. All callers changed. + (zalloc): New function. + + * src/side.c: Assume C89 or better. + int -> bool for booleans. + int -> lin for line numbers. + + * src/sdiff.c: Assume C89 or better. + int -> bool for booleans. + int -> lin for line numbers. + Use angle-brackets when including getopt.h, quotesys.h. + Include error.h, freesoft.h, stdio.h, xalloc.h. + (copyright_string): Use only most recent year. + (authorship_msgid, option_help_msgid): Wrap in N_(). + + (tmpname): Now volatile. + (tmpmade): Remove. + (tmp): New var. + (private_tempnam, exists, letters): Remove. + (temporary_file): New function. + (edit): Use it. + (interact): Use strtoumax, not atoi. + + * src/normal.c: Assume C89 or better. + int -> lin for line numbers. + + * src/io.c: Assume C89 or better. + int -> bool for booleans. + int -> lin for line numbers. + int -> size_t for sizes. + Use angle-brackets when including cmpbuf.h. + Include regex.h, xalloc.h. + (word): Remove; now done in system.h. + (hash_value): New type; use it instead of 'unsigned' for hash values. + (file_block_read): New function. + (sip, slurp): Use it. Now static. + (sip): Ensure block size is a multiple of word size. Clear eof flag. + (slurp): Use xalloc_die to report memory exhaustion. + (find_and_hash_each_line): Use TOLOWER instead of _tolower. + Add support for IGNORE_TAB_EXPANSION. + (prepare_text_end): Strip trailing CR if requested. + (find_identical_ends): Prepare the text only once, + if they're duplicates. + Let the compiler take advantage more of the fact that the buffers are + word-aligned. + (primes): Remove. + (prime_offset): New var. + (read_var): Use prime_offset instead of primes. + Use zalloc instead of xmalloc + bzero. + + * src/ifdef.c: Assume C89 or better. + int -> lin for line numbers. + (format_group): Use strtoumax to parse line numbers. + (format_group, print_ifdef_lines): Use do_printf_spec to + handle printf specs. + (groups_letter_value): Don't use _tolower; it's locale-dependent. + (do_printf_spec): Renamed from scan_printf_spec; now does the printing. + + * src/ed.c: Assume C89 or better. + int -> lin for line numbers (or 'long' when that's more convenient). + (print_ed_hunk): Fix bug when handling double-dot inserts. + + * src/dir.c: Assume C89 or better. + int -> bool for booleans. + Include error.h, exclude.h, xalloc.h. + + (dir_sort): Return 0 on error, 1 on success. All callers changed. + compare_names -> compare_names_for_qsort. + + (compare_names): Try strcasecmp if ignore_file_name_case. Then try + strcoll. Use file_name_cmp only as a last resort. Warn about + strcasecmp or strcoll failure. + (compare_names_for_qsort): New function. + + (diff_dirs): Use compare_names rather than filename_cmp. + + * src/diff3.c: Assume C89 or better. + int -> bool for booleans. + int -> lin for line numbers. + Use angle-brackets when including getopt.h, quotesys.h. + Include error.h, freesoft.h, inttostr.h, xalloc.h. + (copyright_string): Use only most recent year. + (authorship_msgid, option_help_msgid): Wrap in N_(). + + Rename the following variables for consistency with user-visible + option spellings. All uses changed. + (text): Renamed from always_text. + (initial_tab): Renamed from tab_align_flag. + + (horizon_lines): Remove. Remove all uses. + + (main): Invoke bindtextdomain and textdomain after setlocale. + Rename "DIFF" to "DIFF_PROGRAM". + + Try to compare file0 to file1, because this is where changes are + expected to come from. Diffing between these pairs of files is more + likely to avoid phantom changes from file0 to file1. + However, use file2 as the common file if this is a 3-way diff, + for backward compatibility. Suggested by Karl Tomlinson. + + (create_diff3_block): Use xcalloc instead of malloc + bzero. + + (INT_STRLEN_BOUND): Remove; now in system.h. + + (read_diff): Always use --horizon-lines=100 rather than trying + to guess it. + Do not pass --inhibit-hunk-merge. + Minimum chunk size is 1, not 8KiB. + Use xalloc_die to report memory exhaustion. + (undotlines): Use long for start, not int. + + * src/diff.h: Assume C89 or better. + int -> bool for booleans. + int -> lin for line numbers. + Don't include regex.h. + (enum changes): New enum. + (enum line_class): Remove; subsumed by enum changes. + (enum output_style): New constant OUTPUT_UNSPECIFIED. + + (ignore_space_change_flag, ignore_all_space_flag): Remove. + (ignore_white_space): New decl, subsuming the above two. All + uses changed. + + Rename the following decls for consistency with user-visible + option spellings. All uses changed. + (text): Renamed from always_text_flag. + (ignore_blank_lines): Renamed from ignore_blank_lines_flag. + (ignore_case): Renamed from ignore_case_flag. + (brief): Renamed from no_details_flag. + (initial_tab): Renamed from tab_align_flag. + (expand_tabs): Renamed from tab_expand_flag. + (starting_file): Renamed from dir_start_file. + (paginate): Renamed from paginate_flag. + (sdiff_merge_assist): Renamed from sdiff_help_sdiff. + (left_column): Renamed from sdiff_left_only. + (suppress_common_lines): Renamed from sdiff_skip_common_lines. + (speed_large_files): Renamed from heuristic. + (minimal): Renamed from no_discards. + + (inhibit_hunk_merge): Remove. + + (strip_trailing_cr, excluded, time_format): New decls. + + (files_can_be_treated_as_binary): Renamed from ignore_some_changes. + + (group_format, line_format): Now char const *[], not char *[]. + + (struct file_data): Buffer is now word*, not char*, as it's always + aligned and this can help the compiler. buffered_chars -> buffered + (since it's a byte count, not a char count). All uses changed. + New member `eof'. + + (FILE_BUFFER): New macro. + + (excluded_filename, error, free_software_msgid): Remove decls; now in + other .h files. + + (sip, slurp): Remove decls. + (file_block_read): New decl. + (change_letter): Now an array, not a function. + (lines_differ): Renamed from line_cmp. + (analyze_hunk): Now returns enum changes rather than two change counts. + + * src/Makefile.am (diff_LDADD): New symbol. + + * src/diff.c: Assume C89 or better. + int -> bool for booleans. + long -> off_t for line numbers. + Use angle-brackets when including getopt.h, fnmatch.h, quotesys.h. + Include error.h, exclude.h, freesoft.h, hard-locale.h, prepargs.h, + regex.h, signal.h, xalloc.h. + (copyright_string): Use only most recent year. + (authorship_msgid, option_help_msgid): Wrap in N_(). + + Rename the following variables for consistency with user-visible + option spellings. All uses changed. + (binary): Renamed from binary_flag. + (new_file): Renamed from entire_new_file_flag. + (unidirectional_new_file): Renamed from unidirectional_new_file_flag. + (report_identical_files): Renamed from print_file_same_flag. + + (numeric_arg): Remove. + + (exclude, exclude_alloc, exclude_count, excluded_filename, add_exclude, + add_exclude_file): + Remove; now done by exclude.h. + + (BINARY_OPTION, FROM_FILE_OPTION, HELP_OPTION, HORIZON_LINES_OPTION, + IGNORE_FILE_NAME_CASE_OPTION, INHIBIT_HUNK_MERGE_OPTION, + LEFT_COLUMN_OPTION, LINE_FORMAT_OPTION, NORMAL_OPTION, + SDIFF_MERGE_ASSIST_OPTION, STRIP_TRAILING_CR_OPTION, + SUPPRESS_COMMON_LINES_OPTION, TO_FILE_OPTION, + UNCHANGED_LINE_FORMAT_OPTION, OLD_LINE_FORMAT_OPTION, + NEW_LINE_FORMAT_OPTION, UNCHANGED_GROUP_FORMAT_OPTION, + OLD_GROUP_FORMAT_OPTION, NEW_GROUP_FORMAT_OPTION, + CHANGED_GROUP_FORMAT_OPTION): New constants. + (longopts, main): Use them. + + (longopts, main, option_help_msgid): Add -E, --from-file, --to-file. + + (main): Invoke bindtextdomain and textdomain after setlocale. + Use grep syntax, not Emacs, for regular expressions. + Use exclude.h, not our own functions. + Use ISO 8601 time format in hard locales. + Prepend DIFF_OPTIONS. + Don't update ignore_some_changes. + Use strtoumax instead of numeric_arg. + Use specify_value when appropriate. + error -> try_help when appropriate. + -p now means ^[[:alpha:]$_], not ^[_a-zA-Z$]. + Ignore --inhibit-hunk-merge. + Prefer changed group formats to unchanged ones. + Remove now-unnecessary casts. + Set files_can_be_treated_as_binary. + + (specify_value): Renamed from specify_format. All uses changed. + + (specify_style): Default is now unspecified, not normal. All + uses changed. + + (set_mtime_to_now): New function. + (compare_files): Use it. Use memset, not bzero. + Set stdin mtime to current time even when stdin is not a regular file. + Check for same file attributes, as well as for same file. + Use files_can_be_treated_as_binary. + "write failed" -> "standard output on output failure. + + * src/context.c: Assume C89 or better. + int -> lin for line numbers. + Include inttostr.h, regex.h. + (TIMESPEC_NS): New macro. + (nstrftime): New decl. + (print_context_label): Use nstrftime and time_format to format times. + Print numeric time stamp value if localtime fails. + (print_context_function): New function. + (pr_context_hunk, pr_unidiff_hunk): Use it. + (find_function): Use size_t for sizes, not int. + + * src/cmp.c: Assume C89 or better. + int -> bool for booleans. + long -> off_t for line numbers. + Use angle-brackets when including cmpbuf.h, getopt.h. + Include error.h, freesoft.h, inttostr.h, xalloc.h. + (copyright_string): Use only most recent year. + (authorship_msgid): Wrap in N_(). + (buffer): Now word*, not char*. All uses changed. + (word): Remove macro; now in system.h. + (long_options, option_help_msgid, main): -c --print-chars -> + -b --print-bytes + (check_stdout): "write failed" -> "standard output" + (option_help_msgid): Wrap in N_(). + (main): Invoke bindtextdomain and textdomain after setlocale. + Use strtoumax instead of doing the work ourselves. + Check for same_file_attributes as well as same_file. + (cmp): Use ssize_t for read returns, not size_t. + Do not assume that size_t is not narrower than int. + Do not assume that line numbers fit in 'long'. + (block_compare_and_count, block_compare): + Compiler now checks that buffers are word-aligned. + (block_compare_and_count): Count sizes with size_t, not long. + (sprintc): byte arg is unsigned char, not unsigned. + + * src/analyze.c: Assume C89 or better. + int -> lin for line numbers. + int -> bool for booleans. + unsigned int -> size_t for sizes. + Use angle-brackets when including cmpbuf.h. + Include error.h, regex.h, xalloc.h. + (discard_confusing_lines, diff_2_files): Use zalloc rather + than xalloc+bzero. + (discard_confusing_lines): unsigned int -> lin for values that + are really line numbers. + (shift_boundaries): Do not inhibit hunk merges. + (build_reverse_script, build_script, diff_2_files): Use |, not ||. + (diff_2_files): no_details_flag & ~ignore_some_changes -> + files_can_be_treated_as_binary. Esure that buffer size is a multiple + of sizeof (word). Use file_block_read to read buffers. + (diff_2_files): Abort if output style is not one of the + expected styles. + +2001-11-23 Paul Eggert <eggert@twinsun.com> + + * src/Makefile.am, m4/vararrays.m4: New file. + + * m4/prereq.m4 (jm_PREREQ_READUTMP): + Remove, as it gives autoheader the willies. + + * m4/README, lib/prepargs.h, lib/prepargs.c, lib/offtostr.c, + lib/umaxtostr.c, lib/inttostr.c, lib/inttostr.h, + lib/imaxtostr.c, lib/freesoft.h: New files. + + * lib/freesoft.c: Include config.h, freesoft.h rather than diff.h. + (free_software_msgid): Wrap contents in N_. + + * lib/cmpbuf.h: Use prototypes instead of old-style functions. + + * lib/cmpbuf.c: + Don't include system.h; instead, include config.h, unistd.h. + Use prototypes instead of old-style functions. + (block_read): Don't assume that int is no wider than size_t. + + * lib/Makefile.am, po/POTFILES.in: New file. + +2001-11-22 Paul Eggert <eggert@twinsun.com> + + * pc/config.h: + Define filename_cmp as an object-like macro, not as a function-like + macro. + + * exgettext: Always operate in the C locale. + Set AWK using a method that works even with broken shells. + + * doc/Makefile.am: New file. + + * configure.ac (AC_INIT): + Use src/diff.c, not diff.h, as the source files got removed. + (AM_CONFIG_HEADER): Switch from AC_CONFIG_HEADER. + (AC_ARG_PROGRAM, AC_MINIX): Remove. + + (AC_PREREQ, AM_INIT_AUTOMAKE, ALL_LINGUAS, AC_PROG_AWK, + AM_PROG_CC_STDC, AC_PROG_RANLIB, AC_C_INLINE, AC_C_VARARRAYS, + DEFAULT_DIFF_PROGRAM, DEFAULT_EDITOR_PROGRAM, + AC_STRUCT_ST_MTIM_NSEC): Add. + + (PR_PROGRAM): AC_DEFINE. + + (AC_SYS_LARGEFILE): Use instead of our homebrew version. + + (_GNU_SOURCE): Define if not defined. + + (AC_CHECK_HEADERS): Add stdbool.h, unistd.h. + (AC_CHECK_TYPES): Add ptrdiff_t, uintmax_t. + (AM_GNU_GETTEXT, XGETTEXT): Add. + + (WITH_MVFS_STAT_BUG, WITH_NFS_STAT_BUG): Remove. + (HAVE_MEMCHR): Remove. + (AC_CHECK_FUNCS): Add diraccess. + (AC_REPLACE_FUNCS): Add memchr, waitpid. + (jm_FUNC_GLIBC_UNLOCKED_IO, jm_FUNC_GNU_STRFTIME, jm_FUNC_MALLOC, + jm_FUNC_REALLOC, jm_PREREQ_ERROR, jm_PREREQ_QUOTEARG, jm_PREREQ_REGEX, + jm_PREREQ_TEMPNAME, jm_AC_PREREQ_XSTRTOUMAX, AC_FUNC_FNMATCH): Add. + (fnmatch.h, regex.h): Do not create these files unless we're using + our own fnmatch and regex. + + (AC_OUTPUT): Add doc/Makefile, intl/Makefile, lib/Makefile, + lib/posix/Makefile, m4/Makefile, po/Makefile.in, src/Makefile. + + * Makefile.am: New file. + + * po/en_GB.po: Don't translate "program" to "programme". + +2001-11-20 Paul Eggert <eggert@twinsun.com> + + * m4/prereq.m4: New file. + +2001-03-16 Paul Eggert <eggert@twinsun.com> + + * lib/tempname.c (uint64_t): + Define if not defined, and if UINT64_MAX is not defined. + +2001-02-26 Paul Eggert <eggert@twinsun.com> + + * lib/tempname.c: glibc 1.32 + +2001-02-17 Paul Eggert <eggert@twinsun.com> + + * m4/Makefile.am.in: GNU fileutils 4.1 + +2001-01-09 Paul Eggert <eggert@twinsun.com> + + * lib/tempname.c (struct_stat64): New macro. + (direxists, __gen_tempname): Use it. This avoids a portability problem + with Solaris 8. + + * lib/tempname.c (<config.h>): Include if HAVE_CONFIG_H. + (<stddef.h>, <stdint.h>, <string.h>): + Include only if STDC_HEADERS || _LIBC. + (<fcntl.h>): Include only if HAVE_FCNTL_H || _LIBC. + (<unistd.h>): Include only if HAVE_UNISTD_H || _LIBC. + (<sys/time.h>): Include only if HAVE_SYS_TIME_H || _LIBC. + (__set_errno): Define this macro if <errno.h> doesn't. + (P_tmpdir, TMP_MAX, __GT_FILE, __GT_BIGFILE, __GT_DIR, __GT_NOCREATE): + Define these macros if <stdio.h> doesn't. + (S_ISDIR, S_IRUSR, S_IWUSR, S_IXUSR): + Define these macros if <sys/stat.h> + doesn't. Ignore <sys/stat.h> S_ISDIR if STAT_MACROS_BROKEN. + (stat64, __getpid, __gettimeofday, __mkdir, __open, __open64, lxstat64, + __xstat64): Define if not _LIBC. + (__secure_getenv): Define if ! (HAVE___SECURE_GETENV || _LIBC). + (__gen_tempname): Invoke gettimeofday only if HAVE_GETTIMEOFDAY + || _LIBC; otherwise, fall back on plain "time". + Use macros like S_IRUSR | S_IWUSR rather than octal values like 0600. + + * lib/mkstemp.c (__GT_FILE): Define to zero if not defined. + +2000-10-25 Paul Eggert <eggert@twinsun.com> + + * lib/hard-locale.c: New file. + +2000-02-05 Paul Eggert <eggert@twinsun.com> + + * exgettext: From GCC repository + +1999-07-06 Paul Eggert <eggert@twinsun.com> + + * lib/mkstemp.c: glibc 2.2 + +1998-12-11 Paul Eggert <eggert@twinsun.com> + + * src/sdiff.c (lf_snarf): + Fix bug when help line wrapped around the input buffer. + +1998-09-15 Paul Eggert <eggert@twinsun.com> + + * diff.texi: Add @dircategory and @direntry. + +1998-09-14 Paul Eggert <eggert@twinsun.com> + + * Makefile.in (VERSION): Version 2.7.2. + (DEFAULT_DIFF_PROGRAM): Renamed from DIFF_PROGRAM. + (PR_PROGRAM): All `configure' to define it. + (srcs): Add $(diffutils_srcs), freesoft.c, quotearg.c instead of + quote.c, quotearg.h. + (distfiles): Add acconfig.h, message/*. + (all): Depend on $(destfiles), not info. + (version.c): Parenthesize `GNU diffutils'. + (common_o): Add freesoft.o + (diff_o): quote.o -> quotearg.o + (diff3_o, sdiff_o): Likewise. + (diff.dvi): Depend on version.texi. + (diff.o diff3.o quotearg.o sdiff.o util.o): + New dependency on quotearg.h + (diff3.o): DIFF_PROGRAM -> DEFAULT_DIFF_PROGRAM. + (sdiff.o): Likewise. + (messages.po): Remove. + (message/msgid.po, message/template.po): New rules. + (maintainer-clean): Renamed from realclean. + (install): Install from source directory, if applicable. + Invoke install-info if needed. + (install-strip): New rule. + (check): Set DIFF. + (stamp-h.in): Don't put the date into the timestamp. + (D_dirs): Add $D/message. + ($D.tar.gz): Compress with gzip -9. + Don't use ln to create distribution; it doesn't work with symlinks. + (srcs, distfiles, diff_o, diff3_o, sdiff_o): Rename quotearg.c to + quotesys.c and quotearg.h to quotesys.h. + + * configure.in (AC_PATH_PROG): Add PR_PROGRAM. + If available, prefer support for large files unless the user specified + one of the CPPFLAGS, LDFLAGS, or LIBS variables. + (AC_STRUCT_ST_RDEV): Add. + (HAVE_ST_FSTYPE_STRING): Add. + (--with-mvfs-stat-bug, --with-nfs-stat-bug): New options. + (HAVE_MEMCHR): New macro. + (AC_CHECK_FUNCS): Add sicprocmask. + + * diff.h (XTERN): Renamed from EXTERN. + (struct filedata): Remove dir_p arg. + (struct comparison): New type. + (diff_2_files, diff_dirs)" Ise ot/ + (error): Add printf attribute if applicable. + (free_software_msgid): New decl. + (pr_program): New decl. + (fatal): Add noreturn attribute. + (pfatal_with_name): Likewise. + + * system.h (__attribute__): New macro. + (getenv): Don't declare if HAVE_STDLIB_H. + (CHAR_MAX): New macro. + (<locale.h>): New include. + (<locale.h>): Include before <libintl.h>. + (could_be_mvfs_stat_bug, could_be_nfs_stat_bug, + dev_may_have_duplicate_ino, same_special_file): New macros. + (same_file): Use them. + + * cmp.c (authorship_msgid): New var. + (free_software_msgid): New decl. + (error): Now has printf attribute. + (try_help): Likewise. + (long_options): Don't assume ASCII. + (try_help): Now accepts operand arg. + (main): Check for -1, not EOF, when calling getopt_long. + Report --ignore-initial value when complaining about it. + Output copyright and free software info with -v. + Don't assume ASCII. + Report last operand when one is missing. + Report text of extra operand. + Move block_read into cmpbuf.c. + + * diff.c (authorship_msgid): New var. + (quotesys.h): Include. + (ck_atoi): Remove. + (function_regexp_list, ignore_regexp_list): Now static. + (binary_flag): Renamed from binary_I_O. + (entire_new_file_flag, unidirectional_new_file_flag, + print_file_same_flag): Now static. + (numeric_arg): Renamed from ck_atoi. + New argument specifying the argument type. + (longopts, main): Don't assume ASCII. + (longopts): Remove old aliases --file-label, --entire-new-file, + --ascii, --print. + (main): Check for -1, not EOF, when calling getopt_long. + Use numeric_arg to report errors. + Report error if -l specified but pagination is not supported. + Report error if -S is specified twice with conflicting values. + Have --version conform to the new GNU standards. + Add new --from-file, --to-file, --inhibit-hun,-merge options. + Make the horizon at least as large as the context. + Add casts to pacify gcc -Wall. + (try_help): Add operand arg. + (option_help_msgid): Doc fix to match above. + (usage): Indent option_help_msgid. + (compare_files): Now takes struct comparison + instead of two directory names and a depth. + (NONEXISTENT, UNOPENED, ERRNO_ENCODE, ERRNO_DECODE): + New macros. + (DIR_P): New macro. + Report error if fflush does. + + * cmpbuf.c (block_read): Moved here from cmp.c. + + * cmpbuf.h (block_read): New decl. + + * io.c (cmpbuf.h): Include. + (slurp): Check for arithmetic overflow when computing buffer size. + + * dir.c (diff_dirs): Check for recursive directory loop. + Arg is now struct comparison const *. + (dir_loop): New function + + * analyze.c (no_discards): Remove. + (inhibit): Remove. + (shift_boundaries): Don't inhibit. If inhibit_hunk_merge is nonzero, + don't merge hunks. + (briefly_report): Now returns 2 if trouble, CHANGES otherwise. + (diff_2_files): Now takes struct comparison. If briefly_report reports + trouble, pass it on to caller. + + * side.c (print_half_line): Add brackets to pacify GCC -Wall. + + * sdiff.c (quotesys.h): Include. + (DIFF_PROGRAM, DEFAULT_EDITOR_PROGRAM): Remove. + (free_software_msgid, editor_program, not_found): New vars. + (diffbin, edbin): Remove. + (editor_program): Renamed from edbin. + (edit, interact): Now take extra string arg. + (exiterr, fatal, perror_fatal, try_help): Add noreturn attribute. + (sigset_t, sigemptyset, sigmask, sigaddset, SIG_BLOCK, SIG_SETMASK): + (sigprocmask): New macros, if !HAVE_SIGPROCMASK. + (error): Now has printf attribute. + (longopts, main): Don't assume ASCII. + (try_help): New operand arg. + (usage): Conform to new GNU standards. + (main): Set static vars for editor and diff program. + Compare getopt_long result to -1, not EOF. + -v conforms to new GNU standard. + Complain better about extra and missing operands. + If HAVE_VFORK, block SIGINT and SIGPIPE in the parent, since when + the child munges its handlers it may somp on the parent. + Pass rname to intract. + Translate not-found message before forking. + (give_help): Just output it all at once. + (edit): New args lname, lline, rname, rline. + (edit): New command 'd'. + (interact): New args lname, rname. + + * util.c (quotesys.h): Include. + (PR_PROGRAM): New macro. + (pfatal_with_name): Abort if error returns. + (fatal): Likewise. + (print_message_queue): Free message chain after printing. + (currently_recursive): Renamed from current_depth, and now a boolean. + (begin_output): Report error if fflush does. + Avoid stdio and gettext in child. + + * diff3.c (quotesys.h): Include. + (free_software_msgid): New decl. + (RANGE_START, RANGE_END): Renamed from START and END. + (fatal, perror_with_exit, try_help): Add noreturn attribute. + (error): Add printf attribute. + (diff_program): Now a ptr, not an array. + Initialize to DEFAULT_DIFF_PROGRAM instead of DIFF_PROGRAM. + (longopts, main): Don't assume ASCII. + (main): Use DIFF environment var to specify name of diff program. + Compare getopt_long result to -1, not EOF. + -v now reports version according to new GNU standard. + Report spelling of extra operand, or last operand before missing one. + (try_help): Now takes operand arg. + (option_help_ms): Fix typo: missing comma. + (usage): Update as per current GNU standards. + (environ): Remove decl. + (read_diff): Invoke diff with --inhibit-hunk-merge. + Translate `not found' message before forking. + Quote name of diff program. + Pass horizon lines. + `memory exhausted' -> `Memory exhausted' + + * pc/makefile (%.exe): Remove. + (pc-clean): Remove *.exe + * pc/makefile.sed (DEFAULT_DIFF_PROGRAM): Renamed from DIFF_PROGRAM. + When editing mkinstalldirs rule, look for exec_prefix and prefix. + Add .exe when installing files. + * pc/emx/config.h (same_file): Add. + * pc/config.h (same_file): Remove. + * pc/djgpp/config.h: Adjust to latest patch from eliz. + * pc/djgpp/makefile.sed: Don't alter PROGRAMS. + * pc/pc.c: Update FSF address. + (quote_system_arg): Renamed from system_quote_arg. + + * README: Add --with-mvfs-stat-bug, --with-nfs-stat-bug. + + * getmsgids: Add copyright date and update FSF address. + + * diff.texi: Document recent changes. + The patch doc still corresponds to patch 2.2, unfortunately. + Update GNU bug reporting address. Omit Larry Wall's address; + it's obsolete and he's busy with perl. + + * context.c: Fix spacing. + + * NEWS: Mention --from-file=FILE, --to-file=FILE, ed. + + * acconfig.h, freesoft.c, message/de.po, message/en_UK.po, + message/es.po, message/fr.po, message/pl.po, message/sv.po: + New files. + + * ed.c: Remove `#if 0'ed code. + + * normal.c, waitpid.c: Update FSF address. + +1998-03-15 Paul Eggert <eggert@twinsun.com> + + * quotesys.c: Renamed from quotearg.c. + + * quotesys.h: Renamed from quotearg.h + (__QUOTESYS_P): Renamed from __QUOTEARG_P. + +1997-05-05 Paul Eggert <eggert@twinsun.com> + + * quotesys.c, quotesys.h: New file. + +Mon Nov 14 05:10:56 1994 Paul Eggert <eggert@twinsun.com> + + Add internationalization support. + Several messages have been changed slightly, + to make them more consistent and easier to translate. + All strings that are messages are passed through gettext once before + being used, so that they can be localized. + Each function and macro whose first parameter is a gettext msgid + has had its first parameter's name changed so it ends in `msgid'. + All arrays of msgids have had their names changed to end in `msgid'. + `getmsgids' uses this to determine which strings are msgids. + + * pc/COPYING, pc/INSTALL, pc/config.h, + pc/djgpp/config.h, pc/djgpp/makefile.sed, + pc/emx/config.h, pc/emx/diff.def, pc/emx/gnuregex.def, + pc/emx/makefile.sed, + pc/makefile, pc/makefile.sed, pc/pc.c: New files, for PC support. + + * getmsgids: New file. + + * Makefile.in (PACKAGE, VERSION, diffutils_srcs, D): New vars. + (version.c, version.texi, messages.po): New files. + messages.po is built automatically from source files and `getmsgids'. + (distfiles): Add them, pc/*, and getmsgids. + (diff.info): Now depends on version.texi. + (realclean): Clean messages.po, version.*. + (dist): Just build $D.tar.gz. + ($D.tar.gz): New file, takes over old `dist' function. + Don't assume $(distfiles) are all in same directory. + + * configure.in (AC_CHECK_HEADERS): Add libintl.h, locale.h. + (AC_CHECK_LIB): Check for -lintl. + + * analyze.c (briefly_report): Rewrite `message (A?"B":"C")' as + `if (A) message ("B") : message ("C")'; this is for getmsgids. + (briefly_report, diff_2_files): For label, use file_label if set. + * diff.c (compare_files): Likewise. + + * system.h (gettext): Declare; use a stub if ! HAVE_LIBINTL_H. + (setlocale): Declare; use a stub if ! HAVE_LOCALE_H. + + * cmp.c, diff.c, diff3.c, sdiff.c (main): + Invoke setlocale first thing, to tell library we're internationalized. + (option_help_msgid): New constant. + (usage): Use it, so message is translated one option at a time. + * sdiff (help_msgid, give_help): Likewise. + + * cmp.c (sprintc): Renamed from `printc'. + Now outputs to a buffer instead of stdout. + (cmp): Use new sprintc; it's easier to internationalize. + + * diff.c (main): -D FOO now outputs `/* ! FOO */ instead of + `/* not FOO */'. + + * sdiff.c (version_string): Fix decl typo: `const' was missing. + (trapsigs): Ignore sigaction failure, to be compatible with `signal'. + + * util.c (struct msg, message5, print_message_queue): + Allocate just one block of memory to save a message. + +Wed Nov 9 17:42:44 1994 Paul Eggert <eggert@twinsun.com> + + * sdiff.c (trapsigs): Don't check signal return value, since it's + bogus under djgpp. + +Mon Oct 31 07:27:27 1994 Paul Eggert <eggert@twinsun.com> + + * Makefile.in (srcs, diff_o, diff3_o, sdiff_o): + New files quote.c, quote.o. + + * diff.h (function_regexp, ignore_regexp): Replace lists of compiled + regexps with these single compiled regexps. All users changed. + (regexp_list,function_regexp_list,ignore_regexp_list): Move to diff.c. + * diff.c (add_regexp): Build one big regexp instead of a regexp list. + (summarize_regexp_list): New function. + (regexp_list): Redesigned struct; moved here from diff.h. + (function_regexp_list, ignore_regexp_list): Likewise, for vars. + + * context.c (find_function): Simplify interface: + don't return size of function line. All callers changed. + (print_context_script, find_function): INT_MAX now denotes no + previous match; this is simpler than `- file->prefix_lines - 1'. + + * diff3.c (read_diff): Quote arguments with system_quote_arg. + * sdiff.c (main): Use system_quote_arg to compute command. + * diff.c (option_list): Quote options with system_quote_arg. + * util.c (begin_output): Use system_quote_arg to compute command. + + * util.c (pr_program): New var. + (analyze_hunk): Fix off-by-1 line length bug. + Match with one big regexp instead of a list of regexps. + Use new `trivial_length' local instead of comparing first byte to `\n'. + Help the compiler with linbuf local vars. + + * system.h (system_quote_arg): + New function; replaces SYSTEM_QUOTE_ARG macro. + +Sat Oct 15 20:09:12 1994 Paul Eggert <eggert@twinsun.com> + + * system.h (_tolower): Define if not already defined. + * io.c (find_and_hash_each_line): Change tolower to _tolower; this + speeds up diff -i considerably on some hosts (e.g. Solaris 2.3). + * util.c (line_cmp): Likewise. + * ifdef.c (groups_letter_value): Likewise. + + * diff.h (ignore_some_line_changes): Remove. All users changed. + * io.c (find_and_hash_each_line): Don't invoke line_cmp if the length + differs and -i is in force. Don't assume ISSPACE ('\n') is nonzero. + + * diff.h (xmalloc_exit_failure): New variable. + All `main' programs set this variable at the start. + xmalloc and xrealloc are now taken from GNU library. + * cmp.c (main): Align buffer size to word size; some mallocs care. + * io.c (slurp): Likewise. + * diff.c (add_exclude): Can now assume xrealloc (0, ...) works. + (add_regexp): Free storage on failure. Allocate storage all at one go. + * system.h (malloc, realloc): Remove unused declarations. + * diff3.c, sdiff.c, util.c (xmalloc, xrealloc): Remove. + * sdiff.c (diffarg): Take advantage of cleaner xrealloc semantics. + + * io.c (ROL): Use sizeof to make it more generic. + + * Makefile.in (common_o): New variable. + Link error.o and xmalloc.o into all programs. + (check): Depend on $(PROGRAMS). + + * diff.h (error): Change to GNU library standard. All callers changed. + * diff3.c (main): Use strerror (EISDIR) instead of "Is a directory". + (fatal, perror_with_exit): Use `error'. + * util.c (perror_with_name, fatal): Use GNU `error'. + (error): Remove. + +Wed Oct 12 17:04:40 1994 David J. MacKenzie (djm@duality.gnu.ai.mit.edu) + + * cmp.c (main): Set xmalloc_exit_failure. + +Sat Oct 1 05:24:19 1994 Paul Eggert <eggert@twinsun.com> + + * Version 2.7 released. + + * configure.in (AC_HEADER_SYS_WAIT): Add. + (AC_CHECK_HEADERS): Remove sys/wait.h. + (AC_CHECK_FUNCS): Add tmpnam. + * system.h (<sys/wait.h>, WEXITSTATUS): Use simpler scheme + now that HAVE_SYS_WAIT_H is not set on hosts + that are incompatible with Posix applications. + + * util.c (dir_file_pathname): Use filename_lastdirchar not strrchr. + * sdiff.c (expand_name): Likewise. + (private_tempnam): Use tmpnam if HAVE_TMPNAM; this simplifies porting. + (exists, letters): Omit if HAVE_TMPNAM. + + * diff3.c (read_diff): If STAT_BLOCKSIZE yields zero, + adjust it to a more reasonable value. + +Sat Sep 24 20:36:40 1994 Paul Eggert <eggert@twinsun.com> + + * sdiff.c (exists, private_tempname): Adopt latest GNU libc algorithm. + (private_tempnam): Specialize for sdiff to avoid portability problems. + +Thu Sep 22 16:47:00 1994 Paul Eggert <eggert@twinsun.com> + + * configure.in (AC_ARG_PROGRAM): Added. + (AC_OUTPUT): Add [date > stamp-h]. + + * Makefile.in (DEFAULT_EDITOR_PROGRAM, DIFF_PROGRAM, LIBOBJS, + NULL_DEVICE, PR_PROGRAM, PROGRAMS): New variables. + (check, stamp-h.in, cmp.o, util.o): New targets. + (edit_program_name): New variable; replaces old binprefix method. + (install, uninstall): Use it. + (binprefix): Removed. + (distfiles): Add stamp-h.in. + (clean): Clean stamp-h. + (config.hin, config.h): Use time stamp files. + (cmp_o): Add $(LIBOBJS). + (install): Install info files from srcdir if they're not in `.'. + + * cmp.c, io.c (word): Don't define if already defined. + + * comp.c (main): Use setmode, not open(..., O_BINARY); this gets stdin. + Use NULL_DEVICE instead of "/dev/null". + (cmp): Use %lu instead of %ld when it is more likely to be right. + + * diff.h (PR_FILE_NAME): Rename to PR_PROGRAM and move to Makefile.in, + util.c. + + * diff3.c (main): Give proper diagnostic if too many labels were given. + (read_diff): Use SYSTEM_QUOTE_ARG. + + * system.h: <string.h>: Include if HAVE_STRING_H, too. + <ctype.h>: Include here. All includers changed. + (CTYPE_DOMAIN, ISDIGIT, ISPRINT, ISSPACE, ISUPPER): New macros that + work around common <ctype.h> problems. + (O_BINARY): Remove. + (SYSTEM_QUOTE_ARG): New macros. + + * diff.c: Add comment. + + * util.c (PR_PROGRAM): Moved here from diff.h. + (begin_output): Use SYSTEM_QUOTE_ARG. + + * io.c (read_files): Set mode to binary before returning 1. + + * sdiff.c (TMPDIR_ENV): New macro. + (DEFAULT_EDITOR_PROGRAM): Renamed from DEFAULT_EDITOR for consistency. + (expand_name): Change `isdir' to `is_dir' to avoid theoretical ctype + namespace contamination. + (main): Use SYSTEM_QUOTE_ARG. + (private_tempnam): Don't access "/tmp" directly; use PVT_tmpdir. + +Tue Sep 13 18:46:43 1994 Paul Eggert <eggert@twinsun.com> + + * configure.in (AC_FUNC_MEMCHR): Remove. Autoconf didn't adopt this, + since we need not worry about an old experimental library + where memchr didn't work. + (AC_FUNC_MEMCMP): Not needed, since we only test for equality. + (AC_REPLACE_FUNCS): Add test for memchr. + (AC_CHECK_FUNCS): Check for memchr, not memcpy, since it'll be cached. + (AC_CHECK_HEADERS): Add string.h; regex.c uses on some old hosts. + + * system.h (memcmp): Define in terms of bcmp. + Use HAVE_MEMCHR to test for all mem* routines. + + * Makefile.in (srcs): Remove memcmp.c. + We use bcmp if memcmp doesn't work, since we only test for equality. + +Mon Sep 12 15:52:22 1994 Paul Eggert <eggert@twinsun.com> + + * configure.in (AC_CONFIG_HEADER): Rename config.h.in to config.hin. + (AC_ISC_POSIX, AC_MINIX): Go back to these old names for Autoconf 2. + (AC_CHECK_HEADERS): Remove now-redundant check for <string.h>. + (AC_CHECK_FUNCS): Check for strchr. + (AC_FUNC_MEMCHR, AC_FUNC_MEMCMP, AC_CHECK_FUNCS): Use special-purpose + macros when suitable. + * memcmp.c: New file. + * Makefile.in (CPPFLAGS, DEFS, CFLAGS, LDFLAGS, prefix, exec_prefix): + Default to autoconf-specified strings. + (COMPILE): Use the defaults. + (srcs): Add memcmp.c. + (distfiles): Rename config.h.in->config.hin, install.sh->install-sh. + (Makefile, config.h, config.hin, config.status): Rework for + compatibility with Autoconf 2. + * io.c (binary_file_p): Assume non-broken memchr. + * memchr.c: Assume compiler understands void *; otherwise + we don't match GCC's internal declaration of memchr. + * system.h: Use more modern autoconf approach to standard C headers. + * version.c: Include <config.h>, not "config.h". + + * diff.c, diff.h (ignore_some_line_changes): + New variable; replaces `length_varies'. + (line_end_char): Replace with '\n'; it wasn't being used consistently. + + * io.c (find_and_hash_each_line): Fix inconsistencies with -b -w -i and + incomplete lines. Put incomplete lines into their own bucket. + This means line_cmp no longer needs line length arguments, + and equivalence classes' line lengths no longer need to include \n. + Invoke line_cmp only if ignore_some_line_changes. + (prepare_text_end): -B no longer ignores missing newlines. + (read_files): Allocate another bucket for incomplete lines. + + * util.c (line_cmp): Now takes just two arguments. No longer + optimizes for common case of exact equality; the caller does that + optimization now. The caller is changed accordingly. + Optimize for the common case of mostly equality. + Use isupper+tolower instead of islower+toupper, for consistency. + + * waitpid.c (waitpid): Fix typo with internal scoping. + +Thu Sep 8 08:23:15 1994 Paul Eggert <eggert@twinsun.com> + + * configure.in: Revamp for Autoconf 2. + * memchr.c, waitpid.c: New source files for substitute functions. + * Makefile.in (diff_o, diff3_o, sdiff_o): Add $(LIBOBJS). + (srcs): Add memchr.c, waitpid.c. + (distfiles): Add install.sh, memchr.c, waitpid.c, install.sh. + * system.h: Use Autoconf 2 style HAVE_DIRENT_H etc. macros for dirs. + * dir.c (dir_sort): Prefer NAMLEN (p) to strlen (p->d_name). + Change VOID_CLOSEDIR to CLOSEDIR_VOID for Autoconf 2. + * sdiff.c, util.c (memchr, waitpid): Remove; use new substitutes. + * diff3.c (read_diff): Use new waitpid substitute. + + * cmp.c, diff.c, diff3.c, sdiff.c (check_stdout, try_help): New fns. + (usage): Just print more detailed usage message; let caller exit. + * diff.c (option_help): New variable. + (filetype): Add Posix.1b file types. + +Fri Sep 2 16:01:49 1994 Paul Eggert <eggert@twinsun.com> + + * configure.in: Switch to new autoconf names. Add sys/file.h test. + * Makefile.in (distclean): Clean config.cache, config.log + (used by new autoconf). + + * diff.c, diff3.c, (main), sdiff.c (trapsigs): If we'll have children, + make sure SIGCHLD isn't ignored. + + * diff3.c (DIFF_CHUNK_SIZE): Removed. Get size from STAT_BLOCKSIZE. + (INT_STRLEN_BOUND): New macro. + + * ifdef.c (format_group, groups_letter_value): + Use * instead of [] in prototypes. + + * system.h: Include <sys/file.h> only if HAVE_SYS_FILE_H. + (S_IXGRP, S_IXOTH, S_IXUSR): Remove unused macros. + + * util.c (begin_output): Check fdopen result. + + The following changes simplify porting to non-Posix environments. + * cmp.c, diff.c, diff3.c, sdiff.c, (main): Call initialize_main first. + * diff.c (binary_I_O): New variable for --binary option. + (main, usage, compare_files): Support --binary option. + (compare_files): Use filename_lastdirchar to find last + directory char in a file name. + * cmp.c (main), diff.c (compare_files), dir.c (compare_names, + diff_dirs): Use filename_cmp to compare file names. + Use same_file to determine whether two files are the same. + * context.c (print_context_label): Check whether ctime yields 0. + * diff3.c (read_diff), sdiff.c (cleanup, main, waitpid), + util.c (begin_output): Use popen+pclose if !HAVE_FORK. + * io.c (sip): If HAVE_SETMODE, test for binary files in O_BINARY mode. + * sdiff.c (ck_fdopen): Function removed. + (edit): Use system if !HAVE_FORK. + (execdiff): Now assumes caller has pushed all args, plus trailing 0. + All callers changed. + (private_tempnam): Try TMP if TMPDIR isn't defined. + Fit temporary filenames into 8.3 limit. + * system.h (STAT_BLOCKSIZE): Don't define if already defined. + (min, max): Undef if already defined. + (filename_cmp, filename_lastdirchar, HAVE_FORK, HAVE_SETMODE, + initialize_main, O_BINARY, same_file): New macros. + +Fri Jun 17 11:23:53 1994 David J. MacKenzie (djm@geech.gnu.ai.mit.edu) + + * Makefile.in (info, dvi, diff.dvi): New targets. + (clean): Remove TeX output files. + +Fri Jun 17 05:37:52 1994 Paul Eggert (eggert@twinsun.com) + + * cmp.c, io.c (word): Change from typedef to #define, to avoid + collision with Unicos 8.0 <sys/types.h>, which also typedefs `word'. + +Thu Apr 15 00:53:01 1994 Paul Eggert (eggert@twinsun.com) + + * diff3.c (scan_diff_line), util.c (print_number_range): Don't + rely on promotion to make the old-style parameter type agree + with the prototype parameter type; this doesn't work on + Apollos running bsd4.3. + +Mon Jan 3 02:05:51 1994 Paul Eggert (eggert@twinsun.com) + + * Makefile.in (LDFLAGS): Remove -g. Change all link commands + to use both $(CFLAGS) and $(LDFLAGS). + +Mon Dec 13 12:23:27 1993 Paul Eggert (eggert@twinsun.com) + + * system.h: Don't assume dirent.h exists just because + _POSIX_VERSION is defined. + +Fri Dec 3 18:39:39 1993 Paul Eggert (eggert@twinsun.com) + + * diff.c (main): allow -pu. + +Tue Nov 23 03:51:08 1993 Paul Eggert (eggert@twinsun.com) + + * Makefile.in (distclean): Remove config.h. + +Wed Nov 10 00:28:27 1993 Paul Eggert (eggert@twinsun.com) + + * Version 2.6 released. + + * analyze.c (too_expensive): New variable, for heuristic to + limit the worst-case cost to O(N**1.5 log N) at the price of + producing suboptimal output for large inputs with many differences. + (diff_2_files): Initialize it. + (struct partition): New type. + (SNAKE_LIMIT): New macro; merely documents already-used number 20. + (diag): New `minimal' arg; all callers changed. Put results into + struct partition. Apply `too_expensive' heuristic. Tune. + (compareseq): New `minimal' arg; all callers changed. Tune. + (shift_boundaries): Improve heuristic to also coalesce adjacent runs + of changes more often. + + * diff.c (long_options, main, usage): Add `--help'. + (main): Send version number to stdout, not stderr. + (usage): Send usage to stdout, not stderr. + (compare_files): Initialize `inf' properly. + + * io.c (word): Change to `int'; it makes a big difference on x86. + (sip, slurp): Put off allocating room to hold the whole file until we + have to read the whole file. This wins if the file turns out + to be binary. + + * util.c (xmalloc, xrealloc): "virtual memory" -> "memory" + (primes): Omit large primes if INT_MAX is small. + + * sdiff.c (usage): Send usage to stdout, not stderr. + (long_options, main, usage): Add `--help'. + (main): Send version number to stdout, not stderr. Exit afterwards. + + * diff3.c (usage): Send usage to stdout, not stderr. + (long_options, main, usage): Add `--help'. + (read_diff): Detect integer overflow in buffer size calculations. + + * cmp.c (word): New type. All uses of `long' for + word-at-a-time comparisons changed to `word'. + (long_options, main, usage): Add `--help'. + (usage): Send usage to stdout, not stderr. + (main): Add `-v'. Send version number to stdout, not stderr. + + * configure.in (AC_HAVE_HEADERS): Add unistd.h; remove AC_UNISTD_H. + +Mon Sep 27 07:20:24 1993 Paul Eggert (eggert@twinsun.com) + + * diff.c (add_exclude_file): Cast memchr to (char *) + to suppress bogus warnings on some nonstandard hosts. + + * Makefile.in (cmp): Add version.o. + + * analyze.c (diff_2_files): Work around memcmp bug with size=0. + + * cmp.c (main, usage, version_string): Add --version option. + + * system.h (malloc, realloc): Declare only if !HAVE_STDLIB_H. + (memchr): Declare only if !HAVE_MEMCHR. These changes are + needed to keep some nonstandard hosts happy. + + * util.c (memchr): Make first arg char const * + to match standard. + (xmalloc, xrealloc): Cast malloc, realloc + to (VOID *) to suppress bogus warnings on some nonstandard hosts. + + * diff3.c (xmalloc, xrealloc): Cast malloc, realloc + to (VOID *) to suppress bogus warnings on some nonstandard hosts. + + * sdiff.c (xmalloc, xrealloc): Cast malloc, realloc + to (VOID *) to suppress bogus warnings on some nonstandard hosts. + (lf_copy, lf_skip, lf_snarf): Cast memchr to (char *) + to suppress bogus warnings on some nonstandard hosts. + (memchr): Make first arg char const * + to match standard. + +Mon Sep 27 00:23:37 1993 Paul Eggert (eggert@twinsun.com) + + * Version 2.5 released. + + * analyze.c (diff_2_files): Work around memcmp bug with size=0. + + * cmp.c (main, usage, version_string): Add --version option. + * Makefile.in (cmp): Add version.o. + + * diff.c (add_exclude_file): Cast memchr to (char *) + to suppress bogus warnings on some nonstandard hosts. + * sdiff.c (lf_copy, lf_skip, lf_snarf): Likewise. + + * diff3.c, sdiff.c, util.c (xmalloc, xrealloc): Cast malloc, realloc + to (VOID *) to suppress bogus warnings on some nonstandard hosts. + + * sdiff.c, util.c (memchr): Make first arg char const * + to match standard. + + * system.h (malloc, realloc): Declare only if !HAVE_STDLIB_H. + (memchr): Declare only if !HAVE_MEMCHR. These changes are + needed to keep some nonstandard hosts happy. + + * xmalloc.c: Include <sys/types.h> always; some nonstandard hosts + need it for size_t even if STDC_HEADERS. + +Sat Sep 18 01:33:07 1993 Paul Eggert (eggert@twinsun.com) + + * configure.in (AC_STAT_MACROS_BROKEN): Add. + * system.h (S_IS{BLK,CHR,DIR,FIFO,REG,SOCK}): Fix defns if + STAT_MACROS_BROKEN. + + * Makefile.in (diff3, sdiff, cmp): Do not link $(ALLOCA). + + * analyze.c (discard_confusing_lines): Make defn static, like decl. + * sdiff.c (xmalloc): Likewise. + + * ifdef.c (format_group): Ensure isdigit argument isn't < 0. + + * side.c (print_half_line): Use isprint, since some hosts lack isgraph. + * util.c (output_1_line): Likewise. Ensure its argument isn't < 0. + (xmalloc, xrealloc): Remove needless casts. + + * system.h (volatile, const): + Define these before including any system headers, + so that they're used consistently in all system includes. + (getenv, malloc, realloc): Declare even if HAVE_STDLIB_H, since some + <stdlib.h>s don't declare them. + (memchr): Likewise for <string.h>. + + * cmp.c, diff3.c, diff.h, sdiff.c: Include "system.h" first. + * diff.c: Remove redundant "system.h" inclusion. + + * diff3.c (xmalloc): Now static. + (xmalloc, realloc): Remove needless casts. + (READNUM): Ensure isdigit argument isn't negative. + +Wed Sep 14 07:14:15 1993 Paul Eggert (eggert@twinsun.com) + + * Version 2.4 released. + + * ifdef.c (scan_char_literal): New function, for new %c'x' and + %c'\ooo' format specs. + (format_group, print_ifdef_lines): Use it. Remove %0 format spec. + + * cmp.c (cmp): Don't try to read past end of file; this doesn't + work on ttys. + + * system.h, version.c: #include <config.h>, not "config.h", to allow + configuring in a separate directory when the source directory has + already been configured. + * Makefile.in (COMPILE): New defn, with proper -I options so that + `#include <config.h>' works. + (.c.o, diff3.o, sdiff.o): Use it. + +Mon Sep 13 06:45:43 1993 Paul Eggert (eggert@twinsun.com) + + * diff.c (main, longopts): Add --line-format=FORMAT option. + (specify_format): Args no longer const pointers. All callers changed. + + * ifdef.c: Add support for %?c, %(A=B?T:E), PRINTF_SPECn formats. + (struct group): New struct. + (print_ifdef_lines): Use it to simplify argument passing. + Remove the convention that last arg -1 signifies that the lines + from file 2 are the same as the lines from file 1; this + convention no longer works, now that line numbers might be + printed out, since the line numbers may differ. + Add first FILE * argument to output to. All callers changed. + Use a faster test for the single-fwrite optimization. + (format_group, scan_printf_spec, groups_letter_value): New functions. + + * diff.h (group_format, line_format): No longer const pointers. + (format_ifdef): 1st arg is no longer const pointer. + + * configure.in: Configure HAVE_LIMITS_H, HAVE_STDLIB_H. + * system.h <limits.h>, <stdlib.h>, <string.h>: + Include only if HAVE_LIMITS_H etc. + + * system.h (memcmp, memcpy, strchr, strrchr, struct dirent): Prefer + these standard names to the traditional names (bcmp, bcpy, index, + rindex, struct direct). All callers changed. + + * system.h (PARAMS, VOID): + Define earlier so that malloc decl can use VOID. + (STAT_BLOCKSIZE): Simplify ersatz defn; just use 8K. + +Fri Sep 3 00:21:02 1993 Paul Eggert (eggert@twinsun.com) + + * diff.c (compare_files): Two files with the same name must be + the same file; avoid a needless `stat' in that case. + +Fri Aug 27 06:59:03 1993 Paul Eggert (eggert@twinsun.com) + + * Pervasive changes for portability to 64-bit hosts: + Add prototypes to function declarations. + Use size_t, not int, when needed. + + * Other pervasive changes: + Use `const' more often. + Use STD{IN,OUT,ERR}_FILENO instead of [012]. + Use 0, not NULL, for portability to broken hosts. + + * Makefile.in: (srcs, objs, distfiles, cmp): New files cmpbuf.[ch]. + (distfiles): New files config.h.in, mkinstalldirs. + (.c.o): Add -DHAVE_CONFIG_H. + + * analyze.c: (diag): Pacify `gcc -Wall' with a useless assignment. + (diff_2_files): Use l.c.m., not max, of files' buffer sizes. + + * cmp.c: Make globals static when possible. + + (file): Now a 2-element array; replaces `file1' and `file2'. + (file_desc, buffer): Likewise, for file[12]_desc and buf[12]. + (main): Likewise, for stat_buf[12]. Index these variables with `i'. + + (ignore_initial): New var. + (long_options): Now const. Add `--ignore-initial'. + (usage): Sort options and add `--ignore-initial'. + (main, cmp): Add `--ignore-initial' support. + + (main): `cmp - -' now succeeds. + When comparing standard input to a file, and using a shortcut (e.g. + looking at file sizes or inode numbers), take the lseek offset into + account before deciding whether the files are identical. + Avoid mentioning `dev_t', `ino_t' for portability to nonstandard hosts. + Use l.c.m. of files' buffer sizes, not 8 * 1024. + ferror (stdout) does not imply errno has a useful value. + If 2nd file is "-", treat it first, in case stdin is closed. + + (cmp): Always compute `char_number', `smaller' for speed and simplicity. + Say `cmp: EOF on input', not `/usr/gnu/bin/cmp: EOF on input', + as per Posix.2. + + (block_compare_and_count): Increment line_number argument. + Remove end_char argument; it's always '\n'. All callers changed. + Do not assume sizeof(long) == 4; this isn't true on some 64-bit hosts. + (block_compare): Minimize differences with block_compare_and_count. + + (block_read): Coalesce `bp += nread's. + + (printc): Remove `FILE *' arg; output to stdout. All callers changed. + + * configure.in: Configure HAVE_SIGACTION, RETSIGTYPE, HAVE_VPRINTF. + Configure into config.h. + + * context.c (print_context_label): + Standard input's st_mtime is no longer a special case + here, since `compare_files' now sets it to the current time. + + * diff.c (usage): Sort options. + (filetype): New function. + (compare_files): Set stdin's st_mtime to be the current time. + Leave its name "-" instead of changing it to "Standard Input"; + to test whether a file is stdin, we must compare its name to "-" instead + of its desc to 0, since if it's closed other file descs may be 0. + When comparing standard input to a file, and using a shortcut (e.g. + looking at file sizes or inode numbers), take the lseek offset into + account before deciding whether the files are identical. + Pretend that nonexistent files have the same filetype as existing files. + Rename `errorcount' to `failed', since it's boolean. + In directory comparisons, if a file is neither a regular file nor a + directory, just print its type and the other file's type. + + * diff.h (Is_space, textchar): Remove. + (struct msg, msg_chain, msg_chain_end): Move to util.c. + (VOID): Move to system.h. + (line_cmp, version_string, change_letter, print_number_range, + find_change): New decls. + + * diff.texi: + whitespace -> white space. It now stands for whatever isspace yields. + Add --ignore-initial. + + * diff3.c (VOID): Move to system.h. + (version_string): Now char[]. + (usage): Sort options. + (process_diff): Pacify `gcc -Wall' with a useless assignment. + (read_diff): pid is of type pid_t, not int. Use waitpid if available. + (output_diff3): Simplify test for `\ No newline at end of file' message. + + * dir.c (struct dirdata): Rename `files' to `names' to avoid confusion + with external struct file_data `files'. + + * io.c (line_cmp): Move declaration to diff.h. + (textchar): Remove. + (find_and_hash_each_line): Use locale's definition of white space + instead of using one hardwired defn for -b and another for -w. + + * normal.c (change_letter, print_number_range, find_change): + Move decls to diff.h. + (print_normal_hunk): Now static. + + * sdiff.c (SEEK_SET): Move to system.h. + (version_string): Now char[], not char*. + (private_tempnam): Remove hardcoded limit on temporary file names. + (exiterr, perror_fatal, main): When exiting because of a signal, + exit with that signal's status. + (lf_refill, main, skip_white, edit, interact): Check for signal. + (ignore_SIGINT): Renamed from `ignore_signals'. + (NUM_SIGS, initial_handler): New macros. + (initial_action, signal_received, sigs_trapped): New vars. + (catchsig, trapsigs): Use sigaction if possible, since this closes the + windows of vulnerability that `signal' has. Use RETSIGTYPE not void. + When a signal comes in, just set a global variable; this is safer. + (checksigs, untrapsig): New functions. + (edit): Pacify `gcc -Wall' with a useless assignment. + Respond to each empty line with help, not to every other empty line. + (private_tempnam): Remove hardcoded limit on temporary file name length. + Don't assume sizeof (pid_t) <= sizeof (int). + + * system.h: (S_IXOTH, S_IXGRP, S_IXUSR, + SEEK_SET, SEEK_CUR, + STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO): + New macros, if system doesn't define them. + (volatile): Don't define if already defined. + (PARAMS): New macro. + (VOID): Move here from diff.h. + + * util.c (struct msg, msg_chain, msg_chain_end): Moved here from diff.h. + (message5): New function. + (pr_pid): New var. + (begin_output): Allocate `name' more precisely. + Put child pid into pr_pid, so that we can wait for it later. + Don't check execl's return value, since any return must be an error. + (finish_output): Detect and report output errors. + Use waitpid if available. Check pr exit status. + (line_cmp): Use locale's definition of white space + instead of using one hardwired defn for -b and another for -w. + (analyze_cmp): Avoid double negation with `! nontrivial'. + Pacify `gcc -Wall' be rewriting for-loop into do-while-loop. + (dir_file_pathname): New function. + + * version.c (version_string): Now char[], not char*. + +Thu Jul 29 20:44:30 1993 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu) + + * Makefile.in (config.status): Run config.status --recheck, not + configure, to get the right args passed. + +Thu Jul 22 10:46:30 1993 Paul Eggert (eggert@twinsun.com) + + * Makefile.in (dist): Replace `if [ ! TEST ]; then ACTION; fi' + with `[ TEST ] || ACTION || exit' so that the containing for-loop exits + with proper status for `make'. + +Thu Jul 8 19:47:22 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * Makefile.in (installdirs): New target. + (install): Use it. + (Makefile, config.status, configure): New targets. + +Sat Jun 5 23:10:40 1993 Paul Eggert (eggert@twinsun.com) + + * Makefile.in (dist): Switch from .z to .gz. + +Wed May 26 17:16:02 1993 Paul Eggert (eggert@twinsun.com) + + * diff.c (main): Cast args to compare_files, for traditional C. + * side.c (print_sdiff_common_lines, print_sdiff_hunk): Likewise. + * analyze.c, diff3.c, sdiff.c, util.c: Don't assume NULL is defined + properly. + +Tue May 25 14:54:05 1993 Paul Eggert (eggert@twinsun.com) + + * analyze.c (diff_2_files): With -q, do not report that files differ + if all their differences are ignored. + (briefly_report): New function. + * diff.h (ignore_some_changes): New variable. + * diff.c (compare_files): Don't use the file size shortcut if + ignore_some_changes is nonzero, since the file size may differ + merely due to ignored changes. + (main): Set ignore_some_changes if we might ignore some changes. + Remove unsystematic assignment of 0 to static vars. + * io.c (read_files): New argument PRETEND_BINARY says whether to + pretend the files are binary. + + * diff3.c (tab_align_flag): New variable, for new -T option. + (main, usage, output_diff3): Add support for -T. + +Sun May 23 15:25:29 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * dir.c (dir_sort): Always init `data' to avoid GCC warning. + +Sat May 22 15:35:02 1993 Paul Eggert (eggert@twinsun.com) + + * Makefile.in (dist): Change name of package from diff to diffutils. + Don't bother to build .Z dist; .z suffices. + +Fri May 21 16:35:22 1993 Paul Eggert (eggert@twinsun.com) + + * diff.c: Include "system.h" to get memchr declaration. + * system.h (memchr): Declare if !HAVE_MEMCHR, not if + !HAVE_MEMCHR && !STDC_HEADERS. + +Wed May 19 17:43:55 1993 Paul Eggert (eggert@twinsun.com) + + * Version 2.3 released. + +Fri Apr 23 17:18:44 1993 Paul Eggert (eggert@twinsun.com) + + * io.c (find_identical_ends): Do not discard the last HORIZON_LINES + lines of the prefix, or the first HORIZON_LINES lines of the suffix. + * diff.c (main, longopts, usage): Add --horizon-lines option. + * diff3.c (main, process_diff, read_diff): Invoke second diff + with --horizon-lines determined by the first diff. + * diff.h, diff3.c (horizon_lines): New variable. + +Mon Mar 22 16:16:00 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * system.h [HAVE_STRING_H || STDC_HEADERS] (bcopy, bcmp, bzero): + Don't define if already defined. + +Fri Mar 5 00:20:16 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * diff.c (main): Use NULL in arg to compare_files. + +Thu Feb 25 15:26:01 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * system.h: Declare memchr #if !HAVE_MEMCHR && !STDC_HEADERS, + not #if !HAVE_MEMCHR || !STDC_HEADERS. + +Mon Feb 22 15:04:46 1993 Richard Stallman (rms@geech.gnu.ai.mit.edu) + + * io.c (find_identical_ends): Move complicated arg outside GUESS_LINES. + +Mon Feb 22 12:56:12 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * Makefile.in (.c.o): Add -I$(srcdir); put $(CFLAGS) last before $<. + +Sat Feb 20 19:18:56 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * io.c (binary_file_p): Return zero if file size is zero. + +Fri Feb 19 17:31:32 1993 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * Version 2.2 released. + + * system.h [HAVE_STRING_H || STDC_HEADERS] (index, rindex): Don't + define if already defined. + +Wed Feb 17 17:08:00 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * Makefile.in (srcs): Remove limits.h. + +Thu Feb 11 03:36:00 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * diff3.c (xmalloc): No longer static. + + * sdiff.c (edit): Allocate buf dynamically. + + * dir.c (dir_sort): Handle VOID_CLOSEDIR. + +Wed Feb 10 00:15:54 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * limits.h: File deleted (should never have been there). + +Tue Feb 9 03:53:22 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile.in (.c.o, diff3.o, sdiff.o): Put $(CFLAGS) last. + +Wed Feb 3 15:42:10 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * system.h: Don't #define const; let configure do it. + +Mon Feb 1 02:13:23 1993 Paul Eggert (eggert@hal.gnu.ai.mit.edu) + + * Version 2.1 released. + + * Makefile.in (dist): Survive ln failures. Create .tar.z + (gzipped tar) file as well as .tar.Z (compressed tar) file. + +Fri Jan 8 22:31:41 1993 Paul Eggert (eggert@twinsun.com) + + * side.c (print_half_line): When the input position falls + outside the column, do not output a tab even if the output + position still falls within the column. + +Mon Dec 21 13:54:36 1992 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * Makefile.in (.c.o): Add -I. + +Fri Dec 18 14:08:20 1992 Paul Eggert (eggert@twinsun.com) + + * configure.in: Add HAVE_FCNTL_H, since system.h uses it. + +Tue Nov 24 10:06:48 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * Makefile.in: Note change from USG to HAVE_STRING_H. + +Mon Nov 23 18:44:00 1992 Paul Eggert (eggert@twinsun.com) + + * io.c (find_and_hash_each_line): When running out of lines, + double the number of allocated lines, instead of just doubling + that number minus the prefix lines. This is more likely to + avoid the need for further memory allocation. + +Wed Nov 18 20:40:28 1992 Paul Eggert (eggert@twinsun.com) + + * dir.c (dir_sort): Plug memory leak: space holding directory + contents was not being reclaimed. Get directory size from + struct file_data for initial guess at memory needed. + Detect errors when reading and closing directory. + (diff_dirs): Pass struct file_data to dir_sort. Finish plugging leak. + * diff.c (compare_files): Pass struct file_data to diff_dirs. + + * io.c (find_and_hash_each_line): Don't assume alloc_lines is + nonzero when allocating more lines. + +Thu Nov 12 16:02:18 1992 Paul Eggert (eggert@twinsun.com) + + * diff.c (main): Add `-U lines' as an alias for `--unified=lines'. + + * diff3.c (usage): Add third --label option in example. + + * util.c (analyze_hunk): Fix test for ignoring blank lines. + + * configure.in, system.h: Avoid USG; use HAVE_TIME_H etc. instead. + +Mon Nov 9 05:13:25 1992 Paul Eggert (eggert@twinsun.com) + + * diff3.c (main, usage): Add -A or --show-all. + -m now defaults to -A, not -E. Allow up to three -L options. + (output_diff3_edscript, output_diff3_merge): + Remove spurious differences between these two functions. + Output ||||||| for -A. Distinguish between conflicts and overlaps. + (dotlines, undotlines): New functions that output `Ns', not `N,Ns'. + (output_diff3_edscript, output_diff3_merge): Use them. + + * io.c (find_identical_ends): shift_boundaries needs an extra + identical line at the end, not at the beginning. + + * sdiff.c (edit): execvp wants char **, not const char **. + +Mon Oct 19 04:39:32 1992 Paul Eggert (eggert@twinsun.com) + + * context.c (print_context_script, find_function): Context + line numbers start with - file->prefix_lines, not 0. + + * io.c (binary_file_p): Undo last change; it was a library bug. + +Sun Oct 18 00:17:29 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * io.c (binary_file_p): Consider empty file as non-binary. + +Mon Oct 5 05:18:46 1992 Paul Eggert (eggert@twinsun.com) + + * diff3.c (main, make_3way_diff, using_to_diff3_block): Don't + report bogus differences (for one of -mexEX3) just because the + file0-file1 diffs don't line up with the file0-file2 diffs. + (This is entirely possible since we don't use diff's -n + option.) Always compare file1 to file2, so that diff3 sees + those changes directly. Typically, file2 is now the common + file, not file0. + (output_diff3_merge): The input file is file 0, not the common file. + + (FC, FO): New macros; they replace FILE1, FILE0 for two-way diffs, + to distinguish them from three-way diffs. + + * diff3.c (using_to_diff3_block): Fold repeated code into loops. + + * diff3.c (make_3way_diff, process_diff): Have the *_end + variable point to the next field to be changed, not to the last + object allocated; this saves an if-then-else. + + * diff3.c (process_diff): Use D_NUMLINES instead of its definiens. + + * diff3.c: Make fns and vars static unless they must be external. + +Wed Sep 30 09:21:59 1992 Paul Eggert (eggert@twinsun.com) + + * analyze.c (diff_2_files): OUTPUT_IFDEF is now robust. + * diff.h (ROBUST_OUTPUT_STYLE): Likewise. + (default_line_format): Remove. All refs removed. + + * ifdef.c (print_ifdef_lines): Add %L. Optimize %l\n even if user + specified it, as opposed to its being the default. + +Tue Sep 29 19:01:28 1992 Paul Eggert (eggert@twinsun.com) + + * diff.c (longopts, main): --{old,new,unchanged,changed}--group-format + are new options, so that -D is no longer overloaded. Set + no_diff_means_no_output if --unchanged-{line,group}-format allows it. + * diff.h (enum line_class): New type. + (group_format, line_format): Use it to regularize option flags. + All refs changed. + + * ifdef.c (format_ifdef, print_ifdef_lines): %n is no longer a format. + +Mon Sep 28 04:51:42 1992 Paul Eggert (eggert@twinsun.com) + + * diff.c (main, usage): Replace --line-prefix with the more general + --{old,new,unchanged}-line-format options. + * ifdef.c (format_ifdef, print_ifdef_lines): Likewise. + * diff.h (line_format): Renamed from line_prefix. All refs changed. + * diff.h, ifdef.c (default_line_format): New variable. + * util.c (output_1_line): New function. + (print_1_line): Use it. + + * ifdef.c: (format_ifdef, print_ifdef_lines): Add %0 format. + +Sun Sep 27 05:38:13 1992 Paul Eggert (eggert@twinsun.com) + + * diff.c (main): Add -E or --line-prefix option. Add -D'=xxx' + for common lines. Change default -D< format from copy of -D> + format to to -D<%<; similarly for default -D> format. + * diff.h (common_format, line_prefix): New variables. + * ifdef.c (format_ifdef): New function. + (print_ifdef_script, print_ifdef_hunk, print_ifdef_lines): + Use it for -D'=xxx', -E. + + * context.c (find_hunk): Glue together two non-ignorable changes that + are exactly CONTEXT * 2 lines apart. This shortens output, removes + a behavioral discontinuity at CONTEXT = 0, and is more compatible + with traditional diff. + + * io.c (find_identical_ends): Slurp stdin at most once. + + * util.c (print_line_line): line_flag is const char *. + +Thu Sep 24 15:18:07 1992 Paul Eggert (eggert@twinsun.com) + + * ifdef.c (print_ifdef_lines): New function, which fwrites a sequence + of lines all at once for speed. + (print_ifdef_script, print_ifdef_hunk): Use it. + +Thu Sep 24 05:54:14 1992 Paul Eggert (eggert@twinsun.com) + + * diff.c (main): Support new -D options for if-then-else formats. + (specify_format): New function. + * diff.h (ifndef_format, ifdef_format, ifnelse_format): New variables. + * ifdef.c (print_ifdef_hunk): Use the new variables instead of + a hardwired format. + + * side.c (print_1sdiff_line): Represent incomplete lines on output. + (print_sdiff_script): Likewise. Don't print 'q' at end, + since that doesn't work with incomplete lines. + * sdiff.c (interact): Don't assume diff output ends with 'q' line. + * diff.h (ROBUST_OUTPUT_STYLE): OUTPUT_SDIFF is now robust. + + * sdiff.c (lf_copy, lf_snarf): Use memchr instead of index, + to avoid dumping core when files contain null characters. + (memchr): New function (if memchr is missing). + + * io.c (sip): New arg SKIP_TEST to skip test for binary file. + (read_files): Don't bother testing second file if first is binary. + +Thu Sep 17 21:17:49 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * system.h [!USG && !_POSIX_VERSION]: Protect from conflicting + prototype for wait in sys/wait.h. + +Wed Sep 16 12:32:18 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * Makefile.in: Include binprefix in -DDIFF_PROGRAM. + +Tue Sep 15 14:27:25 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * Version 2.0. + +Sat Sep 12 01:31:19 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * util.c, diff.h, system.h [!HAVE_MEMCHR]: Don't use void * + and const when declaring memchr replacement. Declare memchr + if !STDC_HEADERS && !USG. + +Thu Sep 10 15:17:32 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * Makefile.in (uninstall): New target. + + * diff.c (excluded_filename): Use fnmatch, not wildmat. + (usage): Document -x, -X, --exclude, --exclude-from. + Makefile.in: Use fnmatch.c, not wildmat.c. + +Sun Sep 6 23:46:25 1992 Paul Eggert (eggert@twinsun.com) + + * configure.in: Add HAVE_MEMCHR. + * diff.h, util.c: Use it instead of MEMCHR_MISSING. + +Sun Sep 6 07:25:49 1992 Paul Eggert (eggert@twinsun.com) + + * diff.h: (struct line_def): Replace this 3-word struct with char *. + This uses less memory, particularly for large files with short lines. + (struct file_data): New member linbuf_base counts number of lines + in common prefix that are not recorded in linbuf; + this uses less memory if files are identical or differ only at end. + New member buffered_lines counts possibly differing lines. + New member valid_lines counts valid data. + New member alloc_lines - linbuf_base replaces old linbufsize. + linbuf[0] now always points at first differing line. + Remove unused members ltran, suffix_lines. + Add const where appropriate. + (Is_space): New macro, for consistent definition of `white space'. + (excluded_filename, memchr, sip, slurp): New declarations. + * ed.c (print_ed_hunk): Adjust to diff.h's struct changes. + * context.c (pr_context_hunk): Likewise. + * ifdef.c (print_ifdef_script): Likewise. + * side.c (print_sdiff_script, print_half_line): Likewise. + * util.c (analyze_hunk, line_cmp, print_1_line): Likewise. + + * analyze.c (shift_boundaries): Remove unneeded variable `end' and + unnecessary comparisons of `preceding' and `other_preceding' against 0. + (diff_2_files): When comparing files byte-by-byte for equality, + don't slurp them all in at once; just compare them a buffer at a time. + This can win big if they differ early on. + Move some code to compare_files to enable this change. + Use only one buffer for stdin with `diff - -'. + (discard_confusing_lines, diff_2_files): Coalesce malloc/free calls. + (build_script): Remove obsolete OUTPUT_RCS code. + + * diff.c (add_exclude, add_exclude_file, excluded_filename): New fns. + (main): Use them for the new --exclude and --exclude-from options. + (compare_files): Don't open a file unless it must be read. + Treat `diff file file' and `diff file dir' similarly. + Move some code here from diff_2_files to enable this. + Simplify file vs dir warning. + + * dir.c (dir_sort): Support new --exclude* options. + + * io.c (struct equivclass): Put hash code and line length here instead + of struct line_def, so that they can be shared. + (find_and_hash_each_line): Compute equivalence class as we go, + instead of doing it in a separate pass; this thrashes memory less. + Make buckets realloc-able, since we can't preallocate them. + Record one more line start than there are lines, so that we can compute + any line's length by subtracting its start from the next line's, + instead of storing the length explicitly. This saves memory. + Move prefix-handling code to find_identical_ends; + this wins with large prefixes. + Use Is_space, not is_space, for consistent treatment of white space. + (prepare_text_end): New function. + (find_identical_ends): Move slurping here, so it's only done when + needed. Work even if the buffers are the same (because of `diff - -'). + Compare prefixes a word at a time for speed. + (find_equiv_class): Delete; now done by find_and_hash_each_line. + (read_files): Don't slurp unless needed. + find_equiv_class's work is now folded into find_and_hash_each_line. + Don't copy stdin buffer if `diff - -'. + Check for running out of primes. + (sip, slurp): Split first part of `slurp' into another function `sip'. + `sip' sets things up and perhaps reads the first ST_BLKSIZE buffer to + see whether the file is binary; `slurp' now just finishes the job. + This lets diff_2_files compare binary files lazily. + Allocate a one-word sentinel to allow word-at-a-time prefix comparison. + Count prefix lines only if needed, only count the first file's prefix. + Don't bother to count suffix lines; it's never needed. + Set up linbuf[0] to point at first differing line. + (binary_file_p): Change test for binary files: + if it has a null byte in its first buffer, it's binary. + (primes): Add more primes. + + * util.c (line_cmp): Use bcmp for speed. + Use Is_space, not is_space, for consistent treatment of white space. + (translate_line_number): Internal line numbers now count from 0 + starting after the prefix. + (memchr): New function (if memchr is missing). + + * Makefile.in: Document HAVE_ST_BLKSIZE. Link with wildmat.o. + * system.h (STAT_BLOCKSIZE): New macro based on HAVE_ST_BLKSIZE. + * configure.in: Add AC_ST_BLKSIZE. + * wildmat.c: New file. + +Fri Sep 4 01:28:51 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * sdiff.c (xmalloc): Renamed from ck_malloc. Callers changed. + +Thu Sep 3 15:28:59 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * diff.h: Don't declare free, index, rindex. + +Tue Aug 11 22:18:06 1992 John Gilmore (gnu at cygnus.com) + + * io.c (binary_file_p): Use heuristic to avoid declaring info + files as binary files. Allow about 1.5% non-printing + characters (in info's case, ^_). + +Tue Jul 7 01:09:26 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * diff.h: Replace function_regexp and ignore_regexp with lists + of compiled regexps. + * analyze.c, context.c, util.c: Test whether the lists, not + the old variables, are empty. + * util.c (analyze_hunk), context.c (find_function): Compare + lines with the lists of regexps. + * diff.c (add_regexp): New function. + (main): Use it. + + * diff3: Add -v --version option. + * Makefile.in: Link with version.o. + + * system.h: New file. + * diff.h, cmp.c, diff3.c, sdiff.c: Use it. + + * diff.h, diff3.c: Include string.h or strings.h, as appropriate. + Declare malloc and realloc. + + * diff3.c (perror_with_exit): Include program name in message. + + * diff3.c: Lowercase error messages for GNU standards. + + * sdiff.c [USG || STDC_HEADERS]: Define bcopy in terms of memcpy. + + * sdiff.c: Use the version number from version.c. + * Makefile.in: Link with version.o. + + * cmp.c error.c xmalloc.c: New files from textutils. + * Makefile.in: Add rules for them. + + * diff.c (longopts): --unidirectional-new-file is like -P, not -N. + Rename --file-label to --label (leave old name, but undocumented). + + * sdiff.c, diff.c (usage): Condense messages and fix some errors. + + * diff3.c (main, usage): Add long-named options. + +Fri Jul 3 14:31:18 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * diff.h, diff3.c, sdiff.c: Change FOO_MISSING macros to HAVE_FOO. + +Thu Jun 25 16:59:47 1992 David J. MacKenzie (djm@apple-gunkies.gnu.ai.mit.edu) + + * diff.c: --reversed-ed -> --forward-ed. + +Wed Feb 26 12:17:32 1992 Paul Eggert (eggert@yata.uucp) + + * analyze.c, diff.c, diff.h, io.c: For -y, compare even if same file. + +Fri Feb 14 22:46:38 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * io.c, diff3.c, analyze.c: Add extra parentheses. + +Sun Feb 9 00:22:42 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * diff.h (unidirectional_new_file_flag): New variable. + * diff.c (main): Set that for -P. + (compare_files): Support -P, somewhat like -N. + (longopts): Support long name for -P. + +Sat Jan 4 20:10:34 1992 Paul Eggert (eggert at yata.uucp) + + * Makefile.in: Distribute diff.info-* too. + + * README, sdiff.c: version number now matches version.c. + + * configure: Fix and document vfork test. + + * ifdef.c: Don't dump core if `diff -Dx f f'. + +Mon Dec 23 23:36:08 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu) + + * diff.h, diff3.c, sdiff.c: Change POSIX ifdefs to + HAVE_UNISTD_H and _POSIX_VERSION. + +Wed Dec 18 17:00:31 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu) + + * Makefile.in (srcs): Add sdiff.c. + (tapefiles): Add diff.texi and diff.info. + + * diff.h, diff3.c, sdiff.c: Use HAVE_VFORK_H instead of + VFORK_HEADER and VFORK_WORKS. + +Tue Dec 17 00:02:59 1991 Paul Eggert (eggert at yata.uucp) + + * Makefile.in (all): Add diff.info, sdiff. + + * configure, diff.c, sdiff.c: + Prefix long options with `--', not `+'. + * diff.c: Regularize option names. + + * configure: Fix check for vfork. + * configure, diff.c, diff.h, diff3.c, sdiff.c: + Use Posix definitions when possible. + + * context.c: Align context with tab if -T is given. Tune. + * diff.c, diff.h, side.c: Calculate column widths so that tabs line up. + * io.c: Add distinction between white space and printing chars. + * side.c: Don't expand tabs unless -t is given. + * side.c, util.c: Tab expansion now knows about '\b', '\f', '\r', '\v'. + * util.c: -w skips all white space. Remove lint. Tune. + + * sdiff.c: Support many more diff options, e.g. `-', `sdiff file dir'. + Ignore interrupts while the subsidiary editor is in control. + Clean up temporary file and kill subsidiary diff if interrupted. + Ensure subsidiary diff doesn't ignore SIGPIPE. + Don't get confused while waiting for two subprocesses. + Don't let buffers overflow. Check for I/O errors. + Convert to GNU style. Tune. + + * sdiff.c, util.c: Don't lose errno. + Don't confuse sdiff with messages like `Binary files differ'. + * sdiff.c, side.c: Don't assume that common lines are identical. + Simplify --sdiff-merge-assist format. + +Mon Sep 16 16:42:01 1991 Tom Lord (lord at churchy.gnu.ai.mit.edu) + + * Makefile.in, sdiff.c: introduced sdiff front end to diff. + + * Makefile.in, analyze.c, diff.c, diff.h, io.c, side.c: Added + sdiff-style output format to diff. + +Mon Aug 26 16:44:55 1991 David J. MacKenzie (djm at pogo.gnu.ai.mit.edu) + + * Makefile.in, configure: Only put $< in Makefile if using VPATH, + because older makes don't understand it. + +Fri Aug 2 12:22:30 1991 David J. MacKenzie (djm at apple-gunkies) + + * configure: Create config.status. Remove it and Makefile if + interrupted while creating them. + +Thu Aug 1 22:24:31 1991 David J. MacKenzie (djm at apple-gunkies) + + * configure: Check for +srcdir etc. arg and look for + Makefile.in in that directory. Set VPATH if srcdir is not `.'. + * Makefile.in: Get rid of $(archpfx). + +Tue Jul 30 21:28:44 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * Makefile.in (prefix): Renamed from DESTDIR. + +Wed Jul 24 23:08:56 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu) + + * diff.h, diff3.c: Rearrange ifdefs to use POSIX, + STDC_HEADERS, VFORK_MISSING, DIRENT. This way it works on + more systems that aren't pure USG or BSD. + Don't not define const if __GNUC__ is defined -- that would + break with -traditional. + * configure: Check for those features. + +Wed Jul 10 01:39:23 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu) + + * configure, Makefile.in: $(INSTALLPROG) -> $(INSTALL). + +Sat Jul 6 16:39:04 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu) + + * Replace Makefile with configure and Makefile.in. + Update README with current compilation instructions. + +Sat Jul 6 14:03:29 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * util.c (setup_output): Just save the args for later use. + (begin_output): Do the real work, with the values that were saved. + It's safe to call begin_output more than once. + Print the special headers for context format here. + * analyze.c (diff_2_files): Don't print special headers here. + * context.c (pr_context_hunk, pr_unidiff_hunk): Call begin_output. + * ed.c (print_ed_hunk, print_forward_ed_hunk, print_rcs_hunk): + * normal.c (print_normal_hunk): Likewise. + * ifdef.c (print_ifdef_hunk): Likewise. + * util.c (finish_output): Don't die if begin_output was not called. + +Thu Jun 20 23:10:01 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu) + + * Makefile: Add TAGS, distclean, and realclean targets. + Set SHELL. + +Tue Apr 30 13:54:36 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * diff.h (TRUE, FALSE): Undefine these before defining. + +Thu Mar 14 18:27:27 1991 Richard Stallman (rms@mole.ai.mit.edu) + + * Makefile (objs): Include $(ALLOCA). + +Sat Mar 9 22:34:03 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * diff.h: Include regex.h. + +Thu Feb 28 18:59:53 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * Makefile (diff3): Link with GNU getopt. + +Sat Feb 23 12:49:43 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * io.c (find_equiv_class): Make hash code unsigned before mod. + + * diff.h (files): Add EXTERN. + +Sun Jan 13 21:33:01 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * diff.c: +print option renamed +paginate. Remove +all-text. + +Mon Jan 7 06:18:01 1991 David J. MacKenzie (djm at geech.ai.mit.edu) + + * Makefile (dist): New target, replacing diff.tar and + diff.tar.Z, to encode version number in distribution directory + and tar file names. + +Sun Jan 6 18:42:23 1991 Michael I Bushnell (mib at geech.ai.mit.edu) + + * Version 1.15 released. + + * version.c: Updated from 1.15 alpha to 1.15 + + * context.c (print_context_number_range, + print_unidiff_number_range): Don't print N,M when N=M, print + just N instead. + + * README: Updated for version 1.15. + Makefile: Updated for version 1.15. + + * diff3.c (main): Don't get confused if one of the arguments + is a directory. + + * diff.c (compare_files): Don't get confused if comparing + standard input to a directory; print error instead. + + * analyze.c (diff_2_files), context.c (print_context_header, + print_context_script), diff.c (main), diff.h (enum + output_style): Tread unidiff as an output style in its own + right. This also generates an error when both -u and -c are + given. + + * diff.c (main): Better error messages when regexps are bad. + + * diff.c (compare_files): Don't assume stdin is opened. + + * diff3.c (read_diff): Don't assume things about the order of + descriptor assignment and closes. + + * util.c (setup_output): Don't assume things about the order + of descriptor assignment and closes. + + * diff.c (compare_files): Set a flag so that closes don't + happen more than once. + + * diff.c (main): Don't just flush stdout, do a close. That + way on broken systems we can still get errors. + +Mon Dec 24 16:24:17 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * diff.c (usage): Use = for args of long options. + +Mon Dec 17 18:19:20 1990 Michael I Bushnell (mib at geech.ai.mit.edu) + + * context.c (print_context_label): Labels were interchanged badly. + + * context.c (pr_unidiff_hunk): Changes to deal with files + ending in incomplete lines. + * util.c (print_1_line): Other half of the changes. + +Mon Dec 3 14:23:55 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * diff.c (longopts, usage): unidiff => unified. + +Wed Nov 7 17:13:08 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * analyze.c (diff_2_files): No warnings about newlines for -D. + + * diff.c (pr_unidiff_hunk): Remove ref to output_patch_flag. + +Tue Oct 23 23:19:18 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * diff.c (compare_files): For -D, compare even args are same file. + * analyze.c (diff_2_files): Likewise. + Also, output even if files have no differences. + + * analyze.c (diff_2_files): Print missing newline messages last. + Return 2 if a newline is missing. + Print them even if files end with identical text. + +Mon Oct 22 19:40:09 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * diff.c (usage): Return 2. + +Wed Oct 10 20:54:04 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * diff.c (longopts): Add +new-files. + +Sun Sep 23 22:49:29 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * context.c (print_context_script): Handle unidiff_flag. + (print_context_header): Likewise. + (print_unidiff_number_range, pr_unidiff_hunk): New functions. + * diff.c (longopts): Add element for +unidiff. + (main): Handle +unidiff and -u. + (usage): Mention them. + +Wed Sep 5 16:33:22 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * io.c (find_and_hash_each_line): Deal with missing final newline + after buffering necessary context lines. + +Sat Sep 1 16:32:32 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * io.c (find_identical_ends): ROBUST_OUTPUT_FORMAT test was backward. + +Thu Aug 23 17:17:20 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * diff3.c (WIFEXITED): Undef it if WEXITSTATUS is not defined. + * context.c (find_function): Don't try to return values. + +Wed Aug 22 11:54:39 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * diff.h (O_RDONLY): Define if not defined. + +Tue Aug 21 13:49:26 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * Handle -L option. + * context.c (print_context_label): New function. + (print_context_header): Use that. + * diff.c (main): Recognize the option. + (usage): Updated. + * diff.h (file_label): New variable. + * diff3.c (main): Recognize -L instead of -t. + + * diff3.c (main): Support -m without other option. + + * diff3.c (WEXITSTATUS, WIFEXITED): Define whenever not defined. + + * diff3.c (bcopy, index, rindex): Delete definitions; not used. + (D_LINENUM, D_LINELEN): Likewise. + (struct diff_block): lengths includes newlines. + (struct diff3_block): Likewise. + (always_text, merge): New variables. + (read_diff): Return address of end, not size read. Calls changed. + Pass -a to diff if given to diff3. + current_chunk_size now an int. Detect error in `pipe'. + Check for incomplete line of output here. + (scan_diff_line): Don't make scan_ptr + 2 before knowing it is valid. + No need to check validity of diff output here. + Include newline in length of line. + (main): Compute rev_mapping here. Handle -a and -m. + Error message if excess -t operands. Error for incompatible options. + Error if `-' given more than once. + Fix error storing in tag_strings. + (output_diff3): REV_MAPPING is now an arg. Call changed. + Change syntax of "missing newline" message. + Expect length of line to include newline. + (output_diff3_edscript): Return just 0 or 1. + REV_MAPPING is now an arg. Call changed. + (output_diff3_merge): New function. + (process_diff): Better error message for bad diff format. + (fatal, perror_with_exit): Return status 2. + + * analyze.c (diff_2_files): Report missing newline in either + or both files, if not robust output style. + + * util.c (setup_output): Detect error from pipe. + No need to close stdin. + + * util.c (print_1_line): Change format of missing-newline msg. + Change if statements to switch. + + * io.c (slurp): Don't mention differences in final newline if -B. + + * io.c (binary_file_p): Use ISO char set as criterion, not ASCII. + + * io.c (find_identical_ends): Increase value of BEG0 by 1. + Other changes in backwards scan to avoid decrementing pointers + before start of array, and set LINES properly. + + * diff.h (ROBUST_OUTPUT_STYLE): New macro. + * io.c (find_identical_ends, find_and_hash_each_line): Use that macro. + + * diff.h (dup2): Don't define if XENIX. + + * diff.c (main): Check for write error at end. + + * context.c (find_function): Don't return a value. + Use argument FILE rather than global files. + + * analyze.c: Add external function declarations. + * analyze.c (build_script): Turn off explicit check for final newline. + + * analyze.c (discard_confusing_lines): Make integers unsigned. + +Tue Jul 31 21:37:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * io.c (find_and_hash_each_line): Correct the criterion + for leaving out the newline from the end of the line. + +Tue May 29 21:28:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * dir.c (diff_dirs): Free things only if nonzero. + +Mon Apr 16 18:31:05 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff.h (NDIR_IN_SYS): New macro controls location of ndir.h. + + * diff3.c (xmalloc, xrealloc): Don't die if size == 0 returns 0. + +Sun Mar 25 15:58:42 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * analyze.c (discard_confusing_lines): + `many' wasn't being used; use it. + Canceling provisionals near start of run must handle already + canceled provisionals. + Canceling subruns of provisionals was canceling last nonprovisional. + +Sat Mar 24 14:02:51 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * analyze.c (discard_confusing_lines): + Threshold for line occurring many times scales by square root + of total lines. + Within each run, cancel any long subrun of provisionals. + Don't update `provisional' while canceling provisionals. + In big outer loop, handle provisional and nonprovisional separately. + +Thu Mar 22 16:35:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * analyze.c (discard_confusing_lines): + The first loops to discard provisionals from ends failed to step. + In second such loops, keep discarding all consecutive provisionals. + Increase threshold for stopping discarding, and also check for + consecutive nondiscardables as separate threshold. + +Fri Mar 16 00:33:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff3.c (read_diff): Pass -- as first arg to diff. + + * diff3.c: Include wait.h or define equivalent macros. + (read_diff): Don't use stdio printing error in the inferior. + Remember the pid and wait for it. Report failing status. + Report failure of vfork. + +Sun Mar 11 17:10:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff3.c (main): Accept -t options and pass to output_diff3_edscript. + (usage): Mention -t. + (read_diff): Use vfork. + (vfork): Don't use it on Sparc. + + * diff.h (vfork): Don't use it on Sparc. + +Tue Mar 6 22:37:20 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff3.c (dup2): Don't define on Xenix. + + * Makefile: Comments for Xenix. + +Thu Mar 1 17:19:23 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * analyze.c (diff_2_files): `message' requires three args. + +Fri Feb 23 10:56:50 1990 David J. MacKenzie (djm at albert.ai.mit.edu) + + * diff.h, util.c, diff3.c: Change 'void *' to 'VOID *', with + VOID defined as void if __STDC__, char if not. + +Sun Feb 18 20:31:58 1990 David J. MacKenzie (djm at albert.ai.mit.edu) + + * Makefile: Add rules for getopt.c, getopt1.c, getopt.h. + + * getopt.c, getopt.h, getopt1.c: New files. + + * main.c (main, usage): Add long options. + + * analyze.c (shift_boundaries): Remove unused var 'j_end'. + +Thu Feb 8 02:43:16 1990 Jim Kingdon (kingdon at pogo.ai.mit.edu) + + * GNUmakefile: include ../Makerules before Makefile. + +Fri Feb 2 23:21:38 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * analyze.c (diff_2_files): If -B or -I, don't return 1 + if all changes were ignored. + +Wed Jan 24 20:43:57 1990 Richard Stallman (rms at albert.ai.mit.edu) + + * diff3.c (fatal): Output to stderr. + +Thu Jan 11 00:25:56 1990 David J. MacKenzie (djm at hobbes.ai.mit.edu) + + * diff.c (usage): Mention -v. + +Wed Jan 10 16:06:38 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff3.c (output_diff3_edscript): Return number of overlaps. + (main): If have overlaps, exit with status 1. + +Sun Dec 24 10:29:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * io.c (find_equiv_class): Fix typo that came from changing init of B + to an assignment. + + * version.c: New file. + * diff.c (main): -v prints version number. + + * io.c (binary_file_p): Null char implies binary file. + +Fri Nov 17 23:44:55 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * util.c (print_1_line): Fix off by 1 error. + +Thu Nov 16 13:51:10 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * util.c (xcalloc): Function deleted. + + * io.c (slurp): Null-terminate the buffer. + + * io.c (read_files): Delete unused vars. + + * io.c (find_equiv_class): Don't index by N if too low. + + * dir.c (dir_sort): Delete the extra declaration of compare_names. + + * diff.h: Don't declare xcalloc. Declare some other functions. + + * analyze.c (shift_boundaries): + Test for END at end of range before indexing by it. + Fix misspelling of `preceding' in var names. + +Sat Nov 11 14:04:16 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff3.c (using_to_diff3_block): Delete unused vars. + (make_3way_diff, process_diff_control, read_diff, output_diff3): Likewise. + +Mon Nov 6 18:15:50 EST 1989 Jay Fenlason (hack@ai.mit.edu) + + * README Fix typo. + +Fri Nov 3 15:27:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff.c (usage): Mention -D. + + * ifdef.c (print_ifdef_hunk): Write comments on #else and #endif. + +Sun Oct 29 16:41:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff.c (compare_files): Don't fflush for identical files. + +Wed Oct 25 17:57:12 1989 Randy Smith (randy at apple-gunkies.ai.mit.edu) + + * diff3.c (using_to_diff3_block): When defaulting lines from + FILE0, only copy up to just under the *lowest* line mentioned + in the next diff. + + * diff3.c (fatal): Add \n to error messages. + +Wed Oct 25 15:05:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile (tapefiles): Add ChangeLog. + +Tue Oct 3 00:51:17 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff3.c (process_diff, create_diff3_block): Init ->next field. + +Fri Sep 29 08:16:45 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * util.c (line_cmp): Alter end char of line 2, not line 1. + +Wed Sep 20 00:12:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile (diff.tar): Expect ln to fail on some files; + copy them with cp. + +Mon Sep 18 02:54:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Handle -D option: + * io.c (find_and_hash_each_line): Keep all lines of 1st file. + * diff.c (main): Handle -D option. + (compare_files): Reject -D if files spec'd are directories. + * analyze.c (diff_2_files): Handle OUTPUT_IFDEF case. + +Fri Sep 1 20:15:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff.c (option_list): Rename arg VECTOR as OPTIONVEC. + +Mon Aug 28 17:58:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff.c (compare_files): Clear entire inf[i].stat. + +Wed Aug 23 17:48:47 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * io.c (find_identical_ends): Sign was backward + determining where to bound the scan for the suffix. + +Wed Aug 16 12:49:16 1989 Richard Stallman (rms at hobbes.ai.mit.edu) + + * analyze.c (diff_2_files): If -q, treat all files as binary. + * diff.c (main): Detect -q, record in no_details_flag. + +Sun Jul 30 23:12:00 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff.c (usage): New function. + (main): Call it. + +Wed Jul 26 02:02:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff.c (main): Make -C imply -c. + +Thu Jul 20 17:57:51 1989 Chris Hanson (cph at kleph) + + * io.c (find_and_hash_each_line): Bug fix in context handling, + introduced by last change. + +Fri Jul 14 17:39:20 1989 Chris Hanson (cph at kleph) + + * analyze.c: To make RCS work correctly on files that don't + necessarily end in newline, introduce some changes that cause + diffs to be sensitive to missing final newline. Because + non-RCS modes don't want to be affected by these changes, they + are conditional on `output_style == OUTPUT_RCS'. + (diff_2_files) [OUTPUT_RCS]: Suppress the "File X missing + newline" message. + (build_script) [OUTPUT_RCS]: Cause the last line to compare as + different if exactly one of the files is missing its final + newline. + + * io.c (find_and_hash_each_line): Bug fix in + ignore_space_change mode. Change line's length to include the + newline. For OUTPUT_RCS, decrement last line's length if + there is no final newline. + (find_identical_ends) [OUTPUT_RCS]: If one of the files is + missing a final newline, make sure it's not included in either + the prefix or suffix. + + * util.c (print_1_line): Change line output routine to account + for line length including the newline. + +Tue Jun 27 02:35:28 1989 Roland McGrath (roland at hobbes.ai.mit.edu) + + * Makefile: Inserted $(archpfx) where appropriate. + +Wed May 17 20:18:43 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff3.c [USG]: Include fcntl.h. + + * diff.h [USG]: New compilation flags HAVE_NDIR, HAVE_DIRECT. + +Wed Apr 26 15:35:57 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * dir.c (diff_dirs): Two new args, NONEX1 and NONEX2, say to pretend + nonex dirs are empty. + (dir_sort): New arg NONEX, likewise. + * diff.c (compare_files): Pass those args. + Sometimes call diff_dirs if subdir exists in just one place. + +Wed Apr 12 01:10:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * io.c (find_identical_ends): Set END0 *after* last char + during backward scan for suffix. + +Sat Apr 8 15:49:49 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) + + * diff3.c (using_to_diff3_block): Now find high marks in files 1 + and 2 through mapping off of the last difference instead of the + first. + + * diff3.c: Many trivial changes to spelling inside comments. + +Fri Feb 24 12:38:03 1989 Randall Smith (randy at gluteus.ai.mit.edu) + + * util.c, normal.c, io.c, ed.c, dir.c, diff.h, diff.c, context.c, + analyze.c, Makefile: Changed copyright header to conform with new + GNU General Public license. + * diff3.c: Changed copyright header to conform with new GNU + General Public license. + * COPYING: Made a hard link to /gp/rms/COPYING. + +Fri Feb 24 10:01:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * io.c (slurp): Leave 2 chars space at end of buffer, not one. + (find_identical_ends): Special case if either file is empty; + don't try to make a sentinel since could crash. + +Wed Feb 15 14:24:48 1989 Jay Fenlason (hack at apple-gunkies.ai.mit.edu) + + * diff3.c (message) Re-wrote routine to avoid using alloca() + +Wed Feb 15 06:19:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * io.c (find_identical_ends): Delete the variable `bytes'. + +Sun Feb 12 11:50:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * io.c (slurp): ->bufsize is nominal amount we have room for; + add room for sentinel when calling xmalloc or xrealloc. + + * io.c (find_identical_ends): Do need overrun check in finding suffix. + +Fri Feb 10 01:28:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff.c (main): -C now takes arg to specify context length. + Now -p to show C function name--Damned IEEE! + Fatal error if context length spec'd twice. + + * ed.c (print_ed_hunk): Now special treatment only for lines containing + precisely a dot and nothing else. Output `..', end the insert, + substitute that one line, then resume the insert if nec. + + * io.c (find_and_hash_lines): When backing up over starting context, + don't move past buffer-beg. + + * io.c (find_identical_ends): Use sentinels to make the loops faster. + If files are identical, skip the 2nd loop and return quickly. + (slurp): Leave 1 char extra space after each buffer. + + * analyze.c (diff_2_files): Mention difference in final newlines. + +Wed Jan 25 22:44:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * dir.c (diff_dirs): Use * when calling fcn ptr variable. + +Sat Dec 17 14:12:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile: New vars INSTALL and LIBS used in some rules; + provide default defns plus commented-put defns for sysV. + +Thu Nov 17 16:42:53 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * dir.c (dir_sort): Open-trouble not fatal; just say # files is -1. + (diff_dirs): If dir_sort does that, give up and return 2. + + * diff.c (compare_files): Don't open directories. + Don't close them specially either. + Cross-propagate inf[i].dir_p sooner. + +Sun Nov 13 11:19:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff.h: Declare index, rindex. + + * diff.c (compare_files): If comparing foodir with b/f, + use foodir/f, not foodir/b/f. + + * diff.c (compare_files): Don't print "are identical" msg for 2 dirs. + Status now 1 if one file is a dir and the other isn't, etc. + +Thu Nov 3 16:30:24 1988 Randall Smith (randy at gluteus.ai.mit.edu) + + * Makefile: Added a define for diff3 to define DIFF_PROGRAM. + + * util.c: Added hack to make sure that perror was not called with + a null pointer. + + * diff.c: Changed S_IFDIR to S_IFMT in masking type of file bits + out. + + * diff3.c: Included USG compatibility defines. + + * diff.h: Moved sys/file.h into #else USG section (not needed or + wanted on System V). + + * ed.c, analyze.c, context.c: Shortened names to 12 characters for + the sake of System V (too simple not to do). + + + ----- + + Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1997, + 1998, 1999, 2000, 2001, 2002, 2004, 2006, 2009 + Free Software Foundation, Inc. + + Copying and distribution of this file, with or without + modification, are permitted provided the copyright notice and this + notice are preserved. |