view lib/ChangeLog @ 7329:c11bdf6103c7

* getaddrinfo.c (getaddrinfo) [defined HAVE_IPV6]: Fix typo that prevented coreutils 6.1 from building. Problem reported by Petter Reinholdtsen.
author Paul Eggert <>
date Mon, 18 Sep 2006 18:07:04 +0000
parents 251167cff509
children a6bfb21a7e0d
line wrap: on
line source

2006-09-18  Paul Eggert  <>

	* getaddrinfo.c (getaddrinfo) [defined HAVE_IPV6]: Fix typo
	that prevented coreutils 6.1 from building.  Problem reported
	by Petter Reinholdtsen.

2006-09-18  Jim Meyering  <>

	* savewd.c (savewd_restore): Don't shadow: s/status/child_status/.

2006-09-15  Paul Eggert  <>

	* dirchownmod.c: Don't include fcntl.h; no longer needed.
	(dirchownmod): New arg FD.  All callers changed.
	Use FD rather than opening the directory ourself, as opening is
	now the caller's responsibility.
	* dirchownmod.h: Likewise.
	* mkancesdirs.c: Include <sys/types.h>, for portability to older
	hosts that require <sys/types.h> before <sys/stat.h>.  Include
	fcntl.h, savewd.h, and unistd.h, not dirname.h and stat-macros.h.
	(test_dir): Remove.
	(mkancesdirs): Return length of prefix of FILE that has already
	been made, or -2 if there is a child doing the work.  Redo
	algorithm so that it is O(N) rather than O(N**2).  Optimize away
	".", and treat ".." specially since it might stray back into
	already-created areas.  Use a subprocess if necessary.  New arg
	WD; all users changed.  MAKE_DIR function should now return 1
	if it creates a directory that is not readable.  Return -2 if
	a child process is spun off.
	* mkancesdirs.h: Include <stddef.h>, for ptrdiff_t.
	Adjust signature to match code.
	* mkdir-p.c: Include dirname.h, for IS_ABSOLUTE_FILE_NAME.
	(make_dir_parents): Use a subprocess if necessary.  New arg WD;
	all users changed.
	* savewd.c, savewd.h: New files.

2006-09-15  Jim Meyering  <>

	* rename-dest-slash.c (has_trailing_slash): Use
	(rpl_rename_dest_slash): Perform the cheaper trailing slash
	test before testing whether SRC is a directory.
	Suggestions from Bruno Haible.

	Avoid a warning about an unused variable.
	* regex_internal.c (re_dfa_add_node): Move declaration of "type"
	into the #ifdef block where it's used.

	* rename-dest-slash.c: New file.

2006-09-14  Bruno Haible  <>

	* allocsa.c: Include <config.h> unconditionally.
	* asnprintf.c: Likewise.
	* asprintf.c: Likewise.
	* c-strcasecmp.c: Likewise.
	* c-strcasestr.c: Likewise.
	* c-strncasecmp.c: Likewise.
	* c-strstr.c: Likewise.
	* classpath.c: Likewise.
	* clean-temp.c: Likewise.
	* concatpath.c: Likewise.
	* copy-file.c: Likewise.
	* csharpcomp.c: Likewise.
	* csharpexec.c: Likewise.
	* execute.c: Likewise.
	* fatal-signal.c: Likewise.
	* findprog.c: Likewise.
	* fwriteerror.c: Likewise.
	* gl_array_list.c: Likewise.
	* gl_array_oset.c: Likewise.
	* gl_avltree_list.c: Likewise.
	* gl_avltree_oset.c: Likewise.
	* gl_avltreehash_list.c: Likewise.
	* gl_carray_list.c: Likewise.
	* gl_linked_list.c: Likewise.
	* gl_linkedhash_list.c: Likewise.
	* gl_list.c: Likewise.
	* gl_oset.c: Likewise.
	* gl_rbtree_list.c: Likewise.
	* gl_rbtree_oset.c: Likewise.
	* gl_rbtreehash_list.c: Likewise.
	* imaxabs.c: Likewise.
	* imaxdiv.c: Likewise.
	* javacomp.c: Likewise.
	* javaexec.c: Likewise.
	* javaversion.c: Likewise.
	* linebreak.c: Likewise.
	* localcharset.c: Likewise.
	* lock.c: Likewise.
	* mbchar.c: Likewise.
	* mbswidth.c: Likewise.
	* mkdtemp.c: Likewise.
	* pipe.c: Likewise.
	* printf-args.c: Likewise.
	* printf-parse.c: Likewise.
	* progname.c: Likewise.
	* progreloc.c: Likewise.
	* readlink.c: Likewise.
	* sh-quote.c: Likewise.
	* stpcpy.c: Likewise.
	* stpncpy.c: Likewise.
	* strcasecmp.c: Likewise.
	* strcasestr.c: Likewise.
	* strcspn.c: Likewise.
	* striconv.c: Likewise.
	* strncasecmp.c: Likewise.
	* strnlen1.c: Likewise.
	* strstr.c: Likewise.
	* strtok_r.c: Likewise.
	* tls.c: Likewise.
	* tmpdir.c: Likewise.
	* unicodeio.c: Likewise.
	* unsetenv.c: Likewise.
	* vasnprintf.c: Likewise.
	* vasprintf.c: Likewise.
	* wait-process.c: Likewise.
	* xallocsa.c: Likewise.
	* xsetenv.c: Likewise.
	* xstriconv.c: Likewise.

2006-09-13  Eric Blake  <>

	* getopt.c: Fix typo in last commit.

2006-09-13  Paul Eggert  <>

	* _fpending.c: Include <config.h> unconditionally, since we no
	longer worry about uses that don't define HAVE_CONFIG_H.
	* acl.c, alloca.c, argmatch.c, atexit.c, backupfile.c:
	* basename.c, c-stack.c, c-strtod.c, calloc.c, canon-host.c:
	* canonicalize.c, chdir-long.c, chdir-safer.c, chown.c:
	* cloexec.c, close-stream.c, closeout.c, creat-safer.c:
	* cycle-check.c, diacrit.c, dirchownmod.c, dirfd.c, dirname.c:
	* dup-safer.c, dup2.c, error.c, euidaccess.c, exclude.c:
	* exitfail.c, fchmodat.c, fchown-stub.c, fd-safer.c:
	* file-type.c, fileblocks.c, filemode.c, filenamecat.c:
	* fnmatch.c, fopen-safer.c, fprintftime.c, free.c, fsusage.c:
	* ftruncate.c, fts-cycle.c, fts.c, full-write.c, gai_strerror.c:
	* getcwd.c, getdate.y, getdomainname.c, getgroups.c:
	* gethostname.c, gethrxtime.c, getloadavg.c, getlogin_r.c:
	* getndelim2.c, getnline.c, getopt.c, getopt1.c, getpass.c:
	* gettime.c, gettimeofday.c, getugroups.c, getusershell.c:
	* glob.c, group-member.c, hard-locale.c, hash-pjw.c, hash.c:
	* human.c, idcache.c, inet_ntop.c, inet_pton.c, inttostr.c:
	* isdir.c, lchown.c, linebuffer.c, long-options.c, lstat.c:
	* malloc.c, md5.c, memcasecmp.c, memchr.c, memcmp.c, memcoll.c:
	* memcpy.c, memmove.c, memrchr.c, mkancesdirs.c, mkdir-p.c:
	* mkdir.c, mkdirat.c, mkstemp-safer.c, mkstemp.c, modechange.c:
	* mountlist.c, nanosleep.c, obstack.c, open-safer.c:
	* openat-die.c, openat.c, pagealign_alloc.c, physmem.c:
	* pipe-safer.c, posixtm.c, posixver.c, putenv.c, quote.c:
	* quotearg.c, raise.c, readtokens.c, readtokens0.c, readutmp.c:
	* realloc.c, regex.c, rename.c, rmdir.c, rpmatch.c, safe-read.c:
	* same.c, save-cwd.c, savedir.c, setenv.c, settime.c, sha1.c:
	* sig2str.c, snprintf.c, strdup.c, strerror.c, strftime.c:
	* stripslash.c, strndup.c, strnlen.c, strpbrk.c, strtod.c:
	* strtoimax.c, strtol.c, strverscmp.c, tempname.c, time_r.c:
	* timegm.c, tmpfile-safer.c, unlinkdir.c, userspec.c, utime.c:
	* utimecmp.c, utimens.c, version-etc-fsf.c, version-etc.c:
	* xalloc-die.c, xgetcwd.c, xgethostname.c, xmalloc.c:
	* xmemcoll.c, xnanosleep.c, xreadlink.c, xstrtod.c:
	* xstrtoimax.c, xstrtol.c, xstrtoumax.c, yesno.c:

2006-09-12  Jim Meyering  <>

	* nanosleep.c: Include <sys/types.h> before sys/select.h, to avoid
	compilation failure (due to use of pid_t in latter) on NetBSD 1.6.
	Reported by Nelson H. F. Beebe.

2006-09-12  Sergey Poznyakoff  <>

	* argp-help.c (argp_doc): Make sure NULL is not passed to

2006-09-10  Bruno Haible  <>

	* mkdtemp.c: Include <stdint.h> always. Don't include <inttypes.h>.

2006-09-10  Sergey Poznyakoff  <>

	* argp-parse.c (__argp_parse) [!_LIBC]: Make sure
	program_invocation_name and program_invocation_short_name are
	* argp-namefrob.h: Move declarations of program_invocation_name
	and program_invocation_short_name to argp.h, so they are visible
	to user programs.
	* argp.h: Likewise

2006-09-09  Sergey Poznyakoff  <>

	* argp.h (struct argp): Document the N_("..") "\v" N_("..")
	convention.  Text proposed by Bruno Haible.
	(struct argp_option): Document the use of N_() wrappers.

	* argp-help.c (argp_doc): Split the untranslated doc string on '\v',
	and translate the two parts separately, instead of feeding
	the whole string to gettext.  This allows to exclude
	'\v' from the strings visible to the translator by writing doc
	strings as N_("..") "\v" N_("..").

2006-09-08  Paul Eggert  <>

	* mktime.c (guess_time_tm): Fix bug where mktime
	returned the maximum time_t value rather than (time_t) -1.
	Problem originally reported by William Bardwell

	* isapipe.h (HAVE_FIFO_PIPES) [!defined HAVE_FIFO_PIPES]:
	Moved to here ...
	* isapipe.c (HAVE_FIFO_PIPES) [!defined HAVE_FIFO_PIPES]:
	... from here.

2006-09-06  Bruno Haible  <>

	* striconv.h: New file.
	* striconv.c: New file, merging iconvme.c with GNU gettext's
	* xstriconv.h: New file.
	* xstriconv.c: New file.

2006-09-05  Ralf Wildenhues <>

	* argz_.h: Sync from Libtool.

	2006-09-04  George Bosilca <>
		and Ralf Wildenhues <>

	* libltdl/argz_.h: It's __cplusplus, not _cplusplus.

2006-09-05  Davide Angelocola <>

	* trim.h: New file.
	* trim.c: New file.

2006-09-01  Paul Eggert  <>

	Problem reported by Ralf Wildenhues in

	* mountlist.c: All uses of HAVE_F_FSTYPENAME_IN_STATFS replaced by

2006-08-31  Paul Eggert  <>

	* getloadavg.c [defined gl_GETLOADAVG]: Don't include config.h
	or stdbool.h, because they might not exist while configuring.

	* chdir-long.c: Include <fcntl.h>, for O_DIRECTORY.
	Don't include unistd.h or limits.h; not needed, since chdir-long.h
	does that for us.
	(O_DIRECTORY): Remove.

2006-08-30  Paul Eggert  <>

	Work around a bug in both the Linux and SunOS 64-bit kernels:
	nanosleep mishandles sleeps for longer than 2**31 seconds.
	Problem reported by Frank v Waveren in
	* nanosleep.c (BILLION): New constant.
	(getnow) [HAVE_BUG_BIG_NANOSLEEP]: New functions.
	(rpl_nanosleep) [HAVE_BUG_BIG_NANOSLEEP]: Completely new implementation.

2006-08-30  Jim Meyering  <>

	* isapipe.c (isapipe): Rename local s/fd/fd_pair/ to avoid shadowing
	the parameter.

2006-08-29  Paul Eggert  <>

	* isapipe.c, isapipe.h: New files.

2006-08-29  Eric Blake  <>

	* error.c (error_at_line, print_errno_message): Match libc, after
	resolution of upstream bug 3044.

2006-08-29  Bruno Haible  <>

	* localcharset.c: Include configmake.h in order to get LIBDIR defined.

2006-08-29  Ralf Wildenhues  <>

	Sync from Libtool:

	2006-08-28  Ralf Wildenhues  <>

	* libltdl/argz.c: Use `#ifdef HAVE_CONFIG_H', to facilitate code
	sharing with gnulib.  Report by Eric Blake.

2006-08-28  Paul Eggert  <>

	* fcntl_.h: New file.
	* chdir-safer.c (O_DIRECTORY, O_NOFOLLOW): Remove, now that we have
	the fcntl module.
	* dirchownmod.c: Likewise.
	* fts.c: Likewise.

	* inttypes_.h [defined _GL_JUST_INCLUDE_ABSOLUTE_INTTYPES_H]:
	Include @ABSOLUTE_INTTYPES_H@ if available, but do nothing else.
	just before including <inttypes.h>, to avoid circular inclusion.

2006-08-28  Bruno Haible  <>

	* inttypes_.h (SCNX*): Remove definitions.
	Reported by Eric Blake.

2006-08-26  Bruno Haible  <>

	* vasnprintf.c (EOVERFLOW): Remove definition.
	(VASNPRINTF): Return a string of length > INT_MAX without failing.
	* vasprintf.c: Include errno.h, limits.h.
	(EOVERFLOW): New fallback definition.
	(vasprintf): Test here whether the string length is > INT_MAX.
	* vsnprintf.c: Include errno.h, limits.h.
	(EOVERFLOW): New fallback definition.
	(vsnprintf): Fix bug when generated string was too long for the buffer.
	Test here whether the string length is > INT_MAX.

2006-08-26  Bruno Haible  <>
	    Simon Josefsson  <>

	BeOS portability.
	* getaddrinfo.c (PF_INET, PF_UNSPEC): New macros.

2006-08-28  Bruno Haible  <>

	* c-strstr.h: New file, from GNU gettext.
	* c-strstr.c: New file, from GNU gettext.

2006-08-26  Bruno Haible  <>

	* inttypes_.h: New file.
	* inttypes.h: Remove file.
	* stdint_.h: Include <inttypes.h> through its absolute filename.

	* imaxabs.c: New file.

	* imaxdiv.c: New file.

2006-08-22  Bruno Haible  <>

	* readutmp.h: Skip most definitions if neither <utmp.h> nor
	<utmpx.h> exists.

2006-08-21  Paul Eggert  <>

	BeOS portability.
	* dirchownmod.c (dirchownmod): Don't use fchmod if it doesn't exist.
	Problem reported by Bruno Haible.

2006-08-21  Bruno Haible  <>

	BeOS portability.
	* mbchar.h: Include <wctype.h> only if it exists.

2006-08-20  Paul Eggert  <>

	* cycle-check.h: Include <stdint.h> unconditionally, since we
	now assume the stdint module.  Do not include inttypes.h.
	* fsusage.h: Likewise.
	* getndelim2.c: Likewise.
	* human.h: Likewise.
	* inttostr.h: Likewise.
	* obstack.c: Likewise.
	* regex_internal.h: Likewise.
	* tempname.c: Likewise.
	* utimecmp.c: Likewise.
	* xstrtol.h: Likewise.

	* stat_.h: Fix typo: HAVE_FUNC_LSTAT -> HAVE_LSTAT.

	* strtoimax.c: Adjust to macro name changes in Autoconf,
	* xtime.h: Likewise.

2006-08-19  Paul Eggert  <>

	* fchmodat.c: New file, from coreutils.  This was inadvertently
	omitted in the 2006-08-17 update.  Problem reported by Jay Youngman.

2006-08-18  Bruno Haible  <>

	* mountlist.c [MOUNTED_GETMNTINFO2]: Include sys/statvfs.h.
	(ME_DUMMY): Treat "kernfs" as a dummy.
	(read_file_system_list) [MOUNTED_GETMNTINFO2]: Implement.

2006-08-17  Paul Eggert  <>

	Update from coreutils.

	* __fpending.h: Add copyright notice.
	* fprintftime.h: Likewise.
	* savedir.c: Use (C) in copyright notice.
	* savedir.h: Likewise.

	2006-08-15  Jim Meyering  <>

	* at-func.c: New file, with the logic of all emulated at-functions.
	* openat-priv.h: Include <errno.h> and define ENOSYS,
	in support of the EXPECTED_ERRNO macro.
	* openat.c (fstatat, unlinkat, fchownat): Remove function definitions.
	Instead, define the appropriate symbols and include "at-func.c".
	* mkdirat.c (mkdirat): Likewise.
	* fchmodat.c (fchmodat): Likewise.
	(ENOSYS): Remove definition.
	* openat.c: Don't include <errno.h>, now that "openat-priv.h" does it.
	Don't include "unistd--.h" -- it wasn't ever used.

	2006-01-17  Jim Meyering  <>

	Rewrite fts.c not to change the current working directory,
	by using openat, fstatat, fdopendir, etc..

	* fts.c [! _LIBC]: Include "openat.h" and "unistd--.h".
	[_LIBC] (fchdir): Don't undef or define; no longer used.
	(FCHDIR): Define in terms of cwd_advance_fd rather than fchdir.
	Now, this `function' always succeeds, and consumes its file descriptor
	parameter -- so callers must not close such FDs.  Update callers.
	(diropen_fd, opendirat, cwd_advance_fd): New functions.
	(diropen): Add parameter, SP.  Adjust all callers.
	Implement using diropen_fd, rather than open.
	(fts_open): Initialize new member, fts_cwd_fd.
	Remove fts_rft-setting code.
	(fts_close): Close fts_cwd_fd, if necessary.
	(__opendir2): Define in terms of opendir or opendirat,
	depending on whether the FST_NOCHDIR flag is set.
	(fts_build): Since fts_safe_changedir consumes its FD, and since
	this code must do `closedir(dirp)', dup the dirfd(dirp) argument,
	and close the dup'd file descriptor upon failure.
	(fts_stat): Use fstatat(...AT_SYMLINK_NOFOLLOW) in place of lstat.
	(fts_safe_changedir): Tweak semantics to reflect that this function
	now calls cwd_advance_fd and hence consumes its FD argument.
	* fts_.h [struct FTS] (fts_cwd_fd): New member.
	[struct FTS] (fts_rft): Remove now-unused member.
	[struct FTS] (fts_cycle.state): Improve comment.

	* openat.c (openat_needs_fchdir): New function.
	* openat.h (openat_needs_fchdir): Declare it.

2006-08-16  Paul Eggert  <>

	* memcoll.c (memcoll): Set errno = 0 in the shortcut case, too.
	Problem and fix reported by Pádraig Brady in

2006-08-15  Paul Eggert  <>

	* memcoll.c (memcoll): Optimize for the common case where the
	arguments are bytewise equal.

2006-08-14  Paul Eggert  <>

	Change copyright notice from LGPL 2 to GPL 2, since that's the
	standard form used in the gnulib repository.
	* lock.c: LGPL -> GPL.
	* lock.h: Likewise.
	* strnlen1.c: Likewise.
	* strnlen1.h: Likewise.
	* tls.c: Likewise.
	* tls.h: Likewise.
	* tmpdir.c: Likewise.

	* TODO: Remove; this belongs only in coreutils.

2006-08-14  Eric Blake  <>

	Import the following change from libc:

	2006-08-12  Ulrich Drepper  <>

	Upstream bug 2997.
	* misc/error.c: Add space between program name and message if file
	name is missing.

2006-08-11  Paul Eggert  <>

	* pipe-safer.c (pipe_safer): Fix misspelling: HAVE_FUNC_PIPE ->
	HAVE_PIPE.  Fix a file descriptor leak when fd_safer fails.

	* regex_internal.c (re_string_skip_chars): Don't assume WEOF fits
	in wchar_t.  Problem reported by Eric Blake.

	* snprintf.c (snprintf): memcpy LEN bytes, not SIZE - 1, when
	LEN is smaller than SIZE.  Suggested by Bruno Haible.
	Also, help the compiler to keep LEN in a register.

2006-08-10  Paul Eggert  <>

	* .cppi-disable: Add snprintf.h, socket_.h.
	* snprintf.c: Include <errno.h> and <limits.h>.
	(EOVERFLOW): Define if the system does not.
	Do not include "minmax.h"; it wasn't used.
	(snprintf): Don't assume size_t promotes to an unsigned type.
	Fix bug when generated string was too long for the buffer: the
	buffer's contents are supposed to be the initial prefix of the
	output.  Don't assume vasnprintf returns EOVERFLOW if the size
	exceeds INT_MAX; do the check ourselves.

	Import the following changes from libc:

	2006-06-02  Jakub Jelinek  <>

	* posix/regex_internal.c (re_string_skip_chars): If no character has
	been converted at all, set *last_wc to WEOF.  If mbrtowc failed, set wc
	to the byte which couldn't be converted.
	(re_string_reconstruct): Don't clear valid_raw_len before calling
	re_string_skip_chars.  If wc is WEOF after re_string_skip_chars, set
	tip_context using re_string_context_at.

	2006-05-02  Ulrich Drepper  <>

	* posix/regex.h: g++ still cannot handled [restrict].

	2006-04-21  Ulrich Drepper  <>

	* posix/regex.h: Remove special handling for VMS.

2006-08-09  Paul Eggert  <>

	Sync from coreutils.

	2006-07-19  Mike Frysinger  <>

	* mountlist.c [ME_REMOTE]: Filter out cifs.
	Reported by Toralf Förster in <>.

2006-08-08  Eric Blake  <>

	* verror.c (verror_at_line): Work around glibc bug 2997, so that
	verror_at_line output complies with GNU Coding Standards even when
	file is NULL.

2006-08-08  Eric Blake  <>

	* verror.h, verror.c: New files.

2006-08-07  Bruno Haible  <>

	* allocsa.h (sa_alignof) [_AIX]: Also consider 'long long' in newer
	versions of AIX.
	Reported by Ralf Wildenhues.

2006-08-06  Eric Blake  <>

	* error.h: Fold in some upstream changes from glibc.
	* error.c: Likewise.

2006-07-29  Bruno Haible  <>

	* localcharset.c: Assume <stddef.h>, <stdlib.h>, <string.h> exist.

2006-07-29  Bruno Haible  <>

	* setenv.c: Undo unintended modification done on 2006-02-27.

2006-07-28  Eric Blake  <>

	* regex_internal.h (struct re_dfa_t) [!_LIBC]: Avoid invalid C89
	macro expansion.

2006-07-28  Simon Josefsson  <>

	* inet_ntop.h, inet_pton.h: No need to guard netinet/in.h

2006-07-28  Simon Josefsson  <>

	* inet_ntop.h, inet_pton.h: No need to guard arpa/inet.h

2006-07-28  Bruno Haible <>

	* inet_ntop.h, inet_pton.h: Use #if HAVE* instead of #ifdef HAVE*.

2006-07-28  Yoann Vandoorselaere <>

	* inet_ntop.h, inet_pton.h: Need to include netinet/in.h before

2006-07-28  Bruno Haible  <>

	* mbchar.h (iswalnum, iswalpha, iswblank, iswcntrl, iswdigit, iswgraph,
	iswlower, iswprint, iswpunct, iswspace, iswupper, iswxdigit): Define
	Avoids link error on FreeBSD 4.x.
	Reported by Yoann Vandoorselaere <>.

	* wcwidth.h (iswprint): Assume an ASCII compatible wide character
	* mbswidth.c (iswcntrl): Likewise.

2006-07-28  Paul Eggert  <>

	* modechange.c (mode_compile): Numeric modes now affect setuid and
	setgid on directories only if they set these bits.
	* modechange.h: Remove obsolete comment about masks.

2006-07-27  Bruno Haible  <>

	* stdint_.h (INT*_C, UINT*_C) [C++]: Define these if

2006-07-26  Eric Blake  <>

	* mkstemp-safer.c [! HAVE_MKSTEMP]: Add prototype for platforms
	like mingw that lack mkstemp.
	* pipe-safer.c (pipe_safer) [!HAVE_FUNC_PIPE]: Provide fallback to
	avoid compilation warning on mingw.

2006-07-25  Bruno Haible  <>

	* version-etc.c (version_etc_va): Use va_copy, assumed to be defined in
	<stdarg.h> or config.h.

2006-07-24  Bruno Haible  <>

	* clean-temp.h: New file, from GNU gettext.
	* clean-temp.c: New file, from GNU gettext.

2006-07-24  Bruno Haible  <>

	* tmpdir.h: New file, from GNU gettext.
	* tmpdir.c: New file, from GNU gettext.

2006-07-23  Bruno Haible  <>

	* gl_anylinked_list2.h (ASYNCSAFE): New macro.
	(gl_linked_add_first, gl_linked_add_last, gl_linked_add_before,
	gl_linked_add_after, gl_linked_add_at, gl_linked_remove_node,
	gl_linked_remove_at): Use it.

2006-07-23  Eric Blake  <>

	* tmpfile-safer.c: New file.
	* stdio-safer.h (fopen_safer): Add prototype.
	* stdio--.h (tmpfile): Make safer.

2006-07-22  Paul Eggert  <>

	* close-stream.c, close-stream.h: New files.

2006-07-22  Bruno Haible  <>

	Merge from GNU gettext 0.15.

	2005-07-05  Bruno Haible  <>

		* printf-args.c (printf_fetchargs): Work around broken
		definition of wint_t on mingw.

	2005-02-12  Bruno Haible  <>

		* xallocsa.h: Add extern "C" for C++.

	2006-05-17  Bruno Haible  <>

		Cygwin portability.
		* progreloc.c (WIN32_NATIVE): Renamed from WIN32.

	2006-04-30  Bruno Haible  <>

		* progreloc.c: Include <mach-o/dyld.h> if available.
		(find_executable): Use _NSGetExecutablePath when possible.

	2006-05-06  Charles Wilson  <>

		* progreloc.c (maybe_executable) [CYGWIN]: Use the access()

	2005-12-29  Bruno Haible  <>

		* progreloc.c (set_program_name_and_installdir): Fix
		compilation error.

	2005-12-04  Bruno Haible  <>

		Cygwin portability.
		* progreloc.c: Include <windows.h> also on Cygwin.
		(find_executable): Add support for Cygwin.
		(set_program_name_and_installdir): Handle also platforms with
		nonempty EXEEXT.

	2006-07-11  Bruno Haible  <>

		* javacomp.c: Fix a comment.
		Reported by Jim Meyering.

	2006-04-30  Bruno Haible  <>

		* javacomp.h (compile_java_class): Add source_version,
		target_version arguments.
		* javacomp.c: Rewritten to choose only a compiler that
		respects the specified source_version and target_version.

	2006-06-27  Bruno Haible  <>

		Assume correct S_ISDIR macro.
		* mkdtemp.c: Remove test of STAT_MACROS_BROKEN.

	2006-07-22  Bruno Haible  <>

		* javaversion.h: New file, from GNU gettext.
		* javaversion.c: New file, from GNU gettext.
		* New file, from GNU gettext.
		* javaversion.class: New file, from GNU gettext.

	2006-05-17  Bruno Haible  <>

		Cygwin portability.
		* javaexec.c (execute_java_class): Test for jview program
		also on Cygwin.

	2006-04-09  Bruno Haible  <>

		* fatal-signal.c: Don't include string.h.
		(at_fatal_signal): Use a copying loop instead of memcpy.

	2005-12-04  Bruno Haible  <>

		* csharpexec.c: Add support for 'clix' launcher (untested).
		(execute_csharp_using_sscli): New function.
		(execute_csharp_program): Call it.

	2006-06-21  Bruno Haible  <>

		Avoid warnings from recent versions of mcs.
		* csharpcomp.c (compile_csharp_using_mono): Don't use options
		-o, -L, -r any more. Use options documented since mcs-1.0
		instead. Similarly for -g.

	2005-07-09  Bruno Haible  <>

		* csharpcomp.c (compile_csharp_using_sscli): For -l option,
		add a .dll suffix.
		Reported by Mark Junker <>.

	2006-06-17  Bruno Haible  <>

		* config.charset: Update for NetBSD 3.0.

	2006-05-17  Bruno Haible  <>

		Cygwin portability.
		* localcharset.c (WIN32_NATIVE): Renamed from WIN32.

	2006-05-16  Bruno Haible  <>

		* localcharset.c [CYGWIN]: Include <windows.h>.
		(get_charset_aliases): For Cygwin, return the same CPxxx
		aliases list as under WIN32.
		(locale_charset) [CYGWIN]: Try to retrieve the encoding from
		the environment variables. Fall back to GetACP().

	2006-04-05  Bruno Haible  <>

		* config.charset: Update Juan Manuel Guerrero's address.

	2005-02-12  Bruno Haible  <>

		* allocsa.h: Add extern "C" for C++.

	2005-02-10  Bruno Haible  <>

		* allocsa.h (sa_alignof): Define differently with AIX xlc, to
		avoid a bug of this compiler on AIX 3.2.5 dealing with enums.

	2006-07-22  Bruno Haible  <>

		* gettext.h: Update to GNU gettext-0.15.

2006-07-22  Yoann Vandoorselaere <>
	and Simon Josefsson <>

	* getaddrinfo.h (AI_PASSIVE): Make sure it is defined.

	* getaddrinfo.c (getaddrinfo): Support AI_PASSIVE.

2006-07-21  Eric Blake  <>

	* stdlib-safer.h: New file from coreutils, required by

2006-07-19  Derek R. Price  <>

	* getaddrinfo.h: Don't define unimplemented AI_* flags.
	Reindent and repaginate.

2006-07-17  Bruno Haible  <>

	* gl_list.h: New file.
	* gl_list.c: New file.
	* gl_array_list.h: New file.
	* gl_array_list.c: New file.
	* gl_carray_list.h: New file.
	* gl_carray_list.c: New file.
	* gl_linked_list.h: New file.
	* gl_linked_list.c: New file.
	* gl_anylinked_list1.h: New file.
	* gl_anylinked_list2.h: New file.
	* gl_avltree_list.h: New file.
	* gl_avltree_list.c: New file.
	* gl_anyavltree_list1.h: New file.
	* gl_anyavltree_list2.h: New file.
	* gl_rbtree_list.h: New file.
	* gl_rbtree_list.c: New file.
	* gl_anyrbtree_list1.h: New file.
	* gl_anyrbtree_list2.h: New file.
	* gl_anytree_list1.h: New file.
	* gl_anytree_list2.h: New file.
	* gl_linkedhash_list.h: New file.
	* gl_linkedhash_list.c: New file.
	* gl_anyhash_list1.h: New file.
	* gl_anyhash_list2.h: New file.
	* gl_avltreehash_list.h: New file.
	* gl_avltreehash_list.c: New file.
	* gl_rbtreehash_list.h: New file.
	* gl_rbtreehash_list.c: New file.
	* gl_anytreehash_list1.h: New file.
	* gl_anytreehash_list2.h: New file.

	* gl_oset.h: New file.
	* gl_oset.c: New file.
	* gl_array_oset.h: New file.
	* gl_array_oset.c: New file.
	* gl_avltree_oset.h: New file.
	* gl_avltree_oset.c: New file.
	* gl_rbtree_oset.h: New file.
	* gl_rbtree_oset.c: New file.
	* gl_anytree_oset.h: New file.

2006-07-16  Paul Eggert  <>

	* dirchownmod.c, dirchownmod.h, mkancesdirs.c, mkancesdirs.h:
	New files.
	* mkdir-p.c: Don't include alloca.h, stdio.h, sys/types.h,
	unistd.h, string.h, chdir-safer.h, dirname.h, lchmod.h, lchown.h,
	save-cwd.h.  Instead, include dirchownmod.h and mkancesdirs.h.
	(make_dir_parents): New args MAKE_ANCESTOR, OPTIONS, ANNOUNCE,
	callers changed.  Revamp internals significantly, by not
	attempting to create directories that are temporarily more
	permissive than the final results.  Do not attempt to use
	save_cwd/restore_cwd; it isn't worth it for mkdir and install.
	This removes some race conditions, fixes some bugs, and simplifies
	things.  Use new dirchownmod function to do owner and mode changes.
	* mkdir-p.h: Likewise.
	* modechange.c (octal_to_mode): New function.
	(struct mode_change): New member mentioned.
	(make_node_op_equals): New arg mentioned.  All callers changed.
	(mode_compile): Keep track of which mode bits the user has explicitly
	(mode_adjust): New arg DIR, so that we implement the X op correctly.
	New arg PMODE_BITS, to keep track of which mode bits the user
	mentioned; it treats S_ISUID and S_ISGID speciall.
	All callers changed.
	* modechange.h: Likewise.

2006-07-11  Derek R. Price  <>

	* glob.c: s/NAMLEN/_D_EXACT_NAMLEN/.

2006-07-10  Derek R. Price  <>

	* backupfile.c, dirfd.h, fts.c, getcwd.c, glob.c, glob_.h:
	Ignore the obsolescent !HAVE_DIRENT_H case.  Consolidate NAMLEN
	macros into the GNU _D_EXACT_NAMLEN.
	* savedir.c:  Likewise.
	(savedirstream): Use _D_EXACT_NAMLEN in preference to strlen.

2006-07-09  Jim Meyering  <>

	* argp-pv.c: Remove a doubled word in a comment.
	* check-version.c (check_version): Likewise.
	* javacomp.c (compile_java_class): Likewise.

2006-07-08  Jim Meyering  <>

	* getndelim2.h (getndelim2): Remove doubled "after" in comment.

2006-07-06  Jim Hyslop  <>  (tiny change)

	* getaddrinfo.c: Changes to compile under MSVC6: changed
	'#if WIN32_NATIVE' to '#ifdef' & moved WSAAPI macro inside
	brackets.  Other minor changes to suppress some compiler

2006-07-06  Paul Eggert  <>

	* getloadavg.c: Use __VMS, not VMS.
	* getopt.c: Likewise.
	* getpagesize.h: Likewise.
	* glob.c: Remove most VMS cruft; it hasn't been tested for a while and
	probably does not work.

2006-07-06  Derek R. Price  <>
	and Paul Eggert  <>

	* backupfile.c [HAVE_DIRENT_H && ! HAVE_NDIR_H]:
	Don't worry about this obsolete case any more.
	(HAVE_DIR): Remove.  All uses removed; we now assume you can read
	* dirfd.h [HAVE_DIRENT_H && ! HAVE_NDIR_H]: Don't
	worry about this obsolete case any more.
	* fts.c: Likewise.
	* getcwd.c: Likewise.
	* glob.h: Likewise.
	* savedir.c: Likewise.

2006-07-06  Paul Eggert  <>

	* .cppi-disable: Add wcwidth.
	* fnmatch.c (ISBLANK): Remove.  All uses changed to isblank.
	(isblank) [! (defined isblank || HAVE_DECL_ISBLANK)]: New macro.
	(ISGRAPH): Remove.  All uses changed to isgraph.
	(FOLD) [!defined _LIBC]: Remove special case.
	* getdate.y (lookup_word): Remove no-longer-needed call to islower.
	* regex_internal.h (isblank): Depend on HAVE_DECL_ISBLANK, not
	* strftime.c (TOLOWER, TOUPPER) [!defined _LIBC]: Remove special case.

2006-07-06  Ralf Wildenhues  <>

	* strtod.c (strtod): cast the argument of tolower to unsigned char.

2006-07-05  Paul Eggert  <>

	* memcasecmp.c: Include <limits.h>.
	(memcasecmp): Don't assume UCHAR_MAX <= INT_MAX.
	* strtod.c (strtod): Don't assume isspace works on negative chars.
	Don't assume isdigit succeeds only on '0' through '9'.

2006-07-05  Derek R. Price  <>

	* exclude.c (IN_CTYPE_DOMAIN, is_space): Remove; no longer needed.
	All uses of is_space replaced by isspace.
	* exit.h: Don't talk about STDC_HEADERS.
	* fnmatch.c (ISASCII): Remove; no longer needed.  All uses removed.
	(ISSPACE, ISUPPER, ISXDIGIT): Remove; no longer needed.  All uses
	replaced by isprint etc.
	* getusershell.c (IN_CTYPE_DOMAIN, ISSPACE): Likewise.
	* memcasecmp.c (IN_CTYPE_DOMAIN, ISLOWER, TOUPPER): Likewise.
	* strtol.c (IN_CTYPE_DOMAIN): Likewise.
	* xstrtol.c (IN_CTYPE_DOMAIN, ISSPACE): Likewise.

2006-07-05  Eric Blake  <>

	* getaddrinfo.h (NI_NUMERICHOST, NI_NUMERICSERV): Define if
	missing from netdb.h.
	* getaddrinfo.c (includes): Include inet_ntop and snprintf.

2006-06-27  Bruno Haible  <>

	Assume ANSI C header files and <ctype.h> functions.
	* mbswidth.c (IN_CTYPE_DOMAIN, ISPRINT, ISCNTRL): Remove macros.
	(mbsnwidth): Use isprint, iscntrl instead.

2006-07-03  Jim Meyering  <>

	* cycle-check.h (CYCLE_CHECK_REFLECT_CHDIR_UP): Abort if this
	macro is used before the first cycle_check call.

2006-07-03  Paul Eggert  <>

	* stdint_.h: Include <sys/types.h> after @FULL_PATH_STDINT_H@, for
	MacOS X 10.4.6.  Don't mention <sys/int_types.h>.  Problems
	reported by Mark D. Baushke, one in

	Merge from coreutils.

	* .cppi-disable: Add stdint_.h.
	* .cvsignore: Add stdint.h.

	2006-06-30  Paul Eggert  <>

	* xstrtod.c (XSTRTOD, DOUBLE): New macros, so that we can support
	both double and long double versions.
	(XSTRTOD): Renamed from xstrtod.  Use DOUBLE internally.
	* xstrtold.c: New file.
	* xstrtod.h (xstrtold): New decl.

	2006-05-22  Paul Eggert  <>

	* filemode.c (setst): Remove.
	(strmode): Rewrite to avoid setst.  This makes the code shorter,
	(arguably) clearer, and the generated code is a bit smaller on my
	Debian GNU/Linux stable x86 host.

	2006-04-17  Paul Eggert  <>

	* filemode.c: Include "filemode.h" first, to test the interface.
	Assume that filemode.h includes sys/types.h and sys/stat.h.
	(HAVE_ST_DM_MODE): New macro, moved here from ls.c.
	(ftypelet): Reorder to put common cases first, for efficiency.
	Add 'P', 'w'.  Remove 'M', since it's now the caller's responsibility
	to do 'M'.
	(strmode): Renamed from mode_string, and now stores 12 bytes instead
	of 10, for compatibility with FreeBSD.  All callers changed.
	(filemodestring): Now stores 12 bytes instead of 10, and sets file types
	that can't be deduced solely from st_mode.  First arg is now a const
	* filemode.h (HAVE_DECL_STRMODE): Include <string.h> for strmode.
	(strmode): Renamed from mode_string.
	(filemodestring): New decl.
	* stat-macros.h: Don't undef S_ISDOOR, since it's never buggy.
	(S_ISDOOR): Don't bother with S_IFDOOR, since that code is never needed.
	(S_ISPORT, S_ISWHT): New macros, if not already defined.

	2006-04-12  Paul Eggert  <>

	* fsusage.c: Don't include <inttypes.h> or <stdint.h>, since
	fsusage.h now does that.  Include fsusage.h first, to test interface.
	Prefer statvfs if it works, since it's blessed by POSIX.  Attempt
	at most one method (the old code could have generated decls that
	didn't conform to C89, not that this was ever exercised).
	* fsusage.h: Include <inttypes.h> and <stdint.h> if they exist.

	2006-03-19  Jim Meyering  <>

	Work even in a chroot where d_ino values for entries in "/"
	don't match the stat.st_ino values for the same names.
	* getcwd.c (__getcwd): When no d_ino value matches the target inode
	number, iterate through all entries again, using lstat instead.
	Reported by Kenshi Muto in, and by
	Zouhir Hafidi in

	* getcwd.c (__getcwd): Clarify a comment.
	Use memcpy in place of a call to strcpy.

	2006-03-12  Jim Meyering  <>

	* fts-cycle.c (leave_dir): If cycle-check's saved dev-ino pair matches
	that of the current directory (which we're about to chdir ".." out of),
	then save the dev-ino of the parent, instead.

	* same-inode.h (SAME_INODE): New file/macro.
	* chdir-safer.c (SAME_INODE): Remove definition.
	Include "same-inode.h", instead.
	* same.c: Likewise.
	* cycle-check.h: Include "same-inode.h".
	* cycle-check.c (SAME_INODE): Remove definition.
	* root-dev-ino.h: Include "same-inode.h".

	2006-03-11  Eric Blake  <>

	* same.c (same_name): s/base_name/last_component/
	* backupfile.c (check_extension, numbered_backup): Likewise.
	* filenamecat.c (file_name_concat): Likewise.

	2006-03-11  Eric Blake  <>,
		    Paul Eggert  <>

	* dirname.h (FILE_SYSTEM_PREFIX_LEN): Move here from dos.m4.
	drive prefix.
	(IS_ABSOLUTE_FILE_NAME): Treat all drive letters as absolute on
	platforms like cygwin with FILE_SYSTEM_DRIVE_PREFIX_IS_ABSOLUTE.
	(last_component): New method.
	* dirname.c (dir_len): Determine when drive letters need a
	subsequent slash.  Preserve // when it is special.
	(dir_name): Don't append dot when drive letter is absolute.
	[TEST_DIRNAME]: Move into a full-blown gnulib test.
	* basename.c (base_name): New semantics - malloc the result.
	Preserve // when it is special.  Preserve relative files that look
	like drive letters.
	(base_len): Preserve // when it is special.
	(last_component): New method, similar to old base_name semantics.
	* stripslash.c (strip_trailing_slashes): Use last_component, not
	base_name.  Strip redundant slashes from ///.

2006-07-02  Paul Eggert  <>

	* stdint_.h (intmax_t, uintmax_t): Prefer long to long long if
	both are 64 bits, since this seems to be the tradition, and this
	prevents gcc -Wformat from warning about usages with PRIuMAX.  If
	we ever run into a host that prefers long long to long in this
	case, we'll need another configure-time test.  Problem reported by
	Jim Meyering.

2006-07-01  Paul Eggert  <>

	* stdint_.h (_GL_STDINT_H): Renamed from _STDINT_H, to avoid
	possible collision with system files.
	(<stdio.h>, <time.h>, <wchar.h>) [defined __cplusplus && ! defined
	__STDC_CONSTANT_MACROS)]: Do not include, since we don't need
	WCHAR_MIN and WCHAR_MAX in this case.
	(<stddef.h>): Do not include; no longer needed.
	(<sys/types.h>): Include if @HAVE_SYS_TYPES_H@, not if
	(defined(__OpenBSD__) || defined(__bsdi__) || defined(__sgi)).
	(<sys/inttypes.h>): Include if @HAVE_SYS_INTTYPES_H@ &&
	!@HAVE_INTTYPES_H@, not if (defined(__FreeBSD__)
	&& (__FreeBSD__ >= 3) && (__FreeBSD__ <= 4)).
	(__STDINT_H__) [@HAVE_STDINT_H@ && defined __sgi && ! defined
	__c99]: Define, to work around IRIX <stdint.h> incompatibility.
	(@FULL_PATH_STDINT_H@) [!(defined(__sgi) && @HAVE_INTTYPES_H@ &&
	!defined(__c99))]: Include in this case too, since it's harmless
	(<inttypes.h>) [@HAVE_INTTYPES_H@]: Include, since it's no longer
	dangerous to do so.
	(@FULL_PATH_INTTYPES_H@) [(defined(__hpux) || defined(_AIX)) &&
	@HAVE_INTTYPES_H@]: Do not include, since we now include <inttypes.h>.
	(_STDINT_MIN, _STDINT_MAX): New macros.
	(int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t):
	(uint64_t, int_least8_t, uint_least8_t, int_least16_t):
	(uint_least16_t, int_least32_t, uint_least32_t, int_least64_t):
	(uint_least64_t, int_fast8_t, uint_fast8_t, int_fast16_t):
	(uint_fast16_t, int_fast32_t, uint_fast32_t, int_fast64_t):
	(uint_fast64_t, intptr_t, uintptr_t, intmax_t, uintmax_t): Now
	macros, not typedefs; this simplifies things quite a bit.
	Use long int for all types narrower than int64_t.
	(intmax_t, uintmax_t, INTMAX_C, UINTMAX_C):
	Define in terms of long long int or int64_t or long int,
	not int64_t or int32_t.  This saves some compile-time testing.
	undef any previous version and define our own version, for
	simplicity and consistency with the new macros for types.
	Simplify definitions by using _STDINT_MIN and _STDINT_MAX
	where appropriate.  Rely on new symbols @PTRDIFF_T_SUFFIX@,
	@WINT_T_SUFFIX@ to keep things simple here.
	(UINT8_C, UINT16_C, UINT32_C, INT64_C, UINT64_C):
	Simplify by assuming typical 8/16/32/64 host, since we're
	already doing that elsewhere anyway.
	Use (LONG_MAX >> 31 >> 31 == 1) rather than @HAVE_LONG_64BIT@,
	and assume long long int is 64 bits if available.  This
	speeds up 'configure'.

2006-06-30  Jim Hyslop <>  (tiny change)

	* getaddrinfo.c: fixed typo

2006-06-29  Eric Blake  <>

	* stat_.h (rpl_mkdir): Declare inline, to avoid warnings about
	unused static function.

2006-06-29  Eric Blake  <>

	* stat_.h: New file.

2006-06-29  Derek R. Price  <>

	* strftime.c: Assume strftime() exists.

2006-06-28  Bruno Haible  <>

	* getaddrinfo.h: Fix POSIX URL.
	* getaddrinfo.c (WIN32_NATIVE): New macro. Use it instead of _WIN32.
	(use_win32_p): Make static.
	(getaddrinfo): Reject service name if it is empty or does not consist
	solely of decimal digits, or if its value is > 65535.
	(getnameinfo): Remove useless casts.

2006-06-28  Derek R. Price  <>

	* savedir.c (CLOSEDIR): Remove.  All uses changed to closedir.
	Autoconf 2.60 says this stuff was obsolete.

2006-05-12  Bruno Haible  <>

	* mkdtemp.c [MINGW]: Include <io.h>.
	(mkdir): Define using _mkdir.

2006-06-28  Bruno Haible  <>

	* wcwidth.h: Declare nothing if !HAVE_WCHAR_T. Provide a fallback
	declaration for wcwidth.
	* mbswidth.c: Restore the includes of <wchar.h> and <wctypes.h>.

2006-06-28  Eric Blake  <>

	* xvasprintf.h: Fix comments.

2006-06-28  Eric Blake  <>

	* mbchar.h (wcwidth): Include wcwidth.h.
	* mbswidth.c (wcwidth): Move from here...
	* wcwidth.h: this new file.

2006-06-28  Simon Josefsson  <>

	* getaddrinfo.c: Try to load ws2_32.dll on Windows, to find the
	functions there.  It will succeed on Windows XP, but on Windows
	2000 and (presumably) earlier, it will fail, and use the internal
	(use_win32_p): New function.
	(getaddrinfo): Use strtoul on servname, to support numeric ports.
	Support AI_NUMERICSERV to disable getservbyname.
	(getnameinfo): New function, only supports

	* getaddrinfo.h: Test and check for AI_* flags separately, MinGW
	only have some of them.  Add AI_NUMERICSERV.  Add prototype for

2006-06-27  Bruno Haible  <>

	* stdint_.h (intmax_t, uintmax_t): Undefine before typedef.

2006-06-26  Paul Eggert  <>

	* base64.c (B64): Use _ as the formal parameter, not x, to avoid
	bug in IBM C V6 for AIX.  Problem reported by Larry Jones in

2006-06-26  Bruno Haible  <>

	* stdint_.h: Include <wchar.h> if necessary for WCHAR_MIN or
	Reported by Mark D. Baushke and Larry Jones.

2006-06-26  Bruno Haible  <>

	* stdint_.h: Don't include <stdint.h> when using the SGI C compiler
	in pre-C99 mode.
	Suggested by Mark D. Baushke and Larry Jones.

2006-06-23  Mark D. Baushke  <>

	* stdint_.h: Treat BSD/OS like OpenBSD.

2006-06-23  Bruno Haible  <>

	* stdint_.h: Treat IRIX like OpenBSD.

2006-06-23  Bruno Haible  <>

	* stdint_.h (UINT8_C, UINT16_C, UINT32_C): Define according to
	ISO C 99 Technical Corrigendum 1.

2006-06-22  Paul Eggert  <>

	* glob.c (collated_compare): Remove 'const' uses that weren't needed.
	Some compiler complained about some of them.  Problem reported by
	Larry Jones in

2006-06-21  Simon Josefsson  <>

	* getaddrinfo.c (getaddrinfo): Set ai_family in the return

	* socket_.h: Don't define WINVER.

	* inet_pton.h, inet_pton.c: New file, taken from glibc but
	slightly modified to work in gnulib.

2006-06-19  Paul Eggert  <>

	* read-file.c (fread_file): Start with buffer allocation of
	0 bytes rather than 1 byte; this simplifies the code.
	Don't invoke feof; it's not needed.  Refactor to avoid duplicate
	code to free buffer and save/restore errno.
	(internal_read_file): Remove unused local.

2006-06-20  Paul Eggert  <>

	* openat.c (openat): Use ?:, not if, to work around GCC bug 4210
	Problem reported by Denis Excoffier in

2006-06-19  Simon Josefsson  <>

	* inet_ntop.c: Always build inet_ntop4, since inet_ntop6 calls it.

2006-06-19  Paul Eggert  <>

	* alloca_.h (alloca) [defined alloca]: Don't define or declare.

2006-06-17  Bruno Haible  <>

	* stdint_.h [FreeBSD >= 5]: Don't include <sys/inttypes.h>.

2006-06-17  Bruno Haible  <>

	* stdint_.h (_UINT8_T, _UINT32_T, _UINT64_T): New macros. Fixes a
	problem on Solaris 2.5.1.

2006-06-16  Eric Blake  <>

	* unsetenv.c [!defined errno]: Assume errno.h declares errno.
	* unicodeio.c [!defined errno]: Likewise.
	* strtol.c [!defined errno]: Likewise.
	* strtod.c [!defined errno]: Likewise.

2006-06-15  Bruno Haible  <>

	* stdint_.h: Rewritten to be fully auto-configured.
	Fixes bug on HP-UX/IA64.

2006-06-11  Paul Eggert  <>

	* getdate.y (__attribute__): Don't define if already defined.
	Problem reported by Larry Jones.
	* utimens.c (__attribute__): Likewise.

2006-06-04  Paul Eggert  <>

	* regexec.c (group_nodes_into_DFAstates): Fix a buffer overrun
	reported by Andreas Schwab.

2006-05-30  Ralf Wildenhues  <>
	    Bruno Haible  <>

	* strndup.c (strndup) [!_LIBC]: Don't undefine macro definition.

2006-05-26  Martin Lambers  <>

	* getpass.c: Updates the test for the native W32 API, and adds
	missing includes, thus fixing compilation warnings.

2006-05-25  Paul Eggert  <>

	* tempname.c (small_open, large_open): New macros.
	(__open, __open64) [!_LIBC]: Remove.
	(__gen_tempname): Use small_open and large_open instead of __open
	and __open64.  This fixes a portability bug on HP-UX 11.11i
	reported by Simon Wing-Tang in

2006-05-25  Sergey Poznyakoff  <>

	* exclude.c (exclude_fnmatch): New function.
	(excluded_file_name): Call exclude_fnmatch.
	* exclude.h (excluded_file_name): New prototype

2006-05-24  Bruno Haible  <>

	* printf-args.c (printf_fetchargs): Turn NULL pointers for
	TYPE_STRING and TYPE_WIDE_STRING into a non-NULL replacement.
	Reported by Thorsten Maerz <> via
	Aaron Stone <>.

2006-05-19  Paul Eggert  <>

	* nanosleep.c [HAVE_SYS_SELECT_H]: Include <sys/select.h>.
	Use the usual Autoconf way to include <time.h> and/or sys/time.h.
	(my_usleep): Don't mishandle maximum value.

2006-05-19  Jim Meyering  <>

	* getugroups.c: Correct an outdated comment.  From Bruno Haible.

2006-05-17  Bruno Haible  <>

	Cygwin portability.
	* classpath.c (PATH_SEPARATOR) [CYGWIN]: Define as ':'.

2006-05-17  Bruno Haible  <>

	* stdint_.h: Fix recognition of Cygwin.

2006-05-11  Jim Meyering  <>

	* sha1.c (sha1_buffer): Correct comment: s/MD5/SHA1/.  From James Lemley.

2006-05-10  Paul Eggert  <>

	* crc.c (crc32_update): Remove unnecessary L suffix.
	* md4.c (rol): Cast right-shift arg to uint32_t to prevent
	unwanted sign propagation, e.g., on hosts with 64-bit int.
	There still are some problems with reeelly weird theoretical hosts
	(e.g., 33-bit int) but it's not worth worrying about now.
	* sha1.c (rol): Likewise.
	(K1, K2, K3, K4): Remove unnecessary L suffix.

2006-05-10  Bruno Haible  <>

	* des.c: Cast to avoid warnings.

2006-05-10  Simon Josefsson  <>

	* md4.c: Typo fix, update copyright years.
	(K1, K2): Don't use L because it turn computations into 64-bit on
	64-bit platforms.

2006-05-09  Bruno Haible  <>

	* xvasprintf.c: Include limits.h, string.h, xsize.h.
	(EOVERFLOW): Define fallback value.
	(xstrcat): New function.
	(xvasprintf): Recognize the special case of a string concatenation.

2006-05-01  Bruno Haible  <>

	* stdint_.h: Shorter URL.
	* inttypes.h: Likewise.

2006-05-02  Paul Eggert  <>

	* verify.h: Document the internals better.  Most of this change
	was written by Bruno Haible.

2006-04-29  Bruno Haible  <>

	* gcd.c: Use WORD_T and GCD instead of unsigned long and gcd.
	Suggested by Oskar Liljeblad <>.

2006-04-25  Paul Eggert  <>

	* getdate.y (get_date): When adding relative date, start with the
	initial time, not with the result of the first mktime call.

2006-04-23  Bruno Haible  <>

	* copy-file.c: Include <unistd.h> unconditionally.
	* execute.c: Likewise.
	* fatal-signal.c: Likewise.
	* findprog.c: Likewise.
	* mkdtemp.c: Likewise.
	* pipe.h: Likewise.
	* pipe.c: Likewise.
	* wait-process.h: Likewise.

2006-04-23  Bruno Haible  <>

	* fwriteerror.c (fwriteerror): Call fclose also when an error
	condition was already detected.
	Reported by Ben Pfaff <>.

2006-04-19  Derek Price  <>
	    Eric Blake  <>

	* inttypes.h: Correct grammar in comment.

2006-04-18  Derek Price  <>
	    Paul Eggert  <>

	* inttypes.h: New file.
	* strtoimax.c: Assume <inttypes.h>.

2006-04-15  Paul Eggert  <>

	* utimens.c (futimens): glibc futimesat messes up if /proc
	isn't mounted.  Problem reported by Kir Kolyshkin.

2006-04-13  Paul Eggert  <>

	* regcomp.c (init_dfa): Don't use wchar_t or wctype_t if RE_ENABLE_I18N
	is not defined.  Problem reported by Mark D. Baushke via Derek R. Price.
	* regex.h (RE_DUP_MAX): Update comment to match current implementation.

2006-04-09  Paul Eggert  <>

	Merge regex changes from libc, removing some of our
	POSIX-conformance changes that were rejected and redoing them in a
	less-intrusive way.

	* regcomp.c (re_compile_internal, init_dfa):
	Length arg is now size_t, not Idx.  All uses changed.
	(peek_token): Forward decl now says internal_function.
	(__re_error_msgid, __re_error_msgid_idx):
	Now static rather than extern with attribute_hidden.
	(re_compile_pattern) [!defined _LIBC]: Use K&R-style defn.
	For some reason libc prefers K&R style defns for external functions.
	(regerror) [!defined _LIBC]: Likewise.
	(re_set_syntax, re_compile_fastmap, regcomp, regfree, re_comp):
	(seek_collating_symbol_entry, lookup_collation_sequence_value):
	(build_range_exp, build_collating_symbol):
	Use K&R-style defn.
	(re_compile_fastmap): Use '\0' to memset, not 0.
	(utf8_sb_map): Make the calculations more obvious.
	(init_dfa, parse_bracket_exp, build_charclass_op):
	Call calloc and cast result, as glibc does.
	(init_word_char, fetch_token, peek_token, peek_token_bracket):
	(build_range_exp, build_collating_symbol):
	Now internal functions.

	* regex.c [!defined _LIBC]: Allow compiling with C++ compilers.

	* regex.h (__USE_GNU_REGEX): New macro.  Don't depend on
	_REGEX_SOURCE any more; depend on _GNU_SOURCE instead.
	Don't depend on VMS; depend on __VMS instead, for POSIX
	namespace cleanness.
	(regoff_t): Define to ssize_t, not long int.

	Remove the REG_ macros named below.  Instead, make the old names
	(e.g., RE_BACKSLASH_ESCAPE_IN_LISTS) visible only if
	Remove.  All uses replaced by the old RE_* names.
	Don't bother having these macros be independent of each others'
	values, since they no longer exist in the POSIX name space.

	Rename the following member names back to their old names,
	unless !__USE_GNU_REGEX.  All uses changed back.
	(buffer): Renamed from re_buffer.
	(allocated): Renamed from re_allocated.
	(used): Renamed from re_used.
	(syntax): Renamed from re_syntax.
	(fastmap): Renamed from re_fastmap.
	(translate): Renamed from re_translate.
	(can_be_null): Renamed from re_can_be_null.
	(regs_allocated): Renamed from re_regs_allocated.
	(fastmap_accurate): Renamed from re_fastmap_accurate.
	(no_sub): Renamed from re_no_sub.
	(not_bol): Renamed from re_not_bol.
	(not_eol): Renamed from re_not_eol.
	(newline_anchor): Renamed from re_newline_anchor.
	(num_regs): Renamed from rm_num_regs.
	(start): Renamed from rm_start.
	(end): Renamed from rm_end.

	(free_state): Move up a bit.

	* regex_internal.h (inline) [__GNUC__ < 3 && defined _LIBC]:
	#define to be empty.
	(ASCII_CHARS): New macro, replacing all uses of 0x80 and/or SBC_MAX / 2
	when that is what is intended.
	(SBC_MAX): Define to UCHAR_MAX + 1, not 256.
	(__re_error_msgid, __re_error_msgid_idx): Remove decls; not needed.
	(MAX): New macro.
	(re_xmalloc, re_calloc, re_xrealloc, re_x2realloc): Remove.
	All uses changed back to re_malloc, etc.  It's now the caller's
	responsibility to check for overflow; all callers changed.
	(re_alloc_oversized, re_x2alloc_oversized, re_xnmalloc, re_xnrealloc):
	(re_x2nrealloc): Remove.
	(free_state): Remove decl.

	* regexc.c (regexec, re_match, re_search, re_match_2, re_search_2):
	(re_set_registers, re_exec):
	Use K&R-style defn.

	2006-01-31  Roland McGrath  <>

	* regcomp.c (calc_eclosure_iter): Remove dead variables.
	Reported by Mike Frysinger <>.

	2006-01-15  Andreas Jaeger  <>

	[BZ #1950]
	* regex_internal.c (re_string_reconstruct): Adjust for
	build_wcs_upper_buffer change.
	(build_wcs_upper_buffer): Change return type.

	2005-12-10  Ulrich Drepper  <>

	* regex_internal.h: Include <stdint.h> if available.

	2005-12-06  Paolo Bonzini  <>

	* regex_internal.h (SIZE_MAX): Provide a default definition.

	2005-10-14  Ulrich Drepper  <>

	* regcomp.c: Adjust for changed secondary hash function.

	2005-09-30  Ulrich Drepper  <>

	* regex.h: Pretty printing.
	Clean up namespace a bit.

	2005-09-30  Jakub Jelinek  <>

	* regexec.c (update_cur_sifted_state, check_arrival,
	check_arrival_add_next_nodes): Avoid using uninitialized variable.

	2005-09-06  Paul Eggert  <>
		    Ulrich Drepper  <>

	[BZ #1302]
	* regex_internal.h (bitset_t): Renamed from bitset.  All uses changed.
	(bitset_word_t): Renamed from bitset_word.  All uses changed.

	2005-09-22  Ulrich Drepper  <>

	[BZ #281]
	* regex.h: Define RE_TRANSLATE_TYPE as unsigned char *.
	* regcomp.c: Remove unnecessary uses of
	* regex_internal.h: Likewise.
	* regex_internal.c: Likewise.
	* regexec.c: Likewise.
	Based on a patch by Stepan Kasal <>.

	2005-09-07  Ulrich Drepper  <>

	* regexec.c (find_recover_state): Remove unnecessary
	(transit_state_bkref): Make DFA a const pointer.
	(get_subexp): Likewise.
	(check_arrival): Likewise.
	(update_cur_sifted_state): Likewise.
	(re_search_internal): Likewise.
	(prune_impossible_nodes): Likewise.
	(acquire_init_state_context): Likewise.
	(proceed_next_node): Likewise.
	(set_regs): Likewise.
	(free_fail_stack_return): Likewise.
	(check_arrival_expand_ecl): Mark DFA parameter as const.
	(check_arrival_expand_ecl_sub): Likewise.
	(check_subexp_limits): Likewise.
	(sub_epsilon_src_nodes):  Likewise.
	(add_epsilon_src_nodes):  Likewise.
	(merge_state_array): Likewise.
	(update_regs): Likewise.
	(build_trtable): Likewise.
	(sift_states_backward): Mark MCTX parameter as const.
	(build_sifted_states): Likewise.
	(update_cur_sifted_state): Likewise.
	(sift_states_mkref): Likewise.
	(check_arrival_expand_ecl): Mark eclosure as const.
	(check_dst_limits_calc_pos_1): Likewise.
	* regex_internal.h (re_match_context_t): Make dfa a const

	2005-09-06  Ulrich Drepper  <>

	* regexec.c (merge_state_with_log): Define dfa as const pointer.
	(transit_state_sb): Likewise.
	(transit_state_mb): Likewise.
	(sift_states_iter_mb): Likewise.
	(check_arrival_add_next_nodes): Likewise.
	(check_node_accept_bytes): Change first parameter to pointer-to-const.
	[_LIBC] (re_search_2_stub): Use mempcpy.

	* regex_internal.c (re_string_reconstruct): Avoid calling
	mbrtowc for very simple UTF-8 case.

	* regex_internal.c (re_acquire_state): Make DFA pointer arg
	a pointer-to-const.
	(re_acquire_state_context): Likewise.
	* regex_internal.h: Adjust prototypes.

	* regex.c: Prevent using C++ compilers.

	* regex_internal.c (re_acquire_state): Minor code rearrangement.
	(re_acquire_state_context): Likewise.

2006-03-29  Mark D. Baushke  <>
	    Bruno Haible  <>

	* stdint_.h: On OpenBSD, don't redefine types already included in
	<sys/types.h> and <inttypes.h>.

2006-03-24  Eric Blake  <>

	* time_r.c (copy_string_result): Remove, as it is no longer used.

2006-03-24  Simon Josefsson  <>

	* base64.c: Fix problems reported by Eric Blake <>,
	including some doc fixes.
	(base64_encode_alloc): Fix +1 bug on allocation failures.

2006-03-24  Ralf Wildenhues <>

	* base64.c (base64_encode): Do not read past end of array with
	unsanitized input on systems with CHAR_BIT > 8.

2006-03-16  Paul Eggert  <>

	* regex.h (regoff_t) [defined _REGEX_LARGE_OFFSETS]:
	Typedef to long int, not to off_, as POSIX will likely change
	in that direction.

2006-03-13  Sergey Poznyakoff  <>

	* argp-help.c (validate_uparams): Fix typo
	* argp-parse.c (argp_default_options): Consistently begin help
	messages with a lowercase letter.

2006-03-11  Paul Eggert  <>

	* time_r.h (asctime_r, ctime_r): Remove.  These functions can
	overrun buffers and shouldn't be used (much as gets shouldn't be
	* time_r.c (asctime_r, ctime_r): Likewise.

2006-03-08  Simon Josefsson  <>

	* gc-gnulib.c (randomize): Don't open files called 'no', they
	signal that configure disabled the device.

2006-03-07  Paul Eggert  <>

	* c-stack.c: Include unistd.h unconditionally, since we now assume
	the unistd module.
	* getlogin_r.c: Likewise.
	* getlogin_r.h: Likewise.
	* glob.c: Likewise.
	* pagealign_alloc.c: Likewise.
	* unistd_.h: Remove; no longer needed.

2006-03-07  Simon Josefsson  <>

	* unistd_.h: New file.

2006-03-07  Simon Josefsson  <>

	* gc-libgcrypt.c, gc-gnulib.c: Use GC_USE_RANDOM.

2006-03-01  Simon Josefsson  <>

	* readline.c: Fix typo, tiny patch from Stepan Kasal

2006-02-28  Simon Josefsson  <>

	* getopt.c: Protect #include of unistd.h, for MSVS.

2006-02-27  Simon Josefsson  <>

	* base64.h: Indent #define's.  From Jim Meyering

2006-02-27  Jim Meyering  <>

	Revert the change of 2006-02-24, so these files can continue
	to be sync'd from gettext.
	* mkdtemp.c, setenv.c, unsetenv.c: *Un*-normalize inclusion
	of `config.h'.

2006-02-24  Paul Eggert  <>

	* glob.c: Say "invalid" rather than "illegal" in comments.

2006-02-24  Ralf Wildenhues  <>

	* mkdtemp.c, setenv.c, unsetenv.c: Normalize inclusion of `config.h'.

2006-02-20  Paul Eggert  <>

	* getcwd.c (AT_FDCWD): Work around a bug in Solaris 9 and 10, where
	AT_FDCWD exceeds INT_MAX.
	* openat.h (AT_FDCWD): Likewise.

2006-02-14  Jim Meyering  <>

	Sync from coreutils.

	Eliminate the unwelcome (albeit unlikely) possibility of xmalloc
	failure on deficient systems, and simplify gnulib lgpl dependencies.
	* lstat.c (rpl_lstat): Rewrite to use stat() in place of the
	xmalloc/lstat combination.  Based on a patch from Bruno Haible.

	* xalloc-die.c: Remove unused definition of N_.

2006-02-13  Sergey Poznyakoff  <>

	* argp-fmtstream.c: Restore another bugfix lost on 2005-12-12

2006-02-07  Paul Eggert  <>

	* closeout.c (close_stdout): Don't assume 'bool' converts nonzero
	ints to 0 or 1, as this isn't true for the stdbool.h substitute.

2006-02-07  Sergey Poznyakoff  <>

	* argp-namefrob.h: Restore changes accidentally lost during the
	"autoupdate" on 2005-12-12.

2006-01-27  Paul Eggert  <>

	* fnmatch.c (L_): Renamed from L, to work around a bug in
	Mac OS X 10.3.9 with GCC 3 reported by Claudio Fontana in
	All uses changed.

2006-01-26  Simon Josefsson  <>

	* socket_.h: Set WINVER to 0x0501, to make sure getaddrinfo
	prototype is visible on mingw32.

	* getaddrinfo.h: Define EAI_ADDRFAMILY and EAI_SYSTEM if not set,
	for mingw32.

	* gai_strerror.c, getaddrinfo.h: Protect netdb.h #include (for

2006-01-26  Paul Eggert  <>

	* fts.c (diropen): Open with O_NOCTTY | O_NONBLOCK too.  Don't
	attempt to open for write; this always fails, at least on POSIX
	hosts.  This reinstates the 2006-01-09 change, which was
	inadvertently removed.

2006-01-26  Bruno Haible  <>
	    Paul Eggert  <>

	* stdbool_.h (_Bool)
	[(! (defined __cplusplus || defined __BEOS__)
	  && !defined __GNUC__
	  && !(defined __HP_cc || defined __xlc__
	       || (defined __SUNPRO_C && (__SUNPRO_C < 0x550 || __STDC__ == 1))
	       || defined __sgi))]:
	#define to signed char in these cases too; this simplifies
	the code (so that we don't have to worry about HP-UX, AIX, SunPRO,
	etc., separately) and makes it more conservative.

2006-01-21  Jim Meyering  <>

	Sync from the stable (b5) branch of coreutils:

	* fts.c (fts_children): Don't let close() clobber errno from
	failed fchdir().

	* fts.c (fts_stat): When following a symlink-to-directory,
	don't necessarily interpret stat-fails+lstat-succeeds as indicating
	a dangling symlink.  That can also happen at least for ELOOP.
	The fix: return FTS_SLNONE only when the stat errno is ENOENT.
	FYI, this bug predates the inclusion of fts.c in coreutils.

	* fts.c (fts_open): Put new maxarglen declaration and uses
	in their own block, so pre-c99 compilers don't object.

	Avoid the double-free (first in fts_read, second in fts_close) that
	would occur when an `active' directory is made inaccessible (e.g.,
	via chmod a-x) during a traversal.
	* fts.c (fts_read): After a failed fchdir, update sp->fts_cur
	before returning.  Reproduce this failure by
	mkdir -p a/b; cd a; chmod a-x . b
	Reported by Stavros Passas.

2006-01-25  Sergey Poznyakoff  <>

	* argp-namefrob.h: Bugfix. Remove stray #

2006-01-25  Bruno Haible  <>

	* stdbool_.h (_Bool) [IRIX cc]: Define as 'signed char', to avoid
	Reported by Paul Eggert.

2006-01-25  Jim Meyering  <>

	* fileblocks.c: Remove more useless parentheses.
	* readutmp.h: Likewise.

2006-01-24  Bruno Haible  <>

	* stdbool_.h (_Bool) [__cplusplus]: Don't define if the compiler already
	has it.
	Report and patch by Albert Chin-A-Young  <> on

	* stdbool_.h (_Bool) [HP-UX cc, AIX cc,xlc]: Define as 'signed char'
	to avoid problems with the built-in _Bool type.
	Reported by Paul Eggert on 2005-11-26.

2006-01-24  Jim Meyering  <>

	* socket_.h: Remove useless parentheses in uses of cpp `defined'.

2006-01-24  Simon Josefsson  <>

	* socket_.h (SHUT_WR, SHUT_RDWR): Don't hardcode, suggested by

2006-01-23  Paul Eggert  <>

	Work around porting bugs reported by Dieter in
	* getopt.c (_NOPROTO): Remove; no longer needed.
	Include <stdlib.h> and <unistd.h> in all environments; it's safe now.
	Include "getopt.h" first, to check interface.
	(getenv): Declare only if defined HAVE_DECL_GETENV &&
	* strndup.c [!_LIBC]: Include "strndup.h" to get prototype.
	(__strndup): Revert to K&R-style function dfns, the glibc style.
	* strnlen.c: Don't claim it's taken from glibc; it's not.
	(strnlen, __strnlen): Remove #defines and #undefs; not needed.
	Include strnlen.h first, to get prototype properly.
	(strnlen): Renamed from __strnlen.
	Remove weak alias.

2006-01-23  Ulrich Drepper  <>

	These changes imported from libc.
	* getopt.c: Use __fxprintf instead of inline stream orientation
	test and two separate function calls.
	* strndup.c (__strndup): Add libc_hidden_def.

2006-01-22  Bruno Haible  <>

	* vasnprintf.c (VASNPRINTF): In the computation of the size of the
	temporary buffer for sprintf, take into account the precision also
	for 'd', 'i', 'u', 'o', 'x', 'X'.

2006-01-22  Paul Eggert  <>

	* quotearg.c (quotearg_buffer_restyled): Add "default: break;"
	to pacify gcc -Wswitch-default.

2006-01-21  Sergey Poznyakoff  <>

	* argp-help.c (usage_long_opt): Do not print DOC options.
	(__argp_base_name): Removed
	* argp-namefrob.h (__argp_basename): Removed definition. Was a
	(__argp_base_name): Provide macro definition or extern declaration
	depending on the configuration

2006-01-20  Simon Josefsson  <>

	* inet_ntop.h: Unconditionally include sys/socket.h.

2006-01-19  Simon Josefsson  <>

	* socket_.h: Map SHUT_RD, SHUT_WR, SHUT_RDWR correctly.

2006-01-12  Simon Josefsson  <>

	* base64.c: Fix warning, reported by Bruno Haible
	<> and patch by Paul Eggert <eggert@CS.UCLA.EDU>.

2006-01-11  Paul Eggert  <>

	Sync from coreutils.
	* md5.c: Fix commentary typos.
	(alignof, UNALIGNED_P): No need for a GCC-specific version.
	* md5.h (__attribute__): Remove; unused.
	* sha1.c: Fix commentary to match md5 better.
	* sha1.h (struct sha1_ctx): Use a word buffer, not a byte buffer,
	so that we don't need to worry about alignment.  All uses changed.
	This merges the 2005-10-28 md5 change into sha1.

2006-01-11  Jim Meyering  <>

	Sync from coreutils.
	* md5.c (OP): Fix spacing.

2006-01-11  Simon Josefsson  <>

	* stdint_.h (SIZE_MAX): Add missing (.

2006-01-10  Bruno Haible  <>

	* argp.h (__const): Remove macro. Use const instead.
	* argp-fmtstream.h (__const): Likewise.
	* glob_.h (__const): Remove macro.
	* glob-libc.h: Use const instead of __const.

2006-01-10  Jim Meyering  <>

	Avoid the double-free (first in fts_read, second in fts_close) that
	would occur when an `active' directory is made inaccessible (e.g.,
	via chmod a-x) during a traversal.
	* fts.c (fts_read): After a failed fchdir, update sp->fts_cur
	before returning.  Reproduce this failure by
	mkdir -p a/b; cd a; chmod a-x . b
	Reported by Stavros Passas.

	Sync from coreutils.
	* sha1.c: Tweak grammar in a comment.

2006-01-10  Paul Eggert  <>

	* regex_internal.h (BITSET_WORD_BITS):
	Work around a bug in 64-bit PGC (before version 6.1-2), where the
	preprocessor mishandles large unsigned values as if they were signed.
	Problem reported by Claudio Fontana in

2006-01-10  Simon Josefsson  <>

	* socket_.h: New file.

2006-01-10  Bruno Haible  <>

	* localcharset.c: Update from GNU gettext.

2006-01-09  Paul Eggert  <>

	Sync from coreutils.
	* chdir-long.c (cdb_free): Don't bother trying to open directory
	for write access: POSIX says that must fail.
	* fts.c (diropen): Likewise.
	* save-cwd.c (save_cwd): Likewise.
	* chdir-long.c (cdb_free): Open with O_NOCTTY | O_NONBLOCK as
	well, for minor improvements on hosts that lack O_DIRECTORY.
	* chown.c (rpl_chown) [CHOWN_MODIFIES_SYMLINK]:
	Don't try O_WRONLY unless O_RDONLY failed wth EACCES.
	Fall back on chown if open failed with EACCES.

	* gettime.c (gettime) [!defined OK_TO_USE_1S_CLOCK]:
	Report an error at compile-time if only a 1-second nominal clock
	resolution is found.

	* lchmod.h: New file.
	* mkdir-p.c: Include lchmod.h, lchown.h.
	(make_dir_parents): Use lchown rather than chown, and
	lchmod rather than chmod.

	* mountlist.c (ME_DUMMY): "none" and "proc" file systems are dummies
	too.  Problem with "none" reported by Bob Proulx.  Problem with
	"proc" reported by n0dalus.

	* mountlist.c: Include <limits.h>.
	New function.  It no longer assumes "dev=" has the System V meaning
	on Linux (since it doesn't).  It also parses "dev=" more carefully.
	[defined MOUNTED_GETMNTENT1 || defined MOUNTED_GETMNTENT2]: Use it.
	MOUNTED_GETMNTENT2 is new here; the code didn't used to look for
	dev= in that case.

	* posixtm.h (PDS_PRE_2000): New macro.
	* posixtm.c (year): Arg is now syntax_bits rather than allow_century.
	All usages changed.  Reject dates outside the range 1969-1999 if
	PDS_PRE_2000 is used.

2006-01-09  Jim Meyering  <>

	Sync from coreutils.

	* version-etc.c (COPYRIGHT_YEAR): Update to 2006.

	* chdir-safer.h, chdir-safer.c: New files.

	* modechange.c (mode_compile): Reject an invalid mode string
	that starts with an octal digit.  From Andreas Gruenbacher.

	* openat.c: Include "fcntl--.h" and "unistd--.h", to map open
	and dup to open_safer and dup_safer, respectively.
	(openat_permissive): Fix typo in comment.

	* openat.c: Don't include <stdlib.h>, <unistd.h>, <fcntl.h>,
	"gettext.h"; either no longer needed or are guaranteed by openat.h.
	(_): Remove; no longer needed.
	(openat): Renamed from rpl_openat; no need for rpl_openat
	since openat.h renames openat for us.
	Replace most of the body with a call to openat_permissive,
	to avoid duplicate code.
	Port to (probably hypothetical) environments were mode_t is
	wider than int.
	(openat_permissive): Require mode arg, so that we can check
	types better.  Put it just after flags.  Change cwd failure
	indicator from pointer-to-bool to pointer-to-errno-value.
	All callers changed.
	Invoke openat_save_fail and/or openat_restore_fail if
	cwd_errno is null, so that openat can call us.
	(openat_permissive, fdopendir, fstatat, unlinkat):
	Simplify errno handling to avoid some duplicate code,
	as it's OK to set errno on success.
	* openat.h: Revamp code so that function macros depend on
	__OPENAT_PREFIX only, not also on AT_FDCWD.
	(openat_ro): Remove.  Caller changed to use openat_permissive.
	(openat_permissive): Now a macro, if not a function.
	(openat_restore_fail, openat_save_fail): Now always functions,
	since mkdirat needs them even if __OPENAT_PREFIX is defined.

	* openat-priv.h: New file, defining macros used by mkdirat.c
	and openat.c.
	* mkdirat.c: Include openat-priv.h.
	Remove definitions of macros defined therein.
	* openat.c: Likewise.

	* mkdirat.c (mkdirat): New file and function.
	* openat.h (mkdirat): Declare.

	* openat.c (fdopendir): Don't change errno when returning non-NULL.

	* openat.h (openat_permissive): Declare.
	(openat_ro): Define.

	* openat.c (EXPECTED_ERRNO): New macro.
	(openat_permissive): New function -- used in remove.c rewrite.
	(all functions): Set errno just before returning, only if there
	was an actual failure.
	Use EXPECTED_ERRNO rather than comparing against only ENOTDIR.

	Emulate openat-family functions using Linux's procfs, if possible.
	Idea and some code based on Ulrich Drepper's glibc changes.

	* openat.c: (BUILD_PROC_NAME): New macro.
	Include <stdio.h>, <string.h>, "alloca.h" and "intprops.h".
	(rpl_openat): Emulate by trying to open /proc/self/fd/%d/%s,
	before falling back on save_cwd and restore_cwd.
	(fdopendir, fstatat, unlinkat): Likewise.

	* openat.c (fstatat, unlinkat): Perform the syscall directly,
	skipping the save_cwd...restore_cwd overhead, if FILE is absolute.

	* openat.c (rpl_openat): Use the promoted type (int), not mode_t,
	as second argument to va_arg.  Otherwise, some versions of gcc
	warn that `if this code is reached, the program will abort'.

2006-01-09  Andreas Gruenbacher  <>

	Sync from coreutils.

	Add POSIX ACL support
	* acl.h (copy_acl, set_acl): Add declarations.
	* acl.c (acl_entries): Add fallback implementation for POSIX ACL
	systems other than Linux.
	(chmod_or_fchmod): New function: use fchmod when possible,
	and chmod otherwise.
	(file_has_acl): Add a POSIX ACL implementation, with a
	Linux-specific subcase.
	(copy_acl): Add: copy an acl and S_ISUID, S_ISGID, and
	S_ISVTX from one file to another.  Fall back to fchmod/chmod when
	acls are unsupported.
	(set_acl): Add: set a file's acl and S_ISUID, S_ISGID, and
	S_ISVTX to a defined value.  Fall back to fchmod/chmod when acls
	are unsupported.

2006-01-09  Bruno Haible  <>

	* sysexit_.h (EX_OK): New macro.
	Suggested by Martin Lambers <>.

2006-01-09  Bruno Haible  <>

	* Move to ../build-aux/
	* Move to ../build-aux/
	* Move to ../build-aux/
	* Move to ../build-aux/

2006-01-09  Bruno Haible  <>

	* stdint_.h (SIZE_MAX): Write the value without involving negative

2005-10-16  Bruno Haible  <>

	* stdint_.h: On Linux libc4 and libc5, include <sys/bitypes.h> and

2006-01-04  Paul Eggert  <>

	* strftime.c (tzname): Don't declare if it is already #defined.
	Problem reported for Mingw by Mark Junker.

2006-01-03  Paul Eggert  <>

	* xtime.h (xtime_make, xtime_nonnegative_nsec, xtime_nsec): Use
	long int, not int, for nanosecond counts, so that people who are
	used to POSIX struct timespec won't be surprised.  Reported by Jim

2005-12-16  Jim Meyering  <>

	* fprintftime.c, fprintftime.h: New files.

2005-12-10  Sergey Poznyakoff  <>

	* argp-fmtstream.c (__argp_fmtstream_update): Fix coredump
	* argp-help.c (fill_in_uparams): Check if the constructed
	struct uparams is valid. Fall back to the default values if it is

2005-12-09  Sergey Poznyakoff  <>

	* argp-help.c (__argp_base_name): New function
	(__argp_short_program_name): Rewrite using __argp_base_name
	* argp-namefrob.h: Define program_invocation_name and
	program_invocation_short_name if requested
	(__argp_base_name): Add prototype
	* argp-parse.c (argp_def): Use gettext wrappers
	(argp_default_parser): Use __argp_base_name
	* argp-pin.c: New file. Defines program_invocation_name and
	program_invocation_short_name on systems that lack them.

2005-12-07  Paul Eggert  <>

	* stat-time.h (STATE_TIMESPEC, STAT_TIMESPEC_NS): Add check for
	porting problem reported by Georg Schwarz in

2005-07-09  Bruno Haible  <>

	* (options_csc): For -l option, add a .dll suffix.
	* csharpcomp.c (compile_csharp_using_sscli): Likewise.
	Reported by Mark Junker <>.

2005-11-29  Paul Eggert  <>

	* stdint_.h (intmax_t) [defined intmax_t]: Do not declare.
	(uintmax_t) [defined uintmax_t]: Do not declare.
	(SIZE_MAX) [defined SIZE_MAX]: Do not define.
	This works around a problem if intmax_t.m4 and/or uintmax_t.m4
	and/or size_max.m4 are also used.  Problem reported by Mark D. Baushke.
	(SIZE_MAX): Define to ((size_t) -1), not (~(size_t)0), for the
	sake of portability to weird hosts that C allows (though we don't
	know of any practical examples).

	* savedir.h (fdsavedir): New decl.
	* savedir.c (fdsavedir, savedirstream): New functions; the latter
	contains most of the former guts of savedir.
	(savedir): Use savedirstream.
	Include "openat.h".

2005-11-15  Paul Eggert  <>

	* xstrtod.c: Don't bother with #pragma STDC FENV_ACCESS ON, as
	coreutils no longer futzes with rounding modes.

2005-11-14  Jim Meyering  <>

	* mkstemp-safer.c: Include <config.h>, required for possible
	replacement of mkstemp.

2005-11-10  Paul Eggert  <>

	* gethrxtime.c: Include "timespec.h" rather than the sys/time / time
	(gethrxtime) [! (HAVE_NANOUPTIME
	|| HAVE_MICROUPTIME)]: Fall back on gettime rather than rolling
	our own approximation.

2005-11-10  Simon Josefsson  <>

	* readline.c: Remove EOL.

2005-11-08  Eric Blake  <>

	* inet_ntop.h: Use #if !, not #ifndef, for AC_CHECK_DECLS.

2005-11-08  Eric Blake  <>

	* getaddrinfo.h: Use #if !, not #ifndef, for AC_CHECK_DECLS.

2005-10-30  Paul Eggert  <>

	Fix porting problem reported by Theodoros V. Kalamatianos.
	* utimens.c (futimens) [HAVE_WORKING_UTIMES && HAVE_FUTIMES]:
	Don't assume that futimes failing means we must fail.

2005-10-29  Paul Eggert  <>

	* getcwd.c (__getcwd): Don't assume that system calls after readdir
	leave errno alone.  Problem reported by Dmitry V. Levin.

2005-10-28  Paul Eggert  <>

	* savedir.c (savedir): Don't assume that xrealloc etc. leave
	errno alone.  Problem reported by Frederic Jolliton.

2005-10-28  Simon Josefsson  <>

	* inet_ntop.h, inet_ntop.c: Make it work under mingw32: Add
	"restrict" keywords, as per POSIX.  Protect the function
	declaration around HAVE_DECL_INET_NTOP rather than HAVE_INET_NTOP.
	Don't use K&R prototypes.  Check the sprintf return values.
	Re-define EAFNOSUPPORT if not present.  Indent.

	* md5.h, md5.c: Simplify buffer handling visavi alignment,
	suggested by Bruno Haible <>.

	* gc-gnulib.c, gc-libgcrypt.c: Check calloc return value.

	* gc.h: Add MD2 and RMD160 length defines.  Add prototypes.

	* gc-libgcrypt.c: Add MD2 (which is not available through

	* gc-gnulib.c: Add MD2.  Implement gc_hash_* API.

	* md2.h, md2.c: New files.

2005-10-24  Simon Josefsson  <>

	* md4.h: Shrink buffer size, now that we changed the type.

2005-10-22  Simon Josefsson  <>

	* arcfour.h, arcfour.c: Use fixed size indices in the
	arcfour_context struct (simplify test vector testing in GNU

2005-10-22  Simon Josefsson  <>

	* md4.h, md4.c: Simplify buffer handling visavi alignment,
	suggested by Bruno Haible <>.

2005-10-22  Simon Josefsson  <>

	* crc.h: Include stddef.h, for size_t.

2005-10-21  Simon Josefsson  <>

	* arctwo.h (arctwo_setkey): Protect variable in CPP macro,
	suggested by Ralf Wildenhues <>.

2005-10-21  Simon Josefsson  <>

	* rijndael-api-fst.c: Fix bugs in CBC mode for more than one

2005-10-21  Simon Josefsson  <>

	* gc-gnulib.c: Support ARCTWO in CBC mode.

2005-10-21  Simon Josefsson  <>

	* hmac-md5.c (hmac_md5): Add comments, suggested by Bruno Haible

	* hmac-sha1.c (hmac_sha1): Likewise.

	* crc.c (crc32_update): Actually use crc parameter, suggested by
	Bruno Haible <>.

	* crc.h: Include stdint.h directly, suggested by Bruno Haible

2005-10-21  Simon Josefsson  <>

	* des.h, des.c: New files.

	* gc-gnulib.c: Support DES.c

2005-10-21  Simon Josefsson  <>

	* arctwo.h, arctwo.c: New files.

	* gc-gnulib.c: Support ARCTWO.

2005-10-21  Simon Josefsson  <>

	* gc-libgcrypt.c (gc_cipher_open): Handle ECB.

2005-10-19  Simon Josefsson  <>

	* gc-gnulib.c: Support ARCFOUR.

2005-10-19  Simon Josefsson  <>

	* gc-gnulib.c: Implement gc_cipher_* API, currently only with AES

	* gc.h: Add ECB enum type.

	* hmac-md5.c, hmac-sha1.c: Include memxor.h.

2005-10-19  Simon Josefsson  <>

	* gc.h, gc-gnulib.c, gc-libgcrypt.c: Support MD4.

2005-10-18  Simon Josefsson  <>

	* md4.h, md4.c: New files, based on md5.?.

2005-10-17  Simon Josefsson  <>

	* gc-libgcrypt.c (gc_hmac_sha1): Fix assert.

	* gc.h (gc_nonce, gc_pseudo_random, gc_random): Add prototypes.

2005-10-17  Simon Josefsson  <>

	* gc.h, gc-libgcrypt.c: Add more hash types/functions.

2005-10-17  Simon Josefsson  <>

	* gc.h, gc-libgcrypt.c: Add ciphers.

2005-10-17  Simon Josefsson  <>

	* sha1.c: Use uint32_t instead of md5_uint32.t

	* sha1.h: Use stdint.h and uint32_t instead of md5_uint32 from

	* md5.c: Use uin32_t.  Fix non-gcc UNALIGNED_P macro.

	* md5.h: Use stdint.h and uint32_t.  Doc fix.

2005-10-15  Simon Josefsson  <>

	* rijndael-api-fst.h, rijndael-api-fst.c: New files.

	* rijndael-alg-fst.h, rijndael-alg-fst.c: New files.

2005-10-14  Simon Josefsson  <>

	* arcfour.h, arcfour.c: New files.

2005-10-14  Paul Eggert  <>

	* obstack.c [defined _LIBC && defined USE_IN_LIBIO]: Don't
	include <wchar.h>; no longer needed.

2005-10-14  Jakub Jelinek  <>
	and  Ulrich Drepper  <>

	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  <>

	Import from libc.  [BZ #1331]
	* obstack.h [!__STDC__] (obstack_int_grow_fast): Fix misnamed
	macro argument.
	Reported by Matej Vela <>.

2005-10-13  Paul Eggert  <>

	* 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  <>

	* gc-pbkdf2-sha1.c (gc_pbkdf2_sha1): Optimize CEIL computation.
	Move memory allocation outside of loop.

2005-10-12  Simon Josefsson  <>

	* gc-pbkdf2-sha1.c: New file.

	* gc.h: Add gc_pbkdf2_sha1 prototype.

2005-10-12  Simon Josefsson  <>

	* gc.h, gc-gnulib.c, gc-libgcrypt.c: Use Gc_rc for return types,
	suggested by Bruno Haible <>.

2005-10-12  Simon Josefsson  <>

	* gc-libgcrypt.c (gc_hmac_sha1): New function.

	* gc-gnulib.c (gc_hmac_sha1): New function.

2005-10-12  Simon Josefsson  <>

	* gc.h, gc-gnulib.c, gc-libgcrypt.c: Support SHA-1.

2005-10-12  Simon Josefsson  <>

	* 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  <>

	* c-strcasestr.h: New file, from GNU gettext.
	* c-strcasestr.c: New file, from GNU gettext.

2005-10-11  Bruno Haible  <>

	* 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  <>

	* crc.h, crc.c: New files.

	* gc.h (gc_hash_buffer): Add doc.

2005-10-08  Simon Josefsson  <>

	* 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  <>

	* 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  <>

	* hmac-md5.c: New file.

	* hmac.h: New file.

2005-10-06  Simon Josefsson  <>

	* memxor.c (memxor): Avoid casts and warnings.

2005-10-05  Derek Price  <>

	* getdelim.c (SIZE_MAX): New macro, if not already defined.

2005-10-05  Simon Josefsson  <>

	* memxor.c (memxor): Fix compiler error.

	* md5.h (MD5_DIGEST_SIZE, MD5_BLOCK_SIZE): Add, see also

	* 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
	<>.  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  <>

	* verify.h (verify_true): Provide alternative definition for C++.

2005-10-04  Simon Josefsson  <>

	* getaddrinfo.h: Move sys/types.h include first, reported by "Mark
	D. Baushke" <>.

2005-10-03  Paul Eggert  <>

	* 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  <>

	* 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  <>

	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  <>  (tiny change)

	* getdelim.c (getdelim): Remove unused variables.

2005-10-01  Simon Josefsson  <>

	* 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  <>

	* 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 reported by Thomas M.Ott.

2005-09-27  Jim Meyering  <>

	* 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  <>

	* 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  <>

	* 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):
	(__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  <>

	* 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  <>

	* 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  <>

	Sync from coreutils.

	* .cppi-disable: Add regcomp.c, regex_internal.c, regex_internal.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.
	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
	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  <>

	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
	* 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);
	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  <>  (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  <>

	* unicodeio.h (unicode_to_mb): New declaration.

2005-09-20  Derek Price  <>

	* getaddrinfo.c: Don't include <netdb.h> included from getaddrinfo.h.

2005-09-19  Ralf Wildenhues  <>

	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  <>

	* stat-time.h: New file.
	(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  <>
	    Paul Eggert  <>

	* regcomp.c, regexec.c, regex_internal.c: Back out previous
	changes, consolidating in...
	* regex_internal.h: ...this file.

2005-09-15  Derek Price  <>

	* regex_internal.h: Blank `pure' for GNUC < 3.
	* regex_internal.c: Ditto, using this...
	(__GNUC_PREREQ): 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  <>

	* canon-host.c (canon_host_r): Set *cherror on memory allocation
	Reported by Jim Meyering  <>.

2005-09-13  Jim Meyering  <>

	* 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  <>  (tiny change)

	* base64.c: Typo.
	(base64_encode): Put b64str in initialized data section.

2005-09-12  Derek Price  <>

	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
	(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  <>
	    Paul Eggert  <>

	* 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
	(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  <>

	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  <>

	* gai_strerror.c: Include config.h when available.  Include
	getaddrinfo.h before other headers to test interface.
	Reported by Larry Jones <>.

2005-09-08  Paul Eggert  <>

	* 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  <>

	* regex_internal.h (bitset_not): Add parens to avoid gcc -Wall warning.

2005-09-06  Simon Josefsson  <>

	* getpass.c (getpass): Fix typo, test for HAVE_TCSETATTR and not
	TCSETATTR.  Reported by Derek Price <>.

2005-09-05  Paul Eggert  <>

	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):
	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):
	* regexec.c (check_dst_limits_calc_pos_1, check_subexp_matching_top):
	(build_trtable, group_nodes_into_DFAstates):
	* 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):
	* 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  <>

	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.
	* regcomp.c (init_dfa, analyze, build_range_exp, parse_bracket_exp):
	(build_equiv_class, build_charclass): Check for arithmetic overflow
	in size expression calculations.
	* 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.
	* 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  <>

	* 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

	* 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):
	* regex_internal.c (re_node_set_insert, re_node_set_insert_last):
	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  <>

	* getdelim.c (getdelim): Return EOF on EOF.
	Reported by Larry Jones <>.

2005-08-31  Paul Eggert  <>

	* 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  <>

	* 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  <>

	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.
	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):
	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):
	* 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):
	* 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):
	* 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

	* 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):

	* 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
	(struct re_dfa_t): Remove unused member states_alloc.
	* regcomp.c (init_dfa): Don't initialize unused members.

2005-08-31  Bruno Haible  <>

	* strstr.c: Include <stddef.h>, for NULL.
	* strcasestr.c: Likewise.
	Reported by Yoann Vandoorselaere <>.

2005-08-30  "Oskar Liljeblad" <>

	* iconvme.h: Add prototype for iconv_alloc.

2005-08-29  Simon Josefsson  <>

	* iconvme.c: Fix errno.

2005-08-29  "Oskar Liljeblad" <>

	* iconvme.c: Split iconv_string into iconv_alloc.

2005-08-27  Jim Meyering  <>

	* 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  <>

	* 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):
	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.
	* regex_internal.c (re_string_peek_byte_case):
	(re_string_fetch_byte_case, re_node_set_compare, re_node_set_contains):

2005-08-26  Simon Josefsson  <>

	* getpass.c: Use _WIN32 instead of WIN32, suggested by Bruno
	Haible <>.

2005-08-25  Paul Eggert  <>

	* 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  <>

	* getpass.c: Add WIN32 implementation.  Conditionalize use of
	termios.h, tcgetattr, tcsetattr and __fsetlocking.  Remove some
	GLIBC specific code.

2005-08-25  Paul Eggert  <>

	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  <>

	* 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  <>

	* 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
	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_BK_PLUS_QM): renamed from RE_BK_PLUS_QM.
	(REG_DOT_NOT_NULL): renamed from RE_DOT_NOT_NULL.
	(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_GNU_OPS): renamed from RE_NO_GNU_OPS.
	(REG_DEBUG): renamed from RE_DEBUG.
	(REG_IGNORE_CASE): renamed from RE_ICASE.  This renaming is a bit
	unusual, since we can't clash with the POSIX REG_ICASE.
	(REG_NO_SUB): renamed from RE_NO_SUB.
	(REG_SYNTAX_AWK): renamed from RE_SYNTAX_AWK.
	(REG_SYNTAX_ED): renamed from RE_SYNTAX_ED.
	(REG_SYNTAX_SED): renamed from RE_SYNTAX_SED.
	(REG_DUP_MAX): renamed from RE_DUP_MAX.  No need to undef it.
	(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_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_ESIZE, REG_ERPAREN): Now macros, not enum constants.

	(_REG_RE_NAME, _REG_RM_NAME): New macros.
	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  <>

	Sync from coreutils.
	* fcntl--.h, fcntl-safer.h, open-safer.c: New files.

2005-08-21  Bruno Haible  <>

	* lock.h: Add multiple inclusion guard.
	* tls.h: Add multiple inclusion guard.

2005-08-23  Paul Eggert  <>

	* 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 <>.

	* regex_internal.c (re_string_skip_chars, register_state):
	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  <>

	Fix problems reported by Sam Steingold in
	* 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  <>

	* regexec.c (regexec, re_search_stub) [!_LIBC]: Omit declaration
	of unused local, dfa.

2005-08-20  Paul Eggert  <>

	* 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):
	* 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):

	* 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  <>

	* 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

2005-08-19  Jim Meyering  <>

	* regexec.c (proceed_next_node): Redo local variables to
	avoid GCC shadowing warnings.

2005-08-19  Paul Eggert  <>

	* 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  <>

	* strstr.c (strstr): Fix return value in multibyte case.
	* strcasestr.c (strcasestr): Likewise.

2005-08-17  Jim Meyering  <>

	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  <>

	* regex.h: Remove useless space-before-tab.  From coreutils.

2005-08-17  Bruno Haible  <>

	* strcasestr.h: New file.
	* strcasestr.c: New file.

2005-08-17  Bruno Haible  <>

	* strstr.h: Ignore HAVE_STRSTR, always declare the gnulib function.
	* strstr.c: Completely rewritten, with multibyte locale support.

2005-08-17  Bruno Haible  <>

	* strcasecmp.c: Use mbuiter.h.

2005-08-17  Bruno Haible  <>

	* mbuiter.h: New file.

2005-08-16  Bruno Haible  <>

	* strcasecmp.c (struct mbiter_multi): Remove at_end field.
	(mbi_init): Update.
	(mbi_avail, mbi_advance): Let the iteration end before the terminating
	NUL byte, not after it.

2005-08-16  Bruno Haible  <>

	* mbchar.h (mb_cmp, mb_casecmp): Order the invalid characters after
	the valid ones. Makes the comparison operations transitive:
	cmp (a, b) < 0 && cmp (b, c) < 0 ==> cmp (a, c) < 0.
	* strcasecmp.c (strcasecmp): Use mb_casecmp.

2005-08-16  Bruno Haible  <>

	* strcase.h (strcasecmp): Add note in comments.
	* strncasecmp.c: Use code from strcasecmp.c.
	* strcasecmp.c: Use mbchar module. Define private mbiter variant.
	(strcasecmp): Work correctly in multibyte locales.

2005-08-16  Bruno Haible  <>

	* strnlen1.h: New file.
	* strnlen1.c: New file.