Upgrade allocsa module from GNU gettext.
[gnulib.git] / lib / ChangeLog
index 987ae0a..213db3c 100644 (file)
+2004-11-04  Bruno Haible  <bruno@clisp.org>
+
+       2004-09-11  Bruno Haible  <bruno@clisp.org>
+               * allocsa.valgrind: New file.
+       2004-02-06  Bruno Haible  <bruno@clisp.org>
+               * allocsa.h (sa_alignof): Define differently with HP-UX cc, to
+               avoid a bug of this cc on HP-UX 10.20 dealing with enums.
+               Reported by Christopher Seip <chris.seip@hp.com>.
+
+2004-11-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * xreadlink.c (xreadlink): AIX and HP-UX readlink return -1
+       with errno == ERANGE if the buffer is too small.
+       Problem reported by Mark D. Baushke.
+
+2004-11-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * xreadlink.c (MAXSIZE): New macro.
+       (xreadlink): Use it instead of SSIZE_MAX.  Ensure initial buffer
+       size does not exceed MAXSIZE.  Avoid cast.
+       As suggested by Mark D. Baushke in
+       <http://lists.gnu.org/archive/html/bug-gnulib/2004-11/msg00009.html>,
+       if readlink fails with buffer size just under MAXSIZE, try again
+       with MAXSIZE.
+
+2004-11-02  Derek R. Price  <derek@ximbiot.com>
+       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.
+
+2004-11-02  Bruno Haible  <bruno@clisp.org>
+
+       * setenv.h (unsetenv): Define as a macro if the system's unsetenv()
+       function returns void.
+
+2004-11-01  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lib/getpass.c (fflush_unlocked, flockfile, funlockfile)
+       (funlockfile, fputs_unlocked, putc_unlocked): Don't define if
+       already declared.
+
+2004-10-29  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * getdate.y: Add support for TZ="foo" within a date string.
+       Fix some bugs near time_t boundaries.  Reject dates with
+       out-of-range components, e.g., "Sept 31".
+       Include <stdlib.h>, "setenv.h", "xalloc.h".
+       (ISDIGIT_LOCALE): Remove; unused.
+       Note that the TZ and time functions used here are not reentrant.
+       (mktime_ok, get_tz): New functions.
+       (TZBUFSIZE): New constant.
+       (get_date): Parse leading TZ="foo".  Reject out-of-range components;.
+       This requires that we sometimes generate our own TZ="XXX..." setting.
+
+2004-10-27  Derek R. Price  <derek@ximbiot.com>
+
+       * mktime.c (not_equal_tm): Remove redundant check.
+
+2004-10-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * getdate.y: Use Bison 1.875 features, and some minor
+       code cleanups.  This change does not affect semantics.
+       Don't include <stdlib.h>; no longer needed.
+       Don't include unlocked-io.h; only the "#if TEST" code uses
+       stdio, and performance isn't crucial there.
+       (PC, YYLEX_PARAM, YYPARSE_PARAM): Remove; replaced by
+       Bison 1.875 features as described below.
+       All uses of "PC." replaced by "pc->".
+       (YYSTYPE): Add a forward declaration.
+       (yylex, yyerror): Use full prototypes in forward decls.
+       Use "%pure-parser" rather than obsolescent "%pure_parser".
+       Use %parse-param and %lex-param instead of obsolescent
+       YYPARSE_PARAM and YYLEX_PARAM.
+       (meridian_table, month_and_day_table, time_units_table,
+       relative_time_table, time_zone_table, military_table,
+       lookup_zone, lookup_word, get_date):
+       Use NULL instead of 0 where appropriate.
+       (to_hour): Avoid abort (), to avoid a dependency on
+       stdlib.h.
+       (yyerror, yylex): Now accepts parser_control * arg.
+       (main) [TEST]: Use '\0' rather than 0 for char.
+       
+2004-10-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * getpagesize.c (getpagesize): Don't assume <sys/param.h> exists.
+       It's now the caller's responsibility to handle the case where
+       !HAVE_GETPAGESIZE && !defined getpagesize.
+
+       * mktime.c (leapyear): Arg is long int, not int.
+
+2004-10-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * argp-fs-xinl.c, argp-xinl.c: Update from glibc.
+
+2004-10-12  Simon Josefsson  <jas@extundo.com>
+
+       * getpass.c (fflush_unlocked, flockfile, funlockfile)
+       (fputs_unlocked, putc_unlocked) [!_LIBCS && !USE_UNLOCKED_IO]: Map
+       to real functions.
+
+2004-10-11  Yoann Vandoorselaere  <yoann@prelude-ids.org>
+
+       * vsnprintf.h: New file.
+       * vsnprintf.c: New file.
+
+2004-10-07  Bruno Haible  <bruno@clisp.org>
+
+       * snprintf.c (snprintf): Avoid a memory allocation if the result fits
+       into the provided buffer.
+
+2004-10-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * diacrit.c, diacrit.h: Add GPL notice.
+
+       * atanl.c, logl.c: Add GPL notice, to match glibc's added LGPL notice.
+       * atanl.c (atanl): Keep the code as similar to glibc as possible.
+       * logl.c (logl): Keep the code as similar to glibc as possible.
+       This avoids a potential constant-folding bug.
+
+2004-10-05  Bruno Haible  <bruno@clisp.org>
+
+       * strsep.h: Don't declare strsep() if HAVE_STRSEP.
+
+2004-10-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * xalloc.h (xmemdup): Renamed from xclone.  All uses changed.
+       * xmalloc.c (xmemdup): Likewise.
+       * xalloc.h (CCLONE, CLONE, NEW, XCALLOC, XMALLOC, XREALLOC,
+       XFREE): Remove these long-obsolescent macros.
+       * xmalloc.c (xstrdup): Implementation moved here from xstrdup.c
+       * xstrdup.c: Remove.
+
+       * regex.c (re_comp): Cast gettext return value to char *,
+       Problem reported by Martin Neitzel via Mark D. Baushke.
+
+2004-10-04  Simon Josefsson  <jas@extundo.com>
+
+       * error.c, md5.c, regex.c: Use '#if USE_UNLOCKED_IO' instead of
+       '#ifdef USE_UNLOCKED_IO'.
+
+2004-10-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * argmatch.c, closeout.c, error.c, exclude.c, getdate.y,
+       getndelim2.c, getpass.c, getusershell.c, linebuffer.c,
+       md5.c, mountlist.c, posixtm.c, readtokens.c, readutmp.c,
+       regex.c, sha1.c, version-etc.c, yesno.c:
+       Include "unlocked-io.h" only if USE_UNLOCKED_IO.
+       * unlocked-io.h: Don't worry about USE_UNLOCKED_IO; that's now
+       the includer's responsibility.
+
+       Sync from coreutils.
+
+       * modechange.c (mode_compile): Don't decrement a pointer that
+       points to the start of a string, as the C Standard says the
+       resulting behavior is undefined.
+
+       * backupfile.h (enum backuptype): Rename none -> no_backups,
+       simple -> simple_backups, numbered_existing ->
+       numbered_existing_backups, numbered -> numbered_backups
+       to avoid shadowing problems.  All uses changed.
+       * argmatch.c (enum backuptype) [defined TEST]: Likewise.
+       * backupfile.c (check_extension, numbered_backup):
+       Rename locals to avoid shadowing 'basename'.
+       * backupfile.h (VALID_BACKUP_TYPE): Don't evaluate arg more than
+       once.
+
+       * .cppi-disable: Add getopt_.h, getopt_int.h.
+       * .cvsignore: Add getopt.h.
+
+2004-10-04  Simon Josefsson  <jas@extundo.com>
+
+       * memmem.h: New file.
+       * memmem.c: New file, taken from glibc.
+
+2004-10-02  Jim Meyering  <jim@meyering.net>
+
+       * dirfd.h, getpagesize.h: Add copyright notice.
+
+2004-10-01  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * snprintf.c: Remove comments as to why each header is needed.
+
+2004-10-01  Yoann Vandoorselaere <yoann@prelude-ids.org>
+
+       * strsep.h: New file.
+       * strsep.c: New file.
+
+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>
+
+       * snprintf.c: Include <stdarg.h>, <stdlib.h>, <string.h>.
+       (snprintf): Declare 'args'.
+
+2004-09-30  Simon Josefsson  <jas@extundo.com>
+
+       * snprintf.h, snprintf.c: New files.
+
+2004-09-30  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
+
+       * argp-help.c (canon_doc_option): Fixed coredump if *name==NULL
+       (hol_entry_help): Never translate an empty string.
+       Do not translate option tag (opt->name) if OPTION_NO_TRANS is set
+       * argp.h (OPTION_NO_TRANS): New option.
+
+2004-09-29  Oskar Liljeblad  <oskar@osk.mine.nu>
+
+       * xvasprintf.c: Include xalloc.h.
+       (xvasprintf): Use xalloc_die, not xmalloc_die.
+
+2004-09-28  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * dummy.c: Change copyright notice to FSF, and license to GPL.
+
+2004-09-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * argp-pvh.c (argp_program_version_hook): Provide initial value.
+       Problem reported by Bruno Haible in:
+       http://lists.gnu.org/archive/html/bug-tar/2004-09/msg00023.html
+
+2004-09-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * mempcpy.h: Wrap the entire include file inside #ifndef mempcpy,
+       in case some system header has #define'd it.  Problem reported by
+       Soeren D. Schulze in
+       <http://lists.gnu.org/archive/html/bug-gnulib/2004-09/msg00017.html>.
+
+2004-09-08  Bruno Haible  <bruno@clisp.org>
+
+       * stdint_.h.in: New file, taken from GNU clisp.
+
+2004-09-08  Oskar Liljeblad  <oskar@osk.mine.nu>
+
+       * xvasprintf.h: New file.
+       * xvasprintf.c: New file.
+       * xasprintf.c: New file.
+
+2004-09-08  Bruno Haible  <bruno@clisp.org>
+
+       * vasnprintf.c (VASNPRINTF): Signal EOVERFLOW if the resulting length
+       is > INT_MAX.
+       * vasprintf.c (vasprintf): Don't test for length > INT_MAX any more.
+
+2004-08-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Import from coreutils.
+       * userspec.c: Don't use <alloca.h>, so that we don't use alloca on
+       strings on unbounded length.  alloca's performance benefits aren't
+       that important here.
+       (V_STRDUP): Remove.
+       (parse_with_separator): New function, with most of the internals
+       of the old parse_user_spec.  Allow user to omit both user and group,
+       for compatibility with FreeBSD.
+       Clone only the user name, not the entire spec.
+       Do not set *uid, *gid unless entirely successful.
+       Avoid memory leak in some failing cases.
+       Fix regression for USER.GROUP reported by Dmitry V. Levin in
+       <http://lists.gnu.org/archive/html/bug-coreutils/2004-08/msg00102.html>
+       (parse_user_spec): Rewrite to use parse_with_separator.
+
+2004-08-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * argp-help.c, argp-parse.c: Use "gettext.h" instead of
+       its complicated substitute.
+       * argp-help.c: Include <errno.h>, for program_invocation_short_name
+       and program_invocation_name.
+       (__argp_basename) [!_LIBC]: Remove; the only use was
+       replaced by its body.
+       (__argp_short_program_name): Change condition from
+       !defined __argp_short_program_name to
+       ! (defined _LIBC || HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME),
+       to match argp-namefrob.h.
+       (__argp_failure): Don't assume strerror_r returns char *.
+       * argp-parse.c (N_): Define unconditionally.
+       (argp_default_options): Fill out initializers with 0 to avoid
+       gcc warnings.
+
+2004-08-12  Simon Josefsson  <jas@extundo.com>
+
+       * getopt.c, getopt1.c: Remove ELIDE_CODE hack.
+       * getopt_.h: Renamed from getopt.h.
+
+2004-08-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Merge from coreutils.
+
+       * fnmatch.c (WIDE_CHAR_SUPPORT): Don't set to 1 if missing
+       wmemchr or wmemcpy.  Problem reported by Robert Dahlem
+       for Reliant Unix 5.43.
+
+       * obstack.c: Include <inttypes.h> and <stdint.h> if available.
+       (union fooround): Use uintmax_t, not long int.
+       The rest is a merge from libc:
+       [defined _LIBC]: Include <shlib-compat.h>.
+       (_obstack) [defined _LIBC]: Remove after 2.3.4.
+
+       * settime.c (settime): Recode to avoid warning with Sun Forte C 6U2.
+
+       * strverscmp.c: Convert to UTF-8.
+
+2004-08-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * obstack.h (obstack_empty_p):
+       Don't assume that chunk->contents is suitably aligned.
+       * obstack.c (_obstack_begin, _obstack_begin_1, _obstack_newchunk):
+       Likewise. Problem reported by Benno in
+       <http://sources.redhat.com/ml/libc-alpha/2004-08/msg00055.html>.
+
+       * chown.c (rpl_chown): Work even if the file is writeable but not
+       readable.  This could be improved further but it'd take some work.
+
+2004-08-08  Simon Josefsson  <jas@extundo.com>
+
+       * xgethostname.c: Don't include error.h (not used).
+
+       * getpass.h: Add.
+       * getpass.c: Include getpass.h first.
+
+2004-08-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * xalloc-die.c: New files.
+       * xalloc.h (xalloc_fail_func, xalloc_msg_memory_exhausted): Remove.
+       All uses removed.
+       * xmalloc.c (xalloc_fail_func, xalloc_msg_memory_exhausted): Likewise.
+       Move inclusions of gettext.h, error.h, exitfail.h to xalloc-die.c.
+       (_, N_, xalloc_die): Move to xalloc-die.c.
+       * userspec.c (parse_user_spaec): Use xstrdup rather than strdup,
+       so that we needn't mess with xalloc_msg_memory_exhausted.
+
+       * sha1.h: Renamed from sha.h.
+       (SHA1_H): Renamed from _SHA_H.
+       (sha1_ctx): Renamed from sha_ctx.
+       (sha1_init_ctx): Renamed from sha_init_ctx.
+       (sha1_process_block): Renamed from sha_process_block.
+       (sha1_process_bytes): Renamed from sha_process_bytes.
+       (sha1_finish_ctx): Renamed from sha_finish_ctx.
+       (sha1_read_ctx): Renamed from sha_read_ctx.
+       (sha1_stream): Renamed from sha_stream.
+       (sha1_buffer): Renamed from sha_buffer.
+       * sha1.c: Likewise; renamed from sha.c.
+       Do not include <sys/types.h>.
+       Include <stddef.h> rather than <stdlib.h>.
+
+2004-08-08  Bruno Haible  <bruno@clisp.org>
+
+       * pathname.h (FILE_SYSTEM_PREFIX_LEN): Renamed from
+       FILESYSTEM_PREFIX_LEN.
+       * progreloc.c: Likewise.
+       * concatpath.c (concatenated_pathname): Use FILE_SYSTEM_PREFIX_LEN.
+
+2004-08-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Merge from tar.
+       * argp-help.c (make_hol, hol_append): Don't assume that
+       SIZE_MAX is a valid preprocessor constant.
+       (__argp_basename): Change from "#ifndef _LIBC"
+       to "#ifndef __argp_short_program_name", so that
+       we don't compile these functions for tar.
+
+       More merges from coreutils.
+       * raise.c, readtokens0.h, readtokens0.c, strftime.h, utimens.h,
+       utimens.c, utimecmp.h, utimecmp.c, xnanosleep.h, xnanosleep.c,
+       yesno.h: New files.
+       * addext.c: Remove; no longer needed.
+       * yesno.c, argmatch.h, argmatch.c, backupfile.h, backupfile.c,
+       euidaccess.c, filemode.c, closeout.c, dup2.c, exclude.c,
+       fileblocks.c, filemode.c, fnmatch.c, fnmtahc_loop.c,
+       fopen-safer.c, fsusage.c, fsusage.h, ftruncate.c, full-write.c,
+       getdate.y, getloadavg.c, getugroups.c, hard-locale.c, hard-locale.h,
+       hash.c, human.c, human.h, lchown.c, lchown.h, makepath.c, makepath.h,
+       md5.c, md5.h, memchr.c, memcoll.c, memrchr.c, modechange.c,
+       modechange.h, mountlist.c, mountlist.h, nanosleep.c, posixtm.c,
+       putenv.c, quotearg.c, quotearg.h, readtokens.c, readutmp.c,
+       readutmp.h, rmdir.c, safe-read.c, save-cwd.c, savedir.c, setenv.c,
+       sig2str.c, stat.c, strtoimax.c, strverscmp.c, userspec.c, utime.c,
+       version-etc.c., xgethostname.c, xmemcoll.c, xreadlink.c, xstrtod.c,
+       xstrtod.h, xstrtoimax.c, xstrtol.c, xstrtol.h, xstrtoumax.c:
+       Import changes from coreutils.
+
+2004-08-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Merge from coreutils.
+
+       * .gdb-history: Remove; this doesn't belong here.
+
+       * c-strtod.c, c-strtod.h, c-strtold.c, cycle-check.c,
+       cycle-check.h, dev-ino.h, canonicalize.h, canonicalize.c,
+       fcntl-safer.h, fcntl-safer.c, getcwd.c: New files.
+
+       * dirname.h: Include <stdbool.h>.
+       (FILE_SYSTEM_PREFIX_LEN): Renamed from FILESYSTEM_PREFIX_LEN,
+       for consistency with POSIX terminology.  All uses changed.
+       (IS_ABSOLUTE_FILE_NAME, IS_RELATIVE_FILE_NAME): New macros.
+       (strip_trailing_slashes): Use bool for booleans.
+       * stripslash.c (strip_trailing_slashes): Likewise.
+
+       * error.c: Work around bug in OpenBSD 3.4 sterror_r: it
+       sometimes returns a positive errno value even when it succeeds.
+       (print_errno_message) [!LIBC]: Fall back on strerror if
+       __strerror_r fails.
+
+       * path-concat.c (mempcpy): Don't define if a system header defines it.
+       Don't include stdio.h, stdlib.h, unistd.h, strdup.h.
+       (longest_relative_suffix): New function.
+       (path_concat): Use it.  Assume first argument is not NULL.
+       Port to DOS.  Omit redundant separators.
+       Report an error instead of returning NULL.
+       Use mempcpy instead of memcpy.
+       (xpath_concat): Remove: not declared or used.
+
+       * same.h: Include <stdbool.h>
+       (same_name): Return bool, not int.
+       * same.c (same_name): Likewise.
+       (errno): Don't declare; we assume C89 or better now.
+
+       * stat-macros (S_ISCTG, S_ISOFD, S_ISOFL): New macros,
+       if not already defined.
+
+       * xgetcwd.c (errno): Don't declare; we assume C89 or better now.
+       * dup-safer.c (errno): Likewise.
+
+2004-08-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * fatal.c, fatal.h: Remove as the "fatal" module wasn't used or
+       working.
+
+2004-08-03  Simon Josefsson  <jas@extundo.com>
+
+       * strdup.h: Only use HAVE_DECL_STRDUP if defined.
+       * progname.h: Don't include stdbool.h.
+
+2004-08-02  Simon Josefsson  <jas@extundo.com>
+
+       * getsubopt.h: New file, with comments from Bruno Haible.
+       * getsubopt.c: New file, from glibc, but slightly modified based on
+       suggestions from Paul Eggert <eggert@cs.ucla.edu>.
+
+2004-08-01  Simon Josefsson  <jas@extundo.com>
+
+       * xgetdomainname.c: Include stdlib.h, for free().
+
+2004-07-16  Simon Josefsson  <jas@extundo.com>
+
+       * dummy.c: New file.
+
+2004-07-16  Bruno Haible  <bruno@clisp.org>
+
+       * backupfile.h: Add extern "C" for C++.
+       * closeout.h: Likewise.
+       * copy-file.h: Likewise.
+       * findprog.h: Likewise.
+       * full-write.h: Likewise.
+       * pathname.h: Likewise.
+       * progname.h: Likewise.
+       * stpcpy.h: Likewise.
+       * stpncpy.h: Likewise.
+       * strcase.h: Likewise.
+       * strstr.h: Likewise.
+       * xalloc.h: Likewise.
+
+       * mbswidth.h: Add extern "C" for C++.
+       Reported by Albert Chin-A-Young <china@thewrittenword.com>.
+
+2004-07-09  Simon Josefsson  <jas@extundo.com>
+
+       * getndelim2.c: Include stddef.h, for ptrdiff_t.  (FreeBSD 4.9
+       failed without this.)
+
+2004-07-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * fchown-stub.c: New file.
+
+2004-06-24  Jim Meyering  <jim@meyering.net>
+
+       * obstack.h (obstack_base): Cast to (void *), per documentation.
+
+2004-06-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * argz.c, argz_.h: New files, which are autoupdated from libtool.
+
+2004-06-01  Jim Meyering  <jim@meyering.net>
+
+       * calloc.c: New file.
+
+2004-06-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * getdate.y (yylex): Allow space between sign and number.
+       Problem reported by Dan Jacobson.
+
+2004-06-01  Paul Eggert  <eggert@cs.ucla.edu>
+       and  Jim Meyering  <jim@meyering.net>
+
+       Merge from coreutils CVS.
+
+       * stat-macros.h: New file, with contents from file-type.h
+       and coreutils' system.h.
+       * file-type.c: Include "stat-macros.h".
+       * file-type.h (file_type): Move all macro definitions to new file,
+       stat-macros.h.
+
+       * chown.c (rpl_chown) [CHOWN_FAILS_TO_HONOR_ID_OF_NEGATIVE_ONE]:
+       Wrap old code with this conditional.
+       [CHOWN_MODIFIES_SYMLINK]: Try to work around a chown
+       function that does not dereference symlinks.
+       * lchown.c (lchown) [CHOWN_MODIFIES_SYMLINK]: Just call chown.
+
+       * xreadlink.c: Include xreadlink.h first, to catch .h file
+       dependency problems.
+       (xreadlink): Accept new arg SIZE, for efficiency.
+       All decls and uses changed.
+       * xreadlink.h: Include <stddef.h>, for size_t.
+
+       * .cppi-disable: Add alloca_.h, allocsa.h, exit.h, getndelim2.h,
+       gettext.h, localcharset.h, strdup.h, strndup.h, strtoul.c, time_r.h.
+
+       * .cvsignore: Add alloca.h, fnmatch.h, poll.h, stdbool.h, sysexits.h.
+
+2004-05-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * xmalloc.c (HAVE_MALLOC, HAVE_REALLOC): Do not require these
+       macros to be defined.
+       (xnmalloc_inline, xnrealloc_inline, xcalloc): Do not die if
+       the allocator returns NULL because the requested size is zero.
+
+2004-05-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * malloc/obstack.c (_obstack) [defined _LIBC]: Bring back this
+       var.  Add comment explaining why libc still defines it.  This
+       merges the following patch from glibc:
+       http://sources.redhat.com/ml/libc-alpha/2004-05/msg00157.html
+
+2004-05-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * obstack.c (_obstack): Remove unused variable.  It hasn't been
+       present in glibc since revision 1.1 of this file.
+       * obstack.h (_obstack_free, obstack_1grow, obstack_1grow_fast,
+       obstack_alignment_mask, obstack_alloc, obstack_base,
+       obstack_blank, obstack_blank_fast, obstack_chunk_size,
+       obstack_copy, obstack_copy0, obstack_finish, obstack_grow,
+       obstack_grow0, obstack_init, obstack_int_grow,
+       obstack_int_grow_fast, obstack_make_room, obstack_memory_used,
+       obstack_next_free, obstack_object_size, obstack_ptr_grow,
+       obstack_ptr_grow_fast, obstack_room): Remove declarations of
+       nonexistent functions.
+
+2004-05-17  Derek R. Price  <derek@ximbiot.com>
+           Paul Eggert  <eggert@cs.ucla.edu>
+
+       * argp-help.c, argp-parse.c: Assume <alloca.h> rather than freecoding.
+
+2004-05-14  Bruno Haible  <bruno@clisp.org>
+
+       * vasnprintf.c (VASNPRINTF): Correctly handle the case of a precision
+       that consists of a '.' followed by an empty digit string.
+       Patch by Tor Lillqvist <tml@iki.fi>.
+
+2004-05-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Port obstack to the AS/400, where pointers are 16 bytes wide and
+       you cannot cast an integer to a valid pointer.  This patch is
+       currently waiting to be integrated into glibc; see
+       <http://sources.redhat.com/ml/libc-alpha/2004-05/msg00073.html>.
+
+       * obstack.h (__PTR_TO_INT, __INT_TO_PTR): Remove.
+       All uses of __INT_TO_PTR (PTR_TO_INT ...) replaced by __PTR_ALIGN.
+       (__BPTR_ALIGN, __PTR_ALIGN): New macros.
+       (struct obstack): temp member is now a union of a pointer and
+       an integer, instead of an integer.  All integer uses changed.
+       This does not affect the physical layout of struct obstack,
+       except on hosts (like the AS/400) where the size or alignment of
+       void * is greater than that of ptrdiff_t.
+       (obstack_finish) [! (defined __GNUC__ && defined __STDC__ &&
+       __STDC__)]: Store temporary in pointer member of union, not
+       integer member.
+       * obstack.c: Include <stddef.h>, for offsetof.
+       (struct fooalign): Remove; it doesn't need a name.
+       (union fooround): Change double to long double, and add void *.
+       (DEFAULT_ALIGNMENT): Use offsetof to compute.
+       (DEFAULT_ALIGNMENT, DEFAULT_ROUNDING): Now an enum constant,
+       not a macro.  Hence the values are always int; so remove all
+       casts-to-int in uses.
+
+2004-05-16  Paul Eggert  <eggert@cs.ucla.edu>
+           Derek Price  <derek@ximbiot.com>
+
+       * alloca.c: Include <alloca.h>, to get our interface.
+       * alloca_.h: Use __alloca on AIX, so that we don't have to
+       include <alloca.h> first.  Use C89 prototype for alloca; this
+       requires including <stddef.h> for size_t.  Use extern "C" if C++.
+       Use #elif for simplicity, since we can assume C89 now.
+       Don't try to source the system alloca.h since it will not be found
+       and to prevent recursively including its replacement.
+       * fnmatch.c: Include <alloca.h> instead of opencoding.
+       * lib/regex.c: Likewise.
+
+2004-05-16  Derek Price  <derek@ximbiot.com>
+           Paul Eggert  <eggert@cs.ucla.edu>
+
+       getline cleanup.  This changes the getndelim2 API: both order of
+       arguments, and meaning of delim2 (now uses EOF, not 0, to indicate
+       no delimiter).
+
+       * getline.c: Don't include stddef.h or stdio.h, since our
+       interface does that.
+       (getline): Always use getdelim, so that we don't have two
+       copies of this code.
+       * getndelim2.c: Include <limits.h>, <inttypes.h>, <stdint.h>
+       if available.
+       (PTRDIFF_MAX, SIZE_MAX, SSIZE_MAX): Define if not defined.
+       (GETNDELIM2_MAXIMUM): New macro.
+       (getndelim2): Reorder arguments.  delim==EOF now means no delimiter,
+       instead of the old practice of delim2==0.  All callers changed.
+       Return -1 on overflow, instead of returning junk.
+       Do not set *linesize unless allocation succeeds.
+       * getndelim2.h: Do not include stddef.h; no longer needed, now
+       that we include sys/types.h.
+       * getnline.h: Likewise.
+       * getndelim2.h (GETNLINE_NO_LIMIT): New macro.
+       (getndelim2): Reorder arguments.
+       * getnline.c (getnline, getndelim):
+       Don't discard the NMAX argument.
+       (getnline): Invoke getndelim, to avoid code duplication.
+       * getnline.h (GETNLINE_NO_LIMIT): New macro, used instead
+       of (size_t) -1 by callers of the getnline family.
+
+2004-05-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * nanosleep.c (suspended): Change its type from int to
+       sig_atomic_t volatile.
+       (first_call): Make it private to rpl_nanosleep, and have it
+       be zero initially as that's a bit faster.
+       (my_usleep): Round up fractional times instead of truncating them,
+       as this is the usual meaning for 'sleep'.
+
+       * gettime.c (gettime): Fall back on `time' if `gettimeofday'
+       doesn't work.
+       * settime.c: Include <unistd.h>, for stime (on Solaris 8, anyway).
+       (ENOSYS): Define if not defined.
+       (settime): Fall back on stime if it exists and settimeofday fails.
+       But don't bother with fallbacks if a method fails with errno == EPERM.
+
+2004-05-11  Jim Meyering  <jim@meyering.net>
+
+       Prior to this change, the save_cwd caller required read access to the
+       current directory on most systems (ones with the fchdir function).
+
+       * save-cwd.c (save_cwd) [HAVE_FCHDIR]: If opening `.' read-only
+       fails, try write-only, and finally, resort to using xgetcwd.
+
+2004-05-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * obstack.c, obstack.h: Import changes from libc.
+
+2004-04-28  Bruno Haible  <bruno@clisp.org>
+
+       * findprog.c (find_in_path): Treat Cygwin like Windows, since it also
+       implicitly appends .exe to executables.
+       * localcharset.c (ISSLASH): Treat Cygwin like Windows, since it now
+       accepts Windows pathnames.
+       * pathname.h (ISSLASH, IS_PATH_WITH_DIR, FILESYSTEM_PREFIX_LEN): Treat
+       Cygwin like Windows, since it now accepts Windows pathnames.
+       * progreloc.c (ISSLASH, IS_PATH_WITH_DIR, FILESYSTEM_PREFIX_LEN): Treat
+       Cygwin like Windows, since it now accepts Windows pathnames.
+       Reported by Derek Robert Price <derek@ximbiot.com>.
+
+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>
+
+       * localcharset.c (get_charset_aliases) [!VMS && !WIN32]: Don't leak
+       memory when realloc fails.
+
+2004-04-18  Jim Meyering  <jim@meyering.net>
+
+       * readutmp.c (read_utmp) [UTMP_NAME_FUNCTION]: Upon realloc failure,
+       don't leak memory and do call END_UTMP_ENT.
+
+2004-04-11  Paul Eggert  <eggert@twinsun.com>
+
+       * inttostr.h: Include <limits.h> unconditionally, since we assume C89.
+       (CHAR_BIT): Remove, since we assume C89.
+       Include <stdint.h> if available, as per current Autoconf CVS advice.
+
+2004-03-30  Paul Eggert  <eggert@twinsun.com>
+
+       * cloexec.h, cloexec.c (set_cloexec_flag): Return int
+       not bool, to be more consistent with Unix conventions.
+       Suggested by Bruno Haible.
+
+       Merge from coreutils.
+
+       * imaxtostr.c, inttostr.c, inttostr.h, offtostr.c, umaxtostr.c:
+       New files.
+
+       * getdate.h: Include stdbool.h, and timespec.h instead of
+       the usual <time.h> dance.
+       (get_date): Change signature to support fractional time stamps.
+       All callers changed.
+       * getdate.y: Include "getdate.h" first, as we can now
+       assume C89 and don't need to worry about 'const'.
+       Similarly, include "unlocked-io.h" near start, not in middle.
+       Include <limits.h>.
+       (textint.value): Use long int rather than int.
+       (textint.digits): Use size_t rather than int.
+       (BILLION, LOG10_BILLION): New constants.
+       (parser_control): New member rel_ns.  Members day_ordinal,
+       time_zone, month, day, hour, minutes, rel_year, rel_month,
+       rel_day, rel_hour, rel_minutes, rel_seconds
+       are now long int, not int.  Member seconds is now struct timespec,
+       not int.  New member timespec_seen.  Members dates_seen, days_seen,
+       local_zones_seen, rels_seen, times_seen, zones_seen are now size_t,
+       not int.
+       (%union.intval): Now long int, not int.
+       New member timespec.
+       (tSDECIMAL_NUMBER, tUDECIMAL_NUMBER): New tokens.
+       (seconds, signed_seconds, unsigned_seconds): New nonterminals.
+       (spec): Now is a timespec or an item list.
+       (timespec, items): New nonterminals.
+       (time, rel, relunit, number, get_date):
+       Add support for fractional seconds.
+       (time): Fix bug: seconds weren't cleared in "00:00 +0000" syntax.
+       (gmtime, localtime, mktime): Remove decls; not needed with C89.
+       (to_hour): First arg is now long int, not int.
+       (to_year): Returns long int, not int.
+       Don't treat year -70 like 70.
+       (tm_diff): Returns long int, not int.
+       (lookup_word): Use bool instead of int when appropriate.
+       (yylex): Use size_t for count, not int.
+       Detect overflow when parsing large integer constants.
+       Add support for fractions.
+       (get_date): Make pointers 'const' if possible.
+       Use more-portable code to detect integer overflow.
+       (main) [TEST]: Adjust to above changes.  Test for localtime failure.
+       Don't use ctime; it's not reliable if the year has >4 digits.
+
+       * human.c (humblock): Inspect BLOCKSIZE if BLOCK_SIZE isn't set.
+       This is for compatibility with BSD.
+
+       * timespec.h (ST_TIME_CMP_NS, ST_TIME_CMP): Define.
+       (ATIME_CMP, CTIME_CMP, MTIME_CMP, TIMESPEC_NS): Likewise.
+       From coreutils' system.h.
+
+       * userspec.c: Don't include "posixver.h".
+       (parse_user_spec): Fall back on USER.GROUP parsing, regardless
+       of POSIX version, as POSIX 1003.1-2001 allows that behavior as a
+       compatible extension.  Simplify code by removing a boolean int
+       that was always nonzero if a string was nonnull.
+
+2004-03-30  Jim Meyering  <jim@meyering.net>
+
+       Merge from coreutils.
+
+       * mountlist.c [HAVE_SYS_UCRED_H]: Include grp.h before sys/ucred.h.
+
+       * readtokens.c (readtoken): Don't leak 64 bytes when reading
+       an empty input stream.
+
+       * readtokens.c: Include <stdbool.h>.
+       (readtoken): Use `size_t' rather than int/long.
+       All callers adjusted.
+       Use `bool' rather than `int' where appropriate.
+       Use memset rather than an explicit loop.
+       Use x2nrealloc rather than xrealloc.
+       Allow the use of `\0' as a delimiter.
+       (readtokens): Likewise.
+       * readtokens.h (readtoken, readtokens): Update prototypes.
+
+2004-03-30  Bruno Haible  <bruno@clisp.org>
+
+       * getloadavg.c (getloadavg): Don't assume setlocale returns
+       nonnull.
+
+2004-03-29  Paul Eggert  <eggert@twinsun.com>
+
+       Merge changes to getloadavg.c from coreutils and Emacs.
+
+       * getloadavg.c [!defined HAVE_SETLOCALE] (setlocale):
+       Define to an expression, not to the empty string.
+       Include cloexec.h and xalloc.h.
+       (getloadavg): Restore LC_NUMERIC locale after setting it temporarily.
+       Use set_cloexec_flag rather than rolling our own.
+       * cloexec.c, cloexec.h: New files.
+
+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>
+
+       * mbswidth.h: Include <wchar.h> only if HAVE_DECL_MBSWIDTH_IN_WCHAR_H,
+       not on all platforms that have <wchar.h>.
+       * mbswidth.c: Include <stdio.h> and <time.h> before <wchar.h>.
+
+2004-03-09  Paul Eggert  <eggert@twinsun.com>
+
+       * argp-parse.c, getopt.c, getopt.h, getopt1.c:
+       Sync with libc CVS.
+       * getopt_int.h: New file, also synced from libc.
+
+2004-03-07  Paul Eggert  <eggert@twinsun.com>
+
+       * c-stack.c (SIGACTION_WORKS): New macro.  Use it instead of long
+       '#if' expressions.  Unlike the code it replaces, it does not
+       depend on (defined _SC_PAGESIZE).  However, it does depend on
+       HAVE_STRUCT_SIGACTION_SA_SIGACTION; this last change fixes a bug
+       first reported by Jason Andrade in
+       <http://mail.gnu.org/archive/html/bug-textutils/2003-03/msg00027.html>.
+
+2004-01-18  Simon Josefsson  <jas@extundo.com>
+
+       * strdup.h: New file.
+       * strdup.c: Include it.
+       * path-concat.c: Include strdup.h. Drop strdup declaration.
+       * userspec.c: Include strdup.h. Drop strdup declaration.
+
+2004-02-06  Karl Berry  <karl@gnu.org>
+
+       * config.charset: update from gettext 0.14.1.
+
+2004-02-05  Paul Eggert  <eggert@twinsun.com>
+
+       Add comments and code, prompted by suggestions from Bruno Haible
+       for sh-quote.
+       * quotearg.h (quotearg_alloc): New decl.  Improve the comments
+       describing the enum quoting_style values.
+       * quotearg.c (quotearg_alloc): New function.
+       (quotearg_buffer_restyled): Treat lone { and } as special.
+       Treat = as special.  Work around bug with older shells
+       that "see" a '\' that is really the 2nd byte of a multibyte char.
+       Quote empty string with shell_quoting_style.
+
+2004-02-03  Bruno Haible  <bruno@clisp.org>
+
+       * pipe.h: New file, from GNU gettext.
+       * pipe.c: New file, from GNU gettext.
+
+2004-01-27  Bruno Haible  <bruno@clisp.org>
+
+       * execute.h: New file, from GNU gettext.
+       * execute.c: New file, from GNU gettext.
+       * w32spawn.h: New file, from GNU gettext.
+
+2004-01-23  Paul Eggert  <eggert@twinsun.com>
+
+       Exit-status fix from coreutils.
+
+       Use exit_failure consistently in place of EXIT_FAILURE,
+       so that program exit statuses are consistent on failure.
+
+       * argmatch.c (ARGMATCH_DIE) [! defined ARGMATCH_DIE]:
+       Include "exitfail.h", and use exit_failure rather than EXIT_FAILURE.
+       * argmatch.h: Comment fix to match the above.
+       * obstack.c (obstack_exit_failure) [!defined _LIBC]:
+       Now a macro referring to exit_failure, instead of a separate
+       variable.  Include "exitfail.h" to get it.
+       * xstrtol.h: Include "exitfail.h".
+       (STRTOL_FATAL_ERROR): Exit with status exit_failure, not 2.
+
+       * long-options.c (parse_long_options): Use prototype
+       for usage function arg.  Pass it EXIT_SUCCESS rather than 0,
+       for clarity.
+
+2004-01-21  Jim Meyering  <jim@meyering.net>
+
+       * mktime.c (__mktime_internal) [!_LIBC]: Define to mktime_internal
+       so as not to conflict with a different-sized __mktime_internal
+       function in GNU libc.
+       * timegm.c (__mktime_internal) [!_LIBC]: Likewise.
+       Problem building statically-linked `ls' reported by Michael Brunnbauer.
+
+2004-01-18  Paul Eggert  <eggert@twinsun.com>
+
+       Merge from diffutils.
+
+       * file-type.c (file_type): Add typed memory objects.
+       * file-type.h (S_TYPEISTMO): New macro.
+
+       * c-stack.h (c_stack_action): Remove argv argument.
+       * c-stack.c (c_stack_action): Likewise.  All uses changed.
+       (die): Don't calculate message unless segv_action returns.
+       (get_stack_location, min_address_from_argv, max_address_from_argv,
+       volatile stack_base, volatile_stack_size): Remove.
+       (segv_handler): If ! HAVE_XSI_STACK_OVERFLOW_HEURISTIC, assume
+       that every segmentation violation is a stack overflow.  (Ouch!)
+       See Debian bug 136249 (still outstanding) for more info about why
+       HAVE_XSI_STACK_OVERFLOW_HEURISTIC fails on Linux kernels.
+
+2003-11-30  Bruno Haible  <bruno@clisp.org>
+
+       Safer stack allocation.
+       * setenv.c: Include allocsa.h.
+       (alloca): Remove fallback definition.
+       (freea): Remove macro.
+       (__add_to_environ) [!_LIBC]: Use allocsa instead of alloca. Use freesa
+       instead of freea.
+
+2003-10-17  Bruno Haible  <bruno@clisp.org>
+
+       * binary-io.h: Avoid warnings on Cygwin.
+
+2003-12-28  Bruno Haible  <bruno@clisp.org>
+
+       * wait-process.c (wait_subprocess): Add ignore_sigpipe argument.
+       * wait-process.c (wait_subprocess): Likewise. Handle SIGPIPE specially.
+
+2003-11-28  Bruno Haible  <bruno@clisp.org>
+
+       * wait-process.c (cleanup_slaves): Use ANSI C declaration.
+
+2003-11-27  Bruno Haible  <bruno@clisp.org>
+
+       * wait-process.c: On Windows, include windows.h. Needed on mingw.
+
+2003-11-17  Bruno Haible  <bruno@clisp.org>
+
+       * wait-process.c (wait_process): Disable the 2003-10-31 waitid() patch.
+
+2003-11-24  Bruno Haible  <bruno@clisp.org>
+
+       * xallocsa.h: New file, from GNU gettext.
+       * xallocsa.c: New file, from GNU gettext.
+
+2003-11-24  Bruno Haible  <bruno@clisp.org>
+
+       * allocsa.h: New file, from GNU gettext.
+       * allocsa.c: New file, from GNU gettext.
+
+2003-11-24  Bruno Haible  <bruno@clisp.org>
+
+       * eealloc.h: New file.
+
+2004-01-15  Jim Meyering  <jim@meyering.net>
+
+       Merge from coreutils.
+
+       * md5.h (rol) [__GNUC__ && __i386__]: Don't use `asm' code.  These
+       days, gcc-3.x does better all by itself.  Patch from Dean Gaudet:
+       http://mail.gnu.org/archive/html/bug-coreutils/2003-11/msg00144.html
+
+       * posixver.c (DEFAULT_POSIX2_VERSION): Use definition of new,
+       optional configure-time default.
+
+       * version-etc.c (version_etc_copyright): Update copyright date.
+
+       * xreadlink.c (xreadlink): Correct outdated comment.
+
+2004-01-15  Paul Eggert  <eggert@twinsun.com>
+
+       Merge from coreutils.
+
+       * posixver.c: Include posixver.h.
+
+       * same.c: Include <stdbool.h>, <limits.h>.
+       (_POSIX_NAME_MAX): Define if not defined.
+       (MIN): New macro.
+       (same_name): If file names are silently truncated, report
+       that the file names are the same if they are the same after
+       the silent truncation.
+
+       * xstrtod.h (xstrtod): Accept an extra arg, specifying the
+       conversion function.
+       * xstrtod.c (xstrtod): Likewise.  All callers changed to
+       include c-strtod.h and use c_strtod.  Don't include stdlib.h; no
+       longer needed.
+
+2004-01-14  Paul Eggert  <eggert@twinsun.com>
+
+       * fnmatch_loop.c (ALLOCA_LIMIT): Remove macro, which collided
+       with like-named macro in fnmatch.c.
+       (EXT): Use an internal constant instead.
+
+       Merge fnmatch patches from glibc.
+       * fnmatch.c (mbsinit): Remove define.
+       Add libc_hidden_ver (__fnmatch, fnmatch).
+       * fnmatch_loop.c (FCT): Cast to int32_t and UCHAR when appropriate.
+       Adjust to renaming of collseq_table_lookup to __collseq_table_lookup.
+
+2003-12-14  Karl Berry  <karl@gnu.org>
+
+       * config.charset: update from gettext-runtime.
+
+2003-12-03  Paul Eggert  <eggert@twinsun.com>
+
+       * getgroups.c (getgroups): xmalloc takes one argument, not two.
+       Bug reported by Alfred M. Szmidt.
+
+2003-11-29  Karl Berry  <karl@gnu.org>
+
+       * 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>
+
+       * printf-parse.h: Don't include sys/types.h.
+       (ARG_NONE): New macro.
+       (char_directive): Change type of *arg_index fields to size_t.
+       * printf-parse.c: Don't include sys/types.h.
+       (SSIZE_MAX): Remove macro.
+       (PRINTF_PARSE): Change the type of the arg_index variables to size_t.
+       Remove unnecessary overflow check.
+       * vasnprintf.c (VASNPRINTF): Update for type change of *arg_index
+       fields.
+
+2003-11-24  Paul Eggert  <eggert@twinsun.com>
+
+       * alloca.c: Remove dependency on xalloc module.
+       (xalloc_die): Remove.
+       (memory_full) [!defined emacs]: New macro.
+       [!defined emacs]: Don't include xalloc.h.
+       (alloca): Invoke memory_full, not xalloc_die, if malloc fails or
+       address arithmetic overflows.  Change datatypes a bit to avoid
+       unnecessary casts.
+
+2003-11-22  Jim Meyering  <jim@meyering.net>
+
+       * xmalloc.c (x2nrealloc_inline): Fix typos in comments: s/size/size_t/.
+
+2003-11-17  Bruno Haible  <bruno@clisp.org>
+
+       * vasnprintf.c (alloca): Remove fallback definition.
+       (freea): Remove definition.
+       (VASNPRINTF): Use alloca only for small sizes, say <= 4000 bytes.
+       Reported by Paul Eggert.
+
+2003-11-17  Jim Meyering  <jim@meyering.net>
+
+       On systems without utime and without a utimes function capable of
+       dealing with a NULL struct utimbuf* argument, this utime replacement
+       could -- in unusual circumstances -- leak a file descriptor.
+       * utime.c: Include <unistd.h> and <errno.h>.
+       (utime_null): Be sure to close `fd' and to preserve errno.
+       Reported by Geoff Collyer via Arnold Robbins.
+
+2003-11-16  Paul Eggert  <eggert@twinsun.com>
+            Bruno Haible  <bruno@clisp.org>
+
+       Protect against address arithmetic overflow.
+       * printf-args.h: Include stddef.h.
+       (arguments): Change type of field 'count' to size_t.
+       * printf-args.c (printf_fetchargs): Use size_t instead of
+       'unsigned int' where appropriate.
+       * printf-parse.h: Include sys/types.h.
+       (char_directive): Change type of *arg_index fields to ssize_t.
+       (char_directives): Change type of fields 'count', max_*_length to
+       size_t.
+       * printf-parse.c: Include sys/types.h and xsize.h.
+       (SSIZE_MAX): Define fallback value.
+       (PRINTF_PARSE): Use size_t instead of 'unsigned int' and ssize_t
+       instead of 'int' where appropriate. Check a_allocated, d_allocated
+       against overflow. Reject %m$ argument numbers > SSIZE_MAX + 1.
+       * vasnprintf.c: Include xsize.h.
+       (VASNPRINTF): Use size_t instead of 'unsigned int' where appropriate.
+       Check alloca, malloc, realloc, ENSURE_ALLOCATION arguments against
+       overflow. Avoid wraparound when converting a width or precision from
+       decimal to binary.
+
+2003-11-16  Bruno Haible  <bruno@clisp.org>
+
+       Update from GNU gettext.
+       * printf-parse.c: Generalize to it can be compiled for wide strings.
+       (PRINTF_PARSE, CHAR_T, DIRECTIVE, DIRECTIVES): New macros.
+       * vasnprintf.c: Generalize to it can be compiled for wide strings.
+       (VASNPRINTF, CHAR_T, DIRECTIVE, DIRECTIVES, PRINTF_PARSE, USE_SNPRINTF,
+       SNPRINTF): New macros.
+       Don't include <alloca.h> if the file is used inside libintl.
+       (local_wcslen): New function, for Solaris 2.5.1.
+       (VASNPRINTF): Use it instead of wcslen.
+
+2003-11-16  Bruno Haible  <bruno@clisp.org>
+
+       * xsize.h (xmax): New function.
+       (xsum, xsum3, xsum4): Declare as "pure" functions.
+
+2003-11-12  Paul Eggert  <eggert@twinsun.com>
+
+       * xalloc.h: Do not include <limits.h> or <stdint.h>.
+       (xalloc_oversized): Use sizeof (ptrdiff_t) and sizeof (size_t) for
+       the heuristic, rather than PTRDIFF_MAX and SIZE_MAX.  This
+       heuristic is just as accurate as far as we know, and it removes a
+       dependency on size_max.m4 and ptrdiff_max.m4.
+
+2003-11-12  Paul Eggert  <eggert@twinsun.com>
+
+       * xstrtol.c (__xstrtol): Remove "break" immediately after
+       "return", to pacify some unknown compiler.  Problem reported
+       by Joerg Schilling.
+
+2003-11-11  Bruno Haible  <bruno@clisp.org>
+
+       * xsize.h (SIZE_MAX): Remove fallback definition.
+       * xalloc.h: Include limits.h. Assume SIZE_MAX and PTRDIFF_MAX are
+       defined.
+
+2003-11-10  Paul Eggert  <eggert@twinsun.com>
+
+       * xalloc.h (xalloc_oversized): [! (defined PTRDIFF_MAX &&
+       PTRDIFF_MAX < SIZE_MAX)]: Fix off-by-one error that would have
+       rejected some allocations of exactly SIZE_MAX - 2 bytes.
+       From Bruno Haible.
+       [defined PTRDIFF_MAX && PTRDIFF_MAX < SIZE_MAX]: Use SIZE_MAX,
+       not (size_t) -1, since it's defined here.
+
+2003-11-06  Paul Eggert  <eggert@twinsun.com>
+
+       * xalloc.h [HAVE_STDINT_H]: Include <stdint.h>.
+       (xalloc_oversized) [! (PTRDIFF_MAX < SIZE_MAX)]:
+       Reject sizes of exactly SIZE_MAX bytes.
+       * xreadlink.c: Include "xalloc.h" before checking whether SIZE_MAX
+       is defined, since "xalloc.h" now defines SIZE_MAX on modern hosts.
+
+2003-11-05  Bruno Haible  <bruno@clisp.org>
+
+       * xsize.h: Include limits.h, to avoid a possible collision with
+       SIZE_MAX defined in <limits.h> on Solaris.
+
+2003-11-04  Bruno Haible  <bruno@clisp.org>
+
+       * xsize.h: New file.
+       * linebreak.c: Include xsize.h.
+       (mbs_possible_linebreaks, mbs_width_linebreaks): Check malloc()
+       argument for overflow.
+       Suggested by Paul Eggert.
+
+2003-10-31  Bruno Haible  <bruno@clisp.org>
+
+       * wait-process.c (wait_process): Use waitid with WNOWAIT if available,
+       to avoid (extremely rare) race condition.
+       Suggested by Paul Eggert.
+
+2003-11-03  Jim Meyering  <jim@meyering.net>
+
+       * userspec.c: Include "userspec.h".
+       * userspec.h: New file.
+
+2003-10-31  Paul Eggert  <eggert@twinsun.com>
+
+       * mountlist.h (struct mount_entry.me_type_malloced): New member.
+       * mountlist.c (SIZE_MAX): Define if not defined already.
+       (read_filesystem_list): Set and use me_type_malloced.
+       Use "sizeof *me" rather than "sizeof (struct mount_entry)" (or
+       whatever the type happens to be), for brevity and consistency.
+       Check for size calculation overflow on Alphas running OSF/1.
+
+2003-10-31  Jim Meyering  <jim@meyering.net>
+
+       * hash.c: Include "xalloc.h" for use of xalloc_oversized.
+
+       * linebuffer.c: Include <string.h> for declaration of memset.
+
+2003-10-30  Paul Eggert  <eggert@twinsun.com>
+            Bruno Haible  <bruno@clisp.org>
+
+       * vasprintf.c: Include <limits.h>, <stdlib.h>.
+       (vasprintf): Fail if the resulting length doesn't fit in an 'int'.
+
+2003-10-29  Paul Eggert  <eggert@twinsun.com>
+
+       * xalloc.h (xalloc_oversized): Now a macro, not a function,
+       so that it works even if SIZE_MAX < N.  Do not include <stdbool.h>;
+       no longer needed.
+       * quotearg.c (quotearg_n_options): Use it.
+       * group-member.c: Include <stdbool.h>.
+       (free_group_info): Arg is now const *; don't free arg.
+       (get_group_info): Now returns bool and accepts struct group_info *,
+       rather than returning a malloc'ed struct group_info *.
+       All uses changed.  Check for overflow in internal size calculation.
+
+       * getusershell.c (readname): Simplify the code by using x2nrealloc
+       rather than xmalloc/xrealloc.
+       * linebuffer.c (initbuffer, readlinebuffer): Simplify the code by
+       using x2realloc rather than xmalloc/xrealloc.  Also, fix a C
+       conformance bug: the old code used a pointer after freeing the
+       storage that it addressed.
+       * hash.c (hash_initialize): Simplify the code by using xalloc_oversized
+       rather than doing it by hand.
+       * getgroups.c (getgroups): Don't use xrealloc, since we don't need
+       the buffer preserved.  Use free and xmalloc instead.
+       * quotearg.c (quotearg_n_options): Likewise.
+       Use a simpler test for size overflow.  Don't use xalloc_oversized
+       because unsigned int might be wider than size_t (!); this suggests
+       that we should switch from unsigned int to size_t for slot numbers.
+
+2003-10-27  Bruno Haible  <bruno@clisp.org>
+
+       * stdbool_.h: Better support for BeOS.
+
+2003-10-27  Paul Eggert  <eggert@twinsun.com>
+
+       * exclude.c (new_exclude): Use xzalloc rather than xmalloc
+       to allocate the returned structure.  Do not allocate a subarray,
+       as x2nrealloc will do that.
+       (add_exclude): Use x2nrealloc to reallocate ex->exclude,
+       instead of xnrealloc.
+       (add_exclude_file): Use x2realloc instead of malloc + xnrealloc.
+
+2003-10-26  Paul Eggert  <eggert@twinsun.com>
+
+       * xalloc.h (xalloc_oversized): New static inline function, for
+       callers that want to do their own size-overflow checking.  Include
+       <stdbool.h>, since xalloc_oversized returns bool.
+       * xalloc.c (array_size_overflow): Remove.  All callers changed
+       to use xalloc_oversized.
+
+       Add two functions x2realloc, x2nrealloc, for programs that grow
+       arrays dynamically by doubling their sizes.
+       * xalloc.h (x2realloc, x2nrealloc): New decls.
+       * xmalloc.c (x2nrealloc_inline, x2nrealloc, x2realloc):
+       New functions.
+
+       Port to C99 semantics for 'inline' of external functions.
+       Bug reported by Bruno Haible.
+       * xmalloc.c (xnmalloc_inline): New static inline function,
+       with the old contents of xnmalloc.
+       (xnmalloc, xmalloc): Use it.
+       (xnrealloc_inline): New static inline function,
+       with the old contents of xnrealloc.
+       (xnrealloc, xrealloc): Use it.
+
+       * alloc.c (alloca): xmalloc cannot return NULL, so don't test for that.
+
+2003-10-25  Paul Eggert  <eggert@twinsun.com>
+
+       Fix several address-calculation bugs in the hash modules,
+       plus some minor code cleanup.
+
+       * hash.h: Include <stdbool.h>, for bool.
+       * hash.c: Don't include <stdbool.h>, since hash.h does it now.
+       * hash.h (Hash_hasher, hash_get_n_buckets, hash_get_n_buckets_used,
+       hash_get_n_entries, hash_get_max_bucket_length,
+       hash_get_entries, hash_do_for_each, hash_string, hash_initialize,
+       hash_rehash): Use size_t rather than unsigned.
+       * hash.c (struct hash_table, hash_get_n_buckets,
+       hash_get_n_buckets_used, hash_get_n_entries,
+       hash_get_max_bucket_length, hash_table_ok, hash_print_statistics,
+       hash_get_entries, hash_do_for_each, hash_string, is_prime,
+       next_prime, hash_initialize, hash_rehash, hash_delete, hash_print):
+       Likewise.
+       (SIZE_MAX): Define if not defined.
+       (hash_get_max_bucket_length, hash_table_ok, hash_lookup,
+       hash_get_first, hash_get_next, hash_get_entries, hash_do_for_each,
+       hash_print):
+       Use const * when possible.
+       (hash_string): Use (unsigned char) *P rather than *(unsigned char *) P.
+       (check_tuning): Fix bug: if tuning parameters were very close to
+       0 or 1, rounding errors could have caused subscript violations.
+       (hash_initialize, allocate_entry, hash_print): Remove unnecessary cast.
+       (hash_initialize): Add 'fail:' label
+       to free table and return NULL, and use it to simplify code.
+       Use calloc rather than clearing the storage ourself.
+       (hash_initialize, hash_rehash): Check for arithmetic overflow in
+       buffer size calculations.
+       * hash-pjw.h (hash_pjw): Use size_t, not unsigned.
+       Include <stddef.h>, for size_t.
+       * hash-pjw.c (hash_pjw): Likewise.
+       Switch to method described by Bruno Haible.
+       Include <limits.h>, for CHAR_BIT.
+       (SIZE_BITS): New macro.
+
+2003-10-21  Paul Eggert  <eggert@twinsun.com>
+
+       * getndelim2.c (getndelim2): When size calculation overflows,
+       ceiling the allocation at NMAX bytes rather than silently
+       discarding input bytes before NMAX is reached.  This makes
+       a difference only if NMAX exceeds SIZE_MAX / 2.
+
+       * obstack.c: Merge from glibc.
+       [defined _LIBC]: Include <obstack.h>, not "obstack.h".
+       Add libc_hidden_def (_obstack_newchunk).
+       (_obstack_free) [! defined _LIBC]: Remove.
+       [defined _LIBC]: Make a strong alias from obstack_free, rather than
+       a clone of the function body.
+       (fputs) [defined _LIBC && defined USE_IN_LIBIO]: Remove.
+       [defined _LIBC && !defined USE_IN_LIBIO]: Include <libio/iolibio.h>.
+
+       * obstack.h: Indenting cleanup, to make it easier to merge with glibc.
+       (obstack_grow, obstack_grow0): Remove unnecessary parentheses around
+       arg to memcpy.
+
+       * obstack.h (obstack_1grow_fast): Properly parenthesize arg.
+       (obstack_ptr_grow_fast, obstack_int_grow_fast):
+       Don't use lvalue casts, as GCC plans to remove support for them
+       in GCC 3.5.  Reported by Joseph S. Myers.  This bug
+       was also present in the non-GCC version, indicating that this
+       code had always been buggy and had never been widely used.
+       (obstack_1grow, obstack_ptr_grow, obstack_int_grow, obstack_blank):
+       Use the fast variant of each macro, rather than copying the
+       definiens of the fast variant; that way, we'll be more likely to
+       catch future bugs in the fast variants.
+
+2003-10-20  Bruno Haible  <bruno@clisp.org>
+
+       * wait-process.h: New file, from GNU gettext.
+       * wait-process.c: New file, from GNU gettext.
+
+2003-10-19  Jim Meyering  <jim@meyering.net>
+
+       * vasnprintf.c (vasnprintf): Work around losing snprintf on HPUX 10.20.
+
+2003-10-16  Paul Eggert  <eggert@twinsun.com>
+
+       * getgroups.c: Include <errno.h>, <stdlib.h>.
+       (getgroups): First arg is int, not size_t.
+       Don't let 'free' mangle errno.
+
+2003-10-16  Jim Meyering  <jim@meyering.net>
+
+       * xmalloc.c: Include <string.h>, for declarations of memset and memcpy.
+
+2003-10-15  Paul Eggert  <eggert@twinsun.com>
+
+       * exclude.c: Do not include <inttypes.h> or <stdint.h>.
+       (SIZE_MAX): Remove.
+       (new_exclude, add_exclude_file): Initial size no longer needs to
+       be a power of 2.
+       (add_exclude, add_exclude_file): Use xnrealloc instead of rolling
+       our own address arithmetic overflow checking.
+
+       * fnmatch.c (SIZE_MAX): Define if standard headers don't.
+       (fnmatch): Do not alloca more than 2000 wide characters;
+       instead, use malloc for large buffers.
+       Check for address arithmetic overflow, and return -1
+       with errno set to ENOMEM in that case.
+       * fnmatch_loop.c (ALLOCA_LIMIT): New macro.
+       (NEW_PATTERN): Do not alloca more than 8000 bytes;
+       instead, return -1.  Check for address arithmetic overflow.
+
+2003-10-14  Paul Eggert  <eggert@twinsun.com>
+
+       Handle invalid suffixes and overflow independently, so that
+       callers can treat them independently as needed.  Fix some bugs in
+       suffix handling, e.g., "100k@" was not diagnosed as an invalid
+       suffix for a human-readable blocksize.  The major caller-visible
+       change is the addition of a new
+       LONGINT_INVALID_SUFFIX_CHAR_WITH_OVERFLOW enum value, indicating
+       that both overflow and suffix chars were found.
+
+       * human.c (humblock): Don't check separately for invalid suffix
+       char; that is xstrtoumax's job (now that its bug is fixed).
+       * xstrtoimax.c (STRTOL_T_MINIMUM, STRTOL_T_MAXIMUM) [defined
+       INTMAX_MAX]: New macros.
+       * xstrtol.c (STRTOL_T_MINIMUM, STRTOL_T_MAXIMUM, TYPE_MINIMUM,
+       TYPE_MAXIMUM): New macros.
+       (bkm_scale, bkm_scale_by_power): Return strtol_error, not int.
+       (bkm_scale, bkm_scale_by_power, __xstrtol): Return maximal values
+       if overflow occurs, as it's what __strtol does and it's more useful
+       in practice.
+       (__xstrtol): If __strtol reports some error other than ERANGE,
+       reflect it to the caller as LONGINT_INVALID.  If it reports
+       ERANGE, continue the rest of parsing, and report LONGINT_OVERFLOW
+       | LONGINT_INVALID_SUFFIX_CHAR if both errors occur.
+       * xstrtol.h (LONGINT_INVALID_SUFFIX_CHAR_WITH_OVERFLOW): New enum
+       value.
+       (_STRTOL_ERROR): Handle it.  Abort when given unknown error codes.
+       * xstrtoul.c (STRTOL_T_MINIMUM, STRTOL_T_MAXIMUM): New macros.
+       * xstrtoumax.c (STRTOL_T_MINIMUM, STRTOL_T_MAXIMUM)
+       [defined UINTMAX_MAX]: New macros.
+
+2003-10-14  Bruno Haible  <bruno@clisp.org>
+
+       * fatal-signal.h: Improved comments. Suggested by Paul Eggert.
+       * fatal-signal.c: Use sig_atomic_t. Suggested by Paul Eggert.
+       Also use volatile where needed.
+
+2003-10-12  Paul Eggert  <eggert@twinsun.com>
+
+       * xalloc.h (xnmalloc, xzalloc, xnrealloc, xclone): New decls.
+       (XMALLOC, XCALLOC, XREALLOC, XFREE, CCLONE, CLONE): Deprecate,
+       and define in terms of the other primitives.
+       * xmalloc.c: Include stdbool.h; do not include exit.h.
+       (SIZE_MAX): Define if not already defined.
+       (array_size_overflow): New function.
+       (xalloc_die): Abort instead of exiting if 'error' returns.
+       (xnmalloc, xnrealloc, xzalloc, xclone): New functions.
+       (xmalloc, xrealloc): Use them.
+       (xcalloc): Check for address arithmetic overflow.
+       * xstrdup.c (xstrdup): Use xclone, since memcpy should be
+       a bit faster than strcpy.
+
+2003-10-08  Paul Eggert  <eggert@twinsun.com>
+
+       Merge getpass from libc, plus a few fixes.
+
+       * getpass.c (HAVE_STDIO_EXT) [_LIBC]: Define to 1.
+       Include <stdbool.h>.
+       Include <stdio_ext.h> if HAVE_STDIO_H, otherwise define
+       __fsetlocking to empty.
+       [_LIBC]: Do not include "getline.h" or "unlocked-io.h", but
+       do include <bits/libc-lock.h>.
+       Do not include <fcntl.h>; not needed.
+       [_LIBC]: Include <wchar.h>.
+       (NOTCANCEL_MODE): New macro.
+       (flockfile, funlockfile) [_LIBC]: New macros.
+       (__libc_cleanup_push, __libc_cleanup_pop, __getline, __tcgetattr)
+       [!_LIBC]: New macros.
+       (call_fclose): New function.
+       (getpass): Use it.  Save tty stream separately; this simplifies the
+       code and makes it more reliable if stdin happens to equal stdout.
+       Invoke __fsetlocking on tty.
+       Handle thread cancellation if needed.
+       Namespace cleanup (use __tcgetattr, __getline).
+       Use bool for Booleans.
+       [USE_IN_LIBIO]: Handle wide streams.
+       [!_LIBC]: Unconditionally do the fseek, since we don't know what
+       stream might go where.
+
+       * unlocked-io.h: Include <stdio.h>, so that the caller
+       doesn't have to include <stdio.h> before us.
+       (clearerr_unlocked, feof_unlocked, ferror_unlocked,
+       fflush_unlocked, fgets_unlocked, fputc_unlocked, fputs_unlocked,
+       fread_unlocked, fwrite_unlocked, getc_unlocked, getchar_unlocked,
+       putc_unlocked, putchar_unlocked): Define to the unlocked counterpart
+       if not declared, so that we can use getpass.c code from libc without
+       rewriting it.
+       (flockfile, ftrylockfile, funlockfile): New macros.
+
+2003-10-06  Bruno Haible  <bruno@clisp.org>
+
+       * version-etc-2.h: Remove file.
+       * version-etc-2.c: Remove file.
+
+2003-09-25  Jim Meyering  <jim@meyering.net>
+            Bruno Haible  <bruno@clisp.org>
+
+       This lets translators provide better translations for the
+       "Written by ..." part of --version output.
+       * version-etc.h: Include stdarg.h.
+       (version_etc_copyright): Declare as readonly.
+       (version_etc): Make this function variadic with a NULL-terminated list
+       of author name strings.
+       (version_etc_va): New declaration.
+       * version-etc.c: Include stdarg.h, stdlib.h.
+       (version_etc_copyright): Declare as readonly.
+       (version_etc_va): New function. Provide a different translatable string
+       for each possible number of authors < 10. Abbreviate when there are 10
+       authors or more.
+       (version_etc): Make this function variadic. Call version_etc_va.
+       Suggestion from Gary V. Vaughan.
+
+       * long-options.h (parse_long_options): Change prototype: the authors
+       string is moved to the end and becomes variadic.
+       * long-options.c: Include stdarg.h.
+       (parse_long_options): Make this function variadic, too.
+       Call version_etc_va, not version_etc.
+
+2003-10-06  Bruno Haible  <bruno@clisp.org>
+
+       * fatal-signal.h: New file, from GNU gettext.
+       * fatal-signal.c: New file, from GNU gettext.
+
+2003-10-04  Karl Berry  <karl@gnu.org>
+
+       * argp*: update from libc.
+
+2003-10-01  Larry Jones  <lawrence.jones@eds.com>
+
+       * getpass.c (getpass): Use a no-op fseek when switching from input to
+       output mode on the same stream.
+
+2003-09-29  Paul Eggert  <eggert@twinsun.com>
+
+       * strftime.c (tm_diff) [! HAVE_TM_GMTOFF]:
+       Fix arg typo in previous patch.
+
+2003-09-28  Jim Meyering  <jim@meyering.net>
+
+       * error.c: Correct cpp indentation.
+
+2003-09-27  Paul Eggert  <eggert@twinsun.com>
+
+       * minmax.h (MIN, MAX) [__STDC__ && defined __GNUC__ && __GNUC__ >= 2]:
+       Omit the special code that used __typeof__, since we worry that
+       it could be more trouble than it's worth.  See:
+       http://mail.gnu.org/archive/html/bug-gnulib/2003-01/msg00090.html
+       http://mail.gnu.org/archive/html/bug-gnulib/2003-01/msg00095.html
+
+       * free.c: New file.
+
+2003-09-26  Jim Meyering  <jim@meyering.net>
+
+       * error.c (error_tail): Move some declarations
+       into inner scope where the local variables are used.
+
 2003-09-26  Bruno Haible  <bruno@clisp.org>
 
        * stpncpy.h (gnu_stpncpy): New declaration.
 2003-09-26  Bruno Haible  <bruno@clisp.org>
 
        * stpncpy.h (gnu_stpncpy): New declaration.
 
        * error.c (SIZE_MAX) [!defined SIZE_MAX]: Define.
        (error_tail): Do not loop, reallocating temporary buffer, since
 
        * error.c (SIZE_MAX) [!defined SIZE_MAX]: Define.
        (error_tail): Do not loop, reallocating temporary buffer, since
-       the original size is big enough.  This avoids one potential size
-       overflow calculation.  Check for size overflow when calculating
-       temporary buffer size.  Free temporary buffer when done, if
-       it was allocated with malloc; this closes a memory leak.
+       the output cannot contain more wide characters than the input
+       contains bytes, the size must be big enough already.  This avoids
+       one potential size overflow calculation.  Check for size overflow
+       when calculating temporary buffer size.  Free temporary buffer
+       when done, if it was allocated with malloc; this plugs a memory
+       leak.  Remove casts from void * to pointers, that are no longer
+       needed now that we're assuming C89 or better.
 
        Merge error changes from glibc.
 
 
        Merge error changes from glibc.
 
 
        Merge some files from coreutils.  These changes were
        originally made by Jim Meyering.
 
        Merge some files from coreutils.  These changes were
        originally made by Jim Meyering.
-       * lib/acl.c: Include <sys/types.h> before <sys/stat.h>;
+       * acl.c: Include <sys/types.h> before <sys/stat.h>;
        many older Unixes require this.
        many older Unixes require this.
-       * lib/alloca.c (alloca): Remove cast to argument of free;
+       * alloca.c (alloca): Remove cast to argument of free;
        no longer needed in C89.
        no longer needed in C89.
-       * lib/alloca_.h, lib/regex.h: Fix white space to match
+       * alloca_.h, regex.h: Fix white space to match
        what GNU indent does.
 
 2003-08-05  Paul Eggert  <eggert@twinsun.com>
        what GNU indent does.
 
 2003-08-05  Paul Eggert  <eggert@twinsun.com>
        alert, backslash, formfeed, and vertical tab unnecessarily in
        shell quoting style.
 
        alert, backslash, formfeed, and vertical tab unnecessarily in
        shell quoting style.
 
-Local Variables:
-version-control: never
-End:
+
+Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+  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.