* 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.
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.
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.
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 (nearly-equivalent) pre-2001 code.
(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.
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.
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.
(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.
(main): Adjust to latest gnulib c_stack_action calling conventions.
Adjust to latest version_etc calling conventions.
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.
(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.
(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.
(main): Adjust to latest gnulib c_stack_action calling conventions.
Adjust to latest version_etc calling conventions.
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.