Reported by Tom G. Christensen <tgc@jupiterrise.com>:
* lib/set-permissions.c (set_acls): The count, entries, ace_count, and
ace_entries variables have moved into struct permission_context but
they were still accessed as local variables here.
Pádraig Brady [Fri, 29 May 2015 02:11:59 +0000 (03:11 +0100)]
linkat: avoid OS X 10.10 trailing slash with symlink bug
On Darwin 14.3.0 linkat(,"path1",,"dangling_symlink/",)
causes the symlink to be dereferenced, and if it points
to a non existent file, that file will be created as
a hard link to "path1".
This fixes a test failure in test-linkat.c.
* m4/linkat.m4 (gl_FUNC_LINKAT): Augment the test with
this case. The existing workaround in linkat.c for
trailing slash issues, suffices for this case.
* doc/posix-functions/linkat.texi: Add OS X 10.10 to
the list of platforms with trailing slash issues.
Pádraig Brady [Thu, 28 May 2015 13:15:08 +0000 (14:15 +0100)]
unlinkat: handle ignoring of ".." on Darwin 14
* lib/unlinkat.c: unlinkat() has the same bug as unlink()
on Mac OS X 10.10, where it ignores paths with a trailing "..",
so handle in the same manner.
* m4/unlinkat.m4: Comment on this Darwin issue.
* doc/posix-functions/unlink.texi: Update the latest version
where the issue was seen.
* doc/posix-functions/unlinkat.texi: Mention this issue.
Fixes a test failure in test-unlinkat.c.
Paul Eggert [Wed, 27 May 2015 23:05:44 +0000 (16:05 -0700)]
qacl: split into qcopy-acl and qset-acl
Emacs needs the former, but not the latter.
* modules/acl-permissions: New file, containing most of the old qacl.
* modules/file-has-acl (Depends-on): Depend on acl-permissions, not qacl.
* modules/qacl: Now merely depends on qcopy-acl and qset-acl.
* modules/qcopy-acl, modules/qset-acl: New files.
* MODULES.html.sh (File system functions):
Mention the new modules, and mention qacl while we're at it.
Glenn Morris [Wed, 27 May 2015 21:44:16 +0000 (14:44 -0700)]
gitlog-to-changelog: new option --ignore-line
(This patch is imported from the GNU Emacs master.)
This option ignores individual commit lines matching a pattern.
* build-aux/gitlog-to-changelog: Add --ignore-line option.
qacl: Reimplement qset_acl and qcopy_acl (Bug#20666)
Implement get_permissions and set_permissions primitives for getting all
the permissions of a file, storing them, and later setting them. (In the
minimal case, the permissions consist only of a file mode.) Reimplement
qset_acl and qcopy_acl based on these new primitives: this avoids code
duplication and makes error handling more consistent.
The Solaris and Cygwin code still uses duplicate code paths for setting
a file mode while making sure that no acls exist and setting an explicit
acl; this is no worse than before, but could be cleaned up. The AIX
code still doesn't read ACLs, it only makes sure that acls don't get in
the way when setting a file mode.
* lib/acl-internal.h (struct permission_context): New data structure.
(get_permissions, set_permissions, free_permission_context): Declare.
* lib/acl-internal.c (free_permission_context): New helper function.
* lib/get-permissions.c (get_permissions): New helper function split off
from qcopy_acl.
* lib/set-permissions.c: (set_acls_from_mode): On Solaris, Cygwin, and
AIX, set a file's permissions based only on a file mode.
(acl_from_mode, context_acl_from_mode, context_aclv_from_mode): All
other platforms construct a temporary acl from the file mode and set
that acl in the same way as setting an acl read from the source file.
This should help avoid code duplication and inconsistent / buggy
behavior.
(set_acls): New helper function Split off from qcopy_acl.
(chmod_or_fchmod): Moved here from qset-acl.c.
(set_permissions): New helper function.
* lib/qcopy-acl.c (qcopy_acl): Rewrite using get_permissions and
set_permissions.
* lib/qset-acl.c (qset_acl): Rewrite using set_permissions.
* modules/qacl: Add get-permissions.c and set-permissions.c.
file-has-acl: Split feature tests again (Bug#20667)
* lib/file-has-acl.c: Instead of testing for
XATTR_NAME_POSIX_ACL_ACCESS and XATTR_NAME_POSIX_ACL_DEFAULT,
define them when needed.
* m4/acl.m4 (gl_FILE_HAS_ACL): With that, Paul's
GETXATTR_WITH_POSIX_ACLS change shouldn't be needed anymore.
Pádraig Brady [Wed, 27 May 2015 11:59:05 +0000 (12:59 +0100)]
string: fix build failure on BSD/OSX with FORTIFY_SOURCE
This avoids a conflict with "FORTIFY_SOURCE" variants
of the string functions when they're replaced on NetBSD-6.0.1
and Darwin-14.3.0 at least. On these platforms, the system
<string.h> re-includes "string.h" through <strings.h>, before
going on to redefine the "FORTIFY_SOURCE" _chk variants.
For example rpl_strncat is redefined to __builtin___strncat_chk.
Note strncat is being replaced as the configure check is failing
with GCC 4.5.0, due to the builtin strncat failing the check.
I.E. when compiled with -O2 the test fails, but passes when
-fno-builtin-strncat is also specified. -D_FORTIFY_SOURCE has
no impact on the configure test result.
* lib/string.in.h: Avoid including our "lib/string.h" while
including the system <string.h>.
Eric Blake [Wed, 27 May 2015 03:27:44 +0000 (21:27 -0600)]
stdio: limit __gnu_printf__ witness to gcc 4.4+
If we start adding more places that need to conditionally label
functions with __gnu_printf__, it will be nicer if the logic for
determining that gcc even supports that attribute is done once
up front rather than in each caller.
Eric Blake [Tue, 26 May 2015 23:26:15 +0000 (17:26 -0600)]
error: use correct printf attributes on mingw
Now that we always turn on __USE_MINGW_ANSI_STDIO when extensions
are in use, we need to replicate the same logic in error.h as
we have in stdio.h, for selecting the correct format string that
will squelch gcc -Wformat=2 warnings.
Reported by Assaf Gordon.
* lib/stdio.in.h (_GL_ATTRIBUTE_SPEC_PRINTF): New define.
Eric Blake [Tue, 26 May 2015 21:00:50 +0000 (15:00 -0600)]
inttypes: force correct mingw PRIdMAX even without <stdio.h>
The mingw trick of using __USE_MINGW_ANSI_STDIO only changes the
definitions in <inttypes.h> if <stdio.h> is also included. But
since we want to always use the __gnu_printf__ flavor when
available, we want to make sure that including <inttypes.h> in
isolation will give the desired "lld" answer.
Reported by Assaf Gordon.
* modules/inttypes (Depends-on): Require extensions, so that mingw
always uses GNU style inttypes.
* lib/inttypes.in.h: On mingw, include <stdio.h>.
Eric Blake [Wed, 20 May 2015 23:18:20 +0000 (17:18 -0600)]
stdio: fix probe on mingw under gcc 5.1
Per https://gcc.gnu.org/gcc-5/porting_to.html, gcc 5.1 intentionally
changed the preprocessor to emit multiple lines, rather than one
line, when expanding text that includes literal markers combined with
a macro expansion obtained from a header. This in turn breaks the
probe for whether mingw headers support GNU-style "lld" for PRIdMAX,
as the probe text was no longer on one line.
This patch changes from grepping preprocessor output (with its
indeterminate layout due to differences in preprocessors) to instead
using a compile-time check of the length of the macro expansion.
It feels a bit gross, but the grossness is limited to mingw, which
is the only platform where using __gnu_printf__ instead of __printf__
will make a difference.
Based on a report by Suren Hajyan.
* m4/stdio_h.m4 (gl_STDIO_H): Change to compile test, to work
around new gcc preprocessor rules.
Paul Eggert [Thu, 30 Apr 2015 02:47:12 +0000 (19:47 -0700)]
extern-inline: no need for workaround in GCC 5.1
* doc/extern-inline.texi (extern inline):
* m4/extern-inline.m4 (gl_EXTERN_INLINE):
GCC bugs 54113 and 63877 are fixed in GCC 5.1, so don't work
around these bugs in GCC 5.1 and later. Maybe in a decade or
two we can remove these workarounds.
* lib/xalloc.h: Don't use the __alloc_size__ attribute
with clang, as support has been fully removed as of clang 3.5:
https://github.com/llvm-mirror/clang/commit/c047507a
* lib/eealloc.h: Likewise.
* lib/pagealign_alloc.h: Likewise.
Paul Eggert [Mon, 27 Apr 2015 08:23:29 +0000 (01:23 -0700)]
tests: pacify GCC 5.1's stricter printf checking
* tests/test-dirname.c (main):
* tests/test-getaddrinfo.c (simple):
* tests/test-getlogin.c (main):
* tests/test-getndelim2.c (main):
* tests/test-inttostr.c (CK):
* tests/test-md5.c (main):
* tests/test-read-file.c (main):
* tests/test-sha1.c (main):
Fix mismatches between printf format and value signedness.
* tests/test-inttostr.c (FMT, CAST_VAL, V_min, V_max):
Remove, as CAST_VAL always returned a value of type uintmax_t.
Paul Eggert [Mon, 27 Apr 2015 08:19:03 +0000 (01:19 -0700)]
fts: port to GCC 5.1 with --enable-gcc-warnings
Without this fix, GCC 5.1 (correctly) warns about a subscript
error on the fts_name component of FTSENT. It's actually a
flexible member, so define it that way on C99 or later hosts.
* lib/fts.c (fts_alloc): Use offsetof, not sizeof, for a
structure that now has a flexible array member.
* lib/fts_.h (__FLEXIBLE_ARRAY_MEMBER): New macro.
(FTSENT): fts_name is now flexible on C99-or-later platforms.
* modules/fts (Depends-on): Add flexmember.
Paul Eggert [Sun, 26 Apr 2015 16:20:34 +0000 (09:20 -0700)]
file-has-acl: port to CentOS 6
Problem reported by Tom G. Christensen in:
http://lists.gnu.org/archive/html/bug-gnulib/2015-04/msg00074.html
* lib/file-has-acl.c: Use GETXATTR_WITH_POSIX_ACLS instead of a
combination of HAVE_SYS_XATTR_H, HAVE_LINUX_XATTR_H, and
HAVE_GETXATTR.
* m4/acl.m4 (gl_FILE_HAS_ACL): Test fot the entire combination of
linux/xattr.h, sys/xattr.h, getxattr, XATTR_NAME_POSIX_ACL_ACCESS,
and XATTR_NAME_POSIX_ACL_DEFAULT, since that's what what
file-has-acl.c actually needs.
file-has-acl: always return false when ACLs aren't supported
* lib/file-has-acl.c (file_has_acl): Consistent with other paths,
change the GNU/Linux getxattr path, to transform "not supported"
errors to a false return rather than an error. This is handled
within file_has_acl() due to the platform specific tests to
determine if ACLs are not supported.
Paul Eggert [Sun, 26 Apr 2015 00:28:45 +0000 (17:28 -0700)]
gettext: propagate po/Makefile.in.in too
* build-aux/po/Makefile.in.in: Copy from latest gettext.
* config/srclist.txt: In build-aux/po, copy Makefile.in.in and
remove-potcdate.sin from $GETTEXT. This fixes a version mismatch
between Makefile.in.in and the gettext-runtime m4 files.
Paul Eggert [Sat, 25 Apr 2015 05:07:56 +0000 (22:07 -0700)]
file-has-acl: new module, split from acl
And add a new module file-has-acl-tests to match.
I ran into a problem with the recent changes to the acl module,
as they introduced a typo 'test use_xattrs = 0' into 'configure'.
When using the fixed version with Emacs, I discovered that
file-has-acl wasn't separated out well enough for Emacs (e.g., it
had multiple libraries, but needed only one), so I fixed that too.
* NEWS: Document this incompatible change.
* modules/file-has-acl, modules/file-has-acl-tests: New files.
* m4/acl.m4 (gl_FUNC_ACL_ARG): New macro, split from gl_FUNC_ACL.
Initialize gl_need_lib_has_acl.
(gl_FUNC_ACL): Require it.
Simplify use of 'test'. Set LIB_HAS_ACL if gl_need_lib_has_acl.
Move the file-has-acl.c-relevant stuff to ...
(gl_FILE_HAS_ACL): ... this new macro. Rewrite to fix 'test
use_xattrs = 0' typo, and omit some needless work. Set
gl_need_lib_has_acl=1 if we'll need LIB_HAS_ACL to be set
when gl_FUNC_ACL is called.
* modules/acl (Files, lib_SOURCES): Remove lib/file-has-acl.c.
(Link): Remove $(LIB_HAS_ACL).
* modules/acl-tests (Files, Depends-on, configure.ac, TESTS)
(check_PROGRAMS): Move stuff relevant to file-has-acl to
modules/file-has-acl-tests.
(test_file_has_acl_LDADD): Move to modules/file-has-acl-tests.
Paul Eggert [Tue, 21 Apr 2015 07:22:00 +0000 (00:22 -0700)]
lstat: fix cross-compilation 'ln -s' problem
* m4/lstat.m4 (gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK):
Have the test program call 'symlink' rather than a separate
script run 'ln -s'; this is more likely to work in
cross-compilation environments. Reported by Pavel Fedin in:
http://lists.gnu.org/archive/html/bug-gnulib/2015-04/msg00060.html
* gnulib-tool (func_show_module_list): Change hexadecimal
numbers to octal in BOLD_ON and BOLD_OFF. The use of hex
encoded numbers as arguments to `printf' is not portable,
and is not claimed by POSIX. This is the case with FreeBSD.
* lib/acl-internal.c: Remove struct stat parameter from HP-UX's version of
acl_nontrivial. Check if the acl has at most three entries instead (it must
have exactly three entries according to the HP-UX documentation). Ignore
uids and gids as long as an entry is either for a user (i.e., the owner),
a group (i.e., the owning group), or others.
* lib/acl-internal.h: Change HP-UX's acl_nontrivial prototype.
* lib/qcopy-acl.c (qcopy_acl): With that, we no longer need to stat the source
file.
On Linux, use the getxattr syscall instead of the acl_extended_file libacl
library function to check for the presence of acls, avoiding a library
dependency.
* lib/file-has-acl.c: Include xattr headers if we have them.
(file_has_acl): On Linux, use getxattr().
* m4/acl.m4 (gl_FUNC_ACL): Define LIB_HAS_ACL as the libraries to link with for
file_has_acl(). Check for xattr headers and getxattr().
* modules/acl: Add a dep on the stdbool module which was already needed.
Add the new reduced dependency LIB_HAS_ACL reference.
acl, qacl: split off shared functions into separate object file
Some of the helper functions in file-has-acl.c are used from qcopy-acl.c while
file_has_acl() isn't needed there. Split the shared functions off into
acl-internal.c.
* lib/file-has-acl.c: Remove helper functions here.
* lib/acl-internal.c: Add helper functions here.
* modules/qacl: Use acl-internal.c instead of file-has-acl.c here.
* modules/acl: Add file-has-acl.c now that qacl doesn't use it anymore.
Revert commit bedd7833 as it breaks `make dist` in Inetutils
at least, due to the interdependencies with top/GNUMakefile,
which depend on the tag prefixes. This results in `make dist`
inducing a new call to autoconf where a simple tar-ball build
would be expected.
* build-aux/git-version-gen: If fallback string is empty,
but git is available, use "git describe --always" to extract
a revision, and prefix it with "g". This is much better than
responding "UNKNOWN" and it applies to shallow clones!
Paul Eggert [Thu, 9 Apr 2015 16:25:12 +0000 (09:25 -0700)]
gitlog-to-changelog: port to MS-Windows
* build-aux/gitlog-to-changelog (git_dir_option):
Use strftime with "%Y-%m-%d", not "%F", to avoid a bug in
MS-Windows Perl. Reported by Eli Zaretskii in:
http://lists.gnu.org/archive/html/emacs-devel/2015-04/msg00504.html
Reported by Jack Howarth in:
<https://lists.gnu.org/archive/html/bug-libunistring/2015-04/msg00000.html>.
* tests/uniname/test-uninames.c (name_has_alias): New function.
(test_inverse_lookup): Exclude character name with valid alias,
from randomly generated character names.
(main): Fill unicode_aliases before calling test functions.
* lib/mountlist.c (read_file_system_list): Parse /proc/self/mountinfo
directly, rather than depending on libmount, which has many
dependencies due to its dependence on libselinux, as detailed at:
http://lists.gnu.org/archive/html/bug-gnulib/2015-01/msg00063.html
Note we restrict this to __linux__ as that's probably where this
interface will remain. If ever porting, it would be best
to first pull the makedev() wrapper from coreutils to a gnulib module.
Note also we don't add a getline dependency to the mountlist module,
as all Linux versions are sufficient.
Paul Eggert [Thu, 2 Apr 2015 17:35:53 +0000 (10:35 -0700)]
stddef: port to pre-C11 GCC on x86
On this platform, max_align_t should have an alignment of 8 even
though the storage alignments of double, long, etc. max out at 4.
Inspired by a comment of Andreas Schwab's here:
https://sourceware.org/ml/libc-alpha/2015-04/msg00017.html
* lib/stddef.in.h (_GL_STDDEF_ALIGNAS) [!HAVE_MAX_ALIGN_T]: New macro.
(max_align_t) [!HAVE_MAX_ALIGN_T]: Use it.
* tests/test-stddef.c: Test __alignof__ too, if available.
yesno behaves differently in a corner case depending on ENABLE_NLS.
With an input of "y" followed by an EOF the input is considered to
be "no", because the last character is replaced with '\0'. It was
assumed that there is a newline, which doesn't have to be true.
If ENABLE_NLS is not set, getchar() reads y and accepts it as "yes",
looping through more getchar() calls until reaching newline or EOF.
* lib/yesno.c (yesno): Check for EOL before replacing.
* tests/test-yesno.sh: Add a test case (test along with gettext).
Paul Eggert [Mon, 23 Mar 2015 02:47:24 +0000 (19:47 -0700)]
fdopendir-tests: test it does not close its arg
* tests/test-fdopendir.c (main): Test that fdopendir does not
close its argument. From a suggestion by David Grayson in:
http://lists.gnu.org/archive/html/bug-gnulib/2015-03/msg00039.html
Paul Eggert [Sat, 21 Mar 2015 01:09:24 +0000 (18:09 -0700)]
gitlog-to-changelog: trim trailing white space
* build-aux/gitlog-to-changelog (main):
Trim trailing white space from commit message lines.
This is helpful for processing the GNU Emacs repository,
which dates back to 1985 and contains a lot of such lines.
Paul Eggert [Sat, 21 Mar 2015 00:40:37 +0000 (17:40 -0700)]
gitlog-to-changelog: new option --ignore-matching
* build-aux/gitlog-to-changelog (usage, git_dir_option, main):
Support new option --ignore-matching=PAT, which ignores all
commit messages whose first line matches PAT.
Paul Eggert [Thu, 19 Mar 2015 19:11:07 +0000 (12:11 -0700)]
fdopendir: port better to MinGW
* lib/fdopendir.c (fd_clone_opendir) [REPLACE_FCHDIR]:
Use 'dup' if dirfd fails. Suggested by Eli Zaretskii in:
http://lists.gnu.org/archive/html/bug-gnulib/2015-03/msg00033.html
* modules/fdopendir (Depends-on): Add dirfd.
Paul Eggert [Tue, 3 Mar 2015 15:48:40 +0000 (07:48 -0800)]
vasnprintf: pacify clang 3.5.0
Problem reported by Werner Lemberg in:
http://lists.gnu.org/archive/html/bug-gnulib/2015-03/msg00000.html
* lib/vasnprintf.c (VASNPRINTF): Omit casts that clang objects to.
The casts aren't needed, since the characters in question are ASCII.
Paul Eggert [Wed, 25 Feb 2015 04:44:32 +0000 (20:44 -0800)]
glob, etc.: port to MSVC v18 on MS-Windows 8.1
* lib/dirent--.h (GNULIB_defined_opendir):
* lib/dirent.in.h (GNULIB_defined_opendir)
(GNULIB_defined_closedir):
* lib/getcwd.c, lib/glob.c, lib/mountlist.c (opendir, closedir):
#undef only if Gnulib defined it.
Paul Eggert [Wed, 25 Feb 2015 00:16:19 +0000 (16:16 -0800)]
poll: port to MSVC v18 on MS-Windows 8.1
Problem reported by Gisle Vanem in:
http://lists.gnu.org/archive/html/bug-gnulib/2015-02/msg00139.html
* lib/poll.c: Always include <sys/select.h> and <sys/socket.h>.
* modules/poll (Depends-on) [!HAVE_POLL || REPLACE_POLL]:
Add sys_socket.
Pádraig Brady [Mon, 16 Feb 2015 17:20:39 +0000 (17:20 +0000)]
tests: support stderr verification with returns_()
* tests/init.sh (returns_): Disable tracing for this wrapper
function, so that stderr of the wrapped command is unchanged,
allowing for verification of the contents.
Pavel Hrdina [Tue, 24 Feb 2015 12:58:46 +0000 (12:58 +0000)]
passfd: avoid valgrind uninitalised data warning
Running libvirt using valgrind produced:
Syscall param sendmsg(msg.msg_control) points to uninitialised byte(s)
at ??? (in /lib64/libpthread-2.19.so)
by sendfd (passfd.c:86)
by virNetSocketSendFD (virnetsocket.c:1766)
by virNetServerClientDispatchWrite (virnetserverclient.c:1271)
by virNetServerClientDispatchEvent (virnetserverclient.c:1371)
by virEventPollDispatchHandles (vireventpoll.c:508)
by virEventPollRunOnce (vireventpoll.c:657)
by virEventRunDefaultImpl (virevent.c:308)
by virNetServerRun (virnetserver.c:1139)
by main (libvirtd.c:1491)
Address 0xffefff3f4 is on thread 1's stack
in frame #1, created by sendfd (passfd.c:51)
* lib/passfd.c (sendfd): Reset the msg_controllen of msghdr,
to include just the fd we've initialised, rather than including
the extra space used for alignment.
Paul Eggert [Mon, 23 Feb 2015 18:34:40 +0000 (10:34 -0800)]
dup2: doc and test for Android bug
Reported by Kevin Cernekee in:
http://lists.gnu.org/archive/html/bug-gnulib/2015-02/msg00125.html
* doc/posix-functions/dup2.texi (dup2): Document the bug.
* m4/dup2.m4 (gl_FUNC_DUP2): Test for the bug.
Kevin Cernekee [Mon, 23 Feb 2015 17:38:14 +0000 (09:38 -0800)]
Replace dup2() on Android
* m4/dup2.m4 (gl_FUNC_DUP2): Android implements dup2() using dup3().
Since dup3(fd, fd) fails but dup2(fd, fd) should pass, test-dup2
fails. Using rpl_dup2() fixes this because it has an explicit test
for this condition.
Paul Eggert [Mon, 23 Feb 2015 03:07:46 +0000 (19:07 -0800)]
Android doesn't define RLIM_SAVED_*
Portability problem reported by Kevin Cernekee in:
http://lists.gnu.org/archive/html/bug-gnulib/2015-02/msg00122.html
* doc/posix-headers/sys_resource.texi (sys/resource.h):
Mention the portability problem.
* lib/getdtablesize.c (RLIM_SAVED_CUR, RLIM_SAVED_MAX):
Define if not defined.
* m4/dup2.m4 (gl_FUNC_DUP2):
* m4/fcntl.m4 (gl_FUNC_FCNTL):
Likewise.
Paul Eggert [Sat, 21 Feb 2015 02:09:47 +0000 (18:09 -0800)]
printf, isinf, etc.: noncanonical != NaN
Do not require that isinf, printf, etc. treat noncanonical
values as NaNs. Instead, require only that they do not crash.
Problem reported by Joseph Myers in:
https://sourceware.org/ml/libc-alpha/2015-02/msg00244.html
* doc/posix-functions/dprintf.texi (dprintf):
* doc/posix-functions/fprintf.texi (fprintf):
* doc/posix-functions/isfinite.texi (isfinite):
* doc/posix-functions/isinf.texi (isinf):
* doc/posix-functions/isnan.texi (isnan):
* doc/posix-functions/printf.texi (printf):
* doc/posix-functions/snprintf.texi (snprintf):
* doc/posix-functions/sprintf.texi (sprintf):
* doc/posix-functions/vdprintf.texi (vdprintf):
* doc/posix-functions/vfprintf.texi (vfprintf):
* doc/posix-functions/vprintf.texi (vprintf):
* doc/posix-functions/vsnprintf.texi (vsnprintf):
* doc/posix-functions/vsprintf.texi (vsprintf):
Document this.
* m4/isfinite.m4 (gl_ISFINITEL_WORKS):
* m4/isinf.m4 (gl_ISINFL_WORKS):
* m4/isnanl.m4 (gl_FUNC_ISNANL_WORKS):
* m4/printf.m4 (gl_PRINTF_INFINITE_LONG_DOUBLE):
* tests/test-isfinite.c (test_isfinitel):
* tests/test-isinf.c (test_isinfl):
* tests/test-isnan.c (test_long_double):
* tests/test-isnanl.h (main):
* tests/test-snprintf-posix.h (test_function):
* tests/test-sprintf-posix.h (test_function):
* tests/test-vasnprintf-posix.c (test_function):
* tests/test-vasprintf-posix.c (test_function):
o Test only that noncanonical values do not cause crashes, not that
they are treated as NaNs. In some cases this means a larger
output buffer is needed.
Paul Eggert [Fri, 20 Feb 2015 18:53:10 +0000 (10:53 -0800)]
getdtablesize: port better for Android
Problem reported by Kevin Cernekee in:
http://lists.gnu.org/archive/html/bug-gnulib/2015-02/msg00112.html
* doc/glibc-functions/getdtablesize.texi (getdtablesize): Mention bug.
* lib/getdtablesize.c (getdtablesize): Don't fall back on _SC_OPEN_MAX.
Instead, just use getrlimit, taking care to avoid Cygwin bug.
Paul Eggert [Fri, 20 Feb 2015 18:37:49 +0000 (10:37 -0800)]
poll: fixes for large fds
* lib/poll.c (poll): Don't check directly for NFD too large.
Don't rely on undefined behavior in FD_SET when an arg exceeds
FD_SETSIZE. Always set revents afterwards, even if to zero.
* tests/test-poll.c (poll1): Set revents to -1 instead of 0,
as that makes the test a bit stricter.
Paul Eggert [Thu, 19 Feb 2015 07:20:55 +0000 (23:20 -0800)]
dup2, fcntl: cross-compiler better for Android
Problem reported by Kevin Cernekee in:
http://lists.gnu.org/archive/html/bug-gnulib/2015-02/msg00109.html
* m4/dup2.m4 (gl_FUNC_DUP2): Don't guess no when cross-compiling
for a Linux kernel. That kernel bug was fixed on 2009-05-11, and
there's little need to cross-compile for older kernels nowadays.
* m4/fcntl.m4 (gl_FUNC_FCNTL): When cross-compiling, guess no only
for systems where the bug is known to occur (AIX, Cygwin, Haiku).
Pádraig Brady [Wed, 18 Feb 2015 22:37:31 +0000 (22:37 +0000)]
getopt: give accurate ambiguity diagnostic on mem exhaustion
* lib/getopt.c (_getopt_internal_r): The previous commit broke
out the loop too early, which could give a false indication
of ambiguous options under memory exhaustion.
Pádraig Brady [Wed, 18 Feb 2015 02:23:35 +0000 (02:23 +0000)]
getopt: don't crash on memory exhaustion
* lib/getopt.c (_getopt_internal_r): Use degraded diagnostics on
memory exhaustion. In the _LIBC case we use alloca() as is
already done in glibc, so we don't need to consider the separate
error path in that awkward case. Also fix a memory leak when
ambiguous options are present.
Reported by Tobias Stoeckmann
Paul Eggert [Wed, 18 Feb 2015 02:34:17 +0000 (18:34 -0800)]
dup2, fcntl: port to AIX
* m4/dup2.m4 (gl_FUNC_DUP2):
* m4/fcntl.m4 (gl_FUNC_FCNTL):
Prefer getrusage (RLIM_NOFILE ...)/rlim_cur to sysconf (_SC_OPEN_MAX).
The former works on AIX 7.1 but the latter does not.
Also, this may work better with Android; see:
http://lists.gnu.org/archive/html/bug-gnulib/2015-02/msg00100.html
Paul Eggert [Tue, 17 Feb 2015 05:38:02 +0000 (21:38 -0800)]
getdtablesize, dup2, fcntl: port to Android
Problem reported by Kevin Cernekee in:
http://lists.gnu.org/archive/html/bug-gnulib/2015-02/msg00092.html
* doc/glibc-functions/getdtablesize.texi (getdtablesize):
Mention that getdtablesize doesn't work on Android.
* lib/getdtablesize.c: Use getrlimit substitute only if
getdtablesize is declared. This should suffice for Cygwin
while not breaking Android.
* m4/dup2.m4 (gl_FUNC_DUP2):
* m4/fcntl.m4 (gl_FUNC_FCNTL):
Prefer sysconf (_SC_OPEN_MAX) to getdtablesize, as the former is
standardized but the latter is not, and sysconf works on Android.
* m4/getdtablesize.m4 (gl_FUNC_GETDTABLESIZE):
Also check that getdtablesize is declared.
This removes the need for a special case for Android.
Kevin Cernekee [Tue, 17 Feb 2015 01:26:49 +0000 (17:26 -0800)]
localename: Implement gl_locale_name_thread_unsafe for Android
* lib/localename.c: Android API level >= 21 supports two hardcoded
locales: C (POSIX) and C.UTF-8. Distinguish them by checking
the internal __locale_t struct.
Kamil Dudka [Wed, 11 Feb 2015 17:41:43 +0000 (18:41 +0100)]
fts: avoid crash when a cycle is added while traversing
This could be triggered by auto-mounting a recursive bind mount.
Reported by Michael Chapman in: https://bugzilla.redhat.com/1188498
* lib/fts.c (fts_read): Avoid removing the original hash table item
when leaving a directory that caused a cycle, and preserve the FTS_DC
flag.
Daiki Ueno [Mon, 16 Feb 2015 06:44:14 +0000 (15:44 +0900)]
uniname/uniname: support character alias
* lib/uniname/gen-uninames.lisp (main): New argument ALIASFILE.
Generate one-way mapping from aliases to codepoints in the
generated tables. Special case variation selectors to reduce
table size.
* lib/uniname/uniname.c (unicode_character_name): Special case
variation selectors.
(unicode_name_character): Special case variation selectors and
their aliases.
* lib/uniname/uninames.h: Regenerate.
* tests/uniname/NameAliases.txt: New file, taken from UCD 7.0.0.
* modules/uniname/uniname-tests (Files): Add
tests/uniname/NameAliases.txt.
* tests/uniname/test-uninames.c: Mark as static.
(ALIASLEN): Define.
(struct unicode_alias): New struct.
(unicode_aliases): New variable.
(fill_aliases): New function.
(test_alias_lookup): New test function.
(main): Run the 'test_alias_lookup' test if the second argument is
given.
* tests/uniname/test-uninames.sh: Supply NameAliases.txt as the
second argument.
Kevin Cernekee [Wed, 11 Feb 2015 23:22:58 +0000 (15:22 -0800)]
duplocale: Fix Android build of duplocale-tests
* modules/duplocale-tests (Depends-on): Add langinfo, as the header
is included by test-duplocale.c (but not by duplocale.c).
* modules/duplocale-tests (configure.ac): Check for monetary.h.
* tests/test-duplocale.c: Skip test if monetary.h is absent.
* doc/posix-headers/monetary.texi: Add Android to the list of
platforms missing monetary.h.
Kevin Cernekee [Wed, 11 Feb 2015 23:22:51 +0000 (15:22 -0800)]
getdtablesize: Fix Android build
* m4/getdtablesize.m4: Add Android case to host OS check. Recent NDK
versions have this symbol in the .so library (at least 32-bit
platforms) but are missing the declaration in the header file,
causing the m4 logic to guess incorrectly.
Kevin Cernekee [Wed, 11 Feb 2015 23:22:50 +0000 (15:22 -0800)]
Assume unbroken ungetc() on Android
* m4/ungetc.m4: Add Android case to host OS check. The ungetc()
test case passed when running on an Android host, and the code
hasn't really changed since 2009.
Pádraig Brady [Wed, 11 Feb 2015 02:46:28 +0000 (02:46 +0000)]
maint: various whitespace cleanups in tempname
Recent changes to the tempname module, introduced
whitespace inconsistencies that are triggering
issues in coreutils diffs generated against the new files.
* lib/tempname.c: Normalize spacing and line length.
* lib/tempname.h: Likewise.
* modules/tempname: Likewise.
Pádraig Brady [Wed, 11 Feb 2015 00:16:55 +0000 (00:16 +0000)]
tests: provide returns_() to simplify exit status checking
* tests/init.sh (returns_): A new function for use in tests,
to allow for easier checking of return values, where you expect
a command to exit with failure status. By checking for a particular
exit code, you don't hide any crashes for example.
Pádraig Brady [Tue, 20 Jan 2015 01:40:54 +0000 (01:40 +0000)]
mountlist: only use libmount when specified
libmount can propagate device IDs provided by Linux in
/proc/self/mountinfo. However there are currently many
shared libs dependencies introduced by libmount with
associated runtime and virt mem overhead. Therefore don't
enable by default.
* m4/ls-mntd-fs.m4: Use --with-libmount to enable at build time.
Note the ac_cv_lib_libmount_mnt_table_parse_stream cache variable
had a typo and so was ineffective, thus there is no backwards
compatibility issue.