Import chamges from coreutils, so that the code now assumes
[gnulib.git] / lib / ChangeLog
index 08659a3..05f13df 100644 (file)
@@ -1,3 +1,381 @@
+2004-12-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Changes imported from coreutils.
+       * hard-locale.c: Assume <locale.h> exists.
+       Include "strdup.h".
+       (GLIBC_VERSION): New macro.
+       (hard_locale): Assume setlocale exists.
+       Rewrite to avoid #ifdef.
+       Use strdup rather than malloc + strcpy.
+       * human.c: Assume <locale.h> exists.
+       (human_readable): Assume localeconv exists.
+
+2004-12-01  Jakub Jelinek  <jakub@redhat.com>
+
+       * mktime.c (__mktime_internal): If SEC_REQUESTED != SEC,
+       convert T2, not T.  (Imported from libc.)
+
+2004-11-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * getcwd.c (is_ENAMETOOLONG): New macro.
+       (__getcwd.c): Don't restore errno; glibc doesn't.
+       [HAVE_PARTLY_WORKING_GETCWD && !defined AT_FDCWD]: Try system getcwd
+       first, falling back to our code only if its results look suspicious.
+       Ensure that the resulting buffer is only as large as necessary.
+
+       * readutmp.c: Include readutmp.h first.
+       Include <errno.h>, since readutmp.h no longer does that.
+       * readutmp.h: Don't include <errno.h>,
+       <sys/param.h>, <time.h>; not needed to establish interface.
+       (errno): Remove decl.
+       (HAVE_STRUCT_XTMP_UT_TYPE): Remove; no longer needed.
+       (UT_TYPE_EQ, UT_TYPE_NOT_DEFINED, UT_TYPE_BOOT_TIME,
+       UT_TYPE_USER_PROCESS, IS_USER_PROCESS): New macros.
+
+2004-11-28  Simon Josefsson  <jas@extundo.com>
+
+       * base64.h, base64.c: New file.
+
+2004-11-27  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * getcwd.h: New file, which I forgot to check in on 2004-11-25.
+
+2004-11-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix problems reported by Scott S. Tinsley for HP-UX 11.11 using
+       HP's ANSI C compiler.
+       * fsusage.c (statvfs) [HAVE_SYS_STATVFS_H]: Remove decl.
+       Declaring int functions causes warnings on some modern systems and
+       shouldn't be needed to compile on ancient ones.
+       * same.c (MIN) [defined MIN]: Don't define, since it's already
+       defined.
+
+       * getcwd.c: Replace by a copy of glibc/sysdeps/posix/getcwd.c, but
+       with the following changes.
+       (__set_errno): Parenthesize properly.
+       Include <stdbool.h>.
+       (MIN, MAX, MATCHING_INO): New macros.
+       (__getcwd): Define with prototype, not K&R form.
+       Use heuristics to allocate default buffer on stack if possible.
+       If AT_FDCWD is defined, use openat and fstatat to avoid O(N**2)
+       behavior, and to avoid the PATH_MAX limit when computing
+       ../../../../...
+       Use MATCHING_INO to compare inode number to file.
+       Check for arithmetic overflow in size calculations.
+       Fix bug in reallocation of dot array that caused getcwd to fail
+       on directories nested deeper than 75.
+       Be more careful about saving errno on error.
+       Do not use realloc; use only free+malloc, as this is a bit
+       more flexible and avoids a needless copy operation.
+       Do not inspect st_dev and st_ino for symbolic links; POSIX
+       doesn't specify the latter.
+       Check for closedir errors.
+       Avoid needless casts.
+       Use "#ifdef weak_alias" around weak_alias, to be like other
+       glibc code.
+       The following changes to getcwd.c have effect only when used in
+       gnulib; they have no effect inside glibc proper.
+       (#pragma alloca) [defined _AIX && !defined __GNUC__]: Remove,
+       as alloca isn't used.
+       (alloca, __alloca): Likewise.
+       [!_LIBC]: Include "getcwd.h", "mempcpy.h".
+       Include <stddef.h>, <stdlib.h>, <string.h>, <limits.h>
+       unconditionally, as gnulib assumes C89 or better.
+       Do not include <sys/param.h>.
+       (errno) [!defined __GNU_LIBRARY__ && !defined STDC_HEADERS]: Remove
+       no-longer-necessary 'extern int errno' decl; gnulib assumes C89 or
+       better.
+       (NULL) [!defined NULL]: Remove; we assume C89 or better.
+       Include <dirent.h> in a way that is compatible with modern Autoconf.
+       (_D_ALLOC_NAMELEN, _D_EXACT_NAMLEN):
+       New macros, if not already defined.
+       Include <unistd.h> if _LIBC, not if __GNU_LIBRARY__.
+       Use "_LIBC", not "defined _LIBC", for consistency.
+       (HAVE_MEMPCPY): Remove; no longer needed now that gnulib has
+       a mempcpy module.
+       (__lstat, __closedir, __opendir, __readdir) [!_LIBC]: New macros.
+       (GETCWD_RETURN_TYPE): Remove.  All uses replaced by char *.
+       * xgetcwd.c: David MacKenzie's old code was removed, so give
+       credit only to Jim Meyering and adjust the copyright dates.
+       Do not include <limits.h>, <stdio.h>, <sys/types.h>,
+       <stdlib.h>, <unistd.h>, "pathmax.h".
+       Instead, include "xgetcwd.h" (first) and "getcwd.h".
+       (INITIAL_BUFFER_SIZE): Remove.
+       (xgetcwd): Rely on getcwd, since we now depend on a reliable one.
+
+2004-11-23  Jim Meyering  <jim@meyering.net>
+
+       * getopt_.h: Remove trailing blanks.
+
+2004-11-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * utimens.c (__attribute__, ATTRIBUTE_UNUSED): New macros.
+       (futimens): New function, which uses futimes if available.
+       (futimens, utimens): Support timespec==NULL, with same semantics
+       as utime and utimens.
+       * utimens.h (futimens): New decl.
+
+2004-11-23  Jim Meyering  <jim@meyering.net>
+
+       * __fpending.c: Add comment.
+
+2004-11-23  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
+
+       * lib/getopt_.h: Re-addition of __getopt_argv_const caused
+       redefinition warnings. To avoid them, include the defines
+       in `#if !defined __need_getopt ... #endif'. The only place
+       where __getopt_argv_const is used is in definitions
+       of getopt_long and getopt_long_only below, which are as well
+       protected by `#ifndef __need_getopt'.
+       [defined __GETOPT_PREFIX && !defined __need_getopt]: Undef
+       __need_getopt after including <stdio.h> and <unistd.h> These
+       headers might have defined it.
+
+2004-11-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * getopt_.h (__GETOPT_CONCAT, __GETOPT_XCONCAT, __GETOPT_ID):
+       New macros.
+       (getopt, getopt_long, getopt_long_only, optarg, opterr, optind,
+       optopt): Use them instead of invoking ## directly; otherwise, the
+       symbols will be __GETOPT_PREFIXgetopt rather than rpl_getopt.
+
+2004-11-19  Bruno Haible  <bruno@clisp.org>
+
+       * strtok_r.c: Move comments from here...
+       * strtok_r.h: ... to here.
+
+2004-11-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * realloc.c (rpl_realloc): Call 'free' if n==0, since realloc
+       might fail.  Problem reported by Yoann Vandoorselaere.
+       * calloc.c (rpl_calloc): Defend against buggy calloc implementations
+       that mishandle size_t overflow.
+
+2004-11-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * canon-host.c: Include "strdup.h".
+       (canon_host): Use getaddrinfo if available, so that IPv6 works.
+       Use strdup instead of malloc/strcpy to duplicate strings.
+
+       * human.h (LONGEST_HUMAN_READABLE): Add 1 for space before unit.
+       (human_space_before_unit): New constant.
+       * human.c (human_readable): Support it.
+
+       * xgetcwd.c: Include <limits.h>, for PATH_MAX.
+       (xgetcwd): Set errno correctly when failing.
+       Work around Solaris 9 bug: getcwd sets errno==ERANGE even though
+       the failure is actually due to a PATH_MAX problem.
+
+       Further getopt changes to make it more likely that glibc will
+       buy the changes back.
+       * getopt.c (POSIXLY_CORRECT): New constant.
+       (getopt): Use it, so to preserve glibc semantic
+       * getopt1.c (getopt_long, getopt_long_only): Arg is char * const *
+       when compiling for libc.
+       * getopt_.h (__getopt_argv_const): Bring it back.
+       (getopt_long, getopt_long_only): Use it.
+
+       * getopt.c (_getopt_initialize, _getopt_internal_r, _getopt_internal):
+       New arg POSIXLY_CORRECT.  All callers changed.
+       (getopt): Argv is now char * const *, as per standard.
+       (_getopt_internal_r, _getopt_internal): Argv is now char **,
+       not char *__getopt_argv_const *.
+       * getopt1.c (getopt_long, _getopt_long_r, getopt_long_only,
+       _getopt_long_only_r): Likewise.
+       * getopt_.h (getopt, getopt_long, geopt_long_only): Likewise.
+       * getopt_int.h (_getopt_internal, _getopt_internal_r,
+       _getopt_long_r, _getopt_long_only_r): Likewise.
+       * getopt_.h (__getopt_argv_const): Remove.
+       (getopt): Argv is now char * const *, as per standard.
+
+       * getdate.y (tORDINAL): New token.
+       (day, relunit): Allow it for relative times.
+       (relative_time_table): Use tORDINAL for ordinals.
+
+2004-11-15  Jim Meyering  <jim@meyering.net>
+
+       * closeout.c: Include "__fpending.h" once again.
+       Include <stdbool.h>.
+       (close_stdout): Don't fail just because stdout was closed initially,
+       since some programs don't write to stdout in the normal course of
+       operation (other than --version and --help), and we don't want this
+       function to make e.g. `touch file >&-' fail.
+       But do fail if it was closed and someone has tried to write to it.
+       E.g., `printf foo >&-' must fail.
+
+2004-11-11  Simon Josefsson  <jas@extundo.com>
+
+       * strtok_r.h, strtok_r.c: New file.
+
+2004-11-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * getopt_.h (__getopt_argv_const): New macro, to be used so that
+       we can stop lying to compilers about the constness of argv when we
+       are compiled outside glibc.
+       (getopt, getopt_long, getopt_long_only): Use it.
+       * getopt.c (_getopt_initialize, _getopt_internal_r, _getopt_internal,
+       getopt): Likewise.
+       * getopt1.c (getopt_long, _getopt_long_r, getopt_long_only,
+       _getopt_long_only_r): Likewise.
+       * getopt_int.h (_getopt_internal, _getopt_internal_r, _getopt_long_r,
+       _getopt_long_only_r): Likewise.
+
+       * getopt_.h [defined __GETOPT_PREFIX && !defined __need_getopt]:
+       Include <stdlib.h> and <stdio.h>, and <unistd.h> if available.
+       Then rename getopt to __GETOPT_PREFIX##getopt, and so forth for
+       the other external symbols.
+       (getopt) [!defined __GNU_LIBRARY]: Use prototype, not old-style
+       declaration, since the above renaming now works around collisions.
+
+2004-11-11  Jim Meyering  <jim@meyering.net>
+
+       * linebreak.c: Remove trailing blanks.
+       * alloca_.h: Likewise.
+       * acosl.c: Likewise.
+       * euidaccess.c: Likewise.
+       * allocsa.h: Likewise.
+
+2004-11-10  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * mktime.c (SHR): New macro, which is a portable
+       substitute for >> that should work even on Crays.
+       (TIME_T_MIDPOINT, ydhms_diff, __mktime_internal): Use it.
+       Problem reported by Mark D. Baushke in
+       <http://lists.gnu.org/archive/html/bug-gnulib/2004-11/msg00071.html>.
+       * getdate.y (SHR): Likewise.
+       (tm_diff): Use it.
+       * strftime.c (SHR): Likewise.
+       (tm_diff): Use it.
+       * quotearg.c (struct quoting_options): Use unsigned int for
+       quote_these_too, so that right shifts are well defined.  All uses
+       changed.
+
+2004-11-10  Simon Josefsson  <jas@extundo.com>
+
+       * getaddrinfo.h, getaddrinfo.c: New files.
+
+2004-11-10  Jim Meyering  <jim@meyering.net>
+
+       Ensure that no close failure goes unreported.
+       * closeout.c (close_stdout): Always close stdout.  I.e., don't
+       return early when it seems there's nothing to flush.
+       Don't include __fpending.h.
+
+2004-11-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * strftime.c (DO_MULTIBYTE): Check for wchar.h, too.
+
+2004-11-05  Bruno Haible  <bruno@clisp.org>
+
+       * readlink.c: Include stddef.h, needed for size_t on Woe32.
+       Reported by Mark D. Baushke <mdb@cvshome.org>.
+
+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
 
        * 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