* lib/regex_internal.c (re_string_reconstruct): Don't assume buffer
[gnulib.git] / lib / ChangeLog
index 05858c2..e75459d 100644 (file)
+2005-08-31  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * regex_internal.c (re_string_reconstruct): Don't assume buffer
+       lengths fit in regoff_t; this isn't true if regoff_t is the same
+       width as size_t.
+       * regex.c (re_search_internal): 5th arg is LAST_START
+       (= START + RANGE) instead of RANGE.  This avoids overflow
+       problems when regoff_t is the same width as size_t.
+       All callers changed.
+       (re_search_2_stub): Check for overflow when adding the
+       sizes of the two strings.
+       (re_search_stub): Check for overflow when adding START
+       to RANGE; if it occurs, substitute the extreme value.
+
+2005-08-31  Jim Meyering  <jim@meyering.net>
+
+       * regcomp.c (search_duplicated_node): Make first pointer arg
+       a pointer-to-const.
+       * regex_internal.c (create_ci_newstate, create_cd_newstate):
+       (register_state): Likewise.
+       * regexec.c (search_cur_bkref_entry, check_dst_limits):
+       (check_dst_limits_calc_pos_1, check_dst_limits_calc_pos):
+       (group_nodes_into_DFAstates): Likewise.
+
+2005-08-31  Paul Eggert  <eggert@cs.ucla.edu>
+
+       On 64-bit hosts (where size_t is 64 bits and int is 32 bits), the
+       old glibc regex code mishandles strings longer than 2**31 bytes.
+       This patch fixes this when the regex code is used in gnulib
+       (i.e., outside glibc).
+
+       This patch should not affect the use of the regex code inside
+       glibc.  No doubt this problem also needs to be handled for glibc
+       as well, but the result will be an incompatible change to the
+       glibc ABI, and the old ABI will have to be supported too.  That
+       can be the the subject for another patch.
+
+       * regex.h (_REGEX_LARGE_OFFSETS): New feature-test macro,
+       governing whether the rest of this patch is active.  By default,
+       the macro is disabled and the patch has no effect.
+       (regoff_t) [defined _REGEX_LARGE_OFFSETS]: Define to off_t, not int.
+       (__re_idx_t, __re_size_t, __re_long_size_t): New types.
+       (struct re_pattern_buffer, re_search, re_search_2, re_match):
+       (re_match_2, re_set_registers): Use the new types.
+       * regex_internal.h (Idx, re_hashval_t): New types.
+       (REG_MISSING, REG_ERROR, REG_VALID_INDEX, REG_VALID_NONZERO_INDEX):
+       New macros.
+       (re_node_set, re_charset_t, re_token_t, re_string_realloc_buffers):
+       (re_string_context_at, bin_tree_t, re_dfastate_t):
+       (struct re_state_table_entry, state_array_t, re_sub_match_last_t):
+       (re_sub_match_top_t, re_match_context_t, re_sift_context_t):
+       (struct re_fail_stack_ent_t, struct re_fail_stack_t, struct re_dfa_t):
+       (re_string_char_size_at, re_string_wchar_at):
+       (re_string_elem_size_at):
+       Use the new types and macros to port to 64-bit hosts.
+       Use unsigned types for internal values, so that the code
+       mostly works even for arrays larger than SSIZE_MAX.
+       * regcomp.c (re_compile_internal, init_dfa, duplicate_node):
+       (search_duplicated_node, calc_eclosure_iter, fetch_number):
+       (parse_reg_exp, parse_branch, parse_expression, parse_sub_exp):
+       (build_equiv_class, build_charclass, re_compile_fastmap_iter):
+       (free_dfa_content, create_initial_state, optimize_utf8, analyze):
+       (optimize_subexps, calc_first, link_nfa_nodes, duplicate_node_closure):
+       (calc_inveclosure, parse_dup_op, build_range_exp):
+       (build_collating_symbol, parse_bracket_exp, build_charclass_op):
+       (fetch_number, create_token_tree, mark_opt_subexp):
+       Likewise.
+       * regex_internal.c (re_string_construct_common, create_ci_newstate):
+       (create_cd_newstate, re_string_allocate, re_string_construct):
+       (re_string_realloc_buffers, build_wcs_upper_buffer):
+       (re_string_skip_chars, build_upper_buffer, re_string_translate_buffer):
+       (re_string_reconstruct, re_string_peek_byte_case):
+       (re_string_fetch_byte_case, re_string_context_at):
+       (re_node_set_alloc, re_node_set_init_1, re_node_set_init_2):
+       (re_node_set_init_copy, re_node_set_add_intersect):
+       (re_node_set_init_union, re_node_set_merge, re_node_set_insert):
+       (re_node_set_insert_last, re_node_set_compare, re_node_set_contains):
+       (re_node_set_remove_at, re_dfa_add_node, calc_state_hash):
+       (re_acquire_state, re_acquire_state_context, register_state):
+       Likewise.
+       * regex.c (match_ctx_init, match_ctx_add_entry, search_cur_bkref_entry):
+       (match_ctx_add_subtop, match_ctx_add_sublast, sift_ctx_init):
+       (re_search_internal, re_search_2_stub, re_search_stub)
+       (re_copy_regs, check_matching, check_halt_state_context, update_regs):
+       (push_fail_stack, sift_states_iter_mb, build_sifted_states):
+       (update_cur_sifted_state, check_dst_limits):
+       (check_dst_limits_calc_pos_1, check_dst_limits_calc_pos):
+       (check_subexp_limits, sift_states_bkref, merge_state_array):
+       (check_subexp_matching_top, get_subexp, get_subexp_sub):
+       (find_subexp_node, check_arrival, check_arrival_add_next_nodes):
+       (check_arrival_expand_ecl, check_arrival_expand_ecl_sub):
+       (expand_bkref_cache, check_node_accept_bytes):
+       (group_nodes_into_DFAstates, check_node_accept, regexec, re_match):
+       (re_search, re_match_2, re_search_2, prune_impossible_nodes):
+       (acquire_init_state_context, check_halt_node_context):
+       (proceed_next_node, pop_fail_stack, set_regs, free_fail_stack_return):
+       (sift_states_backward, clean_state_log_if_needed):
+       (sub_epsilon_src_nodes, add_epsilone_src_nodes, merge_state_with_log):
+       (find_recover_state, transit_state_sb, transit_state_mb):
+       (transit_state_bkref, build_trtable, match_ctx_clean):
+       Likewise.
+       * regcomp.c (parse_dup_op): Add an extra test if Idx is unsigned,
+       to work around an assumption that REG_MISSING is negative.
+
+       * regcomp.c (re_comp) [defined _REGEX_RE_COMP || defined _LIBC]:
+       (seek_collating_symbol_entry) [defined _LIBC]:
+       (lookup_collation_sequence_value) [defined _LIBC]:
+       (build_range_exp, build_collating_symbol) [defined _LIBC]:
+       Use prototypes rather than old-style function definitions.
+       * regexec.c (re_exec) [defined _REGEX_RE_COMP || defined _LIBC]:
+       (transit_state_sb) [0]:
+       (find_collation_sequence_value) [defined _LIBC]: Likewise.
+
+       * regexec.c (re_search_internal): Simplify update of rm_so and
+       rm_eo.
+
+       * regcomp.c (re_compile_fastmap_iter, init_dfa, init_word_char):
+       (optimize_subexps, lower_subexp):
+       Don't assume 1<<31 has defined behavior on hosts with 32-bit int,
+       since the signed shift might overflow.  Use 1u<<31 instead.
+       * regex_internal.h (bitset_set, bitset_clear, bitset_contain): Likewise.
+       * regexec.c (check_dst_limits_calc_pos_1, check_subexp_matching_top):
+       Likewise.
+
+       * regcomp.c (optimize_subexps, lower_subexp):
+       Use CHAR_BIT rather than 8, for clarity.
+       * regexec.c (check_dst_limits_calc_pos_1):
+       (check_subexp_matching_top): Likewise.
+       * regcomp.c (init_dfa): Make table_size unsigned, so that we don't
+       have to worry about portability issues when shifting it left.
+       Remove no-longer-needed test for table_size > 0.
+       * regcomp.c (parse_sub_exp): Do not shift more bits than there are
+       in a word, as the resulting behavior is undefined.
+       * regexec.c (check_dst_limits_calc_pos_1): Likewise;
+       in one case, a <= should have been an <, and in another case the
+       whole test was missing.
+       * regex_internal.h (BYTE_BITS): Remove.  All uses changed to
+       the standard name CHAR_BIT.
+       * regexec.c (match_ctx_add_entry): Don't assume that ~0 == -1;
+       this is not true on one's complement and signed-magnitude hosts.
+
+       * regex_internal.h (re_sub_match_top_t): Remove unused member
+       next_last_offset.
+       (struct re_dfa_t): Remove unused member states_alloc.
+       * regcomp.c (init_dfa): Don't initialize unused members.
+
+2005-08-31  Bruno Haible  <bruno@clisp.org>
+
+       * strstr.c: Include <stddef.h>, for NULL.
+       * strcasestr.c: Likewise.
+       Reported by Yoann Vandoorselaere <yoann.v@prelude-ids.com>.
+
+2005-08-30  "Oskar Liljeblad" <oskar@osk.mine.nu>
+
+       * iconvme.h: Add prototype for iconv_alloc.
+
+2005-08-29  Simon Josefsson  <jas@extundo.com>
+
+       * iconvme.c: Fix errno.
+
+2005-08-29  "Oskar Liljeblad" <oskar@osk.mine.nu>
+
+       * iconvme.c: Split iconv_string into iconv_alloc.
+
+2005-08-27  Jim Meyering  <jim@meyering.net>
+
+       * fopen-safer.c: Merge minor changes from coreutils.
+       * dup-safer.c: Likewise.
+       * fd-safer.c: Likewise.
+
+       Merge from coreutils.
+       * stdio--.h: New file.
+       * stdlib--.h: New file.
+       * mkstemp-safer.c: New file.
+
+       GNU tar needs these.
+       * pipe-safer.c: New file.
+       * creat-safer.c: New file.
+       * fcntl--.h (creat): Define to creat_safer.
+       * fcntl-safer.h: Include <sys/types.h> and declare creat_safer.
+       * unistd--.h (pipe): Define to pipe_safer.
+       * unistd-safer.h: Declare pipe_safer.
+
+2005-08-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * regex_internal.h: Remove all references to
+       RE_NO_INTERNAL_PROTOTYPES; no longer neeeded now that we assume C89
+       or better.
+       (bitset_not, bitset_merge, bitset_not_merge):
+       (bitset_mask, re_string_allocate, re_string_construct):
+       (re_string_reconstruct, re_string_destruct, re_string_elem_size_at):
+       (re_string_char_size_at, re_string_wchar_at, re_string_peek_byte_case):
+       (re_string_fetch_byte_case, re_node_set_alloc, re_node_set_init_1):
+       (re_node_set_init_2, re_node_set_init_copy, re_node_set_add_intersect):
+       (re_node_set_init_union, re_node_set_merge, re_node_set_insert):
+       (re_node_set_insert_last, re_node_set_compare, re_node_set_contains):
+       (re_node_set_remove_at, re_dfa_add_node, re_acquire_state):
+       (re_acquire_state_context):
+       Remove unnecessary forward decls.
+       (re_string_char_size_at, re_string_wchar_at, re_string_elem_size_at):
+       Put __attribute at function definition,
+       now that the function decl has been removed.
+       * lib/regex_internal.c (re_string_peek_byte_case):
+       (re_string_fetch_byte_case, re_node_set_compare, re_node_set_contains):
+       Likewise.
+
+2005-08-26  Simon Josefsson  <jas@extundo.com>
+
+       * getpass.c: Use _WIN32 instead of WIN32, suggested by Bruno
+       Haible <bruno@clisp.org>.
+
+2005-08-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * regexec.c (set_regs): Don't alloca with an unbounded size.
+
+       alloca modernization/simplification for regex.
+       * regex.c: Remove portability cruft for alloca.  This no longer
+       needs to be at the start of the file, and can be moved into
+       regex_internal.h and simplified.
+       * regex_internal.h: Include <alloca.h>.
+       (__libc_use_alloca) [!defined _LIBC]: New macro.
+       * regexec.c (build_trtable): Remove "#ifdef _LIBC", since the code
+       now works outside glibc.
+
+2005-08-24  Simon Josefsson  <jas@extundo.com>
+
+       * getpass.c: Add WIN32 implementation.  Conditionalize use of
+       termios.h, tcgetattr, tcsetattr and __fsetlocking.  Remove some
+       GLIBC specific code.
+
+2005-08-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Make regex safe for g++.  This fixes one real bug (an "err"
+       that should have been "*err").  g++ problem reported by
+       Sam Steingold.
+       * regex_internal.h (re_calloc): New macro, consistent with
+       re_malloc etc.  All callers of calloc changed to use re_calloc.
+       * regex_internal.c (build_wcs_upper_buffer): Return reg_errcode_t,
+       not int.  All callers changed.
+       * regcomp.c (re_compile_fastmap_iter): Don't use alloca (mb_cur_max);
+       just use an array of size MB_LEN_MAX.
+       * regexec.c (push_fail_stack): Use re_realloc, not realloc.
+       (find_recover_state): Change "err" to "*err"; this fixes what
+       appears to be a real bug.
+       (check_arrival_expand_ecl_sub): Be consistent about reg_errcode_t
+       versus int.
+
+2005-08-25  Jim Meyering  <jim@meyering.net>
+
+       * open-safer.c: Include <config.h>.
+       Otherwise, we'd lose LARGEFILE support in any file using
+       e.g. "fcntl--.h"
+
+2005-08-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * regcomp.c (regerror): 2nd arg is 'restrict', as per POSIX.
+       * regex.h (regerror): Likewise.
+
+       * regex.c: Do not include <sys/types.h>, as POSIX no longer
+       requires this.  (The code never needed it.)
+
+       * regcomp.c, regex_internal.c, regex_internal.h, regexec.c:
+       All uses of recently-renamed identifiers changed to use the new,
+       POSIX-compliant names.  The code will build and run just fine
+       without these changes, but it's better to eat our own dog food
+       and use the standard-conforming names.
+
+       * regex.h: Fix a multitude of POSIX name space violations.
+       These changes have an effect only for programs that define
+       _POSIX_C_SOURCE, _POSIX_SOURCE, or _XOPEN_SOURCE; they
+       do not change anything for programs compiled in the normal way.
+       Also, there is no effect on the ABI.
+
+       (_REGEX_SOURCE): New macro.
+       Do not include <stddef.h> if _XOPEN_SOURCE and VMS are both
+       defined and _GNU_SOURCE is not; this fixes a name space violation.
+
+       Rename the following macros to obey POSIX requirements.
+       The old names are still visible as macros if _REGEX_SOURCE is defined.
+       (REG_BACKSLASH_ESCAPE_IN_LISTS): renamed from
+       RE_BACKSLASH_ESCAPE_IN_LISTS.
+       (REG_BK_PLUS_QM): renamed from RE_BK_PLUS_QM.
+       (REG_CHAR_CLASSES): renamed from RE_CHAR_CLASSES.
+       (REG_CONTEXT_INDEP_ANCHORS): renamed from RE_CONTEXT_INDEP_ANCHORS.
+       (REG_CONTEXT_INDEP_OPS): renamed from RE_CONTEXT_INDEP_OPS.
+       (REG_CONTEXT_INVALID_OPS): renamed from RE_CONTEXT_INVALID_OPS.
+       (REG_DOT_NEWLINE): renamed from RE_DOT_NEWLINE.
+       (REG_DOT_NOT_NULL): renamed from RE_DOT_NOT_NULL.
+       (REG_HAT_LISTS_NOT_NEWLINE): renamed from RE_HAT_LISTS_NOT_NEWLINE.
+       (REG_INTERVALS): renamed from RE_INTERVALS.
+       (REG_LIMITED_OPS): renamed from RE_LIMITED_OPS.
+       (REG_NEWLINE_ALT): renamed from RE_NEWLINE_ALT.
+       (REG_NO_BK_BRACES): renamed from RE_NO_BK_BRACES.
+       (REG_NO_BK_PARENS): renamed from RE_NO_BK_PARENS.
+       (REG_NO_BK_REFS): renamed from RE_NO_BK_REFS.
+       (REG_NO_BK_VBAR): renamed from RE_NO_BK_VBAR.
+       (REG_NO_EMPTY_RANGES): renamed from RE_NO_EMPTY_RANGES.
+       (REG_UNMATCHED_RIGHT_PAREN_ORD): renamed from
+       RE_UNMATCHED_RIGHT_PAREN_ORD.
+       (REG_NO_POSIX_BACKTRACKING): renamed from RE_NO_POSIX_BACKTRACKING.
+       (REG_NO_GNU_OPS): renamed from RE_NO_GNU_OPS.
+       (REG_DEBUG): renamed from RE_DEBUG.
+       (REG_INVALID_INTERVAL_ORD): renamed from RE_INVALID_INTERVAL_ORD.
+       (REG_IGNORE_CASE): renamed from RE_ICASE.  This renaming is a bit
+       unusual, since we can't clash with the POSIX REG_ICASE.
+       (REG_CARET_ANCHORS_HERE): renamed from RE_CARET_ANCHORS_HERE.
+       (REG_CONTEXT_INVALID_DUP): renamed from RE_CONTEXT_INVALID_DUP.
+       (REG_NO_SUB): renamed from RE_NO_SUB.
+       (REG_SYNTAX_EMACS): renamed from RE_SYNTAX_EMACS.
+       (REG_SYNTAX_AWK): renamed from RE_SYNTAX_AWK.
+       (REG_SYNTAX_GNU_AWK): renamed from RE_SYNTAX_GNU_AWK.
+       (REG_SYNTAX_POSIX_AWK): renamed from RE_SYNTAX_POSIX_AWK.
+       (REG_SYNTAX_GREP): renamed from RE_SYNTAX_GREP.
+       (REG_SYNTAX_EGREP): renamed from RE_SYNTAX_EGREP.
+       (REG_SYNTAX_POSIX_EGREP): renamed from RE_SYNTAX_POSIX_EGREP.
+       (REG_SYNTAX_ED): renamed from RE_SYNTAX_ED.
+       (REG_SYNTAX_SED): renamed from RE_SYNTAX_SED.
+       (_REG_SYNTAX_POSIX_COMMON): renamed from _RE_SYNTAX_POSIX_COMMON.
+       (REG_SYNTAX_POSIX_BASIC): renamed from RE_SYNTAX_POSIX_BASIC.
+       (REG_SYNTAX_POSIX_MINIMAL_BASIC): renamed from
+       RE_SYNTAX_POSIX_MINIMAL_BASIC.
+       (REG_SYNTAX_POSIX_EXTENDED): renamed from RE_SYNTAX_POSIX_EXTENDED.
+       (REG_SYNTAX_POSIX_MINIMAL_EXTENDED): renamed from
+       RE_SYNTAX_POSIX_MINIMAL_EXTENDED.
+       (REG_DUP_MAX): renamed from RE_DUP_MAX.  No need to undef it.
+       (REG_UNALLOCATED): Renamed from REGS_UNALLOCATED.
+       (REG_REALLOCATE): Renamed from REGS_REALLOCATE.
+       (REG_FIXED): Renamed from REGS_FIXED.
+       (REG_NREGS): Renamed from RE_NREGS.
+
+       (REG_ICASE, REG_NEWLINE, REG_NOSUB): Do not depend on the values
+       of other REG_* macros, since POSIX says the user is allowed to
+       #undef these macros selectively.
+
+       (reg_errcode_t): Update comment stating what other tables need
+       to be consistent.
+
+       Rename the following enum values to obey POSIX requirements.
+       The old names are still visible as macros.
+       (_REG_ENOSYS): Renamed from REG_ENOSYS.  Define even if _XOPEN_SOURCE
+       is not defined, since GNU is supposed to be a superset of POSIX as
+       much as possible, and since we want reg_errcode_t to be a signed
+       type for implementation consistency.
+       (_REG_NOERROR): Renamed from REG_NOERROR.
+       (_REG_NOMATCH): Renamed from REG_NOMATCH.
+       (_REG_BADPAT): Renamed from REG_BADPAT.
+       (_REG_ECOLLATE): Renamed from REG_ECOLLATE.
+       (_REG_ECTYPE): Renamed from REG_ECTYPE.
+       (_REG_EESCAPE): Renamed from REG_EESCAPE.
+       (_REG_ESUBREG): Renamed from REG_ESUBREG.
+       (_REG_EBRACK): Renamed from REG_EBRACK.
+       (_REG_EPAREN): Renamed from REG_EPAREN.
+       (_REG_EBRACE): Renamed from REG_EBRACE.
+       (_REG_BADBR): Renamed from REG_BADBR.
+       (_REG_ERANGE): Renamed from REG_ERANGE.
+       (_REG_ESPACE): Renamed from REG_ESPACE.
+       (_REG_BADRPT): Renamed from REG_BADRPT.
+       (_REG_EEND): Renamed from REG_EEND.
+       (_REG_ESIZE): Renamed from REG_ESIZE.
+       (_REG_ERPAREN): Renamed from REG_ERPAREN.
+       (REG_ENOSYS, REG_NOERROR, REG_NOMATCH, REG_BADPAT, REG_ECOLLATE):
+       (REG_ECTYPE, REG_EESCAPE, REG_ESUBREG, REG_EBRACK, REG_EPAREN):
+       (REG_EBRACE, REG_BADBR, REG_ERANGE, REG_ESPACE, REG_BADRPT, REG_EEND):
+       (REG_ESIZE, REG_ERPAREN): Now macros, not enum constants.
+
+       (_REG_RE_NAME, _REG_RM_NAME): New macros.
+       (REG_TRANSLATE_TYPE): Renamed from RE_TRANSLATE_TYPE.  All uses
+       changed.  But support the old name if the new one is not defined
+       and if _REGEX_SOURCE.
+
+       Change the following member names in struct re_pattern_buffer.
+       The old names are still supported if !_REGEX_SOURCE.
+       The new names are always supported, regardless of _REGEX_SOURCE.
+       (re_buffer): Renamed from buffer.
+       (re_allocated): Renamed from allocated.
+       (re_used): Renamed from used.
+       (re_syntax): Renamed from syntax.
+       (re_fastmap): Renamed from fastmap.
+       (re_translate): Renamed from translate.
+       (re_can_be_null): Renamed from can_be_null.
+       (re_regs_allocated): Renamed from regs_allocated.
+       (re_fastmap_accurate): Renamed from fastmap_accurate.
+       (re_no_sub): Renamed from no_sub.
+       (re_not_bol): Renamed from not_bol.
+       (re_not_eol): Renamed from not_eol.
+       (re_newline_anchor): Renamed from newline_anchor.
+
+       Change the following member names in struct re_registers.
+       The old names are still supported if !_REGEX_SOURCE.
+       The new names are always supported, regardless of _REGEX_SOURCE.
+       (rm_num_regs): Renamed from num_regs.
+       (rm_start): Renamed from start.
+       (rm_end): Renamed from end.
+
+       (re_set_syntax, re_compile_pattern, re_compile_fastmap):
+       (re_search, re_search_2, re_match, re_match_2, re_set_registers):
+       Prepend __ to parameter names.
+
+       Undo yesterday's changes.
+
+2005-08-24  Jim Meyering  <jim@meyering.net>
+
+       Sync from coreutils.
+       * fcntl--.h, fcntl-safer.h, open-safer.c: New files.
+
+2005-08-21  Bruno Haible  <bruno@clisp.org>
+
+       * lock.h: Add multiple inclusion guard.
+       * tls.h: Add multiple inclusion guard.
+
+2005-08-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * regex.h (REG_NOSYS)
+       [!defined _XOPEN_SOURCE && 200112L <= _POSIX_C_SOURCE]:
+       Define, since POSIX requires it as of 2001.
+       (_REG_ENOSYS) [! (defined _XOPEN_SOURCE || 200112L <= _POSIX_C_SOURCE)]:
+       New private symbol, used to keep the enum signed in all cases.
+       * regex.h (RE_NO_EMPTY_RANGES): Fix doc bug reported by James Youngman
+       in <http://lists.gnu.org/archive/html/bug-gnulib/2005-07/msg00132.html>.
+
+       * regex_internal.c (re_string_skip_chars, register_state):
+       (calc_state_hash):
+       Remove forward decls; no longer needed now that we use prototypes.
+       * regexec.c (acquire_init_state_context, check_halt_node_context):
+       (proceed_next_node, pop_fail_stack, sub_epsilon_src_nodes):
+       (clean_state_log_if_needed): Likewise.
+
+2005-08-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix problems reported by Sam Steingold in
+       <http://lists.gnu.org/archive/html/bug-gnulib/2005-08/msg00007.html>.
+       * regexec.c (sift_states_bkref): Fix portability bug: the code
+       assumed that reg_errcode_t is a signed type, which is not
+       necessarily true if _XOPEN_SOURCE is not defined.
+       * regex_internal.c (calc_state_hash): Put 'inline' before type, since
+       some compilers warn about it otherwise.
+
+2005-08-20  Jim Meyering  <jim@meyering.net>
+
+       * regexec.c (regexec, re_search_stub) [!_LIBC]: Omit declaration
+       of unused local, dfa.
+
+2005-08-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * regcomp.c (create_initial_state): Remove duplicate decl.
+       (init_word_char, create_initial_state, duplicate_node_closure):
+       (fetch_token, peek_token_bracket, build_range_exp):
+       (build_collating_symbol): Remove forward decls; no longer needed
+       now that we use prototypes.
+
+       * regcomp.c:
+       (re_compile_pattern, re_set_syntax, re_compile_fastmap):
+       (re_compile_fastmap_iter, regcomp, regerror, regfree):
+       (re_compile_internal, init_dfa, init_word_char, free_workarea_compile):
+       (create_initial_state, optimize_utf8, analyze, postorder, preorder):
+       (optimize_subexps, lower_subexps, lower_subexp, calc_first, calc_next):
+       (link_nfa_nodes, duplicate_node_closure, search_duplicated_node):
+       (duplicate_node, calc_inveclosure, calc_eclosure, calc_eclosure_iter):
+       (fetch_token, peek_token, peek_token_bracket, parse, parse_reg_exp):
+       (parse_branch, parse_expression, parse_sub_exp, parse_dup_op):
+       (build_range_exp, build_collating_symbol, parse_bracket_exp):
+       (parse_bracket_element, parse_bracket_symbol, build_equiv_class):
+       (build_charclass, build_charclass_op, fetch_number, create_tree):
+       (create_token_tree, mark_opt_subexp, duplicate_tree):
+       Use prototypes rather than old-style definitions.
+
+       * regex_internal.c:
+       (re_string_allocate, re_string_construct, re_string_realloc_buffers):
+       (re_string_construct_common, build_wcs_buffer, build_wcs_upper_buffer):
+       (re_string_skip_chars, build_upper_buffer, re_string_translate_buffer):
+       (re_string_reconstruct, re_string_peek_byte_case):
+       (re_string_fetch_byte_case, re_string_destruct, re_string_context_at):
+       (re_node_set_alloc, re_node_set_init_1, re_node_set_init_2):
+       (re_node_set_init_copy, re_node_set_add_intersect):
+       (re_node_set_init_union, re_node_set_merge, re_node_set_insert):
+       (re_node_set_insert_last, re_node_set_compare, re_node_set_contains):
+       (re_node_set_remove_at, re_dfa_add_node, calc_state_hash):
+       (re_acquire_state, re_acquire_state_context, register_state):
+       (create_ci_newstate, create_cd_newstate, free_state):
+       Likewise.
+       * regexec.c (regexec, re_match, re_search, re_match_2, re_search_2):
+       (re_search_2_stub, re_search_stub, re_copy_regs, re_set_registers):
+       (re_search_internal, prune_impossible_nodes):
+       (acquire_init_state_context, check_matching, static):
+       (check_halt_node_context, check_halt_state_context, proceed_next_node):
+       (push_fail_stack, pop_fail_stack, set_regs, free_fail_stack_return):
+       (update_regs, sift_states_backward, build_sifted_states):
+       (clean_state_log_if_needed, merge_state_array):
+       (update_cur_sifted_state, add_epsilon_src_nodes):
+       (sub_epsilon_src_nodes, check_dst_limits, check_dst_limits_calc_pos_1):
+       (check_dst_limits_calc_pos, check_subexp_limits, sift_states_bkref):
+       (sift_states_iter_mb, transit_state, merge_state_with_log, static):
+       (find_recover_state, check_subexp_matching_top, transit_state_mb):
+       (transit_state_bkref, get_subexp, get_subexp_sub, find_subexp_node):
+       (check_arrival, check_arrival_add_next_nodes):
+       (check_arrival_expand_ecl, check_arrival_expand_ecl_sub):
+       (expand_bkref_cache, build_trtable, group_nodes_into_DFAstates):
+       (check_node_accept_bytes, check_node_accept, extend_buffers):
+       (match_ctx_init, match_ctx_clean, match_ctx_free, match_ctx_add_entry):
+       (search_cur_bkref_entry, match_ctx_add_subtop, match_ctx_add_sublast):
+       (sift_ctx_init):
+       Likewise.
+
+       * regex_internal.h:
+       (re_string_allocate, re_string_construct, re_string_reconstruct):
+       (re_string_realloc_buffers, build_wcs_buffer, build_wcs_upper_buffer):
+       (build_upper_buffer, re_string_translate_buffer, re_string_destruct):
+       (re_string_elem_size_at, re_string_char_size_at, re_string_wchar_at):
+       (re_string_context_at, re_string_peek_byte_case):
+       (re_string_fetch_byte_case): Declare even if RE_NO_INTERNAL_PROTOTYPES
+       is defined, since we now use prototypes always.
+
+       * regex.h (_RE_ARGS): Remove.  No longer needed, since we assume
+       C89 or better.  All uses removed.
+
+2005-08-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * regex_internal.c (re_acquire_state, re_acquire_state_context)
+       [defined lint]: Suppress bogus uninitialized-variable warnings.
+
+       * regcomp.c (duplicate_node): Return new index, not an error code,
+       and let the caller return REG_ESPACE if out of space.  This
+       removes an uninitialied-variable warning with GCC 4.0.1, and also
+       avoids taking the address of a local variable.  All callers
+       changed.
+
+2005-08-19  Jim Meyering  <jim@meyering.net>
+
+       * regexec.c (proceed_next_node): Redo local variables to
+       avoid GCC shadowing warnings.
+
+2005-08-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * regex_internal.c (re_string_realloc_buffers, re_node_set_insert):
+       (re_node_set_insert_last, re_dfa_add_node):
+       Rename local variables to avoid GCC shadowing warnings.
+
+2005-08-18  Bruno Haible  <bruno@clisp.org>
+
+       * strstr.c (strstr): Fix return value in multibyte case.
+       * strcasestr.c (strcasestr): Likewise.
+
+2005-08-17  Jim Meyering  <jim@meyering.net>
+
+       Make the %s format (seconds since the epoch) work for a negative
+       number and when used with a zero-padded field width, e.g. %015s.
+
+       * strftime.c (my_strftime): Move the `do_number_sign_and_padding'
+       label so that it precedes the code to set `digits'.  Otherwise,
+       %0Ns wouldn't work.  Before this change, `date -d @-22 +%05s' would
+       print `00-22'.  Now, it prints `-0022', as it should.
+
+2005-08-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * regex.h: Remove useless space-before-tab.  From coreutils.
+
+2005-08-17  Bruno Haible  <bruno@clisp.org>
+
+       * strcasestr.h: New file.
+       * strcasestr.c: New file.
+
+2005-08-17  Bruno Haible  <bruno@clisp.org>
+
+       * strstr.h: Ignore HAVE_STRSTR, always declare the gnulib function.
+       * strstr.c: Completely rewritten, with multibyte locale support.
+
+2005-08-17  Bruno Haible  <bruno@clisp.org>
+
+       * strcasecmp.c: Use mbuiter.h.
+
+2005-08-17  Bruno Haible  <bruno@clisp.org>
+
+       * mbuiter.h: New file.
+
+2005-08-16  Bruno Haible  <bruno@clisp.org>
+
+       * strcasecmp.c (struct mbiter_multi): Remove at_end field.
+       (mbi_init): Update.
+       (mbi_avail, mbi_advance): Let the iteration end before the terminating
+       NUL byte, not after it.
+
+2005-08-16  Bruno Haible  <bruno@clisp.org>
+
+       * mbchar.h (mb_cmp, mb_casecmp): Order the invalid characters after
+       the valid ones. Makes the comparison operations transitive:
+       cmp (a, b) < 0 && cmp (b, c) < 0 ==> cmp (a, c) < 0.
+       * strcasecmp.c (strcasecmp): Use mb_casecmp.
+
+2005-08-16  Bruno Haible  <bruno@clisp.org>
+
+       * strcase.h (strcasecmp): Add note in comments.
+       * strncasecmp.c: Use code from strcasecmp.c.
+       * strcasecmp.c: Use mbchar module. Define private mbiter variant.
+       (strcasecmp): Work correctly in multibyte locales.
+
+2005-08-16  Bruno Haible  <bruno@clisp.org>
+
+       * strnlen1.h: New file.
+       * strnlen1.c: New file.
+
+2005-08-16  Bruno Haible  <bruno@clisp.org>
+
+       * mbfile.h: New file.
+
+2005-08-16  Bruno Haible  <bruno@clisp.org>
+
+       * mbiter.h: New file.
+
+2005-08-16  Bruno Haible  <bruno@clisp.org>
+
+       * mbchar.h: New file.
+       * mbchar.c: New file.
+
+2005-08-16  Bruno Haible  <bruno@clisp.org>
+
+       * tls.h: New file, from GNU gettext.
+       * tls.c: New file, from GNU gettext.
+
+2005-08-15  Bruno Haible  <bruno@clisp.org>
+
+       * regex.h (__restrict_arr): Don't define to __restrict if __cplusplus
+       is defined.
+
+2005-08-14  Jim Meyering  <jim@meyering.net>
+
+       Sync from coreutils.
+
+       * fts-cycle.c (setup_dir, enter_dir, leave_dir, free_dir):
+       Use the hash-table-based cycle-detection code not just when
+       FTS_TIGHT_CYCLE_CHECK if specified, but also with FTS_LOGICAL.
+       Reported by James Youngman in
+       <http://lists.gnu.org/archive/html/bug-gnulib/2005-08/msg00011.html>.
+       * fts_.h: Mention that with FTS_LOGICAL, we use FTS_TIGHT_CYCLE_CHECK.
+       * fts.c (fts_cross_check) [FTS_DEBUG]: s/active_dir_ht/fts_cycle.ht/.
+       This lets us compile with -DFTS_DEBUG, once again.
+       * fts.c [! _LIBC]: Include "lstat.h" rather than rolling our own.
+       * fts.c (fd_safer): Remove decl.
+       Include fcntl--.h rather than unistd-safer.h
+       (fts_safe_changedir): Don't call fd_safer; no longer needed
+       now that we include fcntl--.h.
+
+2005-08-11  Simon Josefsson  <jas@extundo.com>
+
+       * readline.h, readline.c: New file.
+
+2005-08-11  Bruno Haible  <bruno@clisp.org>
+
+       * strnlen.h (strnlen): Change parameter name to match comment.
+
+2005-08-10  Simon Josefsson  <jas@extundo.com>
+
+       * strndup.c: Use strnlen.h.
+
+       * strnlen.h: New file.
+
+2005-08-02  Simon Josefsson  <jas@extundo.com>
+
+       * getline.h, getline.c: Rewrite.
+
+       * getdelim.h, getdelim.c: New files, ported from glibc.
+
+2005-07-31  Bruno Haible  <bruno@clisp.org>
+
+       * lock.h (gl_lock_initializer): New macro.
+       (gl_lock_define_initialized): Use it.
+       (gl_rwlock_initializer): New macro.
+       (gl_rwlock_define_initialized): Use it.
+       (gl_recursive_lock_initializer): New macro.
+       (gl_recursive_lock_define_initialized): Use it.
+
+2005-07-26  Bruno Haible  <bruno@clisp.org>
+
+       * lock.h: Update from GNU gettext.
+       * lock.c: Update from GNU gettext.
+
+2005-07-18  Bruno Haible  <bruno@clisp.org>
+
+       * lock.h (gl_once_t): New type.
+       (gl_once_define, gl_once): New macros.
+       * lock.c (fresh_once): New variable.
+       (glthread_once, glthread_once_call, glthread_once_singlethreaded): New
+       functions.
+
+2005-07-18  Simon Josefsson  <jas@extundo.com>
+
+       * check-version.c (check_version): Accept identical versions too.
+
+2005-07-18  Bruno Haible  <bruno@clisp.org>
+
+       * lock.h: New file, from GNU gettext.
+       * lock.c: New file, from GNU gettext.
+
+2005-07-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * quotearg.c: Add translator comment suggested by Bruno Haible,
+       with a minor change.
+
+2005-07-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * version-etc-fsf.c (version_etc_copyright): Parameterize the
+       copyright symbol and the year.
+       * version-etc.c (COPYRIGHT_YEAR): New constant.
+       (version_etc_va): Use parameterized copyright notice.
+       Reword to conform to the current GNU coding standards.
+
+2005-07-11  Simon Josefsson  <jas@extundo.com>
+
+       * size_max.h: New file.
+
+2005-07-09  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       * argp-namefrob.h: Include unlocked-io.h. Removed unnecessary
+       block of defines.
+
+2005-07-08  Eric Blake  <ebb9@byu.net>  (tiny change)
+       and  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * regcomp.c (init_dfa, build_range_exp): Store __btowc value
+       in wint_t, not wchar_t.  Remove now-unnecessary cast.
+
+2005-07-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * regex.c, regex.h: Sync from libc.
+       * regcomp.c, regexec_internal.c, regex_internal.h, regexec.c:
+       New files, synced from libc, except that regex_internal.h
+       currently has a small porting fix.
+
+2005-07-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Remove the dependency of the strftime module on the tzset module.
+       * strftime.c (my_strftime) [! defined _LIBC && ! HAVE_RUN_TZSET_TEST]:
+       Copy the input structure, to work around some of the bug with
+       Solaris 2.5.1 and Solaris 2.6.  If you still care about these old
+       Solaris releases, you should also use the tzset module, but we won't
+       require it as a dependency any more since we don't want LGPLed code
+       to depend on GPLed code.
+
+2005-07-02  Jim Meyering  <jim@meyering.net>
+
+       * backupfile.c (backup_args): Change a `0' to NULL.
+
+2005-07-01  Jim Meyering  <jim@meyering.net>
+
+       * chown.c, cloexec.c, dup-safer.c, dup2.c, fsusage.c, getcwd.c:
+       * getloadavg.c, mountlist.c, openat.h, pagealign_alloc.c:
+       * save-cwd.c, tempname.c:
+       Assume HAVE_FCNTL_H (i.e., include <fcntl.h> unconditionally,
+       and don't include <sys/file.h>).
+
+2005-07-01  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * xnanosleep.c: Include timespec.h, since OpenBSD 3.4 <time.h>
+       declares only 'struct timespec;' (!).
+
+2005-06-29  Jim Meyering  <jim@meyering.net>
+
+       * mkdir-p.c (make_dir_parents): Don't apply sizeof to a hard-coded
+       type name.  Use the variable name instead.
+       * idcache.c (getuser, getuidbyname, getgroup, getgidbyname): Likewise.
+
+2005-06-28  Simon Josefsson  <jas@extundo.com>
+
+       * check-version.h, check-version.c: New files.
+
+2005-06-28  Simon Josefsson  <jas@extundo.com>
+
+       * base64.c (base64_encode): Indent.  Rename 'b64' to avoid
+       collision with global variable.  Better indentation.  Don't
+       increment buffer pointer beyond buffer end.  Based on comments
+       from Paul Eggert <eggert@cs.ucla.edu>.
+
+       * base64.h: Indent.
+
+2005-06-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * canon-host.c (canon-host): Append trailing "," to 0 in
+       initializer of struct addrinfo, as an indication that we don't
+       care how many members the structure has.
+
+2005-06-24  Derek Price  <derek@ximbiot.com>
+       and Bruno Haible  <bruno@clisp.org>
+
+       Remove stat module & update lstat.
+       * stat.c: Remove this file...
+       (slash_aware_lstat): ...moving this content and its support...
+       * lstat.c (rpl_lstat): ...into here.
+       * lstat.h: New file.
+
+2005-06-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * mktime.c: Include <string.h> even if !DEBUG.  (From glibc.)
+       (ranged_convert): Don't save conversion in a temporary struct.
+       This causes a warning with GCC 4.0.0, and anyway in the typical
+       case it's not worth the extra 100 bytes or so of code.
+       (ranged_convert, __mktime_internal): When calling a function via a
+       pointer P, use P () rather than (*P) (), as we now assume C89 or
+       better.
+
+2005-06-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * readutmp.c (desirable_utmp_entry): Fix bug where "who -b" and
+       "who -r" failed to give output.  Problem reported by Tim Waugh.
+
+       * xmalloc.c (HAVE_GNU_CALLOC): New constant.
+       (xcalloc): Use it to avoid needless tests.
+       Problem reported by Jim Meyering.
+
+2005-06-16  Jim Meyering  <jim@meyering.net>
+
+       * calloc.c (rpl_calloc): Allocate a 1-byte buffer (not 1xS or Nx1)
+       when either N or S is zero.
+
+2005-06-16  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
+
+       * argp.h (__option_is_short): Check upper limit of
+       __key. Isprint() requires its argument to have the value
+       of an unsigned char or EOF.
+
+2005-06-10  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * fnmatch.c (fnmatch): If there is an encoding error in a
+       multibyte string or pattern, fall back on unibyte matching.
+       Problem reported by James Youngman.
+
+2005-06-08  Bruno Haible  <bruno@clisp.org>
+
+       * binary-io.h (fileno): Undefine before defining it. Avoids a gcc
+       warning on mingw.
+
+2005-06-08  Bruno Haible  <bruno@clisp.org>
+
+       * csharpcomp.h: New file, from GNU gettext.
+       * csharpcomp.c: New file, from GNU gettext.
+       * csharpcomp.sh.in: New file, from GNU gettext.
+
+2005-06-07  Derek Price  <derek@ximbiot.com>
+
+       Sync from CVS.
+       * glob_.h: Indent nested #ifdef.
+
+2005-06-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Sync from coreutils.
+       Use "file name" when talking about file names, instead of "filename"
+       or "path", as per the GNU coding standards.
+       * mkdir-p.c: Renamed from makepath.c.
+       (make_dir_parents): Renamed from make_path.  All callers changed.
+       * mkdir-p.h: Likewise.  All includers changed.
+       * filenamecat.c: Renamed from path-concat.c.
+       (file_name_concat): Renamed from path_concat.  All callers changed.
+       [TEST_FILE_NAME_CONCAT]: Renamed from TEST_PATH_CONCAT.
+       * filenamecat.h: Likewise.  All includers changed.
+       * acl.c: Don't use "path" or "filename" to mean "file name"
+       in comments or local variable names.
+       * basename.c: Likewise.
+       * canonicalize.c, canonicalize.h: Likewise.
+       * dirname.c, dirname.h: Likewise.
+       * euidaccess.c: Likewise.
+       * exclude.c: Likewise
+       * fnmatch_.h, fnmatch_loop.c: Likewise.
+       * fsusage.c, fsuage.h: Likewise.
+       * fts.c, fts_.h: Likewise.
+       * getcwd.c: Likewise.
+       * getloadavg.c: Likewise.
+       * mkstemp.c: Likewise.
+       * mountlist.c, mountlist.h: Likewise.
+       * openat.c, openat.h: Likewise.
+       * readlink-stub.c: Likewise.
+       * readutmp.c, readutmp.h: Likewise.
+       * rename.c: Likewise.
+       * rmdir.c: Likewise.
+       * same.c: Likewise.
+       * savedir.c: Likewise.
+       * stripslash.c: Likewise.
+       * tempname.c: Likewise.
+       * xreadlink.c: Likewise.
+       * exclude.c (excluded_file_name): Renamed from excluded_filename.
+       All uses changed.
+       * exclude.h: Likewise.
+
+       * euidaccess.c (getuid, getgid, getuid, getegid)
+       [!defined _POSIX_VERSION]: Remove decls; not needed these days.
+       * idcache.c (getpwuid, getpwnam, getgrgid, getgrnam)
+       [!defined _POSIX_VERSION]: Remove decls; not needed these days.
+       * pathmax.h: Include <limits.h> unconditionally, since other
+       files have been getting away with it for years (MORE/BSD 4.3
+       is extinct now).
+       * userspec.c (getpwnam, getgrnam, getgrgid)
+       [!defined _POSIX_VERSION]: Remove decls; not needed these days.
+
+       * pathmax.h (_POSIX_PATH_MAX) [!defined _POSIX_PATH_MAX]:
+       Define to 256, not 255, as per modern POSIX.
+
+2005-06-01  Bruno Haible  <bruno@clisp.org>
+
+       * csharpexec.h: New file, from GNU gettext.
+       * csharpexec.c: New file, from GNU gettext.
+       * csharpexec.sh.in: New file, from GNU gettext.
+
+2005-05-31  Derek Price  <derek@ximbiot.com>
+           Paul Eggert  <eggert@cs.ucla.edu>
+
+       Sync from cvs.
+       * glob_.h: s/MISSING_SYS_CDEFS_H/_SYS_CDEFS_H/ and comment.
+
+2005-05-29  Derek Price  <derek@ximbiot.com>
+           Paul Eggert  <eggert@cs.ucla.edu>
+
+       * glob_.h, glob.c: New files.
+
+2005-05-27  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * getlogin_r.c (getlogin_r): Don't set errno to 0 on return.
+
+       * fts.c: Don't worry about debugging on pre-C99-compatible hosts;
+       the configuration hassle isn't worth it.
+       Include inttypes.h and stdint.h unconditionally if FTS_DEBUG.
+       (LONGEST_MODIFIER, PRIuMAX): Remove.
+
+2005-05-27  Bruno Haible  <bruno@clisp.org>
+
+       * getlogin_r.h: Remove second include of <stddef.h>.
+
+2005-05-25  Bruno Haible  <bruno@clisp.org>
+           Derek Price  <derek@ximbiot.com>
+
+       * getlogin_r.h: Simplify API documentation.
+
+2005-05-25  Derek Price  <derek@ximbiot.com>
+           Paul Eggert  <eggert@cs.ucla.edu>
+
+       * getlogin_r.c, getlogin_r.h: New files.
+
+2005-05-22  Bruno Haible  <bruno@clisp.org>
+
+       * minmax.h: Include <limits.h> only when it defines MIN, MAX.
+       Also include <sys/param.h> if it defines MIN, MAX.
+       Based on a patch by Derek Price <derek@ximbiot.com>.
+
+2005-05-22  Bruno Haible  <bruno@clisp.org>
+
+       * stdint_.h (_STDINT_H_HAVE_INT64): New macro. Use it in #ifdefs.
+       (INT64_MIN): Fix definition.
+       Suggested by Paul Eggert <eggert@cs.ucla.edu>.
+
+       * stdint_.h (_STDINT_H_NEED_SIGNED_INT_TYPES): Renamed from
+       NEED_SIGNED_INT_TYPES.
+
+       * stdint_.h (_STDINT_H_HAVE_SYSTEM_INTTYPES): Renamed from
+       HAVE_SYSTEM_INTTYPES.
+
+2005-05-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * fts.c (fd_safer) [_LGPL_PACKAGE]: New static function,
+       so that unistd-safer.h (GPL'ed code) need not be included.
+
+2005-05-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       New fts module.
+       * fts.c: Don't include "cycle-check.h" or "hash.h".
+       (setup_dir, free_dir): New functions.
+       (enter_dir, leave_dir): Define trivial
+       alternatives of _LGPL_PACKAGE.  Move to fts-cycle.c if !_LGPL_PACKAGE.
+       (HT_INITIAL_SIZE, ENTER_DIR): Remove.  All uses removed.
+       (LEAVE_DIR): Fix typo: pass Fts and Ent to leave_dir.
+       (struct Active_dir, AD_compare, AD_hash, enter_dir, leave_dir):
+       Move to fts-cycle.c.
+       (fts_open): Use setup_dir.
+       (fts_close): Use free_dir.
+       (fts_read): Have just one copy of the ENTER_DIR code rather than three.
+       This adds a label and some gotos, but the alternatives were messier.
+       Check for memory allocation failure when entering a dir.
+       (fts_stat) [_LGPL_PACKAGE]: Bring back glibc cycle detection code.
+       * fts_.h (_LGPL_PACKAGE) [defined _LIBC]: New macro.
+       (FTS): New member fts_cycle, that is a union that contains the
+       old active_dir_ht and cycle_state.  All uses changed to mention
+       fts_cycle.ht and fts_cycle.state.
+       * fts-cycle.c: New file, containing GPL'ed code migrated out of
+       fts.c, with the following changes:
+       (setup_dir, free_dir): New functions.
+       (enter_dir): Now returns bool.  Return true if successful, false
+       if memory exhausted.  All callers changed.
+       Do not bother partly cleaning up on
+       memory allocation failure; that is free_dir's job.
+       However, free ad if hash_insert fails, to avoid memory leak.
+       (enter_dir, leave_dir): Accommodate change to FTS by inspecting
+       fts->fts_options to see which union member to use.
+
+2005-05-20  Jim Meyering  <jim@meyering.net>
+
+       * unlinkdir.h (cannot_unlink_dir) [UNLINK_CANNOT_UNLINK_DIR]:
+       Now a macro, to pacify GCC.
+
+2005-05-20  Eric Blake  <ebb9@byu.net>  (tiny change)
+
+       * chown.c (rpl_chown): Return -1 on failure.
+
+2005-05-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * canonicalize.c: Include canonicalize.h first, to test interface.
+       Include <stddef.h> unconditionally, since we assume C89 now.
+       All uses of PTR_INT_TYPE replaced by ptrdiff_t.
+       * fts.c: Include fts_.h first, to check interface.
+       Do not include intprops.h; no longer needed.
+       Include cycle-check.h and hash.h, since fts_.h no longer does.
+       Remove unnecessary casts of closedir to void.
+       (fts_build): Use a simpler method (not involving TYPE_SIGNED) to
+       decide whether to decrement nlinks.
+       * fts_.h: Do not include hash.h or cycle-check.h; no longer needed.
+       (FTS): Use struct hash_table * instead of Hash_table, so that
+       we no longer need to include hash.h here.
+
+2005-05-17  Jim Meyering  <jim@meyering.net>
+
+       * fts.c, fts_.h: New files, from coreutils.
+
+2005-05-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Sync from coreutils.
+       * unlinkdir.c, unlinkdir.h: New files.
+       * gethrxtime.c, gethrxtime.h, getpass.h, mountlist.h, path-concat.c,
+       regex.h, unlocked-io.h, xtime.h:
+       White space changes only.
+       * makepath.c (make_path): Port to hosts where leading "//" is special.
+       * yesno.c: Include getline.h, not ctype.h.
+       (yesno): Don't remove leading white space; POSIX doesn't allow it.
+       Use getline to remove arbitrary restriction on response length.
+
+2005-05-13  Bruno Haible  <bruno@clisp.org>
+
+       * stdint_.h (int64_t, uint64_t, int_least64_t, uint_least64_t,
+       int_fast64_t, uint_fast64_t, intmax_t, uintmax_t, INT64_MIN, INT64_MAX,
+       UINT64_MAX, INT_LEAST64_MIN, INT_LEAST64_MAX, UINT_LEAST64_MAX,
+       INT_FAST64_MIN, INT_FAST64_MAX, UINT_FAST64_MAX, INTMAX_MIN,
+       INTMAX_MAX, UINTMAX_MAX, INT64_C, UINT64_C, INTMAX_C, UINTMAX_C):
+       Add support for 64-bit integers in the MSVC compiler.
+
+2005-05-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * byteswap_.h, getsubopt.h, iconvme.h, strsep.c, strsep.h:
+       Change the initial comment to refer to GPL, not LGPL.
+       gnulib-tool will change it to LGPL as needed.
+
+       * __fpending.c, acl.c, acl.h, alloca_.h, allocsa.c, allocsa.h,
+       argmatch.c, argmatch.h, argp-ba.c, argp-eexst.c, argp-fmtstream.c,
+       argp-fmtstream.h, argp-fs-xinl.c, argp-help.c, argp-namefrob.h,
+       argp-parse.c, argp-pv.c, argp-pvh.c, argp-xinl.c, argp.h, argz.c,
+       argz_.h, asnprintf.c, asprintf.c, atanl.c, backupfile.c,
+       backupfile.h, base64.c, base64.h, basename.c, binary-io.h,
+       byteswap_.h, c-ctype.c, c-ctype.h, c-stack.c, c-stack.h,
+       c-strtod.c, calloc.c, canon-host.c, canonicalize.c,
+       canonicalize.h, ceill.c, chdir-long.c, chdir-long.h, chown.c,
+       classpath.c, classpath.h, cloexec.c, closeout.c, closeout.h,
+       concatpath.c, config.charset, copy-file.c, copy-file.h,
+       cycle-check.c, cycle-check.h, diacrit.c, diacrit.h, dirfd.c,
+       dirfd.h, dirname.c, dirname.h, dummy.c, dup-safer.c, dup2.c,
+       eealloc.h, error.c, error.h, euidaccess.c, exclude.c, exclude.h,
+       execute.c, execute.h, exit.h, exitfail.c, exitfail.h, expl.c,
+       fatal-signal.c, fatal-signal.h, fd-safer.c, file-type.c,
+       file-type.h, fileblocks.c, filemode.c, filemode.h, findprog.c,
+       findprog.h, floorl.c, fnmatch.c, fnmatch_.h, fnmatch_loop.c,
+       fopen-safer.c, free.c, frexpl.c, fsusage.c, fsusage.h,
+       full-read.c, full-read.h, full-write.c, full-write.h,
+       fwriteerror.c, fwriteerror.h, gai_strerror.c, gcd.c, gcd.h,
+       getaddrinfo.c, getaddrinfo.h, getcwd.c, getcwd.h, getdate.h,
+       getdate.y, getdomainname.c, getdomainname.h, getgroups.c,
+       gethostname.c, gethrxtime.c, gethrxtime.h, getline.c, getline.h,
+       getloadavg.c, getndelim2.c, getndelim2.h, getnline.c, getnline.h,
+       getopt.c, getopt1.c, getopt_.h, getopt_int.h, getpagesize.h,
+       getpass.c, getpass.h, getsubopt.c, getsubopt.h, gettext.h,
+       gettime.c, gettimeofday.c, getugroups.c, getusershell.c,
+       group-member.c, group-member.h, hard-locale.c, hard-locale.h,
+       hash-pjw.c, hash-pjw.h, hash.c, hash.h, human.c, human.h,
+       iconvme.c, iconvme.h, idcache.c, inet_ntop.h, intprops.h,
+       inttostr.c, inttostr.h, isdir.c, javacomp.c, javacomp.h,
+       javacomp.sh.in, javaexec.c, javaexec.h, javaexec.sh.in,
+       lbrkprop.h, lchown.c, ldexpl.c, linebreak.c, linebreak.h,
+       linebuffer.c, linebuffer.h, localcharset.c, localcharset.h,
+       logl.c, long-options.c, long-options.h, lstat.c, makepath.c,
+       makepath.h, malloc.c, mathl.h, mbswidth.c, mbswidth.h, md5.c,
+       md5.h, memcasecmp.c, memcasecmp.h, memchr.c, memcmp.c, memcoll.c,
+       memcoll.h, memcpy.c, memmem.c, memmem.h, mempcpy.c, mempcpy.h,
+       memrchr.c, memrchr.h, memset.c, minmax.h, mkdir.c, mkdtemp.c,
+       mkdtemp.h, mkstemp.c, mktime.c, modechange.c, modechange.h,
+       mountlist.c, mountlist.h, nanosleep.c, obstack.c, obstack.h,
+       openat.c, openat.h, pagealign_alloc.c, pagealign_alloc.h,
+       path-concat.c, path-concat.h, pathmax.h, pathname.h, physmem.c,
+       physmem.h, pipe.c, pipe.h, poll.c, poll_.h, posixtm.c, posixtm.h,
+       posixver.c, printf-args.c, printf-args.h, printf-parse.c,
+       printf-parse.h, progname.c, progname.h, progreloc.c, putenv.c,
+       quote.c, quote.h, quotearg.c, quotearg.h, raise.c, readlink.c,
+       readtokens.c, readtokens.h, readtokens0.c, readtokens0.h,
+       readutmp.c, readutmp.h, realloc.c, ref-add.sin, ref-del.sin,
+       regex.c, regex.h, rename.c, rmdir.c, rpmatch.c, safe-read.c,
+       safe-read.h, safe-write.c, safe-write.h, same.c, same.h,
+       save-cwd.c, save-cwd.h, savedir.c, savedir.h, setenv.c, setenv.h,
+       settime.c, sh-quote.c, sh-quote.h, sha1.c, sha1.h, sig2str.c,
+       sig2str.h, sincosl.c, snprintf.c, snprintf.h, sqrtl.c,
+       stat-macros.h, stat.c, stdbool_.h, stdint_.h, stdio-safer.h,
+       stpcpy.c, stpcpy.h, stpncpy.c, stpncpy.h, strcase.h, strcasecmp.c,
+       strchrnul.c, strchrnul.h, strcspn.c, strdup.c, strdup.h,
+       strerror.c, strftime.c, strftime.h, stripslash.c, strndup.c,
+       strndup.h, strnlen.c, strpbrk.c, strpbrk.h, strsep.c, strsep.h,
+       strstr.c, strstr.h, strtod.c, strtoimax.c, strtok_r.c, strtok_r.h,
+       strtol.c, strtoll.c, strtoul.c, strtoull.c, strverscmp.c,
+       strverscmp.h, sysexit_.h, tempname.c, time_r.c, time_r.h,
+       timegm.c, timegm.h, timespec.h, trigl.c, trigl.h, ucs4-utf16.h,
+       ucs4-utf8.h, unicodeio.c, unicodeio.h, unistd-safer.h,
+       unlocked-io.h, unsetenv.c, userspec.c, utf16-ucs4.h, utf8-ucs4.h,
+       utime.c, utimecmp.c, utimecmp.h, utimens.c, vasnprintf.c,
+       vasnprintf.h, vasprintf.c, vasprintf.h, version-etc-fsf.c,
+       version-etc.c, version-etc.h, vsnprintf.c, vsnprintf.h,
+       w32spawn.h, wait-process.c, wait-process.h, xalloc-die.c,
+       xalloc.h, xallocsa.c, xallocsa.h, xasprintf.c, xgetcwd.c,
+       xgetcwd.h, xgetdomainname.c, xgetdomainname.h, xgethostname.c,
+       xmalloc.c, xmemcoll.c, xnanosleep.c, xreadlink.c, xreadlink.h,
+       xsetenv.c, xsetenv.h, xsize.h, xstrndup.c, xstrndup.h, xstrtod.c,
+       xstrtod.h, xstrtoimax.c, xstrtol.c, xstrtol.h, xstrtoumax.c,
+       xtime.h, xvasprintf.c, xvasprintf.h, yesno.c, yesno.h:
+       Update FSF postal mail address.
+
+2005-05-10  Yoann Vandoorselaere <yoann.v@prelude-ids.com>
+
+       * getaddrinfo.c: Don't fail when SOCK_STREAM or SOCK_DGRAM are
+       specified in ai_socktype. Fix invalid ai_protocol
+       check. ai_protocol is usually set to 0 or depending on
+       ai_family/ai_socktype to IPPROTO_TCP / IPPROTO_UDP.  Checking for
+       SOCK_STREAM / SOCK_DGRAM in ai_protocol was invalid.  Set
+       ai_socktype / ai_protocol in the returned addrinfo structure.
+
+2005-05-09  Yoann Vandoorselaere <yoann.v@prelude-ids.com>
+           Bruno Haible  <bruno@clisp.org>
+
+       * inet_ntop.h: New file.
+       * inet_ntop.c: New file, from glibc with modifications.
+
+2005-05-08  Jim Meyering  <jim@meyering.net>
+
+       * classpath.c (PATH_SEPARATOR): Remove insignificant trailing blank.
+
+2005-05-01  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Merge from coreutils.  Among other things,
+       add bulletproofing for cases where stdin, stdout, or stderr are closed.
+       * fd-safer.c: New file.
+       * fcntl-safer.h, open-safer.c: Remove.
+       * chdir-long.c: Fix comment "fetish" -> "coreutils".
+       * dup-safer.c: Include unistd-safer.h first.
+       Don't include errno.h.
+       (dup_safer) [!defined F_DUPFD]: Let fd_safer do the real work.
+       * file-type.h: Don't assume invoker included sys/stat.h first.
+       * file-type.c: Rely on file-type.h change.
+       * getloadavg.c: Include unistd-safer.h.
+       (getloadavg): Use safer open.
+       * getusershell.c: Include "stdio-safer.h".
+       (getusershell): Use safer fopen.
+       * long-options.c (long_options): Use NULL rather than 0.
+       * modechange.h (mode_free): Remove; all callers changed to invoke
+       'free'.
+       * modechange.c: Likewise.
+       xstrtol.h, stdbool.h, stddef.h: Don't include; no longer needed.
+       (MODE_DONE): New constant.
+       (struct mode_change): Remove 'next' member.
+       (make_node_op_equals): New function; like the old one of the
+       same name, except it allocates an array.
+       (mode_compile, mode_create_from_ref): Use it.
+       (mode_compile): Allocate result as an array, not a linked list.
+       Parse octal string ourself, so that we catch mistakes like "+0".
+       (mode_adjust): Arg is an array, not a linked list.
+       * modechange.c: Include stat-macros.h, xalloc.h.
+       (S_ISDIR, S_ISUID, S_ISGID, S_ISVTX, S_IRUSR, S_IWUSR, S_IXUSR):
+       (S_IRGRP, S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH, S_IXOTH, S_IRXWU):
+       (S_IRWXG, S_IRWXO, CHMOD_MODE_BITS):
+       Remove.  This is now stat-macros.h's job.
+       (talloc): Remove.  All callers replaced by xalloc, so that
+       our invokers don't have to worry about reporting memory failures.
+       (make_node_op_equals): Remove.
+       (MODE_ORDINARY_CHAGE, MODE_X_IF_ANY_X, MODE_COPY_EXISTING):
+       New constants.
+       (struct mode_change): Moved here from modechange.h.
+       (mode_append_entry): Remove.
+       (mode_compile): Remove MASKED_OPS arg, since it encouraged
+       apps to have incorrect behavior.  Use simpler algorithm for head
+       and tail.  Don't futz with umask; that's now the job of mode_adjust.
+       Detect more invalid usages rather than having somewhat-random behavior.
+       Don't insert an "a=" action, as that leads to incorrect behavior.
+       (mode_compile, mode_create_from_ref): Return NULL on error instead
+       of an enum, since now there's only one way to have an error.  All
+       callers changed.
+       (mode_adjust): Accept new arg UMASK_VALUE, and interpret it
+       at the correct time.  Simplify calculation of "+u" and its ilk.
+       Don't mishandle "+X".
+       (mode_free): Remove "register" and localize decls.
+       * modechange.h (MODE_X_IF_ANY_X, MODE_COPY_EXISTING):
+       (struct mode_change): Move to modechange.c; callers don't
+       need to see this stuff.
+       (MODE_MASK_EQUALS, MODE_MASK_PLUS, MODE_MASK_MINUS, MODE_MASK_ALL):
+       (MODE_INVALID, MODE_MEMORY_EXHAUSTED, MODE_BAD_REFERENCE): Remove.
+       (mode_change, mode_adjust): Reflect the new signatures noted above.
+       * nanosleep.c (rpl_nanosleep): Include "timespec.h" before macros
+       that might redefine system include files.
+       (siginterrupt) [!HAVE_SIGINTERRUPT]: New macro.
+       (my_usleep): Use NULL rather than (void *) 0.
+       (rpl_nanosleep) [!defined SA_NOCLDSTOP]:
+       Use siginterrupt to specify that system calls should be interrupted.
+       (rpl_nanosleep): Move initialization of suspended closer to call of
+       my_usleep.
+       * readutmp.h (read_utmp): New arg OPTIONS.  All uses changed.
+       * readutmp.c: Likewise.  Include signal.h, stdbool.h.
+       (desirable_utmp_entry): New function.
+       (read_utmp) [defined UTMP_NAME_FUNCTION]: Redo memory allocation
+       using x2nrealloc, to simplify logic.
+       (read_utmp) [!defined UTMP_NAME_FUNCTION]: Check for overflow in
+       size calculation.  Do not assume utmp file is a regular file.
+       * readutmp.h (UT_PID): Moved here from ../src/who.c.
+       (READ_UTMP_CHECK_PIDS): New constant.
+       * save-cwd.c: Include unistd-safer.h.
+       (save_cwd): Use fd_safer.
+       * tempname.c (S_ISDIR, S_IRUSR, S_IRUSR, S_IWUSR, S_IXUSR): Remove.
+       [!_LIBC] Include "stat-macros.h" instead.
+       * unistd-safer.h (fd_safer): New decl.
+
+2005-05-01  Oskar Liljeblad  <oskar@osk.mine.nu>
+
+       * byteswap_.h: New file.
+
+2005-04-25  Albert Chin  <china@thewrittenword.com>
+
+       * regex.c: Include <stdio.h>, as a workaround to a Compaq Desktop
+       Toolkit C bug.
+
+2005-04-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * getdate.y (zone): Allow relunit_snumber after tZONE, so
+       that "UTC +1 second" continues to work.  Problem reported
+       by Dmitry V. Levin.
+       (relunit_snumber): New rule.
+       (relunit): Use it.
+
+2005-04-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * getdate.y (universal_time_zone_table): New constant.
+       (time_zone_table): Remove GMT, UT, UTC entries; they're now in
+       universal_time_zone_table.
+       (lookup_zone): Prefer universal_time_zone_table to
+       local_time_zone_table, so that "GMT" time stamps are allowed in
+       London during the summer.  Problem reported by Ian Abbott.
+
+2005-04-12  Jim Meyering  <jim@meyering.net>
+
+       * human.c (humblock): Set *options even when returning due to
+       xstrtoumax conversion failure.  Thanks to a used-uninitialized
+       warning from gcc-4.
+
+2005-04-09  Jim Meyering  <jim@meyering.net>
+
+       * posixtm.c (posixtime) [lint]: Avoid spurious warning from gcc-4's
+       -Wuninitialized: initialize tm0.tm_year.
+
+2005-04-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * getdate.y (parser_control): rels_seen is now a boolean, not a
+       count, since there's no maximum.  All uses changed.
+       Add member dsts_seen.
+       (local_zone): Accumulate dsts_seen rather than relying on tm_isdst
+       not being INT_MAX.
+       (get_date): Initialize dsts_seen, and check that it doesn't go over 1.
+       Use pc_rels_seen to decide whther a date is absolute.
+
+       * getdate.y (number): Don't overwrite year.
+       (get_date): Initialize pc.year.digits to 0, not 4, to enable above
+       check.
+
+2005-04-02  Simon Josefsson  <jas@extundo.com>
+
+       * getaddrinfo.h: Fix OpenBSD compilation failure, inspired by tiny
+       patch from Yoann Vandoorselaere <yoann@prelude-ids.org>.
+
+2005-03-27  Jim Meyering  <jim@meyering.net>
+
+       * argmatch.c: Clarify comment: null-terminated -> NULL-terminated.
+
+2005-03-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * intprops.h (INT_STRLEN_BOUND, INT_BUFSIZE_BOUND):
+       "one's complement" -> "ones' complement" in comment, as per Knuth.
+       "value of type" -> "type or expression" in comment.
+       * mktime.c, strftime.c: Propagate intprops.h comment nits.
+
+2005-03-26  Jim Meyering  <jim@meyering.net>
+
+       Comment nits.
+       * intprops.h: Add the apostrophe in `(one|two)'s complement'.
+       Correct typos: s/or/of/.
+
+2005-03-23  Jim Meyering  <jim@meyering.net>
+
+       * canonicalize.c: Remove duplicate `#include "stat-macros.h"'.
+
+2005-03-21  Jim Meyering  <jim@meyering.net>
+
+       Changes imported from coreutils.
+
+       * cycle-check.c: Don't include xalloc.h.
+
+       * path-concat.c: Don't include assert.h.
+       (path_concat): Remove assertion that would have triggered
+       for ABASE starting with more than one slash.
+       Reported by Andreas Schwab.
+
+       * path-concat.c (path_concat): Set *BASE_IN_RESULT
+       properly when ABASE is an absolute file name.
+       Correct the description of this function.
+       Include <assert.h>.
+       Add an assertion and a test driver.
+       This fixes a bug introduced on 2004-07-02.
+       Andreas Schwab reported the resulting failure of cp --parents:
+       http://lists.gnu.org/archive/html/bug-coreutils/2005-01/msg00130.html
+
+2005-03-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * strftime.c (my_strftime): If the underlying strftime returns 0
+       (which shouldn't happen), generate nothing instead of returning 0
+       immediately, so that nstrftime (NULL, ...) doesn't return 0.
+
+2005-03-16  Bruno Haible  <bruno@clisp.org>
+
+       * stdint_.h: Use HAVE_LONG_LONG_64BIT instead of HAVE_LONGLONG_64BIT.
+
+2005-03-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * strftime.c (my_strftime): Prepend space to format so that we can
+       reliably distinguish strftime failure from empty output on POSIX
+       hosts.
+
+2005-03-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * iconvme.c (SIZE_MAX): New macro, if not already defined.
+       (iconv_string): Don't guess a size-zero buffer, as that might cause
+       buffer overrun.  Instead, avoid multiplying by MB_LEN_MAX if the
+       result would be 'too large', where 'too large' is (heuristically)
+       the square root of SIZE_MAX, divided by MB_LEN_MAX to allay
+       overflow concerns.  This will prevent some unwanted malloc failures
+       when the inputs are very large.
+
+2005-03-15  Bruno Haible  <bruno@clisp.org>
+
+       * regex.c (byte_re_match_2_internal): Rename local variable 'not' to
+       'negate'.
+
+       * regex.c (byte_re_match_2_internal): Reduce scope of same_str_p
+       variable.
+
+       * regex.c (EXTEND_BUFFER, regcomp): Cast the realloc/malloc results.
+
+2005-03-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * mktime.c (TYPE_TWOS_COMPLEMENT, TYPE_ONES_COMPLEMENT,
+       TYPE_SIGNED_MAGNITUDE, TYPE_MINIMUM, TYPE_MAXIMUM): Sync from
+       intprops.h.
+       * strtol.c: Likewise.
+
+2005-03-14  Simon Josefsson  <jas@extundo.com>
+
+       * timegm.h: Use proper prototype CPP guards, reported by Dave Love
+       <fx@gnu.org>.
+
+2005-03-14  Jim Meyering  <jim@meyering.net>
+
+       * strftime.c (my_strftime) [HAVE_STRFTIME && ! (_NL_CURRENT
+       && HAVE_STRUCT_ERA_ENTRY)]: Initialize the first byte of ubuf[]
+       to be nonzero so that we (and caller) can detect the difference
+       between a valid zero-length expansion and an error return, even
+       when the underlying strftime fails before writing anything into
+       that location.
+
+2005-03-10  Jim Meyering  <jim@meyering.net>
+
+       * save-cwd.c [!HAVE_FCHDIR]: Define open, fchdir, and chdir_long
+       so that this module works on systems without fchdir.
+
+2005-03-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Factor int-properties macros into a single file, except for
+       glibc-related files.
+       * intprops.h: New file.
+       * getloadavg.c: Include it instead of limits.h.
+       (INT_STRLEN_BOUND): Remove.
+       * human.c: Include intprops.h.
+       (group_number): Use INT_STRLEN_BOUND instead of rolling it ourself.
+       * human.h (LONGEST_HUMAN_READABLE): Use 146/485 rather than 302/1000.
+       * inttostr.h: Include intprops.h instead of limits.h.
+       (INT_STRLEN_BOUND, INT_BUFSIZE_BOUND): Remove.
+       * mktime.c (TYPE_IS_INTEGER, TYPE_TWOS_COMPLEMENT): New macros,
+       for consistency with intprops.h.
+       (time_t_is_integer, twos_complement_arithmetic): Use them.
+       * sig2str.h: Include <signal.h>, intprops.h.
+       (INT_STRLEN_BOUND): Remove.
+       * strftime.c (TYPE_SIGNED): Remove.
+       (INT_STRLEN_BOUND): Switch to same implementation as intprops.h.
+       * strtol.c: Adjust comments to match intprops.h.
+       * userspec.c: Include intprops.h.
+       (TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM): Remove.
+       * utimecmp.c, xnanosleep.c, xstrtol.c: Likewise.
+       * utimecmp.c (utimecmp): Use TYPE_IS_INTEGER, TYPE_TWOS_COMPLEMENT
+       instead of rolling our own expressions.
+       * xstrtol.c: Include xstrtol.h first, to test interface.
+
+       * strftime.c: Include <stdbool.h>.  Use bool where appropriate,
+       instead of int.
+       (my_strftime): Do not mishandle years close to INT_MAX, by doing
+       the right thing even if adding 1900 would overflow.  Similarly
+       for tm_mon + 1 and tm_yday + 1.
+       Make %Y always equivalent to %C%y, and similarly for %G and %g.
+       (DO_NUMBER, DO_NUMBER_SPACEPAD): Set digits to d, not a conditional.
+       (DO_SIGNED_NUMBER): New macro.
+       (my_strftime) [HAVE_TZNAME]: Don't dump core if tp->tm_dst > 1.
+
+2005-03-07  Bruno Haible  <bruno@clisp.org>
+
+       * pagealign_alloc.c (MAP_FILE, MAP_FAILED): Define fallbacks.
+
+2005-03-03  Derek R. Price  <derek@ximbiot.com>
+           Bruno Haible  <bruno@clisp.org>
+
+       * pagealign_alloc.h: New file.
+       * pagealign_alloc.c: New file.
+
+2005-01-28  Bruno Haible  <bruno@clisp.org>
+
+       * stpncpy.h (stpncpy): Define as a macro without arguments, so that
+       stpncpy.c uses it.
+
+2005-03-01  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Remove workaround for bug in Linux kernel 2.6.8 or thereabouts.
+       The workaround isn't strictly needed for POSIX conformance, and
+       it's too much of a pain to configure and maintain.  We'll ask
+       people to fix their kernels instead.
+       * xnanosleep.c: Don't include gethrxtime.h or xtime.h.
+       (NANOSLEEP_BUG_WORKAROUND): Remove.
+       (xnanosleep): Remove the workaround.
+
+2005-02-12  Bruno Haible  <bruno@clisp.org>
+
+       * vasnprintf.c (EOVERFLOW): Define to a fallback if needed.
+
+2005-02-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * gethrxtime.h, gethrxtime.c, xtime.h: New files.
+       * timespec.h (gettime): Return void, since it always
+       succeeds now.  All uses changed.
+       * gettime.c (gettime) Likewise.
+       [HAVE_NANOTIME]: Prefer nanotime.
+       Assume gettimeofday succeeds, as POSIX requires.
+       Assime time () succeeds, since other code already does.
+       * xnanosleep.c: Include xtime.h and gethrxtime.h, not xalloc.h.
+       (timespec_subtract): Remove.
+       (NANOSLEEP_BUG_WORKAROUND): New constant.
+       (xnanosleep): Use gethrxtime rather than gettime; this simplifies
+       things considerably.  Use it only on GNU/Linux hosts, since the
+       workaround shouldn't be needed elsewhere.
+
+2005-02-24  Bruno Haible  <bruno@clisp.org>
+
+       * gettext.h: Update from GNU gettext 0.14.2.
+
+2005-02-24  Bruno Haible  <bruno@clisp.org>
+
+       * localcharset.c: Update from GNU gettext 0.14.2.
+       * config.charset: Update from GNU gettext 0.14.2.
+
+2005-02-22  Simon Josefsson  <jas@extundo.com>
+
+       * iconvme.h, iconvme.c: New files, from libc.
+
+2005-02-20  Neil Conway  <neilc@samurai.com>
+
+       * xgethostname.c (xgethostname): Check for ENOMEM, which is
+       returned by OSX/Darwin if the specified buffer is not large
+       enough for the hostname.
+
+2005-02-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * memrchr.h: New file.
+       * chdir-long.c: Include it.
+       * memrchr.c [!defined _LIBC]: Include it rather than <string.h>
+       Don't bother including stddef.h.
+
+2005-02-03  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
+
+       * argp-help.c (__argp_help): Create a fake struct argp_state and
+       pass it to _help, otherwise the latter coredumps trying to
+       dereference state.root_argp.
+
+2005-02-01  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * mountlist.h (MOUNTLIST_H_): New macro, to protect against double
+       inclusion.
+       Include <sys/types.h>, for dev_t.
+       (ME_DUMMY, ME_REMOTE): Move from here....
+       * mountlist.c (ME_DUMMY, ME_REMOTE): To here.
+       (ME_DUMMY): Count "subfs" as a dummy.  Problem reported by
+       Dmitry V. Levin.
+       Include mountlist.h first, to test the interface.
+
+2005-01-29  Bruno Haible  <bruno@clisp.org>
+
+       * progname.c (program_name): Initialize.
+       Needed when linking statically on MacOS X.
+
+2005-01-28  Bruno Haible  <bruno@clisp.org>
+
+       * javacomp.sh.in: New file, from GNU gettext.
+       * javacomp.h: New file, from GNU gettext.
+       * javacomp.c: New file, from GNU gettext.
+
+2005-01-26  Bruno Haible  <bruno@clisp.org>
+
+       * javaexec.sh.in: New file, from GNU gettext.
+       * javaexec.h: New file, from GNU gettext.
+       * javaexec.c: New file, from GNU gettext.
+
+2005-01-26  Simon Josefsson  <jas@extundo.com>
+
+       * gai_strerror.c: Use GPL in header.
+
+2005-01-24  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
+
+       * argp-help.c (hol_entry_help): Avoid using non-constant
+       initializers for struct pentry_state.
+       (__argp_error): Check return value of __asprintf
+       (__argp_failure): Translate error message
+
+       * argp-parse.c: Removed braces around the expansion of N_()
+
+2005-01-21  Jim Meyering  <jim@meyering.net>
+
+       * openat.h (AT_SYMLINK_NOFOLLOW): Define to 4096, so it's the
+       same value as for Solaris 9.
+
+       * chdir-long.c (chdir_long): Rewrite to remove limitation on
+       component length.  This included changing the parameter to be
+       of type `char *' rather than `char const *'.
+       * chdir-long.h (chdir_long): Update prototype.
+
+       * openat.c (fdopendir, fstatat): New functions.
+       * openat.h: Include headers required for use of DIR and struct stat.
+       [AT_SYMLINK_NOFOLLOW]: Define.
+       (fdopendir, fstatat): Add prototypes.
+
 2005-01-21  Bruno Haible  <bruno@clisp.org>
 
        * classpath.h: New file, from GNU gettext.
 2005-01-21  Bruno Haible  <bruno@clisp.org>
 
        * classpath.h: New file, from GNU gettext.
        (restore_cwd): Use chdir_long, not chdir.
        * chdir-long.c: Renamed from chdir.c.
        * chdir-long.h: Renamed from chdir.h.
        (restore_cwd): Use chdir_long, not chdir.
        * chdir-long.c: Renamed from chdir.c.
        * chdir-long.h: Renamed from chdir.h.
-       [!defined PATH_MAX]: Define chdir_long to chdir on systems like the Hurd.
+       [!defined PATH_MAX]: Define chdir_long to chdir on systems like the
+       Hurd.
+
 2005-01-18  Bob Proulx  <bob@proulx.com>
 
        * obstack.c [DEFAULT_ALIGNMENT]: Use an intermediate type to simplify
 2005-01-18  Bob Proulx  <bob@proulx.com>
 
        * obstack.c [DEFAULT_ALIGNMENT]: Use an intermediate type to simplify
 2004-12-24  Paul Eggert  <eggert@cs.ucla.edu>
 
        * c-strtod.c (STRTOD): Depend on HAVE_C99_STRTOLD, not
 2004-12-24  Paul Eggert  <eggert@cs.ucla.edu>
 
        * c-strtod.c (STRTOD): Depend on HAVE_C99_STRTOLD, not
-        HAVE_DECL_STRTOLD.
+       HAVE_DECL_STRTOLD.
 
 2004-12-23  Paul Eggert  <eggert@cs.ucla.edu>
 
 
 2004-12-23  Paul Eggert  <eggert@cs.ucla.edu>
 
        with MAXSIZE.
 
 2004-11-02  Derek R. Price  <derek@ximbiot.com>
        with MAXSIZE.
 
 2004-11-02  Derek R. Price  <derek@ximbiot.com>
-       and  Paul Eggert  <eggert@cs.ucla.edu>
+       and  Paul Eggert  <eggert@cs.ucla.edu>
 
        * getdate.y [!TEST]: Include <stdio.h>, since we use sprintf now.
        (get_date): Overparenthesize to avoid GCC warning.
 
        * getdate.y [!TEST]: Include <stdio.h>, since we use sprintf now.
        (get_date): Overparenthesize to avoid GCC warning.
        * snprintf.c (snprintf): Handle size==0.
 
 2004-10-01  Simon Josefsson  <jas@extundo.com>
        * snprintf.c (snprintf): Handle size==0.
 
 2004-10-01  Simon Josefsson  <jas@extundo.com>
-            Bruno Haible  <bruno@clisp.org>
+           Bruno Haible  <bruno@clisp.org>
 
        * snprintf.c: Include <stdarg.h>, <stdlib.h>, <string.h>.
        (snprintf): Declare 'args'.
 
        * snprintf.c: Include <stdarg.h>, <stdlib.h>, <string.h>.
        (snprintf): Declare 'args'.
        Problem reported by Dan Jacobson.
 
 2004-06-01  Paul Eggert  <eggert@cs.ucla.edu>
        Problem reported by Dan Jacobson.
 
 2004-06-01  Paul Eggert  <eggert@cs.ucla.edu>
-       and  Jim Meyering  <jim@meyering.net>
+       and  Jim Meyering  <jim@meyering.net>
 
        Merge from coreutils CVS.
 
 
        Merge from coreutils CVS.
 
        * getndelim2.c (getndelim2): Upon realloc failure, don't leak memory.
 
 2004-04-20  Jim Meyering  <jim@meyering.net>
        * getndelim2.c (getndelim2): Upon realloc failure, don't leak memory.
 
 2004-04-20  Jim Meyering  <jim@meyering.net>
-            Bruno Haible  <bruno@clisp.org>
+           Bruno Haible  <bruno@clisp.org>
 
        * localcharset.c (get_charset_aliases) [!VMS && !WIN32]: Don't leak
        memory when realloc fails.
 
        * localcharset.c (get_charset_aliases) [!VMS && !WIN32]: Don't leak
        memory when realloc fails.
        * getopt.h: Sync with libc CVS.
 
 2004-03-18  Paul Eggert  <eggert@twinsun.com>
        * getopt.h: Sync with libc CVS.
 
 2004-03-18  Paul Eggert  <eggert@twinsun.com>
-            Bruno Haible  <bruno@clisp.org>
+           Bruno Haible  <bruno@clisp.org>
 
        * mbswidth.h: Include <wchar.h> only if HAVE_DECL_MBSWIDTH_IN_WCHAR_H,
        not on all platforms that have <wchar.h>.
 
        * mbswidth.h: Include <wchar.h> only if HAVE_DECL_MBSWIDTH_IN_WCHAR_H,
        not on all platforms that have <wchar.h>.
        * argp-{help.c,parse.c,namefrob.h}, argp.h: update from libc.
 
 2003-11-23  Paul Eggert  <eggert@twinsun.com>
        * argp-{help.c,parse.c,namefrob.h}, argp.h: update from libc.
 
 2003-11-23  Paul Eggert  <eggert@twinsun.com>
-            Bruno Haible  <bruno@clisp.org>
+           Bruno Haible  <bruno@clisp.org>
 
        * printf-parse.h: Don't include sys/types.h.
        (ARG_NONE): New macro.
 
        * printf-parse.h: Don't include sys/types.h.
        (ARG_NONE): New macro.
        Reported by Geoff Collyer via Arnold Robbins.
 
 2003-11-16  Paul Eggert  <eggert@twinsun.com>
        Reported by Geoff Collyer via Arnold Robbins.
 
 2003-11-16  Paul Eggert  <eggert@twinsun.com>
-            Bruno Haible  <bruno@clisp.org>
+           Bruno Haible  <bruno@clisp.org>
 
        Protect against address arithmetic overflow.
        * printf-args.h: Include stddef.h.
 
        Protect against address arithmetic overflow.
        * printf-args.h: Include stddef.h.
        * linebuffer.c: Include <string.h> for declaration of memset.
 
 2003-10-30  Paul Eggert  <eggert@twinsun.com>
        * linebuffer.c: Include <string.h> for declaration of memset.
 
 2003-10-30  Paul Eggert  <eggert@twinsun.com>
-            Bruno Haible  <bruno@clisp.org>
+           Bruno Haible  <bruno@clisp.org>
 
        * vasprintf.c: Include <limits.h>, <stdlib.h>.
        (vasprintf): Fail if the resulting length doesn't fit in an 'int'.
 
        * vasprintf.c: Include <limits.h>, <stdlib.h>.
        (vasprintf): Fail if the resulting length doesn't fit in an 'int'.
        * version-etc-2.c: Remove file.
 
 2003-09-25  Jim Meyering  <jim@meyering.net>
        * version-etc-2.c: Remove file.
 
 2003-09-25  Jim Meyering  <jim@meyering.net>
-            Bruno Haible  <bruno@clisp.org>
+           Bruno Haible  <bruno@clisp.org>
 
        This lets translators provide better translations for the
        "Written by ..." part of --version output.
 
        This lets translators provide better translations for the
        "Written by ..." part of --version output.
        * xgetdomainname.c: New file.
 
 2003-09-25  Simon Josefsson  <jas@extundo.com>
        * xgetdomainname.c: New file.
 
 2003-09-25  Simon Josefsson  <jas@extundo.com>
-            Bruno Haible  <bruno@clisp.org>
+           Bruno Haible  <bruno@clisp.org>
 
        * getdomainname.h: New file.
        * getdomainname.c: New file.
 
        * getdomainname.h: New file.
        * getdomainname.c: New file.
 
 
 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
 
 
 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-  Free Software Foundation, Inc.
+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.
 Copying and distribution of this file, with or without modification,
 are permitted provided the copyright notice and this notice are preserved.