+2005-10-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * obstack.c [defined _LIBC && defined USE_IN_LIBIO]: Don't
+ include <wchar.h>; no longer needed.
+
+2005-10-14 Jakub Jelinek <jakub@redhat.com>
+ and Ulrich Drepper <drepper@redhat.com>
+
+ Import from libc.
+ * obstack.c (print_and_abort) [defined _LIBC]: Use __fxprintf
+ instead of inline stream orientation test and two separate
+ function calls. Pay no attention to USE_IN_LIBIO.
+
+2005-10-14 Roland McGrath <roland@redhat.com>
+
+ Import from libc. [BZ #1331]
+ * obstack.h [!__STDC__] (obstack_int_grow_fast): Fix misnamed
+ macro argument.
+ Reported by Matej Vela <vela@debian.org>.
+
+2005-10-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * mkdir-p.c (make_dir_parents): Don't report an error if an
+ intermediate directory is in a read-only file system. Problem
+ reported by Eric Blake.
+
+2005-10-13 Simon Josefsson <jas@extundo.com>
+
+ * gc-pbkdf2-sha1.c (gc_pbkdf2_sha1): Optimize CEIL computation.
+ Move memory allocation outside of loop.
+
+2005-10-12 Simon Josefsson <jas@extundo.com>
+
+ * gc-pbkdf2-sha1.c: New file.
+
+ * gc.h: Add gc_pbkdf2_sha1 prototype.
+
+2005-10-12 Simon Josefsson <jas@extundo.com>
+
+ * gc.h, gc-gnulib.c, gc-libgcrypt.c: Use Gc_rc for return types,
+ suggested by Bruno Haible <bruno@clisp.org>.
+
+2005-10-12 Simon Josefsson <jas@extundo.com>
+
+ * gc-libgcrypt.c (gc_hmac_sha1): New function.
+
+ * gc-gnulib.c (gc_hmac_sha1): New function.
+
+2005-10-12 Simon Josefsson <jas@extundo.com>
+
+ * gc.h, gc-gnulib.c, gc-libgcrypt.c: Support SHA-1.
+
+2005-10-12 Simon Josefsson <jas@extundo.com>
+
+ * gc-gnulib.c: Condition MD5 and HMAC-MD5 use on GC_USE_MD5 and
+ GC_USE_HMAC_MD5, respectively.
+
+ * gc-libgcrypt.c (gc_md5): Fix assert call.
+ (gc_md5): Fix typo.
+
+ * gc.h (gc_hash_buffer): Use gc_hash in prototype.
+
+ * gc-libgcrypt.c (gc_hash_buffer): Ditto.
+
+ * gc-gnulib.c (gc_hash_buffer): Ditto.
+
+2005-10-11 Bruno Haible <bruno@clisp.org>
+
+ * c-strcasestr.h: New file, from GNU gettext.
+ * c-strcasestr.c: New file, from GNU gettext.
+
+2005-10-11 Bruno Haible <bruno@clisp.org>
+
+ * c-strcase.h: New file, from GNU gettext.
+ * c-strcasecmp.c: New file, from GNU gettext.
+ * c-strncasecmp.c: New file, from GNU gettext.
+
+2005-10-11 Simon Josefsson <jas@extundo.com>
+
+ * crc.h, crc.c: New files.
+
+ * gc.h (gc_hash_buffer): Add doc.
+
+2005-10-08 Simon Josefsson <jas@extundo.com>
+
+ * gc.h: Add gc_hash and gc_hash_buffer.
+
+ * gc-gnulib.c (gc_hash_buffer): Add. Reorder #include's.
+
+ * gc-libgcrypt.c (gc_hash_buffer): Add.
+
+2005-10-11 Bruno Haible <bruno@clisp.org>
+
+ * strcasecmp.c: Include limits.h.
+ (strcasecmp): Avoid integer overflow on exotic platforms.
+ * strncasecmp.c: Include limits.h.
+ (strncasecmp): Avoid integer overflow on exotic platforms.
+ Reported by Paul Eggert.
+
+2005-10-06 Simon Josefsson <jas@extundo.com>
+
+ * hmac-md5.c: New file.
+
+ * hmac.h: New file.
+
+2005-10-06 Simon Josefsson <jas@extundo.com>
+
+ * memxor.c (memxor): Avoid casts and warnings.
+
+2005-10-05 Derek Price <derek@ximbiot.com>
+
+ * getdelim.c (SIZE_MAX): New macro, if not already defined.
+
+2005-10-05 Simon Josefsson <jas@extundo.com>
+
+ * memxor.c (memxor): Fix compiler error.
+
+ * md5.h (MD5_DIGEST_SIZE, MD5_BLOCK_SIZE): Add, see also
+ <http://sourceware.org/bugzilla/show_bug.cgi?id=1423>.
+
+ * memxor.h, memxor.c: New files.
+
+ * getaddrinfo.h: Don't protect sys/types.h with HAVE_SYS_TYPES_H,
+ we assume all systems have it, suggested by Jim Meyering
+ <jim@meyering.net>. Remove HAVE_SYS_SOCKET_H test too, to see if
+ any systems lack sys/socket.h; mingw32 is known to lack it, but we
+ don't support it yet anyway. Also remove HAVE_NETDB_H test, for
+ same reasons.
+
+2005-10-04 Bruno Haible <bruno@clisp.org>
+
+ * verify.h (verify_true): Provide alternative definition for C++.
+
+2005-10-04 Simon Josefsson <jas@extundo.com>
+
+ * getaddrinfo.h: Move sys/types.h include first, reported by "Mark
+ D. Baushke" <mdb@gnu.org>.
+
+2005-10-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getdelim.c: Include getdelim.h first. Include <limits.h>.
+ (SSIZE_MAX): New macro, if not already defined.
+ (getdelim): Fix buffer overrun on 64-bit hosts with lines longer
+ than 2 GiB.
+
+2005-10-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * exclude.c: Include verify.h.
+ (verify): Remove. All callers changed to use verify.h's version.
+ * strtoimax.c: Likewise.
+ * utimecmp.c: Likewis.e
+
+ Sync from coreutils.
+ * .cppi-disable: Add getaddrinfo.h, getdelim.h, getline.h, getpass.c
+ mbchar.h, mbuiter.h, strcase.h, strnlen.h, strnlen1.h.
+ * .cvsignore: Add fts.h, search.h, t-fpending.
+ * settime.c (settime): Fix { typo in previous patch. Also, don't
+ bother returning ENOSYS if settimeofday or stime fails; just let
+ them return whatever errno they want to return.
+ * utimens.c: Include unistd.h, for dup2.
+ (futimens): Fix typo: HAVE_FUTIMESAT was misspelled in an #if.
+ (futimens) [! HAVE_FUTIMESAT]: If !file, set errno before returning -1.
+
+2005-10-02 Jim Meyering <jim@meyering.net>
+
+ Sync from coreutils.
+ * fts-cycle.c [HAVE_CONFIG_H]: Include <config.h>.
+ * openat-die.c: Use `#ifdef HAVE_CONFIG_H', not `#if HAVE_CONFIG_H'.
+ * openat.c (fdopendir): Do not define if HAVE_FDOPENDIR.
+ Remove AT_FDCWD test.
+ Do not consume the fd unless successful.
+ * openat.h (fdopendir): Do not define if HAVE_FDOPENDIR.
+ * settime.c (settime): Move the HAVE_STIME block `up' into an #elif
+ block, so that we don't even try to compile it if settimeofday is
+ available. This works around a compilation failure on OSF1 V5.1,
+ due to stime requiring a `long int*' while tv_sec is `int'.
+
+2005-09-30 Eric Blake <ebb9@byu.net> (tiny change)
+
+ * getdelim.c (getdelim): Remove unused variables.
+
+2005-10-01 Simon Josefsson <jas@extundo.com>
+
+ * getaddrinfo.h: Protect #include's of sys/socket.h and netdb.h.
+ Only define struct addrinfo if !HAVE_STRUCT_ADDRINFO. Protect
+ AI_* and EAI_* definitions. Protect function declarations.
+
+2005-09-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * xtime.h (XTIME_PRECISION): Now of type int, not long long int,
+ so that the code works even with ancient cpp. Portability problem
+ with GCC 2.7.2.1 reported by Thomas M.Ott.
+
+2005-09-27 Jim Meyering <jim@meyering.net>
+
+ * getcwd.c: Change #ifdef<TAB>HAVE_CONFIG_H to #ifdef HAVE_CONFIG_H.
+
+ * intprops.h (signed_type_or_expr__): Define.
+ (INT_STRLEN_BOUND) [__GNUC__]: Use a slightly tighter bound
+ for unsigned types.
+
+2005-09-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * verify.h (verify_expr): Remove, replacing with:
+ (verify_true): New macro that returns true instead of void.
+ (verify_type__): Remove.
+ (verify): Use verify_true rather than verify_type__.
+
+2005-09-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * utimens.c (ENOSYS): Define if not already defined.
+ (futimens): Support having a null PATH if the file descriptor
+ is nonnegative.
+
+ * regex_internal.h (__GNUC_PREREQ, always_inline, inline, pure):
+ Remove.
+ (__attribute): Define to empty unless GCC 3.1 or later.
+ This works around a core dump on OpenBSD 3.4, which has GCC
+ 2.95.3, which dumps core when given __attribute__(()). It also
+ simplifies other tests, since we really don't want to bother with
+ worrying about which ancient version of GCC supported what.
+ Original problem reported by Yoann Vandoorselaere, with part of
+ the fix suggested by Derek Price.
+
+2005-09-24 Jim Meyering <jim@meyering.net>
+
+ * verify.h (verify_type__): Use `unsigned int' as the bitfield type
+ so we can once again use a positive bitfield width of 1 -- now we
+ don't have to explain why we were using a bitfield width of 2.
+
+2005-09-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getaddrinfo.c [HAVE_NETINET_IN_H]: Include <netinet/in.h>.
+ Problem reported by Eric Blake.
+ (getaddrinfo): Initialize se so that it's not garbage.
+ Redo internal storage allocation so that it doesn't make unportable
+ assumptions about alignment.
+ Fix a memory leak.
+
+ * utimens.c (futimens): Use futimesat if available.
+ Prefer it to futimes since it doesn't have the futimes bug.
+
+ * verify.h (GL_CONCAT0, GL_CONCAT): Remove.
+ (verify): Don't use the __LINE__ trick, as it doesn't work in general.
+ Instead, declare a function that returns a pointer to an array,
+ and use verify_type__ to declare the size of the array.
+ Problem and germ of a solution reported by Bruno Haible.
+ (verify_type__): Use 2, not 1, for bitfield size, to avoid
+ a warning with Irix 6.5 cc. Problem reported by Bruno Haible.
+
+2005-09-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ Sync from coreutils.
+
+ * .cppi-disable: Add regcomp.c, regex_internal.c, regex_internal.h,
+ stat-time.h.
+ * argmatch.h: Include verify.h
+ (ARGMATCH_VERIFY): Use verify rather than rolling our own.
+ (ARGMATCH_ASSERT): Remove; unused.
+ * canonicalize.c: Assume STDC_HEADERS.
+ * exclude.c: Include "strcase.h".
+ * regex_internal.h [!defined _LIBC]: Likewise.
+ * getusershell.c: Include stdio--.h rather than stdio.h
+ and stdio-safer.h.
+ (getusershell): Call fopen, not fopen_safer.
+ * save-cwd.c: Include fcntl--.h rather than fcntl.h.
+ Do not include unistd-safer.h.
+ (save_cwd): Don't call fd_safer; no longer needed
+ now that we include fcntl--.h.
+
+ * getdate.y (relative_time): New type.
+ (RELATIVE_TIME_0): New constant.
+ (parser_control): Use relative_time instead of doing it ourselves.
+ (%union): Add new relative_time rel member.
+ (tYEAR_UNIT, tMONTH_UNIT, tHOUR_UNIT, tMINUTE_UNIT, tSEC_UNIT):
+ Now typeless.
+ (relunit, relunit_snumber): Now of type rel.
+ (zone, rel, relunit, get_date): Adjust to above changes.
+
+ * getloadavg.c: Include fcntl--.h rather than fcntl.h.
+ Do not include unistd-safer.h.
+ (getloadavg): Don't call fd_safer; no longer needed
+ now that we include fcntl--.h.
+
+ * mkdir-p.c (ENOSYS): Define to EEXIST if not defined.
+ (make_dir_parents): Treat ENOSYS like EEXIST.
+
+ Improve quality of diagnostics on restore_cwd failure.
+ * mkdir-p.h (make_dir): Remove. All uses replaced by mkdir.
+ (make_dir_parents): Last arg is now int * (for errno), not bool *.
+ * mkdir-p.c (make_dir, make_dir_parents): Likewise.
+ Rewrite "mkdir -p" algorithm to avoid the need for "stat"
+ each time through the loop. Do not diagnose restore_cwd failure;
+ that is the caller's job (and perhaps the caller does not care).
+
+ * mkdir-p.c (CLEANUP_CWD, CLEANUP): Remove.
+ (make_dir_parents): Revamp to avoid need for CLEANUP_CWD, CLEANUP.
+ If the file already exists but is not a directory, don't bother
+ to try to make its parents.
+ Close potential file descriptor leak if we can't chdir("/") (!).
+ Don't always return true if chdir($PWD) fails; return true only
+ if the requested action was done successfully (except for the
+ chdir($PWD)).
+ Don't log final directory unless we actually made it.
+ Refactor to avoid duplicate code to fix up permissions.
+ Don't attempt to fix up parent permissions if chdir($PWD) fails.
+
+ * strftime.c (my_strftime): Rewrite the previous change slightly,
+ to make it a bit faster and (I hope) clearer.
+ * strftime.c (my_strftime): Add support for %:z, %::z, %:::z.
+ Fix bug in formats like %2N.
+
+ * verify.h: New file.
+
+2005-09-22 Jim Meyering <jim@meyering.net>
+
+ Sync from coreutils.
+
+ * backupfile.c: Use ARGMATCH_VERIFY, just in case.
+
+ * posixtm.c (posixtime) [lint]: Initialize *all* of tm0, not just
+ the .tm_year member, since otherwise gcc-4.0 would now warn about
+ tm_zone, tm_gmtoff, tm_isdst, tm_yday, tm_wday.
+
+ * quotearg.c (quotearg_n_options): Change code to be suboptimal, in
+ order to avoid an unsuppressible warning from gcc on 64-bit systems.
+
+ * getdate.y (get_date): Undo part of the 2005-04-04 change, so that
+ the command "date -d'2005-03-27 +1 day'" succeeds once again, even
+ when run in a time zone for which daylight savings time is in effect
+ for the starting date.
+
+ * mkdir-p.c (make_dir_parents): Don't let a failed chdir($PWD)
+ stop us from restricting permissions of just-created absolute-named
+ directories.
+ * mkdir-p.c (CLEANUP_CWD): Return *true*, not false when failing
+ to restore initial working directory.
+ * mkdir-p.c (make_dir_parents): New parameter: different_working_dir,
+ to tell caller if/when we change the working directory and are
+ unable to return to the initial one.
+ * mkdir-p.h (make_dir_parents): Update prototype.
+ * mkdir-p.c (CLEANUP_CWD): Change one more `return 1' to
+ `return false'. This fixes a bug introduced on 2004-07-30.
+
+ * openat.c (fdopendir): Be sure to close the supplied
+ file descriptor before returning. This makes our replacement
+ implementation a little closer to Solaris's, where fdopendir
+ ties the file descriptor to the returned DIR* pointer.
+ * openat.c (unlinkat): New function.
+ * openat.h (unlinkat): Add prototype.
+ * openat-die.c (openat_save_fail): Rename from openat_save_die.
+ (openat_restore_fail): Rename from openat_restore_die.
+ * openat.c, openat.h: Reflect s/_die/_fail/ renaming.
+
+ Provide an alternative to exiting immediately upon save_cwd or
+ restore_cwd failure. Now, an application can arrange e.g.,
+ to perform a longjump in that case.
+ * openat.c: Include dirname.h.
+ Use IS_ABSOLUTE_FILE_NAME rather than testing for leading slash.
+ (rpl_openat, fdopendir, fstatat): Call openat_save_die
+ and openat_restore_die rather than calling error directly.
+ Don't include "error.h" or "exitfail.h"; they're no longer needed.
+
+ * openat-die.c (openat_save_die, openat_restore_die): New file.
+ * openat.h (openat_save_die, openat_restore_die): Declare and define.
+
+ * strftime.c [FPRINTFTIME] (fprintftime): Provide a new interface:
+ size_t fprintftime (FILE *fp, char const *fmt, struct tm const *tm,
+ int utc, int nanoseconds);
+ Background:
+ date should not have to allocate a megabyte of virtual memory to
+ handle a format argument like +%1048575T. When implemented with
+ strftime, it must allocate such a buffer, use strftime to fill it
+ in, print it, then free it.
+ With fprintftime, it simply prints everything and exits.
+ With no need for memory allocation, that's one fewer way to fail.
+ * strftime.c (my_strftime): Parse the colons of %:::z *after* the
+ optional field width, not before, so we accept %9:z, not %:9z.
+ (my_strftime): Be sure to use L_('x') for literals.
+
+ * backupfile.c, canon-host.c, canonicalize.c, chown.c, cloexec.c:
+ * dup-safer.c, dup2.c, euidaccess.c, fd-safer.c, fileblocks.c:
+ * fopen-safer.c, fsusage.c, ftruncate.c, getcwd.c, getcwd.h:
+ * getloadavg.c, getopt_.h, getpagesize.h, getugroups.c, group-member.c:
+ * human.h, idcache.c, mkdir-p.c, mountlist.c, nanosleep.c, pathmax.h:
+ * physmem.c, posixver.c, putenv.c, raise.c, safe-read.c, same.c:
+ * save-cwd.c, setenv.c, settime.c, tempname.c, unlinkdir.c:
+ * unsetenv.c, userspec.c, xgethostname.c, xreadlink.c:
+ Assume HAVE_UNISTD_H, i.e., include <unistd.h> unconditionally.
+
+ * chown.c, cloexec.c, dup-safer.c, dup2.c, fsusage.c, getcwd.c:
+ * getloadavg.c, mountlist.c, openat.h, save-cwd.c, tempname.c:
+ Assume HAVE_FCNTL_H (i.e., include <fcntl.h> unconditionally,
+ and don't include <sys/file.h>).
+
+2005-09-22 Eric Blake <ebb9@byu.net> (tiny change)
+
+ Sync from coreutils.
+
+ * getloadavg.c (getloadavg) [__CYGWIN__]: Port to cygwin.
+ [__linux__]: Allocate a big enough buffer for /proc/loadavg.
+ [!LDAV_DONE]: Avoid unused variable warning.
+
+2005-09-21 Bruno Haible <bruno@clisp.org>
+
+ * unicodeio.h (unicode_to_mb): New declaration.
+
+2005-09-20 Derek Price <derek@ximbiot.com>
+
+ * getaddrinfo.c: Don't include <netdb.h> included from getaddrinfo.h.
+
+2005-09-19 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ Use a consistent style for including <config.h>.
+ * __fpending.c, acl.c, argmatch.c,
+ argp-help.c, argp-parse.c,
+ argp-pvh.c, backupfile.c, basename.c, c-stack.c,
+ calloc.c, check-version.c, cloexec.c, closeout.c, copy-file.c,
+ creat-safer.c, cycle-check.c, dirfd.c, dirname.c, dup-safer.c,
+ dup2.c, euidaccess.c, exclude.c, exitfail.c, fatal-signal.c,
+ fd-safer.c, file-type.c, fileblocks.c, filemode.c,
+ filenamecat.c, findprog.c, fnmatch.c, fopen-safer.c, free.c,
+ fsusage.c, ftruncate.c, full-write.c, fwriteerror.c,
+ getaddrinfo.c, getcwd.c, getdelim.c, getline.c, getlogin_r.c,
+ getndelim2.c, getnline.c, getopt1.c, getpass.c, group-member.c,
+ hard-locale.c, hash-pjw.c, hash.c, human.c, idcache.c,
+ inet_ntop.c, isdir.c, long-options.c, malloc.c, memcasecmp.c,
+ memcmp.c, memcoll.c, memcpy.c, memmove.c, mkdir-p.c,
+ modechange.c, mountlist.c, open-safer.c, physmem.c,
+ pipe-safer.c, pipe.c, poll.c, posixver.c, progname.c,
+ progreloc.c, putenv.c, quote.c, quotearg.c, readline.c,
+ readlink.c, realloc.c, regex.c, rename.c, rmdir.c, rpmatch.c,
+ safe-read.c, same.c, save-cwd.c, savedir.c, sig2str.c,
+ strcspn.c, strerror.c, stripslash.c, strncasecmp.c, strndup.c,
+ strnlen.c, strnlen1.c, strsep.c, strstr.c, strtod.c,
+ strtoimax.c, strtol.c, strverscmp.c, tempname.c, time_r.c,
+ userspec.c, utimecmp.c, version-etc-fsf.c,
+ version-etc.c, wait-process.c, xalloc-die.c, xgetcwd.c,
+ xmalloc.c, xmemcoll.c, xnanosleep.c, xreadlink.c, xsetenv.c,
+ xstrndup.c, xstrtoimax.c, xstrtol.c, xstrtoumax.c, yesno.c:
+ Standardize inclusion of config.h.
+ * __fpending.h, dirfd.h, getdate.h, human.h,
+ inttostr.h: Removed inclusion of config.h from header files.
+ * inttostr.c: Adjusted in-tree users.
+ * timespec.h: Remove superfluous warning to include config.h.
+ * atexit.c, chdir-long.c chown.c, fchown-stub.c, getgroups.c,
+ gettimeofday.c, lchown.c, lstat.c, mkdir.c, mkstemp.c,
+ nanosleep.c, openat.c, raise.c, readtokens0.c, readutmp.c,
+ unlinkdir.c: Guard inclusion of config.h with HAVE_CONFIG_H.
+
+2005-09-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * stat-time.h: New file.
+ * timespec.h (ST_TIME_CMP_NS, ST_TIME_CMP, ATIME_CMP, CTIME_CMP):
+ (MTIME_CMP, TIMESPEC_NS): Remove. Now done by stat-time.h,
+ in a different way.
+ (timespec_cmp): New function.
+ * utimecmp.c: Include stat-time.h.
+ (SYSCALL_RESOLUTION): Depend on whether various struct stat
+ members exist, not on the obsolescent ST_MTIM_NSEC.
+ (utimecmp): Use the new stat-time functions rater than TIMESPEC_NS.
+
+2005-09-15 Derek Price <derek@ximbiot.com>
+ Paul Eggert <eggert@cs.ucla.edu>
+
+ * regcomp.c, regexec.c, regex_internal.c: Back out previous
+ changes, consolidating in...
+ * regex_internal.h: ...this file.
+
+2005-09-15 Derek Price <derek@ximbiot.com>
+
+ * regex_internal.h: Blank `pure' for GNUC < 3.
+ * regex_internal.c: Ditto, using this...
+ (__GNUC_PREREQ): ...new macro.
+ * regcomp.c, regexec.c: Blank `always_inline' for GNUC < 3.1 using...
+ (__GNUC_PREREQ): ...this new macro.
+
+ * strstr.h: Include string.h. Define strstr as a macro here.
+
+2005-09-13 Derek Price <derek@ximbiot.com>
+
+ * canon-host.c (canon_host_r): Set *cherror on memory allocation
+ failure.
+ Reported by Jim Meyering <jim@meyering.net>.
+
+2005-09-13 Jim Meyering <jim@meyering.net>
+
+ * canon-host.c: Filter through gnu indent and reword comments slightly.
+ * canon-host.h (ch_strerror_r): Tweak cpp indentation and spacing.
+
+2005-09-12 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> (tiny change)
+
+ * lib/base64.c: Typo.
+ (base64_encode): Put b64str in initialized data section.
+
+2005-09-12 Derek Price <derek@ximbiot.com>
+
+ Return usable errors from canon-host.
+ * canon-host.h: New file.
+ * canon-host.c (canon_host): Wrap...
+ (canon_host_r): ...this new function, which now relies exclusively on
+ getaddrinfo.
+ (ch_strerror): New function.
+ (last_cherror): New global.
+ * getaddrinfo.c: Move include of getaddrinfo.h first to test interface.
+ (getaddrinfo): Add AI_CANONNAME functionality. Don't do arithmetic on
+ void *.
+ (freeaddrinfo): Free ai->ai_canonname when set.
+
+2005-09-12 Derek Price <derek@ximbiot.com>
+ Paul Eggert <eggert@cs.ucla.edu>
+
+ * glob-libc.h: Renamed from glob_.h. The new version is
+ taken from libc's glob.h, except with '#ifdef __GLOB_GNULIB'
+ protecting things that should be done only in gnulib contexts.
+ * glob_.h: New file, containing only the glob things needed for
+ gnulib.
+ (GLOB_PREFIX): Remove. All uses changed to look for __GLOB_GNULIB.
+ (__GLOB_CONCAT, __GLOB_XCONCAT, __GLOB_ID): Remove; no longer needed.
+ (glob, globfree, glob_pattern_p): Now defined simply in terms of
+ rpl_glob, rpl_globfree, rpl_glob_pattern_p.
+ (__GLOB_GNULIB): New macro, to keep the glob.h changes clearer
+ and to respect the namespace rules better.
+
+2005-09-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ Merge glibc and coreutils changes into gnulib, plus a few
+ extra fixes.
+ * md5.c: Use #error rather than a string.
+ (CYCLIC): New macro, from glibc source. Use it instead of rol.
+ * md5.h (__GNUC_PREREQ, __THROW): Define if not defined already.
+ (__attribute__): Define to empty for non recent-GCC.
+ (__md5_buffer, __md5_finish_ctx, __md5_init_ctx, __md5_process_block):
+ (__md5_process_bytes, __md5_read_ctx, __md5_stream):
+ Renamed from their non-__ counterparts, with new macros replacing
+ them if not _LIBC. Add __THROW attribute.
+ (rol): Remove.
+ (struct md5_ctx): Align buffer if using GCC.
+ * sha1.h (struct sha1_ctx): Likewise.
+ * sha1.c (SWAP): Renamed from the NOTSWAP. All uses changed.
+ The old name was backwards.
+ (NOTSWAP): Remove; not used.
+ (rol): New macro, moved here from md5.h.
+ (sha1_process_block): Remove a FIXME that doesn't make sense.
+
+2005-09-12 Derek Price <derek@ximbiot.com>
+
+ * gai_strerror.c: Include config.h when available. Include
+ getaddrinfo.h before other headers to test interface.
+ Reported by Larry Jones <lawrence.jones@ugs.com>.
+
+2005-09-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * glob.c (glob, globfree, __glob_pattern_p): Use old-style function
+ definitions, since that's the preferred style in glibc.
+ Fix a minor spacing issue, and update copyright notice to match glibc's.
+
+2005-09-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regex_internal.h (bitset_not): Add parens to avoid gcc -Wall warning.
+
+2005-09-06 Simon Josefsson <jas@extundo.com>
+
+ * getpass.c (getpass): Fix typo, test for HAVE_TCSETATTR and not
+ TCSETATTR. Reported by Derek Price <derek@ximbiot.com>.
+
+2005-09-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ Change bitset word type from unsigned int to unsigned long int,
+ as this has better performance on typical 64-bit hosts.
+ Port bitset code to hosts with unusual word sizes.
+ * regcomp.c (build_equiv_class, build_charclass, build_range_exp):
+ (build_collating_symbol):
+ Prefer bitset to re_bitset_ptr_t in prototypes, when the actual
+ argument is a bitset. This is merely a style issue, but it makes
+ it clearer that an entire array is expected.
+ (re_compile_fastmap_iter, init_dfa, init_word_char, optimize_subexps):
+ * regcomp.c (lower_subexp, parse_bracket_exp, built_charclass_op):
+ Port to the case where bitset_word is not the same as unsigned int.
+ * regex_internal.h (bitset_set, bitset_clear, bitset_contain):
+ (bitset_not, bitset_merge, bitset_set_all, bitset_mask):
+ Likewise.
+ * regexec.c (check_dst_limits_calc_pos_1, check_subexp_matching_top):
+ (build_trtable, group_nodes_into_DFAstates):
+ Likewise.
+ * regcomp.c (re_compile_fastmap_iter, utf8_sb_map, optimize_utf8):
+ Don't assume that SBC_MAX is a multiple of BITSET_WORD_BITS.
+ * regex_internal.h (bitset_set_all, bitset_not): Likewise.
+ * regexec.c (group_nodes_into_DFAstates): Likewise.
+ * regcomp.c (utf8_sb_map): Don't assume UINT_MAX == 0xffffffff.
+ * regcomp.c (optimize_subexps, lower_subexp):
+ Work even if bitset_word has holes in its bitwise representation.
+ * regex_internal.h (BITSET_WORD_BITS): Likewise.
+ * regexec.c (check_dst_limits_calc_pos_1, check_subexp_matching_top):
+ Likewise.
+ * regex_internal.c (re_string_reconstruct):
+ Don't assume UCHAR_MAX == 255.
+ * regex_internal.h (bitset_set_all): Likewise.
+ * regex_internal.h (BITSET_WORD_BITS): Renamed from UINT_BITS.
+ All uses changed.
+ (BITSET_WORDS): Renamed from BITSET_UINTS. All uses changed.
+ (bitset_word): New type, replacing 'unsigned int' for bitset uses.
+ All uses changed.
+ (BITSET_WORD_MAX): New macro.
+ (bitset_set, bitset_clear, bitset_contain, bitset_empty):
+ (bitset_set_all, bitset_copy): Now inline functions, not macros.
+ (bitset_empty, bitset_copy):
+ Prefer sizeof (bitset) to multiplying it out ourselves.
+ (bitset_not_merge): Remove; unused.
+ (bitset_contain): Return bool, not unsigned int with one bit on.
+ All callers changed.
+ * regexec.c (build_trtable): Don't assume bitset has no stricter
+ alignment than re_node_set; do this by defining a new internal
+ type struct dests_alloc and using it to allocate memory.
+
+2005-09-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ Check for arithmetic overflow when calculating sizes, to prevent
+ some buffer-overflow issues. These patches are conservative, in the
+ sense that when I couldn't determine whether an overflow was possible,
+ I inserted a run-time check.
+ * regex_internal.h (re_xmalloc, re_xrealloc, re_x2realloc): New macros.
+ (SIZE_MAX) [!defined SIZE_MAX]: New macro.
+ (re_alloc_oversized, re_x2alloc_oversized, re_xnmalloc):
+ (re_xnrealloc, re_x2nrealloc): New inline functions.
+ * lib/regcomp.c (init_dfa, analyze, build_range_exp, parse_bracket_exp):
+ (build_equiv_class, build_charclass): Check for arithmetic overflow
+ in size expression calculations.
+ * lib/regex_internal.c (re_string_realloc_buffers):
+ (build_wcs_upper_buffer, re_node_set_add_intersect):
+ (re_node_set_init_union, re_node_set_insert, re_node_set_insert_last):
+ (re_dfa_add_node, register_state): Likewise.
+ * lib/regexec.c (re_search_stub, re_copy_regs, re_search_internal):
+ (prune_impossible_nodes, push_fail_stack, set_regs, check_arrival):
+ (build_trtable, extend_buffers, match_ctx_init, match_ctx_add_entry):
+ (match_ctx_add_subtop, match_ctx_add_sublast): Likewise.
+
+2005-09-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * glob.c (GET_LOGIN_NAME_MAX): Renamed from LOGIN_NAME_MAX,
+ to avoid a collision with bits/local_lim.h in glibc.
+ All uses changed. Problem reported by Dmitry V. Levin in
+ <http://sources.redhat.com/bugzilla/show_bug.cgi?id=1060>.
+
+ * regex_internal.c (build_wcs_upper_buffer): Fix portability
+ bugs in int versus size_t comparisons.
+ (re_string_context_at): Fix bug where the code assumed that
+ Idx is signed.
+
+ Use bool where appropriate.
+ * regcomp.c (re_set_fastmap): ICASE arg is bool, not int.
+ All callers changed.
+ (calc_eclosure_iter): Likewise, for ROOT arg.
+ (parse_bracket_element): Likewise, for ACCEPT_HYPHEN arg.
+ (build_charclass_op): Likewise, for NON_MATCH arg.
+ * regex_internal.c (re_string_allocate, re_string_construct):
+ (re_string_construct_common): Likewise, for ICASE arg.
+ * regexec.c (re_search_2_stub, re_search_stub):
+ Likewise, for RET_LEN arg.
+ (check_matching): Likewise, for FL_LONGEST_MATCH arg.
+ (set_regs): Likewise, for FL_BACKTRACK arg.
+ * regcomp.c (re_compile_fastmap_iter, optimize_utf8):
+ (duplicate_node_closure, calc_inveclosure, calc_eclosure):
+ (calc_eclosure_iter, parse_bracket_exp):
+ Use bool for internal variables that are booleans.
+ * regexec.c (re_search_internal, check_matching, proceed_next_node):
+ (set_regs, build_sifted_states, sift_states_bkref):
+ (check_arrival_add_next_nodes, check_arrival_expand_ecl_sub):
+ (expand_bkref_cache, build_trtable, group_nodes_into_DFAstates):
+ (find_collation_sequence_value):
+ Likewise.
+ * regex_internal.c (re_node_set_insert, re_node_set_insert_last):
+ (re_node_set_compare):
+ Return bool, not int. All callers changed.
+ * regexec.c (check_halt_node_context, check_dst_limits):
+ (build_trtable, check_node_accept): Likewise.
+ * regex_internal.h: Include stdbool.h.
+
+ Fix bugs uncovered when converting to bool.
+ * regcomp.c (calc_eclosure_iter): Check for storage allocation
+ failure instead of charging ahead blindly.
+ * regex_internal.c (register_state): Likewise.
+ * regexec.c (re_search_2_stub): Use simpler method than boolean
+ for freeing internal storage.
+ (group_nodes_into_DFA_states): Use unsigned int, not int, for
+ bitset pieces used as boolean, to avoid undefined behavior
+ on hosts that do int overflow checking.
+
+2005-08-31 Derek Price <derek@ximbiot.com>
+
+ * getdelim.c (getdelim): Return EOF on EOF.
+ Reported by Larry Jones <lawrence.jones@ugs.com>.
+
+2005-08-31 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regex_internal.c (re_string_reconstruct): Don't assume buffer
+ lengths fit in regoff_t; this isn't true if regoff_t is the same
+ width as size_t.
+ * regex.c (re_search_internal): 5th arg is LAST_START
+ (= START + RANGE) instead of RANGE. This avoids overflow
+ problems when regoff_t is the same width as size_t.
+ All callers changed.
+ (re_search_2_stub): Check for overflow when adding the
+ sizes of the two strings.
+ (re_search_stub): Check for overflow when adding START
+ to RANGE; if it occurs, substitute the extreme value.
+
+2005-08-31 Jim Meyering <jim@meyering.net>
+
+ * regcomp.c (search_duplicated_node): Make first pointer arg
+ a pointer-to-const.
+ * regex_internal.c (create_ci_newstate, create_cd_newstate):
+ (register_state): Likewise.
+ * regexec.c (search_cur_bkref_entry, check_dst_limits):
+ (check_dst_limits_calc_pos_1, check_dst_limits_calc_pos):
+ (group_nodes_into_DFAstates): Likewise.
+
+2005-08-31 Paul Eggert <eggert@cs.ucla.edu>
+
+ On 64-bit hosts (where size_t is 64 bits and int is 32 bits), the
+ old glibc regex code mishandles strings longer than 2**31 bytes.
+ This patch fixes this when the regex code is used in gnulib
+ (i.e., outside glibc).
+
+ This patch should not affect the use of the regex code inside
+ glibc. No doubt this problem also needs to be handled for glibc
+ as well, but the result will be an incompatible change to the
+ glibc ABI, and the old ABI will have to be supported too. That
+ can be the the subject for another patch.
+
+ * regex.h (_REGEX_LARGE_OFFSETS): New feature-test macro,
+ governing whether the rest of this patch is active. By default,
+ the macro is disabled and the patch has no effect.
+ (regoff_t) [defined _REGEX_LARGE_OFFSETS]: Define to off_t, not int.
+ (__re_idx_t, __re_size_t, __re_long_size_t): New types.
+ (struct re_pattern_buffer, re_search, re_search_2, re_match):
+ (re_match_2, re_set_registers): Use the new types.
+ * regex_internal.h (Idx, re_hashval_t): New types.
+ (REG_MISSING, REG_ERROR, REG_VALID_INDEX, REG_VALID_NONZERO_INDEX):
+ New macros.
+ (re_node_set, re_charset_t, re_token_t, re_string_realloc_buffers):
+ (re_string_context_at, bin_tree_t, re_dfastate_t):
+ (struct re_state_table_entry, state_array_t, re_sub_match_last_t):
+ (re_sub_match_top_t, re_match_context_t, re_sift_context_t):
+ (struct re_fail_stack_ent_t, struct re_fail_stack_t, struct re_dfa_t):
+ (re_string_char_size_at, re_string_wchar_at):
+ (re_string_elem_size_at):
+ Use the new types and macros to port to 64-bit hosts.
+ Use unsigned types for internal values, so that the code
+ mostly works even for arrays larger than SSIZE_MAX.
+ * regcomp.c (re_compile_internal, init_dfa, duplicate_node):
+ (search_duplicated_node, calc_eclosure_iter, fetch_number):
+ (parse_reg_exp, parse_branch, parse_expression, parse_sub_exp):
+ (build_equiv_class, build_charclass, re_compile_fastmap_iter):
+ (free_dfa_content, create_initial_state, optimize_utf8, analyze):
+ (optimize_subexps, calc_first, link_nfa_nodes, duplicate_node_closure):
+ (calc_inveclosure, parse_dup_op, build_range_exp):
+ (build_collating_symbol, parse_bracket_exp, build_charclass_op):
+ (fetch_number, create_token_tree, mark_opt_subexp):
+ Likewise.
+ * regex_internal.c (re_string_construct_common, create_ci_newstate):
+ (create_cd_newstate, re_string_allocate, re_string_construct):
+ (re_string_realloc_buffers, build_wcs_upper_buffer):
+ (re_string_skip_chars, build_upper_buffer, re_string_translate_buffer):
+ (re_string_reconstruct, re_string_peek_byte_case):
+ (re_string_fetch_byte_case, re_string_context_at):
+ (re_node_set_alloc, re_node_set_init_1, re_node_set_init_2):
+ (re_node_set_init_copy, re_node_set_add_intersect):
+ (re_node_set_init_union, re_node_set_merge, re_node_set_insert):
+ (re_node_set_insert_last, re_node_set_compare, re_node_set_contains):
+ (re_node_set_remove_at, re_dfa_add_node, calc_state_hash):
+ (re_acquire_state, re_acquire_state_context, register_state):
+ Likewise.
+ * regex.c (match_ctx_init, match_ctx_add_entry, search_cur_bkref_entry):
+ (match_ctx_add_subtop, match_ctx_add_sublast, sift_ctx_init):
+ (re_search_internal, re_search_2_stub, re_search_stub)
+ (re_copy_regs, check_matching, check_halt_state_context, update_regs):
+ (push_fail_stack, sift_states_iter_mb, build_sifted_states):
+ (update_cur_sifted_state, check_dst_limits):
+ (check_dst_limits_calc_pos_1, check_dst_limits_calc_pos):
+ (check_subexp_limits, sift_states_bkref, merge_state_array):
+ (check_subexp_matching_top, get_subexp, get_subexp_sub):
+ (find_subexp_node, check_arrival, check_arrival_add_next_nodes):
+ (check_arrival_expand_ecl, check_arrival_expand_ecl_sub):
+ (expand_bkref_cache, check_node_accept_bytes):
+ (group_nodes_into_DFAstates, check_node_accept, regexec, re_match):
+ (re_search, re_match_2, re_search_2, prune_impossible_nodes):
+ (acquire_init_state_context, check_halt_node_context):
+ (proceed_next_node, pop_fail_stack, set_regs, free_fail_stack_return):
+ (sift_states_backward, clean_state_log_if_needed):
+ (sub_epsilon_src_nodes, add_epsilone_src_nodes, merge_state_with_log):
+ (find_recover_state, transit_state_sb, transit_state_mb):
+ (transit_state_bkref, build_trtable, match_ctx_clean):
+ Likewise.
+ * regcomp.c (parse_dup_op): Add an extra test if Idx is unsigned,
+ to work around an assumption that REG_MISSING is negative.
+
+ * regcomp.c (re_comp) [defined _REGEX_RE_COMP || defined _LIBC]:
+ (seek_collating_symbol_entry) [defined _LIBC]:
+ (lookup_collation_sequence_value) [defined _LIBC]:
+ (build_range_exp, build_collating_symbol) [defined _LIBC]:
+ Use prototypes rather than old-style function definitions.
+ * regexec.c (re_exec) [defined _REGEX_RE_COMP || defined _LIBC]:
+ (transit_state_sb) [0]:
+ (find_collation_sequence_value) [defined _LIBC]: Likewise.
+
+ * regexec.c (re_search_internal): Simplify update of rm_so and
+ rm_eo.
+
+ * regcomp.c (re_compile_fastmap_iter, init_dfa, init_word_char):
+ (optimize_subexps, lower_subexp):
+ Don't assume 1<<31 has defined behavior on hosts with 32-bit int,
+ since the signed shift might overflow. Use 1u<<31 instead.
+ * regex_internal.h (bitset_set, bitset_clear, bitset_contain): Likewise.
+ * regexec.c (check_dst_limits_calc_pos_1, check_subexp_matching_top):
+ Likewise.
+
+ * regcomp.c (optimize_subexps, lower_subexp):
+ Use CHAR_BIT rather than 8, for clarity.
+ * regexec.c (check_dst_limits_calc_pos_1):
+ (check_subexp_matching_top): Likewise.
+ * regcomp.c (init_dfa): Make table_size unsigned, so that we don't
+ have to worry about portability issues when shifting it left.
+ Remove no-longer-needed test for table_size > 0.
+ * regcomp.c (parse_sub_exp): Do not shift more bits than there are
+ in a word, as the resulting behavior is undefined.
+ * regexec.c (check_dst_limits_calc_pos_1): Likewise;
+ in one case, a <= should have been an <, and in another case the
+ whole test was missing.
+ * regex_internal.h (BYTE_BITS): Remove. All uses changed to
+ the standard name CHAR_BIT.
+ * regexec.c (match_ctx_add_entry): Don't assume that ~0 == -1;
+ this is not true on one's complement and signed-magnitude hosts.
+
+ * regex_internal.h (re_sub_match_top_t): Remove unused member
+ next_last_offset.
+ (struct re_dfa_t): Remove unused member states_alloc.
+ * regcomp.c (init_dfa): Don't initialize unused members.
+
+2005-08-31 Bruno Haible <bruno@clisp.org>
+
+ * strstr.c: Include <stddef.h>, for NULL.
+ * strcasestr.c: Likewise.
+ Reported by Yoann Vandoorselaere <yoann.v@prelude-ids.com>.
+
+2005-08-30 "Oskar Liljeblad" <oskar@osk.mine.nu>
+
+ * iconvme.h: Add prototype for iconv_alloc.
+
+2005-08-29 Simon Josefsson <jas@extundo.com>
+
+ * iconvme.c: Fix errno.
+
+2005-08-29 "Oskar Liljeblad" <oskar@osk.mine.nu>
+
+ * iconvme.c: Split iconv_string into iconv_alloc.
+
+2005-08-27 Jim Meyering <jim@meyering.net>
+
+ * fopen-safer.c: Merge minor changes from coreutils.
+ * dup-safer.c: Likewise.
+ * fd-safer.c: Likewise.
+
+ Merge from coreutils.
+ * stdio--.h: New file.
+ * stdlib--.h: New file.
+ * mkstemp-safer.c: New file.
+
+ GNU tar needs these.
+ * pipe-safer.c: New file.
+ * creat-safer.c: New file.
+ * fcntl--.h (creat): Define to creat_safer.
+ * fcntl-safer.h: Include <sys/types.h> and declare creat_safer.
+ * unistd--.h (pipe): Define to pipe_safer.
+ * unistd-safer.h: Declare pipe_safer.
+
+2005-08-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regex_internal.h: Remove all references to
+ RE_NO_INTERNAL_PROTOTYPES; no longer neeeded now that we assume C89
+ or better.
+ (bitset_not, bitset_merge, bitset_not_merge):
+ (bitset_mask, re_string_allocate, re_string_construct):
+ (re_string_reconstruct, re_string_destruct, re_string_elem_size_at):
+ (re_string_char_size_at, re_string_wchar_at, re_string_peek_byte_case):
+ (re_string_fetch_byte_case, re_node_set_alloc, re_node_set_init_1):
+ (re_node_set_init_2, re_node_set_init_copy, re_node_set_add_intersect):
+ (re_node_set_init_union, re_node_set_merge, re_node_set_insert):
+ (re_node_set_insert_last, re_node_set_compare, re_node_set_contains):
+ (re_node_set_remove_at, re_dfa_add_node, re_acquire_state):
+ (re_acquire_state_context):
+ Remove unnecessary forward decls.
+ (re_string_char_size_at, re_string_wchar_at, re_string_elem_size_at):
+ Put __attribute at function definition,
+ now that the function decl has been removed.
+ * lib/regex_internal.c (re_string_peek_byte_case):
+ (re_string_fetch_byte_case, re_node_set_compare, re_node_set_contains):
+ Likewise.
+
+2005-08-26 Simon Josefsson <jas@extundo.com>
+
+ * getpass.c: Use _WIN32 instead of WIN32, suggested by Bruno
+ Haible <bruno@clisp.org>.
+
+2005-08-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regexec.c (set_regs): Don't alloca with an unbounded size.
+
+ alloca modernization/simplification for regex.
+ * regex.c: Remove portability cruft for alloca. This no longer
+ needs to be at the start of the file, and can be moved into
+ regex_internal.h and simplified.
+ * regex_internal.h: Include <alloca.h>.
+ (__libc_use_alloca) [!defined _LIBC]: New macro.
+ * regexec.c (build_trtable): Remove "#ifdef _LIBC", since the code
+ now works outside glibc.
+
+2005-08-24 Simon Josefsson <jas@extundo.com>
+
+ * getpass.c: Add WIN32 implementation. Conditionalize use of
+ termios.h, tcgetattr, tcsetattr and __fsetlocking. Remove some
+ GLIBC specific code.
+
+2005-08-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ Make regex safe for g++. This fixes one real bug (an "err"
+ that should have been "*err"). g++ problem reported by
+ Sam Steingold.
+ * regex_internal.h (re_calloc): New macro, consistent with
+ re_malloc etc. All callers of calloc changed to use re_calloc.
+ * regex_internal.c (build_wcs_upper_buffer): Return reg_errcode_t,
+ not int. All callers changed.
+ * regcomp.c (re_compile_fastmap_iter): Don't use alloca (mb_cur_max);
+ just use an array of size MB_LEN_MAX.
+ * regexec.c (push_fail_stack): Use re_realloc, not realloc.
+ (find_recover_state): Change "err" to "*err"; this fixes what
+ appears to be a real bug.
+ (check_arrival_expand_ecl_sub): Be consistent about reg_errcode_t
+ versus int.
+
+2005-08-25 Jim Meyering <jim@meyering.net>
+
+ * open-safer.c: Include <config.h>.
+ Otherwise, we'd lose LARGEFILE support in any file using
+ e.g. "fcntl--.h"
+
+2005-08-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regcomp.c (regerror): 2nd arg is 'restrict', as per POSIX.
+ * regex.h (regerror): Likewise.
+
+ * regex.c: Do not include <sys/types.h>, as POSIX no longer
+ requires this. (The code never needed it.)
+
+ * regcomp.c, regex_internal.c, regex_internal.h, regexec.c:
+ All uses of recently-renamed identifiers changed to use the new,
+ POSIX-compliant names. The code will build and run just fine
+ without these changes, but it's better to eat our own dog food
+ and use the standard-conforming names.
+
+ * regex.h: Fix a multitude of POSIX name space violations.
+ These changes have an effect only for programs that define
+ _POSIX_C_SOURCE, _POSIX_SOURCE, or _XOPEN_SOURCE; they
+ do not change anything for programs compiled in the normal way.
+ Also, there is no effect on the ABI.
+
+ (_REGEX_SOURCE): New macro.
+ Do not include <stddef.h> if _XOPEN_SOURCE and VMS are both
+ defined and _GNU_SOURCE is not; this fixes a name space violation.
+
+ Rename the following macros to obey POSIX requirements.
+ The old names are still visible as macros if _REGEX_SOURCE is defined.
+ (REG_BACKSLASH_ESCAPE_IN_LISTS): renamed from
+ RE_BACKSLASH_ESCAPE_IN_LISTS.
+ (REG_BK_PLUS_QM): renamed from RE_BK_PLUS_QM.
+ (REG_CHAR_CLASSES): renamed from RE_CHAR_CLASSES.
+ (REG_CONTEXT_INDEP_ANCHORS): renamed from RE_CONTEXT_INDEP_ANCHORS.
+ (REG_CONTEXT_INDEP_OPS): renamed from RE_CONTEXT_INDEP_OPS.
+ (REG_CONTEXT_INVALID_OPS): renamed from RE_CONTEXT_INVALID_OPS.
+ (REG_DOT_NEWLINE): renamed from RE_DOT_NEWLINE.
+ (REG_DOT_NOT_NULL): renamed from RE_DOT_NOT_NULL.
+ (REG_HAT_LISTS_NOT_NEWLINE): renamed from RE_HAT_LISTS_NOT_NEWLINE.
+ (REG_INTERVALS): renamed from RE_INTERVALS.
+ (REG_LIMITED_OPS): renamed from RE_LIMITED_OPS.
+ (REG_NEWLINE_ALT): renamed from RE_NEWLINE_ALT.
+ (REG_NO_BK_BRACES): renamed from RE_NO_BK_BRACES.
+ (REG_NO_BK_PARENS): renamed from RE_NO_BK_PARENS.
+ (REG_NO_BK_REFS): renamed from RE_NO_BK_REFS.
+ (REG_NO_BK_VBAR): renamed from RE_NO_BK_VBAR.
+ (REG_NO_EMPTY_RANGES): renamed from RE_NO_EMPTY_RANGES.
+ (REG_UNMATCHED_RIGHT_PAREN_ORD): renamed from
+ RE_UNMATCHED_RIGHT_PAREN_ORD.
+ (REG_NO_POSIX_BACKTRACKING): renamed from RE_NO_POSIX_BACKTRACKING.
+ (REG_NO_GNU_OPS): renamed from RE_NO_GNU_OPS.
+ (REG_DEBUG): renamed from RE_DEBUG.
+ (REG_INVALID_INTERVAL_ORD): renamed from RE_INVALID_INTERVAL_ORD.
+ (REG_IGNORE_CASE): renamed from RE_ICASE. This renaming is a bit
+ unusual, since we can't clash with the POSIX REG_ICASE.
+ (REG_CARET_ANCHORS_HERE): renamed from RE_CARET_ANCHORS_HERE.
+ (REG_CONTEXT_INVALID_DUP): renamed from RE_CONTEXT_INVALID_DUP.
+ (REG_NO_SUB): renamed from RE_NO_SUB.
+ (REG_SYNTAX_EMACS): renamed from RE_SYNTAX_EMACS.
+ (REG_SYNTAX_AWK): renamed from RE_SYNTAX_AWK.
+ (REG_SYNTAX_GNU_AWK): renamed from RE_SYNTAX_GNU_AWK.
+ (REG_SYNTAX_POSIX_AWK): renamed from RE_SYNTAX_POSIX_AWK.
+ (REG_SYNTAX_GREP): renamed from RE_SYNTAX_GREP.
+ (REG_SYNTAX_EGREP): renamed from RE_SYNTAX_EGREP.
+ (REG_SYNTAX_POSIX_EGREP): renamed from RE_SYNTAX_POSIX_EGREP.
+ (REG_SYNTAX_ED): renamed from RE_SYNTAX_ED.
+ (REG_SYNTAX_SED): renamed from RE_SYNTAX_SED.
+ (_REG_SYNTAX_POSIX_COMMON): renamed from _RE_SYNTAX_POSIX_COMMON.
+ (REG_SYNTAX_POSIX_BASIC): renamed from RE_SYNTAX_POSIX_BASIC.
+ (REG_SYNTAX_POSIX_MINIMAL_BASIC): renamed from
+ RE_SYNTAX_POSIX_MINIMAL_BASIC.
+ (REG_SYNTAX_POSIX_EXTENDED): renamed from RE_SYNTAX_POSIX_EXTENDED.
+ (REG_SYNTAX_POSIX_MINIMAL_EXTENDED): renamed from
+ RE_SYNTAX_POSIX_MINIMAL_EXTENDED.
+ (REG_DUP_MAX): renamed from RE_DUP_MAX. No need to undef it.
+ (REG_UNALLOCATED): Renamed from REGS_UNALLOCATED.
+ (REG_REALLOCATE): Renamed from REGS_REALLOCATE.
+ (REG_FIXED): Renamed from REGS_FIXED.
+ (REG_NREGS): Renamed from RE_NREGS.
+
+ (REG_ICASE, REG_NEWLINE, REG_NOSUB): Do not depend on the values
+ of other REG_* macros, since POSIX says the user is allowed to
+ #undef these macros selectively.
+
+ (reg_errcode_t): Update comment stating what other tables need
+ to be consistent.
+
+ Rename the following enum values to obey POSIX requirements.
+ The old names are still visible as macros.
+ (_REG_ENOSYS): Renamed from REG_ENOSYS. Define even if _XOPEN_SOURCE
+ is not defined, since GNU is supposed to be a superset of POSIX as
+ much as possible, and since we want reg_errcode_t to be a signed
+ type for implementation consistency.
+ (_REG_NOERROR): Renamed from REG_NOERROR.
+ (_REG_NOMATCH): Renamed from REG_NOMATCH.
+ (_REG_BADPAT): Renamed from REG_BADPAT.
+ (_REG_ECOLLATE): Renamed from REG_ECOLLATE.
+ (_REG_ECTYPE): Renamed from REG_ECTYPE.
+ (_REG_EESCAPE): Renamed from REG_EESCAPE.
+ (_REG_ESUBREG): Renamed from REG_ESUBREG.
+ (_REG_EBRACK): Renamed from REG_EBRACK.
+ (_REG_EPAREN): Renamed from REG_EPAREN.
+ (_REG_EBRACE): Renamed from REG_EBRACE.
+ (_REG_BADBR): Renamed from REG_BADBR.
+ (_REG_ERANGE): Renamed from REG_ERANGE.
+ (_REG_ESPACE): Renamed from REG_ESPACE.
+ (_REG_BADRPT): Renamed from REG_BADRPT.
+ (_REG_EEND): Renamed from REG_EEND.
+ (_REG_ESIZE): Renamed from REG_ESIZE.
+ (_REG_ERPAREN): Renamed from REG_ERPAREN.
+ (REG_ENOSYS, REG_NOERROR, REG_NOMATCH, REG_BADPAT, REG_ECOLLATE):
+ (REG_ECTYPE, REG_EESCAPE, REG_ESUBREG, REG_EBRACK, REG_EPAREN):
+ (REG_EBRACE, REG_BADBR, REG_ERANGE, REG_ESPACE, REG_BADRPT, REG_EEND):
+ (REG_ESIZE, REG_ERPAREN): Now macros, not enum constants.
+
+ (_REG_RE_NAME, _REG_RM_NAME): New macros.
+ (REG_TRANSLATE_TYPE): Renamed from RE_TRANSLATE_TYPE. All uses
+ changed. But support the old name if the new one is not defined
+ and if _REGEX_SOURCE.
+
+ Change the following member names in struct re_pattern_buffer.
+ The old names are still supported if !_REGEX_SOURCE.
+ The new names are always supported, regardless of _REGEX_SOURCE.
+ (re_buffer): Renamed from buffer.
+ (re_allocated): Renamed from allocated.
+ (re_used): Renamed from used.
+ (re_syntax): Renamed from syntax.
+ (re_fastmap): Renamed from fastmap.
+ (re_translate): Renamed from translate.
+ (re_can_be_null): Renamed from can_be_null.
+ (re_regs_allocated): Renamed from regs_allocated.
+ (re_fastmap_accurate): Renamed from fastmap_accurate.
+ (re_no_sub): Renamed from no_sub.
+ (re_not_bol): Renamed from not_bol.
+ (re_not_eol): Renamed from not_eol.
+ (re_newline_anchor): Renamed from newline_anchor.
+
+ Change the following member names in struct re_registers.
+ The old names are still supported if !_REGEX_SOURCE.
+ The new names are always supported, regardless of _REGEX_SOURCE.
+ (rm_num_regs): Renamed from num_regs.
+ (rm_start): Renamed from start.
+ (rm_end): Renamed from end.
+
+ (re_set_syntax, re_compile_pattern, re_compile_fastmap):
+ (re_search, re_search_2, re_match, re_match_2, re_set_registers):
+ Prepend __ to parameter names.
+
+ Undo yesterday's changes.
+
+2005-08-24 Jim Meyering <jim@meyering.net>
+
+ Sync from coreutils.
+ * fcntl--.h, fcntl-safer.h, open-safer.c: New files.
+
+2005-08-21 Bruno Haible <bruno@clisp.org>
+
+ * lock.h: Add multiple inclusion guard.
+ * tls.h: Add multiple inclusion guard.
+
+2005-08-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regex.h (REG_NOSYS)
+ [!defined _XOPEN_SOURCE && 200112L <= _POSIX_C_SOURCE]:
+ Define, since POSIX requires it as of 2001.
+ (_REG_ENOSYS) [! (defined _XOPEN_SOURCE || 200112L <= _POSIX_C_SOURCE)]:
+ New private symbol, used to keep the enum signed in all cases.
+ * regex.h (RE_NO_EMPTY_RANGES): Fix doc bug reported by James Youngman
+ in <http://lists.gnu.org/archive/html/bug-gnulib/2005-07/msg00132.html>.
+
+ * regex_internal.c (re_string_skip_chars, register_state):
+ (calc_state_hash):
+ Remove forward decls; no longer needed now that we use prototypes.
+ * regexec.c (acquire_init_state_context, check_halt_node_context):
+ (proceed_next_node, pop_fail_stack, sub_epsilon_src_nodes):
+ (clean_state_log_if_needed): Likewise.
+
+2005-08-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix problems reported by Sam Steingold in
+ <http://lists.gnu.org/archive/html/bug-gnulib/2005-08/msg00007.html>.
+ * regexec.c (sift_states_bkref): Fix portability bug: the code
+ assumed that reg_errcode_t is a signed type, which is not
+ necessarily true if _XOPEN_SOURCE is not defined.
+ * regex_internal.c (calc_state_hash): Put 'inline' before type, since
+ some compilers warn about it otherwise.
+
+2005-08-20 Jim Meyering <jim@meyering.net>
+
+ * regexec.c (regexec, re_search_stub) [!_LIBC]: Omit declaration
+ of unused local, dfa.
+
+2005-08-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regcomp.c (create_initial_state): Remove duplicate decl.
+ (init_word_char, create_initial_state, duplicate_node_closure):
+ (fetch_token, peek_token_bracket, build_range_exp):
+ (build_collating_symbol): Remove forward decls; no longer needed
+ now that we use prototypes.
+
+ * regcomp.c:
+ (re_compile_pattern, re_set_syntax, re_compile_fastmap):
+ (re_compile_fastmap_iter, regcomp, regerror, regfree):
+ (re_compile_internal, init_dfa, init_word_char, free_workarea_compile):
+ (create_initial_state, optimize_utf8, analyze, postorder, preorder):
+ (optimize_subexps, lower_subexps, lower_subexp, calc_first, calc_next):
+ (link_nfa_nodes, duplicate_node_closure, search_duplicated_node):
+ (duplicate_node, calc_inveclosure, calc_eclosure, calc_eclosure_iter):
+ (fetch_token, peek_token, peek_token_bracket, parse, parse_reg_exp):
+ (parse_branch, parse_expression, parse_sub_exp, parse_dup_op):
+ (build_range_exp, build_collating_symbol, parse_bracket_exp):
+ (parse_bracket_element, parse_bracket_symbol, build_equiv_class):
+ (build_charclass, build_charclass_op, fetch_number, create_tree):
+ (create_token_tree, mark_opt_subexp, duplicate_tree):
+ Use prototypes rather than old-style definitions.
+
+ * regex_internal.c:
+ (re_string_allocate, re_string_construct, re_string_realloc_buffers):
+ (re_string_construct_common, build_wcs_buffer, build_wcs_upper_buffer):
+ (re_string_skip_chars, build_upper_buffer, re_string_translate_buffer):
+ (re_string_reconstruct, re_string_peek_byte_case):
+ (re_string_fetch_byte_case, re_string_destruct, re_string_context_at):
+ (re_node_set_alloc, re_node_set_init_1, re_node_set_init_2):
+ (re_node_set_init_copy, re_node_set_add_intersect):
+ (re_node_set_init_union, re_node_set_merge, re_node_set_insert):
+ (re_node_set_insert_last, re_node_set_compare, re_node_set_contains):
+ (re_node_set_remove_at, re_dfa_add_node, calc_state_hash):
+ (re_acquire_state, re_acquire_state_context, register_state):
+ (create_ci_newstate, create_cd_newstate, free_state):
+ Likewise.
+ * regexec.c (regexec, re_match, re_search, re_match_2, re_search_2):
+ (re_search_2_stub, re_search_stub, re_copy_regs, re_set_registers):
+ (re_search_internal, prune_impossible_nodes):
+ (acquire_init_state_context, check_matching, static):
+ (check_halt_node_context, check_halt_state_context, proceed_next_node):
+ (push_fail_stack, pop_fail_stack, set_regs, free_fail_stack_return):
+ (update_regs, sift_states_backward, build_sifted_states):
+ (clean_state_log_if_needed, merge_state_array):
+ (update_cur_sifted_state, add_epsilon_src_nodes):
+ (sub_epsilon_src_nodes, check_dst_limits, check_dst_limits_calc_pos_1):
+ (check_dst_limits_calc_pos, check_subexp_limits, sift_states_bkref):
+ (sift_states_iter_mb, transit_state, merge_state_with_log, static):
+ (find_recover_state, check_subexp_matching_top, transit_state_mb):
+ (transit_state_bkref, get_subexp, get_subexp_sub, find_subexp_node):
+ (check_arrival, check_arrival_add_next_nodes):
+ (check_arrival_expand_ecl, check_arrival_expand_ecl_sub):
+ (expand_bkref_cache, build_trtable, group_nodes_into_DFAstates):
+ (check_node_accept_bytes, check_node_accept, extend_buffers):
+ (match_ctx_init, match_ctx_clean, match_ctx_free, match_ctx_add_entry):
+ (search_cur_bkref_entry, match_ctx_add_subtop, match_ctx_add_sublast):
+ (sift_ctx_init):
+ Likewise.
+
+ * regex_internal.h:
+ (re_string_allocate, re_string_construct, re_string_reconstruct):
+ (re_string_realloc_buffers, build_wcs_buffer, build_wcs_upper_buffer):
+ (build_upper_buffer, re_string_translate_buffer, re_string_destruct):
+ (re_string_elem_size_at, re_string_char_size_at, re_string_wchar_at):
+ (re_string_context_at, re_string_peek_byte_case):
+ (re_string_fetch_byte_case): Declare even if RE_NO_INTERNAL_PROTOTYPES
+ is defined, since we now use prototypes always.
+
+ * regex.h (_RE_ARGS): Remove. No longer needed, since we assume
+ C89 or better. All uses removed.
+
+2005-08-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regex_internal.c (re_acquire_state, re_acquire_state_context)
+ [defined lint]: Suppress bogus uninitialized-variable warnings.
+
+ * regcomp.c (duplicate_node): Return new index, not an error code,
+ and let the caller return REG_ESPACE if out of space. This
+ removes an uninitialied-variable warning with GCC 4.0.1, and also
+ avoids taking the address of a local variable. All callers
+ changed.
+
+2005-08-19 Jim Meyering <jim@meyering.net>
+
+ * regexec.c (proceed_next_node): Redo local variables to
+ avoid GCC shadowing warnings.
+
+2005-08-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regex_internal.c (re_string_realloc_buffers, re_node_set_insert):
+ (re_node_set_insert_last, re_dfa_add_node):
+ Rename local variables to avoid GCC shadowing warnings.
+
+2005-08-18 Bruno Haible <bruno@clisp.org>
+
+ * strstr.c (strstr): Fix return value in multibyte case.
+ * strcasestr.c (strcasestr): Likewise.
+
+2005-08-17 Jim Meyering <jim@meyering.net>
+
+ Make the %s format (seconds since the epoch) work for a negative
+ number and when used with a zero-padded field width, e.g. %015s.
+
+ * strftime.c (my_strftime): Move the `do_number_sign_and_padding'
+ label so that it precedes the code to set `digits'. Otherwise,
+ %0Ns wouldn't work. Before this change, `date -d @-22 +%05s' would
+ print `00-22'. Now, it prints `-0022', as it should.
+
+2005-08-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regex.h: Remove useless space-before-tab. From coreutils.
+
+2005-08-17 Bruno Haible <bruno@clisp.org>
+
+ * strcasestr.h: New file.
+ * strcasestr.c: New file.
+