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.
Paul Eggert [Sun, 8 Feb 2015 02:09:00 +0000 (18:09 -0800)]
fstrcmp: don't assume strlen < INT_MAX
* lib/fstrcmp.c: Include stddef.h and stdint.h.
(uintptr_t): Remove, as we're now assuming stdint.
(OFFSET, EXTRA_CONTEXT_FIELDS, fstrcmp_bounded):
Prefer ptrdiff_t to int when the value could exceed INT_MAX
if the input string is long.
(fstrcmp_bounded): Check for size-calculation overflow. Prefer
uintptr_t to size_t when the underlying value is a pointer casted
to an unsigned integer. Avoid unnecessary 'buffer != NULL' test.
* modules/fstrcmp (Depends-on): Add stdint.
Paul Eggert [Sun, 8 Feb 2015 02:02:42 +0000 (18:02 -0800)]
diffseq: prefer ptrdiff_t to ssize_t
* lib/diffseq.h: In commentary, prefer ptrdiff_t to ssize_t.
ptrdiff_t is the natural type for signed indexes.
On a few older platforms, ssize_t is narrower than size_t.
Paul Eggert [Sun, 8 Feb 2015 01:27:03 +0000 (17:27 -0800)]
xalloc: fix typo that suppressed warnings
* lib/xalloc.h: Add missing _GL_INLINE_HEADER_END.
This typo, introduced a couple of years ago, mistakenly suppressed
some -Wsuggest-attribute=const, -Wmissing-prototypes, and
-Wmissing-declarations warnings.
Paul Eggert [Sat, 7 Feb 2015 23:09:00 +0000 (15:09 -0800)]
crypto/gc: fix a -Wswitch warning
Reported by Bruce Korb in:
http://lists.gnu.org/archive/html/bug-gnulib/2015-02/msg00046.html
* lib/gc-gnulib.c (gc_hash_open): Fail faster if MODE is nonzero.
The way how gen_tempname() creates files is not always sufficient. For example,
it may make sense to create directories when creating the temporary file or
directory fails with errno set to ENOENT. Add a try_tempname() variant of
gen_tempname() that allows that. Implement gen_tempname() on top of it.
* lib/tempname.c (try_tempname): New function and backend of gen_tempname().
(try_file, try_dir, try_nocreate): Callbacks to use for the different kinds
that gen_tempname supports (GT_FILE, GT_DIR, GT_NOCREATE).
* lib/tempname.h (try_tempname): Declare here.
* modules/tempname: Mention try_tempname.
Pádraig Brady [Tue, 3 Feb 2015 03:55:48 +0000 (03:55 +0000)]
bootstrap: exit immediately upon gnulib-tool failure
* build-aux/bootstrap: Exit immediately if gnulib-tool fails.
This was noticed when gnulib-tool exited early due to failure
to apply a patch in coreutils at http://hydra.nixos.org/eval/1172233,
but various confusing errors were then given as the build proceeded.
Following on from commit 032bd151, include header files required
on OS X 10.10 (Yosemite) at least.
* lib/symlinkat.c (HAVE_SYMLINK_AT): Add <sys/stat.h> for fstatat(),
and string.h for strlen().
Reported at https://savannah.gnu.org/bugs/index.php?44151
and by Jack Howarth.
Pádraig Brady [Thu, 29 Jan 2015 16:44:48 +0000 (16:44 +0000)]
localename: support Solaris 12 and illumos
* lib/localename.c (gl_locale_name_thread_unsafe): call
getlocalename_l() on newer __sun platforms.
Reported by Alexander Pyhalov.
Fix suggested by Rich Burridge.
Daiki Ueno [Sat, 24 Jan 2015 02:11:34 +0000 (11:11 +0900)]
unictype: avoid undefined left-shift behavior
* lib/unictype/bidi_of.c (uc_bidi_class): Building libunistring with
gcc's -fsanitize=shift and running its tests triggered:
unictype/bidi_of.c:43:60: runtime error: left shift of 40167 by 16 \
places cannot be represented in type 'int'
Cast LHS to 'unsigned int' after integer promotion.
* lib/unictype/categ_of.c (lookup_withtable): Likewise.
* lib/unictype/joininggroup_of.c (uc_joining_group): Likewise.
Daiki Ueno [Tue, 20 Jan 2015 09:09:03 +0000 (18:09 +0900)]
libunistring: bump version of unitypes dependants
Due to the header file search order, all the headers which depend
on unitypes.h need to be generated, when the preinstalled
libunistring is older.
* modules/unicase/base (configure.ac): Bump minimum version to
0.9.4.
* modules/uniconv/base (configure.ac): Likewise.
* modules/unilbrk/base (configure.ac): Likewise.
* modules/uninorm/base (configure.ac): Likewise.
* modules/unistdio/base (configure.ac): Likewise.
* modules/unistr/base (configure.ac): Likewise.
* modules/uniwbrk/base (configure.ac): Likewise.
* modules/uniwidth/base (configure.ac): Likewise.
Daiki Ueno [Tue, 20 Jan 2015 06:46:54 +0000 (15:46 +0900)]
unictype/category-none: fix link with libunistring
Since _UC_CATEGORY_NONE is not a public symbol, it will be
prefixed with "libstring_" when compiled as part of libunistring.
To avoid undefined symbol at link time, increase the minimum
version when the dependant modules are updated.
* modules/unictype/category-none (configure.ac): Bump minimum
version to 0.9.5.
Daiki Ueno [Tue, 20 Jan 2015 06:34:36 +0000 (15:34 +0900)]
unitypes: fix build with installed libunistring
The minimum version was not bumped after _UC_ATTRIBUTE_CONST and
_UC_ATTRIBUTE_PURE were added to unitypes.in.h.
* modules/unitypes (configure.ac): Bump minimum version to 0.9.4.
Paul Eggert [Fri, 16 Jan 2015 01:37:14 +0000 (17:37 -0800)]
time: port to MinGW32 3.21
Problem reported by Eli Zaretskii in:
http://lists.gnu.org/archive/html/bug-gnulib/2015-01/msg00042.html
* lib/time.in.h:
* m4/time_h.m4 (gl_CHECK_TYPE_STRUCT_TIMESPEC):
* modules/time (Depends-on):
Fall back on unistd.h if the other include files don't define
struct timespec.
Daiki Ueno [Thu, 15 Jan 2015 03:14:14 +0000 (12:14 +0900)]
libunistring: update to Unicode 6.2.0
* lib/unilbrk/lbrktables.h (LBP_RI): New enumeration value.
(unilbrk_table): Adjust table size.
* lib/unilbrk/lbrktables.c (unilbrk_table): Add a row and column
for LBP_RI.
* lib/uniwbrk.in.h (WBP_RI): New enumeration value.
* lib/uniwbrk/u-wordbreaks.h (FUNC): Support rule WB13c.
Normalize table index skipping ignored properties.
* lib/uniwbrk/wbrktable.c (uniwbrk_table): Support WBP_RI. Remove
WBP_EXTEND and WBP_FORMAT, which are now computed without using
the table.
* lib/uniwbrk/wbrktable.h: Adjust table size.
* lib/unigbrk.in.h (GBP_RI): New enumeration value.
* lib/unigbrk/uc-is-grapheme-break.c (UC_IS_GRAPHEME_BREAK):
Support rule GB8a.
(UC_GRAPHEME_BREAKS_FOR, gb_table): Support GBP_RI.
* tests/unigbrk/test-uc-is-grapheme-break.c
(graphemebreakproperty_to_string): Support GBP_RI.
* lib/gen-uni-tables.c (LBP_RI): New enumeration value.
(get_lbp, debug_output_lbp, fill_org_lbp, debug_output_org_lbp)
(output_lbp): Support LBP_RI. Adjust some characters changed from
LBP_AL to LBP_ID.
(output_lbp): Support LBP_RI.
(WBP_RI): New enumeration value.
(debug_output_wbp, fill_org_wbp, debug_output_org_wbp)
(output_wbp): Support WBP_RI.
(GBP_RI): New enumeration value.
(output_gbp_test, fill_org_gbp): Support GBP_RI.
* all generated files under lib/uni* and tests/uni*: Regenerate.
Daiki Ueno [Thu, 15 Jan 2015 03:08:17 +0000 (12:08 +0900)]
libunistring: update to Unicode 6.1.0
* lib/gen-uni-tables.c (output_joining_group): Switch to
3-level table to accommodate joining groups defined with higher
codepoint value. Since there are only 88 groups defined in
Unicode 7.0.0, use 7-bit packed format for level3 entries.
(get_lbp): Update for Unicode 6.1.0.
* lib/unictype/joininggroup_of.c (uc_joining_group): Adjust to use
3-level table.
* lib/unictype/joininggroup_byname.gperf: Add Rohingya Yeh
joining group name.
* lib/unictype/joininggroup_name.h: Likewise.
* lib/unilbrk/lbrktables.h (LBP_HL): New enumeration value.
(unilbrk_table): Adjust table size.
* lib/unilbrk/lbrktables.c (unilbrk_table): Add a row and column
for LBP_HL.
* lib/uniwidth/width.c (nonspacing_table_data): Add U+0604,
U+08E4..U+08FE, U+1BAB, U+1CF4, U+A674..U+A67B, U+A69F,
U+AAEC..U+AAED, U+AAF6, U+11100..U+11102, U+11127..U+1112B,
U+1112D..U+11134, U+11180..U+11181, U+111B6..U+111BE, U+116AB,
U+116AD, U+116B0..U+116B5, U+116B7, U+16F8F..U+16F92. Remove
U+302E..U+302F.
* tests/uniwidth/test-uc_width2.sh: Same updates as in
lib/uniwidth/width.c.
* all generated files under lib/uni* and tests/uni*: Regenerate.
* modules/uni*/* (configure.ac): Bump minimum version to 0.9.5.
Daiki Ueno [Thu, 15 Jan 2015 03:06:30 +0000 (12:06 +0900)]
uniwbrk/u32-wordbreaks-tests: add conformance test
* modules/uniwbrk/u32-wordbreaks-tests (Files): Add
tests/uniwbrk/test-uc-wordbreaks.c,
tests/uniwbrk/test-uc-wordbreaks.sh, and
tests/uniwbrk/WordBreakTest.txt.
(Makefile.am): Add uniwbrk/test-uc-wordbreaks.sh to $(TESTS), add
test-uc-wordbreaks to $(check_PROGRAMS), and define
test_uc_wordbreaks_SOURCES and test_uc_wordbreaks_LDADD.
* tests/uniwbrk/test-uc-wordbreaks.sh: New file.
* tests/uniwbrk/test-uc-wordbreaks.c: New file.
Pádraig Brady [Thu, 8 Jan 2015 12:18:54 +0000 (12:18 +0000)]
maint.mk: fix compatibility with OS X nm
* top/maint.mk (_gl_tight_scope): Use the -g option to
show exported items rather than the -e option which is
ignored on all platforms except OS X where it gives an error.
Reported by Assaf Gordon.
KO Myung-Hun [Wed, 7 Jan 2015 05:36:52 +0000 (14:36 +0900)]
localcharset: improve charset detection on OS/2
Use system codepage when appropriate. Map OS/2 codepages to
GNU canonical charset names if possible.
* lib/config.charset: Don't output aliases if "$os" is os2*.
* lib/localcharset.c (get_charset_aliases) [OS2]: Hardcode the
result for OS/2.
(locale_charset) [OS2]: Use system codepage if codeset is omitted
from the locale name which is neither "C" nor "POSIX".
Paul Eggert [Tue, 6 Jan 2015 17:05:22 +0000 (09:05 -0800)]
count-leading-zeros: use 64-bit intrinsics on 32-bit Windows
This reverts the last patch but one, as it shouldn't be needed now
that the typo is fixed.
* lib/count-leading-zeros.h (count_leading_zeros_ll):
* lib/count-trailing-zeros.h:
* lib/count-one-bits.h:
Go back to using 64-bit intrinsics.
Pádraig Brady [Tue, 6 Jan 2015 02:27:16 +0000 (02:27 +0000)]
count-leading-zeros: avoid 64-bit intrinsics on 32-bit Windows
* lib/count-leading-zeros.h (count_leading_zeros_ll): Use 32 bit
intrinsics in this case.
* lib/count-trailing-zeros.h: Likewise.
* lib/count-one-bits.h: Likewise.
Daiki Ueno [Tue, 6 Jan 2015 09:53:40 +0000 (18:53 +0900)]
uniname/uniname: update to Unicode 7.0.0
To accommodate new characters added since Unicode 5.1.0, this
changes the internal representation of codepoint ranges.
Previously, we grouped codepoint ranges by manually assigned 4-bit
tag, which only allowed 16 groups. This removes the limitation by
switching to binary search on a table. For the detail rationale and the
benchmark results, see:
https://lists.gnu.org/archive/html/bug-libunistring/2014-06/msg00001.html
* lib/uniname/gen-uninames.lisp (unicode-char): Rename CODE member
to INDEX, as it no longer represents a codepoint.
(range): New struct.
(main): Switch to intervals list from a bit-pattern based
classification.
* lib/uniname/uninames.h: Regenerate.
* tests/uniname/UnicodeDataNames.txt: Update to Unicode 7.0.0.
* modules/uniname/base (configure.ac): Bump minimum version to
0.9.5.
* modules/uniname/uniname (configure.ac): Bump minimum version to
0.9.5.
Eric Blake [Mon, 5 Jan 2015 21:08:27 +0000 (14:08 -0700)]
stdio: fix use of PRIdMAX on modern mingw
Commit cf88e56ab broke the use of PRIdMAX and friends on modern
mingw64 installations. Basically, when requesting
_USE_MINGW_ANSI_STDIO, not only does mingw turn on support for %lld,
it also rewrites <inttypes.h> to provide PRIdMAX as "lld" instead of
"I64d" (but only when <stdio.h> is also included). But if a user is
NOT using the gnulib printf module, gnulib's <stdio.h> was still
giving printf() the system printf attribute, which causes the
compiler to then complain about an unknown %lld specifier, even though
we know we don't need to use the non-standard %I64d. So this patch
adds a configure-time probe that should work with older gcc (which
does not differentiate between printf flavors) and older mingw (where
_USE_MINGW_ANSI_STDIO has no impact on behavior), while fixing the
mismatch in flavors on modern systems.
* m4/stdio_h.m4 (gl_STDIO_H): Probe for printf flavor via inttypes.
* lib/stdio.in.h (_GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM): Use result
to work with modern mingw.
pthread: work around winpthread header pollution on mingw
It activated its workaround based on existance of the strtok_r
wrapper in pthreads.h. As luck would have it, latest Mingw64
headers removed the strtok_r wrapper from pthreads.h, but left
all the others. So the gnulib workaround was not activated.
Change the configure check to look for several of the broken
wrappers, instead of just strtok_r
Paul Eggert [Sat, 3 Jan 2015 23:21:54 +0000 (15:21 -0800)]
lib-symbol-versions: cache script check
* m4/ld-version-script.m4 (gl_LD_VERSION_SCRIPT):
Cache the check for linker version scripts.
From a suggestion by Christophe Curis in:
http://lists.gnu.org/archive/html/bug-gnulib/2015-01/msg00011.html
Eric Blake [Mon, 22 Dec 2014 18:46:41 +0000 (11:46 -0700)]
docs: mention why libgen.h is bad
I just debugged a failure in sharutils-4.14.2-1 for using basename()
without including <libgen.h>. In the process, I realized that we
aren't doing a good job of explaining why we don't offer a libgen.h
replacement (it is useless because the only two functions it
provides are also useless).
* doc/posix-headers/libgen.texi (libgen.h): Refer to dirname module.
Paul Eggert [Sat, 20 Dec 2014 21:00:21 +0000 (13:00 -0800)]
assure: new module
This works better than 'assert' when compiling with -DNDEBUG,
as it avoids some compiler diagnostics in that case.
Reported by Norihiro Tanaka in:
http://lists.gnu.org/archive/html/bug-gnulib/2014-12/msg00215.html
* MODULES.html.sh (func_all_modules): Add 'assure'.
* lib/assure.h, modules/assure: New files.
* lib/chdir-long.c, lib/cycle-check.c, lib/fchdir.c, lib/fts.c:
* lib/poll.c, lib/savewd.c, lib/utimens.c, lib/xstrtol.c:
Prefer 'assure' to 'assert'.
* modules/chdir-long, modules/cycle-check, modules/fchdir:
* modules/poll, modules/savewd, modules/utimens, modules/xstrtol:
Depend on 'assure'.
Paul Eggert [Wed, 17 Dec 2014 01:29:33 +0000 (17:29 -0800)]
stdalign: work around Apple GCC 4.0 bug
Reported by David Fang in:
http://lists.gnu.org/archive/html/bug-gnulib/2014-12/msg00194.html
* lib/stdalign.in.h (_Alignas):
* m4/stdalign.m4 (gl_STDALIGN_H):
Do not use aligned attribute with GCC 4.0 on Apple.
Pádraig Brady [Tue, 16 Dec 2014 02:35:19 +0000 (02:35 +0000)]
getcwd: fix test failure on OS X 10.9
* m4/getcwd-path-max.m4: Avoid the replacement if it
won't be effective due to the PATH_MAX limitation of lstat().
(gl_cv_func_getcwd_path_max): Adjust to indicate this case.
* m4/getcwd.m4 (gl_FUNC_GETCWD): Define HAVE_GETCWD_SHORTER
for this case for use in tests, and also exclude this
case when setting REPLACE_GETCWD.
* tests/test-getcwd.c (test_long_name): Restrict the
tested path length so that lstat() will not be passed
a path greater than PATH_MAX.
Also key a test condition on HAVE_OPENAT_SUPPORT rather
than AT_FDCWD, since the latter is set unconditionally
since Sep 2009 in commit 52c658e9.
Tim Rühsen [Sun, 14 Dec 2014 20:32:54 +0000 (20:32 +0000)]
parse-datetime: avoid a compiler warning with byacc
* lib/parse-datetime.y (yylex): Use the same prototype in the
function definition as the declaration, to avoid a -Wstrict-prototypes
warning seen when using byacc.
Daiki Ueno [Fri, 12 Dec 2014 00:20:59 +0000 (09:20 +0900)]
unicase/locale-language-tests: fix LOCALE_FR test
* tests/unicase/test-locale-language.sh: Really use $LOCALE_FR for
a French locale with traditional encoding.
Reported by umerqayam in:
http://lists.gnu.org/archive/html/bug-libunistring/2014-12/msg00000.html