+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,
2003-10-12 Paul Eggert <eggert@twinsun.com>
- * lib/xalloc.h (xnmalloc, xzalloc, xnrealloc, xclone): New decls.
+ * xalloc.h (xnmalloc, xzalloc, xnrealloc, xclone): New decls.
(XMALLOC, XCALLOC, XREALLOC, XFREE, CCLONE, CLONE): Deprecate,
and define in terms of the other primitives.
- * lib/xmalloc.c: Include stdbool.h; do not include exit.h.
+ * 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.
- * lib/xstrdup.c (xstrdup): Use xclone, since memcpy should be
+ * xstrdup.c (xstrdup): Use xclone, since memcpy should be
a bit faster than strcpy.
2003-10-08 Paul Eggert <eggert@twinsun.com>
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.
- * lib/alloca.c (alloca): Remove cast to argument of free;
+ * alloca.c (alloca): Remove cast to argument of free;
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>