* m4/errno_h.m4 (gl_HEADER_ERRNO_H): Test also EOWNERDEAD and
ENOTRECOVERABLE.
* lib/errno.in.h (EOWNERDEAD, ENOTRECOVERABLE): Define on all
platforms.
* lib/strerror-override.c (strerror_override): Conditionalize the
EOWNERDEAD, ENOTRECOVERABLE handling on GNULIB_defined_EOWNERDEAD.
* lib/strerror-override.h (strerror_override): Declare also if
GNULIB_defined_EOWNERDEAD is defined.
* tests/test-errno.c (e130, e131): New variables.
* doc/posix-headers/errno.texi: Mention the status for EOWNERDEAD,
ENOTRECOVERABLE.
Reported by Paolo Bonzini.
* m4/largefile.m4 (gl_LARGEFILE): New macro.
* modules/largefile (configure.ac): Require gl_LARGEFILE.
* lib/sys_types.in.h (off_t) [WINDOWS_64_BIT_OFF_T]: Define to a 64-bit
type.
* m4/sys_types_h.m4 (gl_SYS_TYPES_H): Set WINDOWS_64_BIT_OFF_T.
* modules/sys_types (Makefile.am): Substitute WINDOWS_64_BIT_OFF_T.
* doc/posix-headers/sys_types.texi: Mention the effect of the
'largefile' module.
* lib/fcntl.in.h: Add comments about off_t.
* modules/fcntl-h (Depends-on): Add sys_types.
* lib/unistd.in.h [WINDOWS_64_BIT_OFF_T]: Include <sys/types.h>.
(ftruncate): Replace it if REPLACE_FTRUNCATE is 1.
* m4/unistd_h.m4 (gl_UNISTD_H): Require gl_SYS_TYPES_H.
(gl_UNISTD_H_DEFAULTS): Initialize REPLACE_FTRUNCATE.
* modules/unistd (Depends-on): Add sys_types.
(Makefile.am): Substitute WINDOWS_64_BIT_OFF_T, REPLACE_FTRUNCATE.
* lib/lseek.c (rpl_lseek) [_GL_WINDOWS_64_BIT_OFF_T]: Use _lseeki64
instead of lseek.
* m4/lseek.m4 (gl_FUNC_LSEEK): Require gl_SYS_TYPES_H. Set
REPLACE_LSEEK if WINDOWS_64_BIT_OFF_T is 1.
* modules/lseek (Depends-on): Add sys_types.
* lib/ftruncate.c: Put under GPLv3+. Include <windows.h>,
msvc-nothrow.h.
(SetFileSize): New function.
(ftruncate) [_GL_WINDOWS_64_BIT_OFF_T]: New implementation.
* m4/ftruncate.m4 (gl_FUNC_FTRUNCATE): Set REPLACE_FTRUNCATE on Windows
if Large File Support is requested.
* modules/ftruncate (configure.ac): Consider REPLACE_FTRUNCATE.
(Depends-on): Add sys_types, msvc-nothrow. Update conditions.
* lib/stdio.in.h: Add comments about off_t.
* modules/stdio (Depends-on): Add sys_types.
* lib/ftello.c [_GL_WINDOWS_64_BIT_OFF_T]: Use _ftelli64 or ftello64
instead of ftello.
* m4/ftello.m4 (gl_FUNC_FTELLO): Require gl_SYS_TYPES_H. Set
REPLACE_FTELLO if WINDOWS_64_BIT_OFF_T is 1.
(gl_PREREQ_FTELLO): New macro.
* modules/ftello (Depends-on): Add sys_types.
(configure.ac): Incoke gl_PREREQ_FTELLO.
* lib/fseeko.c [_GL_WINDOWS_64_BIT_OFF_T]: Use _fseeki64 or fseeko64
instead of fseeko.
* m4/fseeko.m4 (gl_FUNC_FSEEKO): Require gl_SYS_TYPES_H. Set
REPLACE_FSEEKO if WINDOWS_64_BIT_OFF_T is 1.
(gl_PREREQ_FSEEKO): New macro.
* modules/fseeko (Depends-on): Add sys_types.
(configure.ac): Invoke gl_PREREQ_FSEEKO.
* lib/sys_stat.in.h: Add comments about off_t.
(stat, fstat) [WINDOWS_64_BIT_ST_SIZE]: Define to variants that use a
64-bit integer for st_size in 'struct stat'.
* m4/sys_stat_h.m4 (gl_HEADER_SYS_STAT_H): Set WINDOWS_64_BIT_ST_SIZE.
Define _GL_WINDOWS_64_BIT_ST_SIZE.
* modules/sys_stat (Depends-on): Add sys_types.
(Makefile.am): Substitute WINDOWS_64_BIT_ST_SIZE.
* lib/stat.c (stat) [_GL_WINDOWS_64_BIT_ST_SIZE]: Define to _stati64
instead of stat or _stat.
* lib/fstat.c [_GL_WINDOWS_64_BIT_ST_SIZE]: Use _fstati64 and
'struct _stati64' instead of fstat and 'struct stat'.
* m4/fstat.m4 (gl_FUNC_FSTAT): Require gl_HEADER_SYS_STAT_H. Set
REPLACE_FSTAT if WINDOWS_64_BIT_ST_SIZE is 1.
Reported by Ray Satiro <raysatiro@yahoo.com>.
* lib/sys_resource.in.h: New file.
* m4/sys_resource_h.m4: New file.
* modules/sys_resource: New file.
* doc/posix-headers/sys_resource.texi: Mention the new module.
* m4/locale_h.m4 (gl_LOCALE_H): Set REPLACE_STRUCT_LCONV to 1 if
'struct lconv' does not contain int_p_cs_precedes.
* tests/test-locale.c (main): Check that 'struct lconv' is complete.
* doc/posix-headers/locale.texi: Update.
* lib/locale.in.h (lconv): Override if REPLACE_STRUCT_LCONV is 1.
* m4/locale_h.m4 (gl_LOCALE_H): Set REPLACE_STRUCT_LCONV to 1 if
'struct lconv' does not even contain decimal_point.
(gl_LOCALE_H_DEFAULTS): Initialize REPLACE_STRUCT_LCONV.
* modules/locale (Makefile.am): Substitute REPLACE_STRUCT_LCONV.
* tests/test-locale.c (main): Check that 'struct lconv' is complete.
* doc/posix-headers/locale.texi: Mention the problems with
'struct lconv'.
Reported by Gianluigi Tiesi <sherpya@netfarm.it>.
* doc/posix-headers/sys_types.texi (sys/types.h):
* doc/posix-headers/time.texi (time.h):
Mention that glibc x32 does not conform to POSIX in a couple of
areas related to integer widths.
tests-termios.c was failing on more than just cygwin.
* doc/posix-headers/termios.texi (termios.h): Mention problem.
* lib/termios.in.h (include): Ensure pid_t on all platforms, not
just when building tcgetsid.
Signed-off-by: Eric Blake <eblake@redhat.com>
* lib/math.in.h (HUGE_VAL, HUGE_VALF, HUGE_VALL): Define fallbacks.
* tests/test-math.c: Include macros.h. Check that HUGE_VAL, HUGE_VALF,
HUGE_VALL are defined.
(numeric_equald): Renamed from numeric_equal.
(numeric_equalf, numeric_equall): New functions.
(main): Check also HUGE_VALF, HUGE_VALL.
* modules/math-tests (Files): Add tests/macros.h.
* doc/posix-headers/math.texi: Document the problems with HUGE_VALF and
HUGE_VALL.
MSVC standard headers use __declspec(noreturn), so #define noreturn
to empty on that platform. Reported by Bruno Haible in
<http://lists.gnu.org/archive/html/bug-gnulib/2012-02/msg00152.html>.
* lib/stdnoreturn.in.h (noreturn): Define to empty on MSVC.
* doc/posix-headers/stdnoreturn.texi (stdnoreturn.h): Document this.
* m4/sys_time_h.m4 (gl_HEADER_SYS_TIME_H_BODY): Test whether tv_sec
has the right type. Set REPLACE_STRUCT_TIMEVAL if not.
(gl_HEADER_SYS_TIME_H_DEFAULTS): Initialize REPLACE_STRUCT_TIMEVAL.
* lib/sys_time.in.h: Include <winsock2.h> also when 'struct timeval'
needs to be overridden.
(timeval): Override if REPLACE_STRUCT_TIMEVAL is set.
* modules/sys_time (Makefile.am): Substitute REPLACE_STRUCT_TIMEVAL.
* tests/test-sys_select.c: Check that the tv_sec member has the same
size as a 'time_t'.
* tests/test-sys_time.c: Likewise.
* m4/gettimeofday.m4 (gl_FUNC_GETTIMEOFDAY): If REPLACE_STRUCT_TIMEVAL
is set, set also REPLACE_GETTIMEOFDAY.
* lib/gettimeofday.c (gettimeofday): If 'struct timeval' is overridden,
convert the resulting 'struct timeval' before returning.
* lib/select.c: Include <sys/time.h>.
(select, timeval): Undefine at the right place.
* modules/select (Depends-on): Add sys_time.
* doc/posix-headers/sys_time.texi: Mention the problem with tv_sec on
some Windows platforms.
Reported by Marc-André Lureau <marcandre.lureau@redhat.com>.
C++11 says there's no need to define __STDC_CONSTANT_MACROS etc.
when including inttypes.h and stdint.h. Support this change to
the standard.
* doc/posix-headers/inttypes.texi (inttypes.h):
* doc/posix-headers/stdint.texi (stdint.h): Document this.
* lib/inttypes.in.h (__STDC_FORMAT_MACROS) [! __cplusplus]:
Define if not defined already, for the benefit of pre-C++11 hosts.
Define the standard format macros (e.g., PRId8) always.
* lib/stdint.in.h (__STDC_CONSTANT_MACROS, __STDC_LIMIT_MACROS):
Likewise, if __cpluspus. Define the standard constant and limit
macros (e.g., INT8_C, INT8_MAX) always.
* m4/inttypes.m4 (gl_INTTYPES_INCOMPLETE): Do not define
GL_TRIGGER_STDC_LIMIT_MACROS or __STDC_LIMIT_MACROS; no longer needed.
* m4/stdint.m4 (gl_STDINT_H): Update comments about these macros.
* tests/test-inttypes.c (__STDC_LIMIT_MACROS, __STDC_CONSTANT_MACROS)
(__STDC_FORMAT_MACROS): Do not define, since we assume C++11 API now.
* tests/test-stdint.c (__STDC_LIMIT_MACROS, __STDC_CONSTANT_MACROS):
Likewise.
Problem reported by Simon Josefsson in
<http://lists.gnu.org/archive/html/bug-gnulib/2011-12/msg00005.html>.
* doc/posix-headers/stdalign.texi (stdalign.h): Mention Clang 3.0,
which has <stdalign.h> but which does not define alignof.
* m4/stdalign.m4 (gl_STDALIGN_H): Check for Clang 3.0's problem.
I think these problems were reported by Bruno Haible, in email
that I've unfortunately misplaced.
* doc/posix-headers/stdalign.texi (stdalign.h): Document more
shortcomings of MSVC and of Sun C 5.11.
* lib/stdalign.in.h (_Alignas): Omit bogus extra parenthesis
around __declspec arg.
* modules/stdalign-tests (Files): Add tests/macros.h.
* tests/test-stdalign.c: Do not include <stdlib.h>; no longer needed.
Include macros.h, for ASSERT.
(DECLARE_ALIGNED): Remove.
(TEST_ALIGNMENT): Define to 16 if alignment is supported (more likely
to catch bug), and to 1 if not (simplifies the rest of the code).
(CHECK_STATIC): Always declare the alignment test vars; that's simpler.
(CHECK_AUTO): Remove.
(CHECK_ALIGNED): Check only the alignment of the static vars,
since auto var alignment isn't supported by Sun C 5.11.
(CHECK_TYPES): Remove. All uses replaced by inline code, so that
ASSERT failures are easier to diagnose.
* 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>.
* m4/float_h.m4 (gl_FLOAT_H): Test conversion from 'int' to
'long double'. Set REPLACE_ITOLD.
* lib/float.in.h (_Qp_itoq, _gl_float_fix_itold): New declarations.
* lib/math.in.h (_Qp_itoq, _gl_math_fix_itold): New declarations.
* lib/itold.c: New file.
* modules/float (Files): Add lib/itold.c.
(configure.ac): When REPLACE_ITOLD is 1, arrange to compile itold.c.
(Makefile.am): Substitute REPLACE_ITOLD.
* modules/math (Depends-on): Add float.
(Makefile.am): Substitute REPLACE_ITOLD.
* doc/posix-headers/float.texi: Mention problem on Linux/SPARC64.
* doc/posix-headers/math.texi: Likewise.
* doc/posix-functions/logl.texi: Likewise.
* m4/float_h.m4 (gl_FLOAT_H): Set FLOAT_H and REPLACE_FLOAT_LDBL also
on Linux/PowerPC.
* lib/float.in.h (LDBL_MAX): Redefine also on Linux/PowerPC.
* lib/float.c (gl_LDBL_MAX): Also define on Linux/PowerPC.
* doc/posix-headers/float.texi: Mention Linux/PowerPC as an affected
platform.
Reported by Andreas Metzler <ametzler@downhill.at.eu.org>.
* doc/posix-headers/time.texi: Revert last change.
* m4/time_h.m4 (gl_HEADER_TIME_H_BODY): Revert last change.
* tests/test-time.c: Comment out the check for pid_t.
* m4/sched_h.m4 (gl_SCHED_H): Arrange to override <sched.h> if it does
not define pid_t.
* lib/sched.in.h: Include <sys/types.h>.
* doc/posix-headers/sched.texi: Mention the pid_t problem.
Reported by Tom G. Christensen <tgc@jupiterrise.com>.
* lib/sys_stat.in.h (S_IFIFO): Define to _S_IFIFO if that exists.
* tests/test-sys_stat.c: Don't assume that S_IFBLK exists.
* doc/posix-headers/sys_stat.texi: Mention missing S_IFIFO, S_IFBLK on
MSVC.
* m4/chdir-long.m4 (gl_FUNC_CHDIR_LONG): Don't include <unistd.h> if it
does not exist.
* m4/environ.m4 (gl_ENVIRON): Don't include <unistd.h> if it does not
exist. But include <stdlib.h>.
* m4/fcntl-o.m4 (gl_FCNTL_O_FLAGS): If <unistd.h> does not exist,
include <io.h> and <stdlib.h> instead. Don't test symbolink links if
symlink() does not exist.
* m4/fflush.m4 (gl_FUNC_FFLUSH_STDIN): If <unistd.h> does not exist,
include <io.h> instead.
* m4/free.m4 (gl_FUNC_FREE): Assume free(NULL) works on native Windows.
* m4/getcwd.m4 (gl_FUNC_GETCWD_NULL): If <unistd.h> does not exist,
include <direct.h> instead.
* m4/getcwd-abort-bug.m4 (gl_FUNC_GETCWD_ABORT_BUG): Likewise.
* m4/getcwd-path-max.m4 (gl_FUNC_GETCWD_PATH_MAX): Likewise.
* m4/lseek.m4 (gl_FUNC_LSEEK): If <unistd.h> does not exist, include
<io.h> instead.
* m4/rename.m4 (gl_FUNC_RENAME): Assume rename() manages hard links
correctly if the system does not have hard links.
* m4/rmdir.m4 (gl_FUNC_RMDIR): If <unistd.h> does not exist, include
<direct.h> instead.
* m4/unistd_h.m4 (gl_UNISTD_H): If <unistd.h> does not exist, bypass
it when looking for function declarations.
* m4/unlink.m4 (gl_FUNC_UNLINK): If <unistd.h> does not exist, include
<direct.h> and <io.h> instead.
* doc/posix-headers/unistd.texi: More details about MSVC problem.
* lib/strings.in.h: Include <strings.h> only if HAVE_STRINGS_H is 1.
* m4/strings_h.m4 (gl_HEADER_STRINGS_H_BODY): Set HAVE_STRINGS_H.
* modules/strings (Makefile.am): Substitute HAVE_STRINGS_H.
* doc/posix-headers/strings.texi: Mention the MSVC problem.
* lib/dirent.in.h: Include <dirent.h> only if HAVE_DIRENT_H is 1.
* m4/dirent_h.m4 (gl_DIRENT_H): Set HAVE_DIRENT_H.
* modules/dirent (Makefile.am): Substitute HAVE_DIRENT_H.
* doc/posix-headers/dirent.texi: Mention the MSVC problem.
* lib/wchar.in.h (wint_t): On MSVC, override it.
* lib/wctype.in.h (wint_t): Likewise.
* m4/stdint.m4 (gl_STDINT_TYPE_PROPERTIES): Override BITSIZEOF_WINT_T on
MSVC.
* doc/posix-headers/wchar.texi: Mention the problem with wint_t on MSVC.
* doc/posix-headers/wctype.texi: Likewise.
* lib/sys_types.in.h: New file.
* m4/sys_types_h.m4: New file.
* modules/sys_types: New file.
* doc/posix-headers/sys_types.texi: Mention the new module and the
size_t problem on MSVC 9.
* lib/pathmax.h (PATH_MAX): Leave it undefined on GNU/Hurd.
* lib/chdir-long.h: Include pathmax.h.
* lib/clean-temp.c (PATH_MAX): Remove code that is done by pathmax.h.
* lib/getcwd.c: Include pathmax.h instead of <limits.h>.
(PATH_MAX): Remove code that is done by pathmax.h.
* lib/canonicalize.c (PATH_MAX): Provide a fallback value.
* lib/tmpfile.c: Add a comment.
* m4/pathmax.m4 (gl_PATHMAX): Don't test for pathconf.
* modules/chdir-long (Depends-on): Add pathmax.
* modules/getcwd (Depends-on): Add pathmax.
* tests/test-getcwd.c (test_abort_bug): Avoid syntax error when PATH_MAX
is not defined.
* doc/posix-headers/limits.texi: Mention the pathmax module.
* NEWS: Mention the change.