Bruno Haible [Thu, 27 Oct 2011 12:44:05 +0000 (14:44 +0200)]
utimensat: Work around problem on Linux/hppa.
* lib/utimensat.c (rpl_utimensat) [Linux/hppa]: Reject invalid tv_nsec
values.
* doc/posix-functions/utimensat.texi: Mention the problem on Linux/hppa.
Jim Meyering [Tue, 25 Oct 2011 10:26:49 +0000 (12:26 +0200)]
maint.mk: exempt ENODATA from a syntax-check rule
* top/maint.mk (gl_extract_significant_defines_): Also exempt ENODATA
from the sc_prohibit_always-defined_macros syntax-check rule.
Add a comment. See this for more details:
http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/28739/focus=28795
Jim Meyering [Sun, 23 Oct 2011 20:42:25 +0000 (22:42 +0200)]
fts: close parent dir FD before returning from post-traversal fts_read
The problem: the fts-using "mkdir -p A/B; rm -rf A" would attempt to
unlink A, even though an FD open on A remained. This is suboptimal
(holding a file descriptor open longer than needed), but otherwise not
a problem on Unix-like kernels. However, on Cygwin with certain Novell
file systems, (see http://cygwin.com/ml/cygwin/2011-10/msg00365.html),
that represents a real problem: it causes the removal of A to fail
with e.g., "rm: cannot remove `A': Device or resource busy"
fts visits each directory twice and keeps a cache (fts_fd_ring) of
directory file descriptors. After completing the final, FTS_DP,
visit of a directory, RESTORE_INITIAL_CWD intended to clear the FD
cache, but then proceeded to add a new FD to it via the subsequent
FCHDIR (which calls cwd_advance_fd and i_ring_push). Before, the
final file descriptor would be closed only via fts_close's call to
fd_ring_clear. Now, it is usually closed earlier, via the final
FTS_DP-returning fts_read call.
* lib/fts.c (restore_initial_cwd): New function, converted from
the macro. Call fd_ring_clear *after* FCHDIR, not before it.
Update callers.
Reported by Franz Sirl via the above URL, with analysis by Eric Blake
in http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/28739
Gary V. Vaughan [Sun, 23 Oct 2011 06:13:46 +0000 (13:13 +0700)]
readme-release: improve safety of release prep instructions.
* README-release: Don't git pull all branches when only master
is needed for the release process.
Run make maintainer-clean before changing trees and merging.
Don't try to run ./configure right after git pull in case files
that influence the bootstrap process have changed, move the
./configure step to after running ./bootstrap.
Don't bootstrap "one last time"... it's the first time!
Bruno Haible [Sat, 22 Oct 2011 12:25:26 +0000 (14:25 +0200)]
perror: Recognize when test program crashes.
* m4/perror.m4 (gl_FUNC_PERROR): If the test program crashes due to
strerror, set gl_cv_func_perror_works to no.
Reported by Daniel Richard G. <skunk@iskunk.org>.
Bruno Haible [Sat, 22 Oct 2011 11:52:56 +0000 (13:52 +0200)]
isfinite, isinf, isnan, signbit: Don't define as a macro in C++.
* lib/math.in.h (_GL_MATH_CXX_REAL_FLOATING_DECL_1,
_GL_MATH_CXX_REAL_FLOATING_DECL_2): nEW MACROS.
(isfinite, isinf, isnan, signbit): In C++, define as overloaded
functions, not as a macro.
* tests/test-math-c++.cc (REAL_FLOATING_CHECK, OVERLOADED_CHECK): New
macros.
(isfinite, isinf, isnan, signbit): Check overloaded functions and
absence of macro.
Suggested by Eric Blake.
Reported by Michael Goffioul <michael.goffioul@gmail.com>.
Bruno Haible [Fri, 21 Oct 2011 00:45:21 +0000 (02:45 +0200)]
openpty, posix_openpt: Remove code duplication.
* lib/posix_openpt.c: Add comments about platforms, from lib/openpty.c.
* lib/openpty.c: Include <stdlib.h>.
(openpty): Use posix_openpt on all platforms except IRIX.
* modules/openpty (Depends-on): Add posix_openpt. Add conditions.
Bruno Haible [Thu, 20 Oct 2011 15:44:40 +0000 (17:44 +0200)]
posix_openpt: Support for OpenBSD.
* lib/posix_openpt.c [OpenBSD]: Include <sys/ioctl.h>, <sys/tty.h>.
(posix_openpt) [OpenBSD]: New code.
* lib/grantpt.c: Include <fcntl.h>.
(grantpt) [OpenBSD]: Only test whether fd is valid, nothing else.
* modules/grantpt (Depends-on): Add fcntl-h.
Bruno Haible [Wed, 19 Oct 2011 09:49:39 +0000 (11:49 +0200)]
posix_openpt: Fix compilation error.
* lib/posix_openpt.c (posix_openpt): Renamed from posix_openpty.
* doc/posix-functions/posix_openpt.texi: Mention ENOENT error code.
Mention the openpty module as an alternative.
Bruno Haible [Wed, 19 Oct 2011 09:09:37 +0000 (11:09 +0200)]
Support for old NeXTstep 3.3 frexp().
* m4/frexp.m4 (gl_FUNC_FREXP_WORKS): Check for alarm. Limit the
execution time of the test to 5 seconds.
Reported by Daniel Richard G. <skunk@iskunk.org>.
Bruno Haible [Wed, 19 Oct 2011 08:38:07 +0000 (10:38 +0200)]
Support for old NeXTstep 3.3 sed.
* m4/absolute-header.m4 (gl_ABSOLUTE_HEADER_ONE): In the sed address
part, use /.../, not \|...|. Escape periods in the header file name.
* m4/include_next.m4 (gl_NEXT_HEADERS_INTERNAL): Likewise.
Reported by Daniel Richard G. <skunk@iskunk.org>.
Bruno Haible [Sat, 15 Oct 2011 15:06:24 +0000 (17:06 +0200)]
xstrtoll: Fix compilation failure.
* lib/xstrtol.c (ULLONG_MAX, LLONG_MAX, LLONG_MIN): New macros, taken
from lib/strtol.c.
* doc/posix-headers/limits.texi: Mention missing numerical limits on
some platforms.
Reported by Tom G. Christensen <tgc@jupiterrise.com>.
Bruno Haible [Tue, 11 Oct 2011 00:59:23 +0000 (02:59 +0200)]
sinl: Simplify for platforms where 'long double' == 'double'.
* lib/sinl.c (sinl) [HAVE_SAME_LONG_DOUBLE_AS_DOUBLE]: New alternative
implementation.
* m4/sinl.m4 (gl_FUNC_SINL): Require gl_LONG_DOUBLE_VS_DOUBLE.
Determine SINL_LIBM according to HAVE_SAME_LONG_DOUBLE_AS_DOUBLE.
* modules/sinl (Depends-on): Add sin. Update conditions.
(configure.ac): Don't compile sincosl.c and trigl.c if
HAVE_SAME_LONG_DOUBLE_AS_DOUBLE.
Jim Meyering [Mon, 10 Oct 2011 06:49:37 +0000 (08:49 +0200)]
test-renameat: don't leave behind a temporary file
* tests/test-renameat.c (main): Don't forget to remove a temporary file.
ERROR: files left in build directory after distclean:
./gltests/test-renameat.too
make[1]: *** [distcleancheck] Error 1
Reported by Tom G. Christensen.
Bruno Haible [Mon, 10 Oct 2011 00:29:53 +0000 (02:29 +0200)]
rint: Determine RINT_LIBM correctly on AIX 7.
* m4/mathfunc.m4 (gl_MATHFUNC): Try to invoke the function also
directly, not only through a function pointer. Also accept an optional
4th argument with extra code.
* m4/rint.m4 (gl_FUNC_RINT): Pass an extra code that gets turned into a
rintf() call by gcc when optimizing.
Bruno Haible [Sun, 9 Oct 2011 23:08:51 +0000 (01:08 +0200)]
rintl: Simplify for platforms where 'long double' == 'double'.
* lib/rintl.c: Include <config.h>.
(rintl) [HAVE_SAME_LONG_DOUBLE_AS_DOUBLE]: New function.
* lib/rint.c [!USE_LONG_DOUBLE]: Don't include <config.h> a second
time.
* m4/rintl.m4 (gl_FUNC_RINTL): Require gl_LONG_DOUBLE_VS_DOUBLE.
Determine RINTL_LIBM according to HAVE_SAME_LONG_DOUBLE_AS_DOUBLE.
* modules/rintl (Depends-on): Add rint. Update conditions.
Bruno Haible [Sun, 9 Oct 2011 23:07:15 +0000 (01:07 +0200)]
roundl: Simplify for platforms where 'long double' == 'double'.
* lib/roundl.c: Include <config.h>.
(roundl) [HAVE_SAME_LONG_DOUBLE_AS_DOUBLE]: New function.
* lib/round.c [!USE_LONG_DOUBLE]: Don't include <config.h> a second
time.
* m4/roundl.m4 (gl_FUNC_ROUNDL): Require gl_LONG_DOUBLE_VS_DOUBLE.
Determine ROUNDL_LIBM according to HAVE_SAME_LONG_DOUBLE_AS_DOUBLE.
* modules/roundl (Depends-on): Add round. Update conditions.
Bruno Haible [Sun, 9 Oct 2011 23:05:53 +0000 (01:05 +0200)]
truncl: Simplify for platforms where 'long double' == 'double'.
* lib/truncl.c: Include <config.h>.
(truncl) [HAVE_SAME_LONG_DOUBLE_AS_DOUBLE]: New function.
* lib/trunc.c [!USE_LONG_DOUBLE]: Don't include <config.h> a second
time.
* m4/truncl.m4 (gl_FUNC_TRUNCL): Require gl_LONG_DOUBLE_VS_DOUBLE.
Determine TRUNCL_LIBM according to HAVE_SAME_LONG_DOUBLE_AS_DOUBLE.
* modules/truncl (Depends-on): Add trunc. Update conditions.
Bruno Haible [Sun, 9 Oct 2011 23:04:13 +0000 (01:04 +0200)]
ceill: Simplify for platforms where 'long double' == 'double'.
* lib/ceill.c: Include <config.h>.
(ceill) [HAVE_SAME_LONG_DOUBLE_AS_DOUBLE]: New function.
* lib/ceil.c [!USE_LONG_DOUBLE]: Don't include <config.h> a second
time.
* m4/ceill.m4 (gl_FUNC_CEILL): Require gl_LONG_DOUBLE_VS_DOUBLE.
Determine CEILL_LIBM according to HAVE_SAME_LONG_DOUBLE_AS_DOUBLE.
* modules/ceill (Depends-on): Add ceil. Update conditions.
Bruno Haible [Sun, 9 Oct 2011 22:29:05 +0000 (00:29 +0200)]
floorl: Simplify for platforms where 'long double' == 'double'.
* lib/floorl.c: Include <config.h>.
(floorl) [HAVE_SAME_LONG_DOUBLE_AS_DOUBLE]: New function.
* lib/floor.c [!USE_LONG_DOUBLE]: Don't include <config.h> a second
time.
* m4/floorl.m4 (gl_FUNC_FLOORL): Require gl_LONG_DOUBLE_VS_DOUBLE.
Determine FLOORL_LIBM according to HAVE_SAME_LONG_DOUBLE_AS_DOUBLE.
* modules/floorl (Depends-on): Add floor. Update conditions.
Bruno Haible [Sun, 9 Oct 2011 18:35:03 +0000 (20:35 +0200)]
New module 'rintl'.
* lib/math.in.h (rintl): New declaration.
* lib/rintl.c: New file.
* m4/rintl.m4: New file.
* m4/math_h.m4 (gl_MATH_H): Test whether rintl is declared.
(gl_MATH_H_DEFAULTS): Initialize GNULIB_RINTL, HAVE_RINTL.
* modules/math (Makefile.am): Substitute GNULIB_RINTL, HAVE_RINTL.
* modules/rintl: New file.
* tests/test-math-c++.cc: Check the declaration of rintl.
* modules/math-c++-tests (Makefile.am): Link test-math-c++ against
$(RINTL_LIBM). Needed on IRIX 6.5 with cc.
* doc/posix-functions/rintl.texi: Mention the new module.
Bruno Haible [Sun, 9 Oct 2011 17:05:54 +0000 (19:05 +0200)]
New module 'rintf'.
* lib/math.in.h (rintf): New declaration.
* lib/rintf.c: New file.
* m4/rintf.m4: New file.
* m4/math_h.m4 (gl_MATH_H): Test whether rintf is declared.
(gl_MATH_H_DEFAULTS): Initialize GNULIB_RINTF, HAVE_RINTF.
* modules/math (Makefile.am): Substitute GNULIB_RINTF, HAVE_RINTF.
* modules/rintf: New file.
* tests/test-math-c++.cc: Check the declaration of rintf.
* doc/posix-functions/rintf.texi: Mention the new module.
Bruno Haible [Sun, 9 Oct 2011 16:42:07 +0000 (18:42 +0200)]
rint: Support for MSVC.
* lib/math.in.h (rint): New declaration.
* lib/rint.c: New file.
* m4/rint.m4: New file.
* m4/math_h.m4 (gl_MATH_H): Test whether rint is declared.
(gl_MATH_H_DEFAULTS): Initialize GNULIB_RINT, HAVE_RINT.
* modules/math (Makefile.am): Substitute GNULIB_RINT, HAVE_RINT.
* modules/rint (Description): Fix.
(Files): Add lib/rint.c, m4/rint.m4.
(Depends-on): Add math.
(configure.ac): Invoke gl_FUNC_RINT, AC_LIBOBJ,
gl_MATH_MODULE_INDICATOR.
* tests/test-math-c++.cc: Check the declaration of rint.
* modules/math-c++-tests (Makefile.am): Link test-math-c++ against
$(RINT_LIBM). Needed on IRIX 6.5 with cc.
* doc/posix-functions/rint.texi: Mention the replacement provided by
the module.
Bruno Haible [Sun, 9 Oct 2011 16:31:06 +0000 (18:31 +0200)]
rint tests: More tests.
* tests/test-rint.c: Include <float.h>, <stdio.h>, isnand-nolibm.h,
minus-zero.h, infinity.h, nan.h.
(main): Skip the test if the current rounding mode is not standard. Add
tests for negative numbers, minus zero, infinity, NaN.
* modules/rint-tests (Files): Add tests/minus-zero.h, tests/infinity.h,
tests/nan.h.
(Depends-on): Add isnand-nolibm.
Bruno Haible [Sun, 9 Oct 2011 13:53:49 +0000 (15:53 +0200)]
New module 'copysignl'.
* lib/math.in.h (copysignl): New declaration.
* lib/copysignl.c: New file.
* m4/copysignl.m4: New file.
* m4/math_h.m4 (gl_MATH_H): Test whether copysignl is declared.
(gl_MATH_H_DEFAULTS): Initialize GNULIB_COPYSIGNL, HAVE_COPYSIGNL.
* modules/math (Makefile.am): Substitute GNULIB_COPYSIGNL,
HAVE_COPYSIGNL.
* modules/copysignl: New file.
* tests/test-math-c++.cc: Check the declaration of copysignl.
* modules/math-c++-tests (Makefile.am): Link test-math-c++ against
$(COPYSIGNL_LIBM). Needed on IRIX 6.5 with cc.
* doc/posix-functions/copysignl.texi: Mention the new module.
Bruno Haible [Sun, 9 Oct 2011 13:42:35 +0000 (15:42 +0200)]
New module 'copysignf'.
* lib/math.in.h (copysignf): New declaration.
* lib/copysignf.c: New file.
* m4/copysignf.m4: New file.
* m4/math_h.m4 (gl_MATH_H): Test whether copysignf is declared.
(gl_MATH_H_DEFAULTS): Initialize GNULIB_COPYSIGNF, HAVE_COPYSIGNF.
* modules/math (Makefile.am): Substitute GNULIB_COPYSIGNF,
HAVE_COPYSIGNF.
* modules/copysignf: New file.
* tests/test-math-c++.cc: Check the declaration of copysignf.
* doc/posix-functions/copysignf.texi: Mention the new module.
Bruno Haible [Sat, 8 Oct 2011 22:59:02 +0000 (00:59 +0200)]
New module 'tanhf'.
* lib/math.in.h (tanhf): New declaration.
* lib/tanhf.c: New file.
* m4/tanhf.m4: New file.
* m4/math_h.m4 (gl_MATH_H): Test whether tanhf is declared.
(gl_MATH_H_DEFAULTS): Initialize GNULIB_TANHF, HAVE_TANHF.
* modules/math (Makefile.am): Substitute GNULIB_TANHF, HAVE_TANHF.
* modules/tanhf: New file.
* tests/test-math-c++.cc: Check the declaration of tanhf.
* doc/posix-functions/tanhf.texi: Mention the new module.