+2011-12-04 Bruno Haible <bruno@clisp.org>
+ Jim Meyering <meyering@redhat.com>
+
+ tests: Avoid spurious error message on platforms without mktemp program.
+ * tests/init.sh (mktempd_): Run mktemp in a subcommand.
+
+2011-12-03 Bruno Haible <bruno@clisp.org>
+
+ Fix module descriptions syntax.
+ * modules/argv-iter (License): Fix syntax.
+ * modules/di-set (License): Likewise.
+ * modules/ino-map (License): Likewise.
+ Reported by Stefano Lattarini <stefano.lattarini@gmail.com>.
+
+2011-12-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ stdalign: port to Clang 3.0
+ 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.
+
+2011-12-01 Eric Blake <eblake@redhat.com>
+
+ mktempd: silence dd usage
+ * build-aux/mktempd (rand_bytes): Silence dd.
+
+2011-11-30 Simon Josefsson <simon@josefsson.org>
+
+ manywarnings: Don't mention gcc version in docstring.
+ * m4/manywarnings.m4 (gl_MANYWARN_ALL_GCC): Doc fix. Suggested by
+ Jim Meyering <meyering@redhat.com>.
+
+2011-11-30 Jim Meyering <meyering@redhat.com>
+
+ hash: mark a few floating point constants with "f" suffix
+ * lib/hash.c (DEFAULT_GROWTH_THRESHOLD, DEFAULT_GROWTH_FACTOR)
+ (DEFAULT_SHRINK_THRESHOLD, DEFAULT_SHRINK_FACTOR): Mark literal
+ floating point constants with "f", since they're destined to be
+ saved/used as "float"s.
+
+2011-11-29 Paolo Bonzini <bonzini@gnu.org>
+
+ float tests: Correct and re-enable assertion about LDBL_MIN_EXP.
+ * tests/test-float.c (test_long_double): Correct and re-enable the
+ assertion about LDBL_MIN_EXP that was disabled on 2011-08-31.
+
+2011-11-29 Matthew Wala <wala1@illinois.edu> (tiny change)
+
+ Avoid subtracting two pointers that don't point into the same block.
+ * lib/argp-help.c (hol_append): Reorder pointer subtractions so that
+ only pointers into the same memory block are subtracted. We cannot
+ assume that sizeof (ptrdiff_t) == sizeof (void *).
+
+2011-11-29 Eric Blake <eblake@redhat.com>
+
+ maint.mk: add syntax check for use of compare from init.sh
+ * top/maint.mk (sc_prohibit_reversed_compare_failure): New rule,
+ moved here from coreutils.
+
+ manywarnings: drop -Wunsuffixed-float-constants
+ * m4/manywarnings.m4 (gl_MANYWARN_ALL_GCC): C99 does not allow
+ '1.0D', which is the only way to silence this warning for 'double'.
+
+2011-11-29 Jim Meyering <meyering@redhat.com>
+
+ hash: mark compute_bucket_size with the pure attribute
+ * lib/hash.c (compute_bucket_size): Use _GL_ATTRIBUTE_PURE.
+
+ quotearg, propername: correct pragma guard expression
+ * lib/quotearg.c: Enable pragma for gcc-4.6 and newer, not 4.3 and newer.
+ * lib/propername.c: Likewise. Reported by Bernhard Voelker.
+
+2011-11-28 Jim Meyering <meyering@redhat.com>
+
+ propername: do not mark proper_name with the const attribute
+ * lib/propername.h (proper_name): Do *not* mark as _GL_ATTRIBUTE_CONST,
+ since it examines data pointed to by its parameter.
+ * lib/propername.c (proper_name): Instead, add a pragma to suppress
+ the suggestion from -Wsuggest-attribute=const.
+
+ propername: mark one more function as const
+ * lib/propername.h (proper_name): Mark as _GL_ATTRIBUTE_CONST.
+
+2011-11-27 Jim Meyering <meyering@redhat.com>
+
+ mark functions with const and pure attributes
+
+ Mark functions per suggestions from gcc-4.6 when using these options:
+ -Wsuggest-attribute=pure -Wsuggest-attribute=const.
+ Use gnulib's _GL_ATTRIBUTE_PURE and _GL_ATTRIBUTE_CONST macros.
+ Follow these guidelines: when possible, apply the attribute to
+ an extern declaration, not to its definition. Apply it to the
+ definition only when the definition is static.
+ * lib/argmatch.h (argmatch, argmatch_to_argument): Mark.
+ * lib/argv-iter.h (argv_iter_n_args): Likewise.
+ * lib/base64.h (isbase64): Likewise.
+ * lib/basename-lgpl.c (last_component, base_len): Likewise.
+ * lib/c-ctype.h (c_isascii, c_isalnum, c_isalpha): Likewise.
+ (c_isblank, c_iscntrl, c_isdigit, c_islower, c_isgraph): Likewise.
+ (c_isprint, c_ispunct, c_isspace, c_isupper, c_isxdigit): Likewise.
+ (c_tolower, c_toupper): Likewise.
+ * lib/c-strcase.h (c_strcasecmp, c_strncasecmp): Likewise.
+ * lib/chdir-long.c (find_non_slash): Likewise.
+ * lib/dirname.h (base_len, dir_len, last_component): Likewise.
+ * lib/exclude.h (fnmatch_pattern_has_wildcards): Likewise.
+ * lib/file-type.h (file_type): Likewise.
+ * lib/filenamecat-lgpl.c (longest_relative_suffix): Likewise.
+ * lib/filevercmp.c (verrevcmp): Likewise.
+ * lib/freadahead.h (freadahead): Likewise.
+ * lib/fts.c (fts_maxarglen): Likewise.
+ * lib/hash-pjw.h (hash_pjw): Likewise.
+ * lib/hash-triple.h (triple_hash_no_name, triple_compare_ino_str):
+ * lib/hash.c (is_prime, next_prime): Likewise.
+ * lib/hash.c (hash_get_n_buckets, hash_get_n_buckets_used): Likewise.
+ (hash_get_n_entries, hash_get_max_bucket_length): Likewise.
+ (hash_table_ok, hash_get_first, hash_string): Likewise.
+ (compute_bucket_size): Likewise.
+ * lib/i-ring.h (i_ring_empty): Likewise.
+ * lib/isnan.c (isnanl): Likewise.
+ * lib/math.h (isnanl, rpl_isnanl): Likewise.
+ * lib/memcasecmp.h (memcasecmp): Likewise.
+ * lib/memchr2.h (memchr2): Likewise.
+ * lib/memcmp2.h (memcmp2): Likewise.
+ * lib/parse-datetime.y (lookup_zone): Likewise.
+ * lib/sockets.h (gl_sockets_startup, gl_sockets_cleanup)
+ [!WINDOWS_SOCKETS]: Likewise.
+ * lib/strnlen1.h (strnlen1): Likewise.
+ * lib/uniwidth.in.h (uc_width): Likewise.
+ * lib/quotearg.c: Add pragma to avoid unwarranted suggestion from
+ gcc's -Wsuggest-attribute=pure for quoting_options_from_style.
+ (quoting_options_from_style): Add a comment.
+ * lib/propername.h (proper_name): Add a comment.
+
+2011-11-27 Bruno Haible <bruno@clisp.org>
+
+ Remove unused macros from !_LIBC code in glibc-borrowed files.
+ * lib/fnmatch.c (STRCOLL): Remove macro.
+ * lib/fnmatch_loop.c (STRCOLL): Remove undef.
+ * lib/glob.c (__stat, __readdir64): Remove macros.
+ * lib/tempname.c (__open64, __xstat64): Remove macros.
+ Suggested by Paul Eggert.
+
+2011-11-27 Bruno Haible <bruno@clisp.org>
+
+ getcwd: Fix link error on MSVC 9.
+ * modules/getcwd (Depends-on): Add readdir, rewinddir.
+
+2011-11-27 Bruno Haible <bruno@clisp.org>
+
+ Don't set REPLACE_FOO to 1 if HAVE_FOO is 0.
+ * m4/opendir.m4 (gl_FUNC_OPENDIR): Don't set REPLACE_OPENDIR to 1 if
+ HAVE_OPENDIR is 0.
+ * m4/closedir.m4 (gl_FUNC_CLOSEDIR): Don't set REPLACE_CLOSEDIR to 1 if
+ HAVE_CLOSEDIR is 0.
+ * m4/dup2.m4 (gl_FUNC_DUP2): Don't set REPLACE_DUP2 to 1 if HAVE_DUP2
+ is 0.
+ * m4/dup3.m4 (gl_FUNC_DUP3): Update comments.
+
+2011-11-27 Bruno Haible <bruno@clisp.org>
+
+ getcwd: Fix bug from 2011-08-17.
+ * m4/getcwd.m4 (gl_FUNC_GETCWD): Set REPLACE_GETCWD to 1 only on
+ platforms that need it.
+ * m4/getcwd-abort-bug.m4 (gl_FUNC_GETCWD_ABORT_BUG): Consider a return
+ code of 4 to be a failure, not a success. This ensures that
+ REPLACE_GETCWD becomes 1 on OpenBSD 4.9 and NetBSD 5.1.
+
+2011-11-27 Bruno Haible <bruno@clisp.org>
+
+ binary-io tests: Avoid test failure on mingw when libtool is used.
+ * tests/test-binary-io.c (main): Don't remove t-bin-out2.tmp here.
+ Don't verify the size of t-bin-out1.tmp here.
+ * tests/test-binary-io.sh: Verify it here.
+ Reported by Simon Josefsson.
+
+2011-11-26 Bruno Haible <bruno@clisp.org>
+
+ Fix conflict between two instantiations of module 'unistd'.
+ * gnulib-tool (func_emit_autoconf_snippet): Substitute
+ ${include_guard_prefix} also in the autoconf snippet.
+ * m4/getopt.m4 (gl_FUNC_GETOPT_POSIX): Don't set GNULIB_UNISTD_H_GETOPT.
+ * m4/unistd_h.m4 (gl_UNISTD_H_DEFAULTS): Don't initialize
+ GNULIB_UNISTD_H_GETOPT.
+ * modules/getopt-posix (configure.ac): Set the
+ GNULIB_${gl_include_guard_prefix}_UNISTD_H_GETOPT variable.
+ * modules/getopt-gnu (configure.ac): Likewise.
+ * modules/unistd (Makefile.am): Change the substitution value of
+ GNULIB_UNISTD_H_GETOPT to depend on the include guard prefix.
+ Reported by Simon Josefsson.
+
+2011-11-25 Bruno Haible <bruno@clisp.org>
+
+ pagealign_alloc: Doc and comments.
+ * doc/posix-functions/posix_memalign.texi: Refer to the pagealign_alloc
+ module.
+ * lib/pagealign_alloc.c (pagealign_alloc): Add comment.
+
+2011-11-25 Jim Meyering <meyering@redhat.com>
+
+ test-update-copyright.sh: avoid false-positive failure
+ * tests/test-update-copyright.sh: Use $TMP.? (not $TMP.*), to work
+ around false positive failure on Cygwin/Windows. The latter was
+ matching erroneously-created files with names like
+ update-copyright.test-ex.4.bak. Reported by Simon Josefsson.
+
+2011-11-25 Simon Josefsson <simon@josefsson.org>
+
+ valgrind-tests.m4: Avoid breakage if valgrind on bash fails.
+ * m4/valgrind-tests.m4: Check that the parameters that will be
+ used works, not just a subset of them. Reported by Bruno Haible
+ <bruno@clisp.org>.
+
+2011-11-24 Jim Meyering <meyering@redhat.com>
+
+ test-stdalign.c: comment out long double tests
+ * tests/test-stdalign.c: Don't try to reduce alignment of long double
+ variables. That provokes errors like this from gcc-4.7.0 20111124:
+ error: '_Alignas' specifiers cannot reduce alignment of \
+ 'static_longdouble_alignas'.
+
+2011-11-22 Jim Meyering <meyering@redhat.com>
+
+ init.sh: make "compare /dev/null FILE" output more readable
+ * tests/init.sh (compare_): Document the preferred order of arguments.
+ (emit_diff_u_header_): New function.
+ (compare_dev_null_): Emit a simulated diff, rather than just the
+ contents of the unexpected file. Suggestion from Bruno Haible.
+
+2011-11-21 Jim Meyering <meyering@redhat.com>
+ Eric Blake <eblake@redhat.com>
+
+ init.sh: work around OSF/1 5.1's mishandling of /dev/null
+ * tests/init.sh: Make our compare function slightly more portable.
+ Reported by Bruno Haible in
+ http://thread.gmane.org/gmane.comp.gnu.grep.bugs/4020
+
+2011-11-21 Simon Josefsson <simon@josefsson.org>
+
+ * m4/gnulib-common.m4 (_Noreturn): Check that _MSC_VER is defined
+ before using it, in code that ends up in config.h.
+
+2011-11-20 Bruno Haible <bruno@clisp.org>
+
+ getcwd: Work around getcwd bug on AIX 5..7.
+ * m4/getcwd-path-max.m4 (gl_FUNC_GETCWD_PATH_MAX): Require
+ AC_CANONICAL_HOST. Assign exit code 31 to the bug seen on AIX 5.1..7.1.
+ Use a different value for gl_cv_func_getcwd_path_max. Move the
+ definition of HAVE_PARTLY_WORKING_GETCWD from here...
+ * m4/getcwd.m4 (gl_FUNC_GETCWD): ... to here. Invoke
+ gl_FUNC_GETCWD_PATH_MAX also when $gl_cv_func_getcwd_null is 'no'.
+ Define HAVE_MINIMALLY_WORKING_GETCWD.
+ * lib/getcwd.c (__getcwd): Don't use the system's getcwd on platforms
+ where it is not even minimally working, that is, on AIX.
+ * tests/test-getcwd.c (test_long_name): Distinguish the same cases as
+ m4/getcwd-path-max.m4.
+ (main): Update exit code computation.
+ * doc/posix-functions/getcwd.texi: Mention list of platforms where
+ getcwd does not handle long file names.
+
+2011-11-20 Bruno Haible <bruno@clisp.org>
+
+ getcwd: Fix bug from 2009-09-10.
+ * m4/getcwd.m4 (gl_FUNC_GETCWD): Treat "guessing yes" like "yes", not
+ like "no".
+
+2011-11-20 Simon Josefsson <simon@josefsson.org>
+
+ * m4/manywarnings.m4: Add more warnings from gcc 4.6.2.
+
+2011-11-20 Bruno Haible <bruno@clisp.org>
+
+ fma tests: Avoid shadowing local variables.
+ * tests/test-fma2.h (test_function): Reduce scope of x, y, z, result,
+ expected.
+
+2011-11-20 Bruno Haible <bruno@clisp.org>
+
+ copysignf tests: Fix.
+ * tests/test-copysignf.c: Fix signature check.
+
+2011-11-20 Bruno Haible <bruno@clisp.org>
+
+ fma: Remove unused code.
+ * lib/fma.c (DECL_ROUNDING, BEGIN_ROUNDING, END_ROUNDING): Remove
+ unused macros.
+
+2011-11-20 Bruno Haible <bruno@clisp.org>
+
+ sethostname: Fix doc about AIX.
+ * doc/glibc-functions/sethostname.texi: Drop mention that AIX 5.1 lacks
+ sethostname; it has it.
+
+ sethostname: Mention more portability problems.
+ * doc/glibc-functions/sethostname.texi: Mention the missing declaration
+ problem.
+ Reported by Ben Walton <bwalton@artsci.utoronto.ca>.
+
+2011-11-19 Bruno Haible <bruno@clisp.org>
+
+ Depend on module fcntl-h when AT_FDCWD is used.
+ * modules/utimens (Depends-on): Add fcntl-h.
+ * modules/areadlinkat (Depends-on): Likewise.
+ * modules/areadlinkat-with-size (Depends-on): Likewise.
+ * modules/faccessat (Depends-on): Likewise.
+ * modules/fchmodat (Depends-on): Likewise.
+ * modules/fchownat (Depends-on): Likewise.
+ * modules/getcwd (Depends-on): Likewise.
+ * modules/mkdirat (Depends-on): Likewise.
+ * modules/mkfifoat (Depends-on): Likewise.
+ * modules/readlinkat (Depends-on): Likewise.
+ * modules/symlinkat (Depends-on): Likewise.
+ * modules/dup2-tests (Depends-on): Likewise.
+ * modules/fdutimensat-tests (Depends-on): Likewise.
+ * modules/futimens-tests (Depends-on): Likewise.
+
+2011-11-19 Bruno Haible <bruno@clisp.org>
+
+ euidaccess: Update a comment.
+ * lib/euidaccess.c: Update comment about platforms with faccessat.
+
+2011-11-19 Bruno Haible <bruno@clisp.org>
+
+ openat: Fix file list.
+ * modules/openat (Files): Remove lib/at-func.c.
+
+2011-11-19 Bruno Haible <bruno@clisp.org>
+
+ fstatat: Simplify.
+ * lib/fstatat.c (AT_FUNC_NAME): Define as fstatat. On platforms where
+ gnulib should define rpl_fstatat, there is a
+ "#define fstatat rpl_fstatat" in <sys/stat.h>.
+
+2011-11-19 Bruno Haible <bruno@clisp.org>
+
+ Ensure 'inline' can be used in tests/test-utimens-common.h.
+ * modules/fdutimensat-tests (configure.ac): Require AC_C_INLINE.
+ * modules/futimens-tests (configure.ac): Likewise.
+ * modules/utimens-tests (configure.ac): Likewise.
+ * modules/utimensat-tests (configure.ac): Likewise.
+
+2011-11-19 Simon Josefsson <simon@josefsson.org>
+
+ * lib/hash.c (hash_insert): Use hash_insert_if_absent,
+ not hash_insert0.
+ (hash_insert_if_absent): Doc fix.
+
+2011-11-19 Simon Josefsson <simon@josefsson.org>
+
+ * m4/readline.m4 (gl_FUNC_READLINE): Check for readline/history.h.
+
+2011-11-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ test-getcwd: disambiguate exit status
+ * tests/test-getcwd.c (test_long_name): Return 0..7.
+ (main): Exit with an unambiguous exit status. The old
+ code yielded a mysterious mixture of two failure codes.
+
+ fstatat: fix configuration bug on mingw, OpenBSD 4, Solaris 8
+ * lib/fstatat.c (AT_FUNC_NAME): Use HAVE_FSTAT, not
+ HAVE_WORKING_FSTATAT_ZERO_FLAG, to decide whether to define
+ rpl_fstatat or fstatat. This should fix the other problem
+ reported by Kai Habel in
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-11/msg00237.html>.
+ A similar problem was reported for OpenBSD 4.6 by Mats Erik Andersson
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-11/msg00239.html>
+ and I reproduced it on a Solaris 8 host we still have in production.
+
+2011-11-18 Jim Meyering <meyering@redhat.com>
+
+ hash: deprecate poorly-named hash_insert0: use hash_insert_if_absent
+ * lib/hash.c (hash_insert_if_absent): Rename from hash_insert0.
+ Add a sentence to the comment.
+ (hash_insert0): New function that simply calls hash_insert_if_absent.
+ * lib/hash.h (hash_insert_if_absent): Declare it.
+ (hash_insert0): Add deprecation attribute.
+ (_GL_ATTRIBUTE_DEPRECATED): Define.
+ * lib/di-set.c (di_set_insert): Use hash_insert_if_absent,
+ not hash_insert0.
+ * NEWS: Mention it, even though it's not really an incompatible change.
+
+2011-11-18 Dagobert Michelsen <dam@opencsw.org> (tiny change)
+
+ openat: avoid compilation failure due to lack of <errno.h> inclusion
+ * lib/openat.c: Include <errno.h>.
+
+2011-11-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * modules/getcwd (Depends-on): Add fdopendir.
+ This fixes one of the two problems reported by Kai Habel in
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-11/msg00237.html>.
+
+ modules/crypto/gc-*: simplify dependencies and fix stdalign.h bug
+ stdalign problem reported by Ian Beckwith in
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-11/msg00238.html>.
+ * modules/crypto/gc-arcfour (Depends-on):
+ Depend conditionally on crypto/arcfour.
+ * modules/crypto/gc-arctwo (Depends-on):
+ Depend conditionally on crypto/arctwo.
+ * modules/crypto/gc-des (Depends-on):
+ Depend conditionally on crypto/des.
+ * modules/crypto/gc-hmac-md5 (Depends-on):
+ Depend conditionally on crypto/hmac-md5.
+ * modules/crypto/gc-hmac-sha1 (Depends-on):
+ Depend conditionally on crypto/hmac-sha1.
+ * modules/crypto/gc-md2 (Depends-on): Remove stdint, minmax.
+ * modules/crypto/gc-md4 (Depends-on):
+ Depend conditionally on crypto/md4.
+ * modules/crypto/gc-md5 (Depends-on):
+ Depend conditionally on crypto/md5.
+ * modules/crypto/gc-rijndael (Depends-on):
+ Depend conditionally on crypto/rijndael.
+ * modules/crypto/gc-sha1 (Depends-on):
+ Depend conditionally on crypto/sha1.
+ * modules/crypto/gc-arcfour:
+ * modules/crypto/gc-arctwo:
+ * modules/crypto/gc-des:
+ * modules/crypto/gc-hmac-md5:
+ * modules/crypto/gc-hmac-sha1:
+ * modules/crypto/gc-md2:
+ * modules/crypto/gc-md4:
+ * modules/crypto/gc-md5:
+ * modules/crypto/gc-rijndael:
+ * modules/crypto/gc-sha1:
+ (Files, Depends-on, configure.ac): Remove now-unnecessary stuff,
+ now that the conditional dependencies do the work for us.
+
+2011-11-17 Jim Meyering <meyering@redhat.com>
+
+ tests: factor st_ctime-comparison out of two headers
+ * tests/test-utimens-common.h (ctime_compare): Define.
+ * tests/test-futimens.h (test_futimens): Replace open-coded equivalent.
+ * tests/test-lutimens.h (test_lutimens): Likewise.
+ * tests/test-utimens.h (test_utimens): Likewise.
+
+ test-getcwd: don't leave behind a confdir3/ directory upon interrupt
+ Invoke the test program via an init.sh-using wrapper.
+ * tests/test-getcwd.sh: New file.
+ * modules/getcwd-tests (Files): Add it.
+ (Makefile.am) [TESTS]: Invoke the shell script wrapper.
+
+2011-11-01 Gary V. Vaughan <gary@gnu.org>
+
+ gitlog-to-changelog: support multi-author commits.
+ The FSF cares about keeping track of all authors of patches to its
+ projects, but Git doesn't provide obvious support for multi-author
+ changesets. Consensus seems to be forming around the use of extra
+ Signed-off-by inspired lines in the log message formatted as
+ `Co-authored-by: A U Thor <email@example.com>' for round-tripping
+ multi-author commits between version control systems.
+ * gitlog-to-changelog: Extract `Co-authored-by:' lines from the git
+ log message and output in standard ChangeLog multi-author format.
+ Reported by Peter Rosin <peda@lysator.liu.se>
+
+2011-11-15 Ben Walton <bwalton@artsci.utoronto.ca> (tiny change)
+ Bruno Haible <bruno@clisp.org>
+
+ Fix some modules' file list.
+ * modules/fstatat (Files): Add m4/lstat.m4.
+ * modules/openat (Files): Likewise.
+ * modules/unlinkat (Files): Likewise.
+
+2011-11-15 Gary V. Vaughan <gary@gnu.org>
+
+ maint.mk: fix tight-scope.mk generation in VPATH builds.
+ * top/maint.mk (tight-scope.mk): Make sure to prefix file
+ reference with $(srcdir) so that the file is found correctly even
+ when running `make syntax-check' in a VPATH build.
+
+2011-11-13 Bruno Haible <bruno@clisp.org>
+ Jim Meyering <meyering@redhat.com>
+
+ Silence successful tests that use 'compare' on AIX, HP-UX, Solaris.
+ * tests/init.sh (compare): Remove "No differences encountered" or
+ synonymous output from the 'diff' program.
+
+2011-11-13 Bruno Haible <bruno@clisp.org>
+
+ Makefile: Tweak indentation.
+ * Makefile: Use tab as first character in every line that contains rule
+ commands.
+
+2011-11-13 Bruno Haible <bruno@clisp.org>
+
+ Syntax check for copyright statements.
+ * check-copyright: New file.
+ * Makefile (sc_check_copyright): New rule.
+
+2011-11-13 Simon Josefsson <simon@josefsson.org>
+
+ * build-aux/git-version-gen: Add --prefix to configure the tag
+ match string.
+
+2011-11-13 Simon Josefsson <simon@josefsson.org>
+
+ * build-aux/git-version-gen: Add --help and --version.
+
+2011-11-12 Jim Meyering <meyering@redhat.com>
+
+ revamp the other test-exclude?.sh scripts to use init.sh, too
+ * tests/test-exclude1.sh: Use init.sh.
+ * tests/test-exclude2.sh: Likewise.
+ * tests/test-exclude3.sh: Likewise.
+ * tests/test-exclude4.sh: Likewise.
+ * tests/test-exclude5.sh: Likewise.
+ * tests/test-exclude6.sh: Likewise.
+ * tests/test-exclude7.sh: Likewise.
+ * tests/test-exclude8.sh: Likewise.
+ * modules/exclude-tests (Files): List init.sh.
+
+ test-exclude2.sh, test-exclude5.sh: fail if test-exclude fails
+ These shell scripts ignored failure of the binary test-exclude,
+ so making the latter return 77 didn't cause them to be skipped.
+ * tests/test-exclude5.sh: Exit with test-exclude's error status
+ when that program fails. Revamp to use init.sh.
+ * tests/test-exclude2.sh: Likewise.
+
+ test-exclude: fix a typo
+ * tests/test-exclude.c (main): Test for "leading_dir", not "leading-dir".
+
+2011-11-11 Bruno Haible <bruno@clisp.org>
+
+ obstack: Fix compilation error on MSVC 9.
+ * lib/obstack.c (print_and_abort): Declare with _Noreturn specifier.
+
+2011-11-11 Jim Meyering <meyering@redhat.com>
+
+ test-exclude: skip tests rather than failing on deficient systems
+ * tests/test-exclude.c (main): Skip tests that use FNM_CASEFOLD
+ and FNM_LEADING_DIR on systems that lack the definitions. This affects
+ at least Solaris 9. Reported and diagnosed by Dagobert Michelsen in
+ http://thread.gmane.org/gmane.comp.gnu.grep.bugs/3947/focus=3950
+
+2011-11-10 Bruno Haible <bruno@clisp.org>
+
+ ptsname_r test: Avoid gcc warning on glibc systems.
+ * tests/test-ptsname_r.c (null_ptr): New function.
+ (test_errors): Use it.
+
+2011-11-10 Bruno Haible <bruno@clisp.org>
+
+ ptsname_r: Avoid compilation error on OSF/1 5.1.
+ * lib/stdlib.in.h (ptsname_r): Override if REPLACE_PTSNAME_R is 1.
+ * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Initialize REPLACE_PTSNAME_R.
+ * m4/ptsname_r.m4 (gl_FUNC_PTSNAME_R): Set REPLACE_PTSNAME_R if the
+ function is not declared or incompatibly declared.
+ * modules/stdlib (Makefile.am): Substitute REPLACE_PTSNAME_R.
+ * modules/ptsname_r (Depends-on, configure.ac): Update.
+ * doc/glibc-functions/ptsname_r.texi: Mention the OSF/1 problems.
+
+2011-11-10 Bruno Haible <bruno@clisp.org>
+
+ fstatat: Make cross-compilation guess succeed everywhere except on AIX.
+ * m4/fstatat.m4 (gl_FUNC_FSTATAT): Require AC_CANONICAL_HOST.
+ When cross-compiling, guess yes on all platforms except AIX.
+ Reported by Ludovic Courtès <ludo@gnu.org>.
+
+2011-11-09 Bruno Haible <bruno@clisp.org>
+
+ ptsname_r tests: Fix bugs.
+ * tests/test-ptsname_r.c (test_errors): Change return type to 'void'.
+ Fix ptsname_r calls. Reduce loop rounds to a reasonable amount.
+
+2011-11-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ fstatat: work with cross-compilation
+ Problem reported by Ludovic Courtès in
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-11/msg00136.html>.
+ * m4/fstatat.m4 (gl_FUNC_FSTATAT): When cross-compiling, report
+ "cross-compiling" and assume the bug is present. Replace
+ FSTATAT_ZERO_FLAG_BROKEN with HAVE_WORKING_FSTATAT_ZERO_FLAG with
+ an inverted sense, to be more conservative about our assumptions.
+ * lib/fstatat.c (rpl_fstatat): Adjust to renamed macro.
+
+2011-11-09 Bruno Haible <bruno@clisp.org>
+
+ Improve MODULES.html output.
+ * modules/mkfifoat (Description): Use the word "function".
+ * modules/readlinkat (Description): Likewise.
+ * modules/symlinkat (Description): Likewise.
+
+2011-11-09 Eric Blake <eblake@redhat.com>
+
+ ptsname_r-tests: new test module
+ * modules/ptsname_r-tests: New module.
+ * tests/test-ptsname_r.c: New file.
+
+ ptsname_r: new module
+ * modules/ptsname_r: New module.
+ * m4/ptsname_r.m4 (gl_FUNC_PTSNAME_R): New file.
+ * lib/ptsname.c (__ptsname_r): Split...
+ * lib/ptsname_r.c: ...into new file.
+ * m4/stdlib_h.m4 (gl_STDLIB_H): Check for decl.
+ (gl_STDLIB_H_DEFAULTS): Set witness defaults.
+ * modules/stdlib (Makefile.am): Substitute witnesses.
+ * lib/stdlib.in.h (ptsname_r): Declare it.
+ * doc/glibc-functions/ptsname_r.texi (ptsname_r): Document it.
+ * MODULES.html.sh (Misc): Likewise.
+ * modules/ptsname (Depends-on): Alter dependency.
+ * doc/posix-functions/ptsname.texi (ptsname): Mention new module.
+
+2011-11-09 Jim Meyering <meyering@redhat.com>
+
+ announce-gen: be more concise when there's only one URL+tarball
+ * build-aux/announce-gen (get_tool_versions): When you distribute
+ only one type of tarball, combine the first two "Here are..."
+ sections and make the key-checking grammar independent of
+ how many tarballs there are.
+
+2011-11-09 Eric Blake <eblake@redhat.com>
+
+ openpty: provide a stub on mingw
+ * lib/pty.in.h (includes): Provide forward declarations.
+ * lib/openpty.c (openpty) [mingw]: Provide ENOSYS stub.
+
+ raise: fix mingw handling of SIGPIPE
+ * lib/sigprocmask.c (_gl_raise_SIGPIPE): Provide a return value.
+
+2011-11-08 Bruno Haible <bruno@clisp.org>
+
+ More conditional dependencies.
+ * modules/faccessat (Depends-on): Add conditions.
+ * modules/fchmodat (Depends-on): Likewise.
+ * modules/fchownat (Depends-on): Likewise.
+ * modules/fstatat (Depends-on): Likewise.
+ * modules/mkfifoat (Depends-on): Likewise.
+ * modules/readlinkat (Depends-on): Likewise.
+ * modules/symlinkat (Depends-on): Likewise.
+ * modules/unlinkat (Depends-on): Likewise.
+ * modules/utimensat (Depends-on): Likewise.
+ * modules/mkdirat (Depends-on): Add sys_stat. Add conditions.
+ * modules/linkat (Depends-on): Refine the conditions.
+ * modules/renameat (Depends-on): Likewise.
+
+2011-11-08 Bruno Haible <bruno@clisp.org>
+
+ faccessat: Move AC_LIBOBJ invocation to module description.
+ * m4/faccessat.m4 (gl_PREREQ_FACCESSAT): New macro.
+ (gl_FUNC_FACESSAT): Don't test for access() here. Move AC_LIBOBJ
+ invocation from here...
+ * modules/faccessat (configure.ac): ... to here. Invoke
+ gl_PREREQ_FACCESSAT.
+
+2011-11-08 Bruno Haible <bruno@clisp.org>
+
+ faccessat: Simplify autoconf macro.
+ * m4/faccessat.m4 (gl_FUNC_FACCESSAT): Don't require gl_FUNC_OPENAT,
+ gl_FUNC_EUIDACCESS.
+
+2011-11-08 Bruno Haible <bruno@clisp.org>
+
+ renameat: Fix dependencies.
+ * modules/renameat (Depends-on): Add stdbool.
+
+2011-11-08 Bruno Haible <bruno@clisp.org>
+
+ mkfifoat: Fix module description.
+ * modules/mkfifoat (configure.ac): Invoke gl_SYS_STAT_MODULE_INDICATOR,
+ not gl_UNISTD_MODULE_INDICATOR.
+
+2011-11-08 Bruno Haible <bruno@clisp.org>
+
+ fstatat: Remove unused dependency.
+ * modules/fstatat (Depends-on): Remove fstat.
+
+2011-11-08 Simon Josefsson <simon@josefsson.org>
+
+ GNUmakefile: behave when Makefile is missing.
+ * top/GNUmakefile: Always initialize _build-aux and _autoreconf.
+
+2011-11-08 Bruno Haible <bruno@clisp.org>
+
+ openat: Conditionalize dependencies.
+ * lib/openat.c: Reduce the scope of some #includes.
+ * modules/openat (Depends-on): Add conditions.
+
+2011-11-07 Jim Meyering <meyering@redhat.com>
+
+ maint.mk: extract GPG key ID without using a temporary file
+ * top/maint.mk (gpg_key_ID): Extract GPG key ID from signed tag, but
+ without using a temporary file. Based on a suggestion from Werner Koch
+ in http://thread.gmane.org/gmane.comp.encryption.gpg.devel/16496
+
+2011-11-07 Eric Blake <eblake@redhat.com>
+
+ grantpt: fix typo
+ * lib/stdlib.in.h (grantpt): Check correct function.
+
+ maint.mk: silence new syntax check
+ * top/maint.mk (sc_prohibit_dirent_without_use): Add missing @.
+
+2011-11-06 Bruno Haible <bruno@clisp.org>
+
+ Doc about floating-point and math API.
+ * doc/posix-headers/float.texi: Mention problem with FLT_ROUNDS.
+ * doc/posix-headers/math.texi: Mention problem with math_errhandling.
+
+2011-11-06 Bruno Haible <bruno@clisp.org>
+
+ stdalign tests: Skip the test when compiled by Sun C.
+ * tests/test-stdalign.c (main): Skip the test on Sun C.
+
+2011-11-06 Bruno Haible <bruno@clisp.org>
+
+ ansi-c++-opt: Complete the 2011-06-05 change.
+ * m4/ansi-c++.m4 (gl_PROG_ANSI_CXX): When a C++ compiler is found but
+ does not support namespaces, set the variable to "no", not to ":".
+
+2011-11-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * doc/posix-headers/stdalign.texi (stdalign.h): Mention Sun review ID.
+
+2011-11-06 Bruno Haible <bruno@clisp.org>
+
+ copysignl: Fix result for zero argument on HP-UX 11 with HP C.
+ * lib/copysignl.c (compute_minus_zerol) [HP-UX]: New function.
+ (minus_zerol) [HP-UX]: New macro.
+ (unary_minus) [HP-UX]: New function.
+ (copysignl) [HP-UX]: Use unary_minus function.
+
+2011-11-06 Bruno Haible <bruno@clisp.org>
+
+ ldexp, ldexpf, ldexpl: Enhance tests.
+ * tests/test-ldexp.h: New file, combining code from tests/test-ldexp.c
+ and tests/test-ldexpl.c.
+ * tests/test-ldexpl.c: (DOUBLE, ISNAN, INFINITY, NAN, L_, MINUS_ZERO,
+ LDEXP, MIN_EXP, MAX_EXP): New macros.
+ Include test-ldexp.h.
+ (main): Just call test_function.
+ * tests/test-ldexp.c: Include float.h, isnand-nolibm.h, minus-zero.h,
+ infinity.h, nan.h.
+ (DOUBLE, ISNAN, INFINITY, NAN, L_, MINUS_ZERO, LDEXP, MIN_EXP,
+ MAX_EXP): New macros.
+ Include test-ldexp.h.
+ (x, y): Remove variables.
+ (main): Just call test_function.
+ * tests/test-ldexpf.c: Include float.h, isnanf-nolibm.h, minus-zero.h,
+ infinity.h, nan.h.
+ (DOUBLE, ISNAN, INFINITY, NAN, L_, MINUS_ZERO, LDEXP, MIN_EXP,
+ MAX_EXP): New macros.
+ Include test-ldexp.h.
+ (x, y): Remove variables.
+ (main): Just call test_function.
+ * modules/ldexpl-tests (Files): Add tests/test-ldexp.h.
+ * modules/ldexp-tests (Files): Add tests/test-ldexp.h,
+ tests/minus-zero.h, tests/infinity.h, tests/nan.h.
+ (Depends-on): Add isnand-nolibm, signbit, float.
+ * modules/ldexpf-tests (Files): Add tests/test-ldexp.h,
+ tests/minus-zero.h, tests/infinity.h, tests/nan.h.
+ (Depends-on): Add isnanf-nolibm, signbit, float.
+
+2011-11-06 Bruno Haible <bruno@clisp.org>
+
+ math tests: Cosmetics.
+ * tests/test-math-c++.cc: Reorder declarations.
+
+2011-11-05 Bruno Haible <bruno@clisp.org>
+
+ fma*: Simplify test.
+ * tests/test-fma2.h (FORGIVE_GLIBC_BUG): Remove macro.
+ (test_function): Remove all if (FORGIVE_GLIBC_BUG) statements.
+
+ Tests for module 'fmal'.
+ * modules/fmal-tests: New file.
+ * tests/test-fmal1.c: New file.
+ * tests/test-fmal2.c: New file.
+
+ New module 'fmal'.
+ * lib/math.in.h (fmal): New declaration.
+ * lib/fmal.c: New file.
+ * m4/fmal.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whethern fmal is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_FMAL, HAVE_FMAL, REPLACE_FMAL.
+ * modules/math (Makefile.am): Substitute GNULIB_FMAL, HAVE_FMAL,
+ REPLACE_FMAL.
+ * modules/fmal: New file.
+ * doc/posix-functions/fmal.texi: Mention the new module and the various
+ bugs.
+
+ Tests for module 'fmaf'.
+ * modules/fmaf-tests: New file.
+ * tests/test-fmaf1.c: New file.
+ * tests/test-fmaf2.c: New file.
+
+ New module 'fmaf'.
+ * lib/math.in.h (fmaf): New declaration.
+ * lib/fmaf.c: New file.
+ * m4/fmaf.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whethern fmaf is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_FMAF, HAVE_FMAF, REPLACE_FMAF.
+ * modules/math (Makefile.am): Substitute GNULIB_FMAF, HAVE_FMAF,
+ REPLACE_FMAF.
+ * modules/fmaf: New file.
+ * doc/posix-functions/fmaf.texi: Mention the new module and the various
+ bugs.
+
+ Tests for module 'fma'.
+ * modules/fma-tests: New file.
+ * tests/test-fma1.c: New file.
+ * tests/test-fma1.h: New file.
+ * tests/test-fma2.c: New file.
+ * tests/test-fma2.h: New file.
+
+ New module 'fma'.
+ * lib/math.in.h (fma): New declaration.
+ * lib/fma.c: New file.
+ * m4/fma.m4: New file.
+ * m4/fegetround.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whethern fma is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_FMA, HAVE_FMA, REPLACE_FMA.
+ * modules/math (Makefile.am): Substitute GNULIB_FMA, HAVE_FMA,
+ REPLACE_FMA.
+ * modules/fma: New file.
+ * doc/posix-functions/fma.texi: Mention the new module and the various
+ bugs.
+
+ Extend gl_MATHFUNC.
+ * m4/mathfunc.m4 (gl_MATHFUNC): Accept an 4th parameter of INCLUDES.
+ Support 'void' as argument type.
+ * m4/rint.m4 (gl_FUNC_RINT): Update gl_MATHFUNC invocation.
+
+2011-11-05 Jim Meyering <meyering@redhat.com>
+
+ maint.mk: also prohibit inclusion of dirent.h without use
+ * top/maint.mk (sc_prohibit_dirent_without_use): New rule.
+
+2011-11-05 Bruno Haible <bruno@clisp.org>
+
+ ldexpl tests: Avoid test failure on MSVC 9.
+ * tests/test-ldexpl.c (main): Use a temporary variable for the expected
+ value. Needed in order to enforce the conversion from a value greater
+ than LDBL_MAX to Infinity.
+
+2011-11-05 Bruno Haible <bruno@clisp.org>
+
+ New modules 'at-internal', 'openat-h', split off from module 'openat'.
+ * modules/at-internal: New file, extracted from modules/openat.
+ * modules/openat-h: New file.
+ * m4/openat.m4 (gl_FUNC_OPENAT): Don't set GNULIB_OPENAT. Don't
+ invoke gl_PREREQ_OPENAT and gl_MODULE_INDICATOR.
+ * modules/openat (Description): Add reference to POSIX function.
+ (Files): Remove lib/openat.h, lib/openat-proc.c.
+ (Depends-on): Add at-internal, openat-h. Remove fdopendir, gettext-h,
+ intprops, unistd.
+ (configure.ac): Remove AC_LIBOBJ of openat-proc. Invoke
+ gl_PREREQ_OPENAT, gl_MODULE_INDICATOR here. Invoke
+ gl_FCNTL_MODULE_INDICATOR.
+ (Include): Remove unistd.h, openat.h.
+ * modules/areadlinkat (Files): Add lib/at-func.c.
+ (Depends-on): Add at-internal, dosname, errno, extensions, fchdir,
+ openat-die, openat-h, save-cwd.
+ * modules/areadlinkat-with-size (Files): Add lib/at-func.c.
+ (Depends-on): Add at-internal, dosname, errno, extensions, fchdir,
+ openat-die, openat-h, save-cwd, unistd.
+ * modules/faccessat (Files): Add lib/at-func.c, lib/openat-priv.h.
+ (Depends-on): Add at-internal, dosname, errno, fchdir, openat-die,
+ openat-h, save-cwd. Remove fcntl-h, openat.
+ * modules/fchmodat (Files): Remove lib/openat.h.
+ (Depends-on): Add at-internal, openat-h. Remove dirent, fcntl-h,
+ openat, stdbool, unistd.
+ * modules/fchownat (Files): Remove lib/openat.h.
+ (Depends-on): Add at-internal, openat-h. Remove dirent, fcntl-h,
+ openat, stdbool, sys_stat.
+ * modules/fdopendir (Files): Remove lib/openat-priv.h,
+ lib/openat-proc.c.
+ (Depends-on): Add at-internal.
+ (condigure.ac): Remove AC_LIBOBJ of openat-proc.
+ * modules/fstatat (Files): Remove lib/openat.h.
+ (Depends-on): Add at-internal, openat-h. Remove dirent, openat,
+ stdbool, unistd.
+ * modules/fts (Depends-on): Add openat-h.
+ * modules/linkat (Depends-on): Add at-internal, openat-h. Remove
+ openat.
+ * modules/mkdirat (Files): Remove lib/openat.h.
+ (Depends-on): Add at-internal, openat-h. Remove dirent, fcntl-h,
+ openat, stdbool, sys_stat.
+ * modules/mkfifoat (Files): Add lib/at-func.c.
+ (Depends-on): Add at-internal, dosname, errno, fchdir, openat-die,
+ openat-h, save-cwd. Remove fcntl-h, openat.
+ * modules/openat-die (Depends-on): Add openat-h. Remove openat.
+ * modules/readlinkat (Files): Add lib/at-func.c.
+ (Depends-on): Add at-internal, dosname, errno, fchdir, openat-die,
+ openat-h, save-cwd. Remove fcntl-h, openat.
+ * modules/renameat (Depends-on): Add at-internal, openat-h. Remove
+ openat.
+ * modules/selinux-at (Files): Add lib/at-func.c.
+ (Depends-on): Add at-internal, dosname, errno, extensions, fchdir,
+ fcntl-h, openat-die, openat-h, save-cwd, unistd. Remove openat.
+ * modules/symlinkat (Files): Add lib/at-func.c.
+ (Depends-on): Add at-internal, dosname, errno, fchdir, openat-die,
+ openat-h, save-cwd. Remove fcntl-h, openat.
+ * modules/unlinkat (Files): Remove lib/openat.h.
+ (Depends-on): Add at-internal, openat-h. Remove dirent, openat,
+ stdbool.
+ * modules/utimensat (Files): Add lib/at-func.c.
+ (Depends-on): Add at-internal, dosname, errno, fchdir, fcntl-h,
+ openat-die, openat-h, save-cwd.
+ * modules/fchownat-tests (Depends-on): Add openat-h. Remove openat.
+ * modules/fdutimensat-tests (Depends-on): Add openat.
+ * modules/fstatat-tests (Depends-on): Add openat-h.
+ * modules/readlinkat-tests (Depends-on): Add openat.
+ * modules/symlinkat-tests (Depends-on): Add openat.
+
+2011-11-05 Bruno Haible <bruno@clisp.org>
+
+ openat: Include <stdbool.h>.
+ * lib/openat.c: Include <stdbool.h>.
+
+2011-11-04 Bruno Haible <bruno@clisp.org>
+
+ fchownat, renameat, unlinkat: Fix dependencies.
+ * modules/fchownat (Depends-on): Add fstatat.
+ * modules/renameat (Depends-on): Likewise.
+ * modules/unlinkat (Depends-on): Likewise.
+
+2011-11-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ openat: remove direct dependency on dirent
+ * lib/openat.h: Don't include <dirent.h>; it's no longer needed,
+ and hasn't been needed ever since fdopendir was split into its own
+ module on 2009-08-31.
+ * modules/openat (Depends-on): Remove dirent.
+
+2011-11-04 Bruno Haible <bruno@clisp.org>
+
+ renameat: Optimize code size.
+ * modules/renameat (configure.ac): Don't compile at-func2.c if
+ REPLACE_RENAMEAT is 1.
+
+2011-11-04 Bruno Haible <bruno@clisp.org>
+
+ openat tests: Fix file list.
+ * modules/openat-tests (Files): Add tests/test-open.h.
+
+2011-11-04 Bruno Haible <bruno@clisp.org>
+
+ openat, fchmodat, fchownat, linkat, renameat: Fix dependencies.
+ * modules/fchmodat (Depends-on): Add openat-die.
+ * modules/fchownat (Depends-on): Likewise.
+ * modules/linkat (Depends-on): Likewise.
+ * modules/renameat (Depends-on): Likewise.
+ * modules/openat (Depends-on): Add dirent.
+
+2011-11-04 Jim Meyering <meyering@redhat.com>
+
+ at-func*.c: fix comments
+ * lib/at-func2.c: Correct/improve first-line comment.
+ * lib/at-func.c: Correct grammar in first-line comment.
+
+2011-11-04 Bruno Haible <bruno@clisp.org>
+
+ New module 'mkdirat', split off from module 'openat'.
+ * m4/mkdirat.m4: New file. extracted from m4/openat.m4.
+ * m4/openat.m4 (gl_FUNC_OPENAT): Don't require gl_SYS_STAT_H_DEFAULTS.
+ Don't test for mkdirat. Don't set GNULIB_MKDIRAT, HAVE_MKDIRAT.
+ * modules/mkdirat: New file, extracted from modules/openat.
+ * modules/openat (Files): Remove lib/mkdirat.c.
+ (Depends-on): Remove mkdir.
+ (configure.ac): Remove AC_LIBOBJ of mkdirat.
+ (Include): Remove <sys/stat.h>.
+ * modules/mkdirat-tests: New file, extracted from modules/openat-tests.
+ * modules/openat-tests (Files): Remove tests/test-mkdirat.c,
+ tests/test-mkdir.h.
+ (Depends-on): Remove ignore-value.
+ (Makefile.am): Remove rules for test-mkdirat.
+ * doc/posix-functions/mkdirat.texi: Mention module 'mkdirat' instead
+ of module 'openat'.
+ * NEWS: Mention the change.
+
+2011-11-04 Bruno Haible <bruno@clisp.org>
+
+ closedir: Avoid warning on mingw.
+ * lib/closedir.c: Include <unistd.h>.
+
+2011-11-04 Bruno Haible <bruno@clisp.org>
+
+ New module 'fstatat', split off from module 'openat'.
+ * lib/openat.h (statat, lstatat): Enable only if GNULIB_FSTATAT is
+ defined.
+ * m4/fstatat.m4: New file. extracted from m4/openat.m4.
+ * m4/openat.m4 (gl_FUNC_OPENAT): Don't set GNULIB_FSTATAT. Don't invoke
+ gl_FUNC_FSTATAT.
+ (gl_FUNC_FSTATAT): Moved to m4/fstatat.m4.
+ * modules/fstatat: New file, extracted from modules/openat.
+ * modules/openat (Files): Remove lib/fstatat.c.
+ (Depends-on): Remove lstat.
+ (configure.ac): Remove AC_LIBOBJ of fstatat.
+ * modules/fstatat-tests: New file, extracted from modules/openat-tests.
+ * modules/openat-tests (Files): Remove tests/test-fstatat.c,
+ tests/test-lstat.h, tests/test-stat.h.
+ (Depends-on): Remove getcwd-lgpl.
+ (Makefile.am): Remove rules for test-fstatat.
+ * doc/posix-functions/fstatat.texi: Mention module 'fstatat' instead
+ of module 'openat'.
+ * NEWS: Mention the change.
+ * modules/getcwd (Depends-on): Add fstatat.
+ * modules/linkat (Depends-on): Likewise.
+ * modules/mkfifoat-tests (Depends-on): Likewise.
+ * modules/utimensat (Depends-on): Add fstatat. Remove openat.
+
+2011-11-03 Bruno Haible <bruno@clisp.org>
+
+ New module 'unlinkat', split off from module 'openat'.
+ * m4/unlinkat.m4: New file, extracted from m4/openat.m4.
+ * m4/openat.m4 (gl_FUNC_OPENAT): Don't set GNULIB_UNLINKAT,
+ REPLACE_UNLINKAT, HAVE_UNLINKAT. Don't test for unlinkat.
+ * modules/unlinkat: New file, extracted from modules/openat. Correct
+ the dependency conditions.
+ * modules/openat (Files): Remove lib/unlinkat.c.
+ (Depends-on): Remove rmdir, unlink.
+ (configure.ac): Remove AC_LIBOBJ of unlinkat.
+ * modules/unlinkat-tests: New file, extracted from modules/openat-tests.
+ * modules/openat-tests (Files): Remove tests/test-unlinkat.c,
+ tests/test-rmdir.h, tests/test-unlink.h.
+ (Depends-on): Remove unlinkdir.
+ (Makefile.am): Remove rules for test-unlinkat.
+ * doc/posix-functions/unlinkat.texi: Mention module 'unlinkat' instead
+ of module 'openat'.
+ * NEWS: Mention the change.
+ * modules/linkat-tests (Depends-on): Add unlinkat.
+ * modules/mkfifoat-tests (Depends-on): Likewise.
+ * modules/readlinkat-tests (Depends-on): Likewise.
+
+2011-11-02 Bruno Haible <bruno@clisp.org>
+
+ New module 'fchmodat', split off from module 'openat'.
+ * lib/openat.h (chmodat, lchmodat): Enable only if GNULIB_FCHMODAT is
+ defined.
+ * m4/fchmodat.m4: New file, extracted from m4/openat.m4.
+ * m4/openat.m4 (gl_FUNC_OPENAT): Don't set GNULIB_FCHMODAT. Don't test
+ for fchmodat, lchmod. Don't set HAVE_FCHMODAT.
+ * modules/fchmodat: New file, extracted from modules/openat.
+ * modules/openat (Files): Remove lib/fchmodat.c.
+ (configure.ac): Remove AC_LIBOBJ of fchmodat.
+ * modules/fchmodat-tests: New file, extracted from modules/openat-tests.
+ * modules/openat-tests (Files): Remove tests/test-fchmodat.c.
+ (Makefile.am): Remove rules for test-fchmodat.
+ * doc/posix-functions/fchmodat.texi: Mention module 'fchmodat' instead
+ of module 'openat'.
+ * NEWS: Mention the change.
+
+2011-11-02 Jim Meyering <meyering@redhat.com>
+
+ putenv: indent #definition of "environ" to placate cppi
+ * lib/putenv.c (environ): Make indentation reflect cpp nesting.
+
+ gitlog-to-changelog: provide a ChangeLog-repair mechanism
+ Git logs are often treated as immutable, because editing them
+ changes the SHA1 checksums of all descendants. Thus, errors in
+ git logs tend to stay there forever. However, when we generate
+ a ChangeLog file -- typically for distribution -- from that git log,
+ we can actually make corrections in the generated file. The key
+ lies in recording in machine-readable/applicable form the desired
+ corrections. See --help for description and an example.
+ * build-aux/gitlog-to-changelog (parse_amend_file): New function.
+ (usage): Describe it; alphabetize option descriptions.
+ (main): Honor the new option, carefully.
+
+2011-11-01 Jim Meyering <meyering@redhat.com>
+
+ gitlog-to-changelog: avoid an infloop
+ * build-aux/gitlog-to-changelog: Don't infloop for a commit log
+ that ends up being empty.
+
+2011-11-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * MODULES.html.sh: Fix sed-script shell quoting and locale issues.
+ (func_module): Replace foo=` ... sed -e COMPLICATED ... ` with
+ bar=COMPLICATED; foo=` ... sed -e "$bar" ... ` when COMPLICATED
+ contains (possibly-quoted) backslashes. This should avoid
+ all-too-common shell bugs if COMPLICATED contains backslashes in
+ the "wrong" places. Reported by David Evans in
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-11/msg00013.html>.
+ When 'sed' uses character ranges like A-Z, invoke it in the C locale,
+ because we want ASCII ranges. Is there some reason we don't use
+ the C locale everywhere in this script?
+ (func_module, top level): Avoid unwanted pathname expansion when
+ $repo_url_prefix or $repo_url_suffix_repl contain shell
+ metacharacters like '?' and '*'.
+
+2011-11-01 Bruno Haible <bruno@clisp.org>
+
+ fchownat: Improve description.
+ * modules/fchownat (Description): Add link to function.
+
+2011-11-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/test-stdalign.c (TEST_ALIGNMENT): Shrink back to 8.
+ mingw supports alignments only up to 8 (!). Reported by Bruno Haible in
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-11/msg00006.html>.
+ * doc/posix-headers/stdalign.texi (stdalign.h): Document this.
+
+2011-11-01 Bruno Haible <bruno@clisp.org>
+
+ alignof: Avoid collision with stdalign module.
+ * lib/alignof.h (alignof): Remove macro.
+ * NEWS: Mention the change.
+ Reported by Paul Eggert.
+
+2011-11-01 Bruno Haible <bruno@clisp.org>
+
+ New module 'fchownat', split off from module 'openat'.
+ * lib/openat.h (chownat, lchownat): Enable only if GNULIB_FCHOWNAT is
+ defined.
+ * m4/fchownat.m4: New file, extracted from m4/openat.m4.
+ * m4/openat.m4 (gl_FUNC_OPENAT): Don't set GNULIB_FCHOWNAT. Don't
+ invoke gl_FUNC_FCHOWNAT.
+ (gl_FUNC_FCHOWNAT_DEREF_BUG, gl_FUNC_FCHOWNAT_EMPTY_FILENAME_BUG,
+ gl_FUNC_FCHOWNAT): Moved to m4/fchownat.m4.
+ * modules/fchownat: New file, extracted from modules/openat.
+ * modules/openat (Files): Remove lib/fchownat.c.
+ (Depends-on): Remove lchown.
+ (configure.ac): Remove AC_LIBOBJ of fchownat.
+ * modules/fchownat-tests: New file, extracted from modules/openat-tests.
+ * modules/openat-tests (Files): Remove tests/test-fchownat.c,
+ tests/test-chown.h, tests/test-lchown.h, tests/nap.h.
+ (Depends-on): Remove mgetgroups, usleep, stat-time.
+ (configure.ac): Remove test for getegid.
+ (Makefile.am): Remove rules for test-fchownat.
+ * doc/posix-functions/fchownat.texi: Mention module 'fchownat' instead
+ of module 'openat'.
+ * NEWS: Mention the change.
+
+2011-10-31 Paul Eggert <eggert@cs.ucla.edu>
+
+ stdalign: port better to MSVC and to Sun C 5.11
+ This fixes some of the problems reported by Bruno Haible in
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-10/msg00300.html>.
+ * 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.
+
+2011-10-31 Bruno Haible <bruno@clisp.org>
+
+ doc about some IRIX 5.3 problems.
+ * doc/posix-functions/getpwnam_r.texi: Mention incompatible declaration
+ on IRIX 5.3.
+ * doc/posix-headers/poll.texi: Mention missing nfds_t on IRIX 5.3.
+ * doc/posix-functions/ptsname.texi: Mention missing declaration on IRIX
+ 5.3.
+ * doc/posix-functions/grantpt.texi: Likewise.
+ * doc/posix-functions/unlockpt.texi: Likewise.
+ * doc/posix-functions/lgamma.texi: Likewise.
+ * doc/posix-functions/nextafter.texi: Likewise.
+ * doc/posix-functions/remainder.texi: Likewise.
+ * doc/posix-functions/select.texi: Mention misplaced declaration on
+ IRIX 5.3.
+ Reported by Tom G. Christensen <tgc@jupiterrise.com>.
+
+2011-10-31 Dmitry V. Levin <ldv@altlinux.org>
+
+ gitlog-to-changelog: fix git-log invocation.
+ git-log mishandles date strings before 1970-01-01 UTC, and there is
+ no use to specify --since=1970-01-01 by default anyway.
+ * build-aux/gitlog-to-changelog: By default, when no --since option
+ was given, do not specify explicit --since option to git-log.
+
+2011-10-30 Dmitry V. Levin <ldv@altlinux.org>
+
+ gitlog-to-changelog: new option --append-dot.
+ * build-aux/gitlog-to-changelog: New option --append-dot, makes the
+ first non-blank line of each commit message terminated with a dot.
+
+2011-10-30 Bruno Haible <bruno@clisp.org>
+
+ ffsl, ffsll: Avoid compilation error due to 'restrict'.
+ * lib/ffsl.h: Include <config.h>.
+ Suggested by Tom G. Christensen <tgc@jupiterrise.com>.
+
+2011-10-30 Jim Meyering <meyering@redhat.com>
+
+ GNUmakefile: reenable "make syntax-check" for most projects
+ Since Friday's commit 05e2d798, "maint.mk: don't maintain a second
+ build-aux variable", "syntax-check" would do nothing but succeed with
+ the "No version control files detected..." diagnostic (unless you
+ happened to override _build-aux via cfg.mk).
+ * top/GNUmakefile (_autoreconf, _build-aux): Move default definitions
+ to precede inclusion of maint.mk. Otherwise, these variables would
+ be used undefined in any project that does not override the default.
+
+2011-10-29 Dmitry V. Levin <ldv@altlinux.org>
+
+ gitlog-to-changelog: treat a message with only blank lines as empty.
+ * build-aux/gitlog-to-changelog: Move the code that removes leading and
+ trailing blank lines before the code that issues a warning about an
+ empty commit message.
+
+2011-10-30 Jim Meyering <meyering@redhat.com>
+
+ test-parse-datetime.c: avoid new DST-related false positive test failure
+ * tests/test-parse-datetime.c (gmt_offset): Determine the "gmt_offset"
+ based on the time/date we'll convert, not the current time.
+ Otherwise, the moment we cross a DST boundary like today's in
+ Europe, (CEST to CET), that offset ends up being one hour off.
+
+2011-10-27 Bruno Haible <bruno@clisp.org>
+
+ fstat: Tweak documentation.
+ * modules/fstat (Description): More precise description.
+
+2011-10-27 Bruno Haible <bruno@clisp.org>
+
+ Update documentation regarding 'largefile' module.
+ * doc/posix-functions/fstat.texi: Tweak wording.
+ * doc/posix-functions/opendir.texi: Mention that the module fixes the
+ problems with huge directories and/or small ino_t types.
+ * doc/posix-functions/readdir.texi: Likewise.
+ * doc/posix-functions/rewinddir.texi: Likewise.
+
+2011-10-28 Gary V. Vaughan <gary@gnu.org>
+
+ maint.mk: don't maintain a second build-aux variable.
+ * maint.mk (build_aux): Removed. The maintainer-makefile module
+ depends on GNUmakefile, which already maintains a cfg.mk
+ overridable $(_build-aux) for projects with a non-standard
+ build-aux directory location, although without the $(srcdir)
+ prefix. Use that variable consistently instead of introducing a
+ second one. Adjust all call sites.
+
+2011-10-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ Add stdalign module and use it in other modules.
+ This is based on a previous proposal by Bruno Haible
+ <https://lists.gnu.org/archive/html/bug-gnulib/2011-07/msg00226.html>.
+
+ stdalign: new module
+ * doc/posix-headers/stdalign.texi, lib/stdalign.in.h, m4/stdalign.m4:
+ * modules/stdalign: New files.
+ * MODULES.html.sh (c1x_core_properties): Add stdalign.
+ * doc/gnulib.texi (Header File Substitutes): Add stdalign.
+
+ stdalign-tests: new module
+ * modules/stdalign-tests, tests/test-stdalign.c: New files.
+
+ argp: use stdalign
+ * lib/argp-parse.c: Include <stdalign.h>.
+ (alignof): Remove.
+ * modules/argp (Depends-on): Add stdalign.
+
+ crypto libraries: use stdalign
+ * lib/md4.c, lib/md5.c, lib/sha1.c, lib/sha256.c, lib/sha512.c:
+ Include <stdalign.h> and <stdint.h>. Do not include <stddef.h>.
+ Do not include <stdlib.h> twice, in md4.c.
+ (UNALIGNED_P): Simplify by using alignof. Use uintptr_t, not size_t,
+ because we are accessing a pointer's bit-pattern, not a size.
+ * modules/crypto/gc-md4 (Depends-on): Add stdalign.
+ * modules/crypto/gc-md5, modules/crypto/gc-sha1, modules/crypto/md4:
+ * modules/crypto/md5, modules/crypto/sha1, modules/crypto/sha256:
+ * modules/crypto/sha512: Likewise.
+
+ sys_socket: use stdalign, not alignof
+ * lib/sys_socket.in.h: Include <stdalign.h> instead of <alignof.h>.
+ * modules/sys_socket (Depends-on): Depend on stdalign, not alignof.
+
+2011-10-27 Bruno Haible <bruno@clisp.org>
+
+ raise test: Avoid a test failure on Linux/MIPS.
+ * tests/test-raise.c (main): Try raising signal 199, not 99. Needed
+ because 99 is a valid signal on Linux/MIPS.
+
+2011-10-27 Bruno Haible <bruno@clisp.org>
+
+ nonblocking tests: Fix test failure on Linux/MIPS.
+ * tests/test-nonblocking-pipe.h (PIPE_DATA_BLOCK_SIZE) [Linux/MIPS]:
+ Set to 270000.
+
+2011-10-27 Bruno Haible <bruno@clisp.org>
+
+ 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.
+
+2011-10-25 Jim Meyering <meyering@redhat.com>
+
+ maint.mk: fix a bug in sc_prohibit_stddef_without_use
+ * top/maint.mk (sc_prohibit_stddef_without_use): Don't require / *\(/
+ after symbols like NULL, size_t, etc.
+ Reported by Alfred M. Szmidt.
+
+ 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
+
+2011-10-23 Jim Meyering <meyering@redhat.com>
+
+ 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
+
+2011-10-23 Gary V. Vaughan <gary@gnu.org>
+ Bruno Haible <bruno@clisp.org>
+ Jim Meyering <jim@meyering.net>
+
+ 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!
+
+2011-10-22 Bruno Haible <bruno@clisp.org>
+
+ errno, strerror-override: Support for MSVC 10.
+ * lib/errno.in.h (GNULIB_defined_ETXTBSY): Remove macro.
+ (ENOMSG, EIDRM, ENOLINK, EPROTO, EBADMSG, EOVERFLOW, ENOTSUP,
+ ENETRESET, ECONNABORTED, ECANCELED, EINPROGRESS, EALREADY, ENOTSOCK,
+ EDESTADDRREQ, EMSGSIZE, EPROTOTYPE, ENOPROTOOPT, EPROTONOSUPPORT,
+ EOPNOTSUPP, EAFNOSUPPORT, EADDRINUSE, EADDRNOTAVAIL, ENETDOWN,
+ ENETUNREACH, ECONNRESET, ENOBUFS, EISCONN, ENOTCONN, ETIMEDOUT,
+ ECONNREFUSED, ELOOP, EHOSTUNREACH, EWOULDBLOCK, ETXTBSY) [Win32]:
+ Assign values compatible with MSVC 10.
+ (ENODATA, ENOSR, ENOSTR, ENOTRECOVERABLE, EOWNERDEAD, ETIME, EOTHER):
+ New macros.
+ (GNULIB_defined_EWINSOCK): New macro.
+ * lib/strerror-override.c (strerror_override): Update accordingly.
+ * lib/strerror-override.h: Likewise.
+ * lib/w32sock.h (set_winsock_errno): Map those WSA* values that are no
+ longer equal to the corresponding errno value.
+ Reported by Michael Goffioul <michael.goffioul@gmail.com>.
+
+2011-10-22 Bruno Haible <bruno@clisp.org>
+
+ 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>.
+
+ perror: Fix indentation.
+ * m4/perror.m4 (gl_FUNC_PERROR): Fix indentation.
+
+2011-10-22 Bruno Haible <bruno@clisp.org>
+
+ 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>.
+
+2011-10-21 Bruno Haible <bruno@clisp.org>
+
+ relocatable-prog-wrapper: Don't leave object files behind.
+ * build-aux/install-reloc: Re-synchronize list of .o files to be
+ removed with list of compilation units.
+
+2011-10-20 Bruno Haible <bruno@clisp.org>
+
+ 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.
+
+2011-10-20 Bruno Haible <bruno@clisp.org>
+
+ unlockpt: Detect invalid argument.
+ * lib/unlockpt.c: Include <fcntl.h>.
+ (unlockpt): Check whether fd is valid, using fcntl().
+ * modules/unlockpt (Depends-on): Add fcntl-h.
+
+2011-10-20 Bruno Haible <bruno@clisp.org>
+
+ openpty: Avoid compilation error on AIX 6.1.
+ * lib/pty.in.h [AIX]: Include <sys/ioctl.h>, for 'struct winsize'.
+
+2011-10-20 Bruno Haible <bruno@clisp.org>
+
+ 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.
+
+2011-10-20 Bruno Haible <bruno@clisp.org>
+
+ posix_openpt test: Coding style.
+ * tests/test-posix_openpt.c: Use GNU coding style.
+
+2011-10-20 Bruno Haible <bruno@clisp.org>
+
+ grantpt: Support --avoid=pt_chown.
+ * modules/grantpt (Files): Add lib/pty-private.h.
+
+2011-10-20 Bruno Haible <bruno@clisp.org>
+
+ posix_openpt: Fix autoconf macro.
+ * m4/posix_openpt.m4 (gl_FUNC_POSIX_OPENPT): Fix variable name. Remove
+ unneeded check for _getpty.
+
+2011-10-20 Bruno Haible <bruno@clisp.org>
+
+ openpty: Update comments.
+ * lib/openpty.c: Add comments about Minix.
+
+2011-10-19 Eric Blake <eblake@redhat.com>
+
+ openpty: relax license
+ * modules/openpty (License): Change from LGPLv3+ to LGPLv2+.
+
+ pt_chown: use configmake to simplify build
+ * modules/pt_chown (Makefile.am): Drop line guaranteed by configmake.
+
+ ptsname and others: relax license
+ * modules/grantpt (License): Change from LGPLv3+ to LGPLv2+.
+ * modules/unlockpt (License): Likewise.
+ * modules/pt_chown (License): Likewise.
+ * modules/ptsname (License): Likewise.
+ * modules/ttyname_r (License): Likewise.
+
+2011-10-19 Jim Meyering <meyering@redhat.com>
+
+ posix_openpt: remove spurious #endif
+ * lib/posix_openpt.c (posix_openpt): Remove spurious #endif.
+
+2011-10-19 Gary V. Vaughan <gary@gnu.org>
+
+ maint.mk: Respect $(build_aux) in web-manual rule.
+ * top/maint.mk (web-manual): Find gen-announce script in user's
+ $(build_aux) directory instead of hard-coding 'build-aux'.
+
+2011-10-19 Bruno Haible <bruno@clisp.org>
+
+ 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.
+
+2011-10-19 Bruno Haible <bruno@clisp.org>
+
+ 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>.
+
+2011-10-19 Bruno Haible <bruno@clisp.org>
+
+ 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>.
+
+2011-10-18 Daniel Richard G. <skunk@iskunk.org> (tiny change)
+
+ Support for old NeXTstep 3.3 gcc.
+ * lib/gettext.h (_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS): Write
+ 'defined __STRICT_ANSI__', not '__STRICT_ANSI__'.
+ * lib/math.in.h (_GL_NUM_UINT_WORDS etc.): Likewise.
+ * lib/spawn.in.h (_Restrict_arr_): Likewise.
+ * lib/regex.h (_Restrict_arr_): Likewise.
+ * lib/regex_internal.h (re_token_t): Likewise.
+ * lib/regexec.c (check_node_accept_bytes): Likewise.
+ * tests/test-printf-posix.c (func1, func2, func3, func4): Likewise.
+
+2011-10-18 Eric Blake <eblake@redhat.com>
+
+ posix_openpt: new module
+ * modules/posix_openpt: New module.
+ * m4/posix_openpt.m4: New file.
+ * lib/posix_openpt.c: Likewise.
+ * m4/stdlib_h.m4 (gl_STDLIB_H): Check for decl.
+ (gl_STDLIB_H_DEFAULTS): Set defaults.
+ * modules/stdlib (Makefile.am): Substitute macros.
+ * lib/stdlib.in.h (posix_openpt): Declare.
+ * MODULES.html.sh (systems lacking POSIX:2008): Document it.
+ * doc/posix-functions/posix_openpt.texi (posix_openpt): Likewise.
+ * modules/posix_openpt-tests: New test module.
+ * tests/test-posix_openpt.c: New test.
+
+2011-10-15 Bruno Haible <bruno@clisp.org>
+
+ 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>.
+
+2011-10-15 Bruno Haible <bruno@clisp.org>
+
+ vasnprintf: Optimize bit search operation.
+ * lib/vasnprintf.c (divide): Use optimizations from integer_length.c.
+ * m4/vasnprintf.m4 (gl_PREREQ_VASNPRINTF): Require
+ gl_DOUBLE_EXPONENT_LOCATION.
+ * modules/vasnprintf (Files): Add m4/exponentd.m4.
+ * modules/unistdio/u8-vasnprintf (Files): Likewise.
+ * modules/unistdio/u8-u8-vasnprintf (Files): Likewise.
+ * modules/unistdio/u16-vasnprintf (Files): Likewise.
+ * modules/unistdio/u16-u16-vasnprintf (Files): Likewise.
+ * modules/unistdio/u32-vasnprintf (Files): Likewise.
+ * modules/unistdio/u32-u32-vasnprintf (Files): Likewise.
+ * modules/unistdio/ulc-vasnprintf (Files): Likewise.
+ * m4/isnand.m4 (gl_PREREQ_ISNAND): Use AC_REQUIRE.
+
+2011-10-15 Bruno Haible <bruno@clisp.org>
+
+ vasnprintf: Fix comments.
+ * lib/vasnprintf.c (decode_long_double, decode_double): Fix comments.
+
+2011-10-14 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'integer_length_ll'.
+ * modules/integer_length_ll-tests: New file.
+ * tests/test-integer_length_ll.c: New file.
+
+ New module 'integer_length_ll'.
+ * lib/integer_length_ll.c: New file.
+ * modules/integer_length_ll: New file.
+
+2011-10-14 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'integer_length_l'.
+ * modules/integer_length_l-tests: New file.
+ * tests/test-integer_length_l.c: New file.
+
+ New module 'integer_length_l'.
+ * lib/integer_length_l.c: New file.
+ * modules/integer_length_l: New file.
+
+2011-10-14 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'integer_length'.
+ * modules/integer_length-tests: New file.
+ * tests/test-integer_length.c: New file.
+
+ New module 'integer_length'.
+ * lib/integer_length.h: New file.
+ * lib/integer_length.c: New file.
+ * modules/integer_length: New file.
+
+2011-10-14 Daniel Richard G. <skunk@iskunk.org> (tiny change)
+
+ popen: Fix dependency conditions.
+ * modules/popen (Depends-on, configure.ac): Fix shell syntax error.
+
+2011-10-14 Daniel Richard G. <skunk@iskunk.org> (tiny change)
+
+ perror: Fix autoconf test.
+ * m4/perror.m4 (gl_FUNC_PERROR): In the test program, include
+ <stdlib.h> and <string.h>.
+
+2011-10-14 Bruno Haible <bruno@clisp.org>
+
+ ffsl: Optimize on 64-bit platforms.
+ * lib/ffsl.h (FUNC): Omit a test from the last loop round. Do loop
+ unrolling.
+
+2011-10-13 Bruno Haible <bruno@clisp.org>
+
+ ffsl: Optimize on 32-bit platforms.
+ * lib/ffsl.h (FUNC): If TYPE has the same representation as 'int', just
+ use ffs() without a loop.
+
+ ffsl, ffsll: Optimize for GCC.
+ * lib/ffsl.h (FUNC): Use GCC_BUILTIN if defined.
+ * lib/ffsl.c (GCC_BUILTIN): New macro.
+ * lib/ffsll.c (GCC_BUILTIN): Likewise.
+
+2011-10-13 Bruno Haible <bruno@clisp.org>
+
+ ffs, bcopy, memset: Support symbol renaming via config.h.
+ * lib/ffs.c: Include <config.h>.
+ * lib/bcopy.c: Likewise.
+ * lib/memset.c: Likewise.
+
+2011-10-10 Bruno Haible <bruno@clisp.org>
+
+ atanl: Simplify for platforms where 'long double' == 'double'.
+ * lib/atanl.c (atanl) [HAVE_SAME_LONG_DOUBLE_AS_DOUBLE]: New
+ alternative implementation.
+ * m4/atanl.m4 (gl_FUNC_ATANL): Require gl_LONG_DOUBLE_VS_DOUBLE.
+ Determine ATANL_LIBM according to HAVE_SAME_LONG_DOUBLE_AS_DOUBLE.
+ * modules/atanl (Depends-on): Add atan. Update conditions.
+
+2011-10-10 Bruno Haible <bruno@clisp.org>
+
+ acosl: Simplify for platforms where 'long double' == 'double'.
+ * lib/acosl.c (acosl) [HAVE_SAME_LONG_DOUBLE_AS_DOUBLE]: New
+ alternative implementation.
+ * m4/acosl.m4 (gl_FUNC_ACOSL): Require gl_LONG_DOUBLE_VS_DOUBLE.
+ Determine ACOSL_LIBM according to HAVE_SAME_LONG_DOUBLE_AS_DOUBLE.
+ * modules/acosl (Depends-on): Add acos. Update conditions.
+
+2011-10-10 Bruno Haible <bruno@clisp.org>
+
+ asinl: Simplify for platforms where 'long double' == 'double'.
+ * lib/asinl.c (asinl) [HAVE_SAME_LONG_DOUBLE_AS_DOUBLE]: New
+ alternative implementation.
+ * m4/asinl.m4 (gl_FUNC_ASINL): Require gl_LONG_DOUBLE_VS_DOUBLE.
+ Determine ASINL_LIBM according to HAVE_SAME_LONG_DOUBLE_AS_DOUBLE.
+ * modules/asinl (Depends-on): Add asin. Update conditions.
+
+2011-10-10 Bruno Haible <bruno@clisp.org>
+
+ tanl: Simplify for platforms where 'long double' == 'double'.
+ * lib/tanl.c (tanl) [HAVE_SAME_LONG_DOUBLE_AS_DOUBLE]: New alternative
+ implementation.
+ * m4/tanl.m4 (gl_FUNC_TANL): Require gl_LONG_DOUBLE_VS_DOUBLE.
+ Determine TANL_LIBM according to HAVE_SAME_LONG_DOUBLE_AS_DOUBLE.
+ * modules/tanl (Depends-on): Add tan. Update conditions.
+ (configure.ac): Don't compile trigl.c if
+ HAVE_SAME_LONG_DOUBLE_AS_DOUBLE.
+
+2011-10-10 Bruno Haible <bruno@clisp.org>
+
+ cosl: Simplify for platforms where 'long double' == 'double'.
+ * lib/cosl.c (cosl) [HAVE_SAME_LONG_DOUBLE_AS_DOUBLE]: New alternative
+ implementation.
+ * m4/cosl.m4 (gl_FUNC_COSL): Require gl_LONG_DOUBLE_VS_DOUBLE.
+ Determine COSL_LIBM according to HAVE_SAME_LONG_DOUBLE_AS_DOUBLE.
+ * modules/cosl (Depends-on): Add cos. Update conditions.
+ (configure.ac): Don't compile sincosl.c and trigl.c if
+ HAVE_SAME_LONG_DOUBLE_AS_DOUBLE.
+
+2011-10-10 Bruno Haible <bruno@clisp.org>
+
+ 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.
+
+2011-10-10 Bruno Haible <bruno@clisp.org>
+
+ logl: Simplify for platforms where 'long double' == 'double'.
+ * lib/logl.c (logl) [HAVE_SAME_LONG_DOUBLE_AS_DOUBLE]: New alternative
+ implementation.
+ * m4/logl.m4 (gl_FUNC_LOGL): Require gl_LONG_DOUBLE_VS_DOUBLE.
+ Determine LOGL_LIBM according to HAVE_SAME_LONG_DOUBLE_AS_DOUBLE.
+ * modules/logl (Depends-on): Add log. Update conditions.
+
+2011-10-10 Bruno Haible <bruno@clisp.org>
+
+ expl: Simplify for platforms where 'long double' == 'double'.
+ * lib/expl.c (expl) [HAVE_SAME_LONG_DOUBLE_AS_DOUBLE]: New alternative
+ implementation.
+ * m4/expl.m4 (gl_FUNC_EXPL): Require gl_LONG_DOUBLE_VS_DOUBLE.
+ Determine EXPL_LIBM according to HAVE_SAME_LONG_DOUBLE_AS_DOUBLE.
+ * modules/expl (Depends-on): Add exp. Update conditions.
+
+2011-10-10 Bruno Haible <bruno@clisp.org>
+
+ sqrtl: Simplify for platforms where 'long double' == 'double'.
+ * lib/sqrtl.c (sqrtl) [HAVE_SAME_LONG_DOUBLE_AS_DOUBLE]: New
+ alternative implementation.
+ * m4/sqrtl.m4 (gl_FUNC_SQRTL): Require gl_LONG_DOUBLE_VS_DOUBLE.
+ Determine SQRTL_LIBM according to HAVE_SAME_LONG_DOUBLE_AS_DOUBLE.
+ * modules/sqrtl (Depends-on): Update conditions.
+
+2011-10-10 Bruno Haible <bruno@clisp.org>
+
+ ldexpl: Simplify for platforms where 'long double' == 'double'.
+ * lib/ldexpl.c (ldexpl) [HAVE_SAME_LONG_DOUBLE_AS_DOUBLE]: New
+ alternative implementation.
+ * m4/ldexpl.m4 (gl_FUNC_LDEXPL): Require gl_LONG_DOUBLE_VS_DOUBLE.
+ Determine LDEXPL_LIBM according to HAVE_SAME_LONG_DOUBLE_AS_DOUBLE.
+ * modules/ldexpl (Depends-on): Add ldexp. Update conditions.
+
+2011-10-10 Tom G. Christensen <tgc@jupiterrise.com> (tiny change)
+
+ ffsll: set correct witness
+ * modules/ffsll (configure.ac): Fix typo.
+
+2011-10-10 Bruno Haible <bruno@clisp.org>
+
+ printf-frexpl: Simplify for platforms where 'long double' == 'double'.
+ * lib/printf-frexpl.c: Include <config.h>.
+ (printf_frexpl) [HAVE_SAME_LONG_DOUBLE_AS_DOUBLE]: New function.
+ * lib/printf-frexp.c [!USE_LONG_DOUBLE]: Don't include <config.h> a
+ second time.
+ * m4/printf-frexpl.m4 (gl_FUNC_PRINTF_FREXPL): Require
+ gl_LONG_DOUBLE_VS_DOUBLE.
+ * modules/printf-frexpl (Depends-on): Add printf-frexp. Update
+ conditions.
+
+2011-10-10 Bruno Haible <bruno@clisp.org>
+
+ frexpl: Simplify for platforms where 'long double' == 'double'.
+ * lib/frexpl.c: Include <config.h>.
+ (frexpl) [HAVE_SAME_LONG_DOUBLE_AS_DOUBLE]: New function.
+ * lib/frexp.c [!USE_LONG_DOUBLE]: Don't include <config.h> a second
+ time.
+ * m4/frexpl.m4 (gl_FUNC_FREXPL): Require gl_LONG_DOUBLE_VS_DOUBLE.
+ Determine FREXPL_LIBM according to HAVE_SAME_LONG_DOUBLE_AS_DOUBLE.
+ (gl_FUNC_FREXPL_NO_LIBM): Require gl_LONG_DOUBLE_VS_DOUBLE.
+ * modules/frexpl (Depends-on): Add frexp. Update conditions.
+ * modules/frexpl-nolibm (Depends-on): Add frexp-nolibm. Update
+ conditions.
+
+2011-10-10 Jim Meyering <meyering@redhat.com>
+
+ 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.
+
+2011-10-09 Bruno Haible <bruno@clisp.org>
+
+ 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.
+
+ mathfunc.m4: Refactor.
+ * m4/mathfunc.m4 (gl_MATHFUNC): Assign the argument list to a temporary
+ m4 variable.
+
+2011-10-09 Bruno Haible <bruno@clisp.org>
+
+ 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.
+
+2011-10-09 Bruno Haible <bruno@clisp.org>
+
+ 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.
+
+2011-10-09 Bruno Haible <bruno@clisp.org>
+
+ 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.
+
+2011-10-09 Bruno Haible <bruno@clisp.org>
+
+ 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.
+
+2011-10-09 Bruno Haible <bruno@clisp.org>
+
+ 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.
+
+2011-10-09 Bruno Haible <bruno@clisp.org>
+
+ rint: Fix ordering constraints.
+ * m4/rint.m4 (gl_FUNC_RINT): Require gl_MATH_H_DEFAULTS.
+ * m4/rintf.m4 (gl_FUNC_RINTF): Likewise.
+ * m4/rintl.m4 (gl_FUNC_RINTL): Likewise.
+
+2011-10-09 Bruno Haible <bruno@clisp.org>
+
+ copysignl: Simplify for platforms where 'long double' == 'double'.
+ * lib/copysignl.c (copysignl) [HAVE_SAME_LONG_DOUBLE_AS_DOUBLE]: New
+ alternative.
+ * m4/copysignl.m4 (gl_FUNC_COPYSIGNL): Require gl_LONG_DOUBLE_VS_DOUBLE.
+ Determine COPYSIGNL_LIBM according to HAVE_SAME_LONG_DOUBLE_AS_DOUBLE.
+ * modules/copysignl (Depends-on): Add copysign. Update conditions.
+
+2011-10-09 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'rintl'.
+ * modules/rintl-tests: New file.
+ * tests/test-rintl.c: New file.
+
+ 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.
+
+2011-10-09 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'rintf'.
+ * modules/rintf-tests: New file.
+ * tests/test-rintf.c: New file.
+
+ 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.
+
+2011-10-09 Bruno Haible <bruno@clisp.org>
+
+ 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.
+
+ 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.
+
+2011-10-09 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'copysignl'.
+ * modules/copysignl-tests: New file.
+ * tests/test-copysignl.c: New file.
+
+ 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.
+
+2011-10-09 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'copysignf'.
+ * modules/copysignf-tests: New file.
+ * tests/test-copysignf.c: New file.
+
+ 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.
+
+2011-10-09 Bruno Haible <bruno@clisp.org>
+
+ Ensure that HAVE_* variables are set to 1 before they are set to 0.
+ * m4/fdopendir.m4 (gl_FUNC_FDOPENDIR): Require gl_DIRENT_H_DEFAULTS.
+ * m4/inet_ntop.m4 (gl_FUNC_INET_NTOP): Require gl_ARPA_INET_H_DEFAULTS.
+ * m4/inet_pton.m4 (gl_FUNC_INET_PTON): Likewise.
+ * m4/pthread_sigmask.m4 (gl_FUNC_PTHREAD_SIGMASK): Require
+ gl_SIGNAL_H_DEFAULTS.
+
+2011-10-09 Bruno Haible <bruno@clisp.org>
+
+ poll: Make macro safer.
+ * m4/poll.m4 (gl_FUNC_POLL): Complain if, after invoking gl_POLL_H,
+ ac_cv_header_poll_h is not set.
+
+2011-10-09 Bruno Haible <bruno@clisp.org>
+
+ copysign: Provide replacement.
+ * lib/math.in.h (copysign): New declaration.
+ * lib/copysign.c: New file.
+ * m4/copysign.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whether copysign is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_COPYSIGN, HAVE_COPYSIGN.
+ * modules/math (Makefile.am): Substitute GNULIB_COPYSIGN,
+ HAVE_COPYSIGN.
+ * modules/copysign (Description): Clarify.
+ (Files): Add lib/copysign.c, m4/copysign.m4.
+ (Depends-on): Add math, signbit.
+ (configure.ac): Invoke gl_FUNC_COPYSIGN, AC_LIBOBJ,
+ gl_MATH_MODULE_INDICATOR.
+ * tests/test-math-c++.cc: Check the declaration of copysign.
+ * doc/posix-functions/copysign.texi: Mention the effects of the module
+ on Minix and MSVC.
+
+2011-10-09 Bruno Haible <bruno@clisp.org>
+
+ isinf: Ensure macro on AIX 5.1.
+ * m4/isinf.m4 (gl_ISINF): Also test whether isinf is defined as a
+ macro.
+ * doc/posix-functions/isinf.texi: Mention also AIX 5.1 as deficient.
+
+2011-10-09 Bruno Haible <bruno@clisp.org>
+
+ *printf-posix tests: Fix for platforms where 'long double' == 'double'.
+ * modules/snprintf-posix-tests (configure.ac): Require
+ gl_LONG_DOUBLE_VS_DOUBLE.
+ * modules/sprintf-posix-tests (configure.ac): Likewise.
+ * modules/vasnprintf-posix-tests (configure.ac): Likewise.
+ * modules/vasprintf-posix-tests (configure.ac): Likewise.
+ * modules/vsnprintf-posix-tests (configure.ac): Likewise.
+ * modules/vsprintf-posix-tests (configure.ac): Likewise.
+ * tests/test-snprintf-posix.h (test_function): Avoid 80-bit long double
+ tests on platforms where 'long double' is the same as 'double'.
+ * tests/test-sprintf-posix.h (test_function): Likewise.
+ * tests/test-vasnprintf-posix.c (test_function): Likewise.
+ * tests/test-vasprintf-posix.c (test_function): Likewise.
+
+ *printf: Fix for platforms where 'long double' == 'double'.
+ * m4/printf.m4 (gl_PRINTF_INFINITE_LONG_DOUBLE): Require
+ gl_LONG_DOUBLE_VS_DOUBLE. Don't blindly assume 80-bit 'long double'.
+ * modules/dprintf-posix (Files): Add m4/math_h.m4.
+ * modules/fprintf-posix (Files): Likewise.
+ * modules/obstack-printf-posix (Files): Likewise.
+ * modules/snprintf-posix (Files): Likewise.
+ * modules/sprintf-posix (Files): Likewise.
+ * modules/vasnprintf (Files): Likewise.
+ * modules/vasnprintf-posix (Files): Likewise.
+ * modules/vasprintf-posix (Files): Likewise.
+ * modules/vdprintf-posix (Files): Likewise.
+ * modules/vfprintf-posix (Files): Likewise.
+ * modules/vsnprintf-posix (Files): Likewise.
+ * modules/vsprintf-posix (Files): Likewise.
+ * modules/unistdio/u8-vasnprintf (Files): Likewise.
+ * modules/unistdio/u8-u8-vasnprintf (Files): Likewise.
+ * modules/unistdio/u16-vasnprintf (Files): Likewise.
+ * modules/unistdio/u16-u16-vasnprintf (Files): Likewise.
+ * modules/unistdio/u32-vasnprintf (Files): Likewise.
+ * modules/unistdio/u32-u32-vasnprintf (Files): Likewise.
+ * modules/unistdio/ulc-vasnprintf (Files): Likewise.
+
+ isnanl[-nolibm]: Fix for platforms where 'long double' == 'double'.
+ * lib/isnan.c (rpl_isnanl): Don't blindly assume 80-bit 'long double'.
+ * m4/isnanl.m4 (gl_PREREQ_ISNANL): Require gl_LONG_DOUBLE_VS_DOUBLE.
+ (gl_FUNC_ISNANL_WORKS): Likewise. Don't blindly assume 80-bit
+ 'long double'.
+ * modules/isnanl-nolibm (Files): Add m4/math_h.m4.
+
+ isinf: Fix for platforms where 'long double' == 'double'.
+ * m4/isinf.m4 (gl_ISINFL_WORKS): Require gl_LONG_DOUBLE_VS_DOUBLE.
+ Don't blindly assume 80-bit 'long double'.
+
+ isfinite: Fix for platforms where 'long double' == 'double'.
+ * m4/isfinite.m4 (gl_ISFINITEL_WORKS): Require gl_LONG_DOUBLE_VS_DOUBLE.
+ Don't blindly assume 80-bit 'long double'.
+
+ isfinite, isinf, isnan tests: Avoid syntax error on MSVC 9.
+ * m4/math_h.m4 (gl_LONG_DOUBLE_VS_DOUBLE): New macro.
+ * modules/isfinite-tests (configure.ac): Require
+ gl_LONG_DOUBLE_VS_DOUBLE.
+ * modules/isinf-tests (configure.ac): Likewise.
+ * modules/isnan-tests (configure.ac): Likewise.
+ * modules/isnanl-tests (configure.ac): Likewise.
+ * modules/isnanl-nolibm-tests (configure.ac): Likewise.
+ * tests/test-isfinite.c (test_isfinitel): Avoid 80-bit long double
+ tests on platforms where 'long double' is the same as 'double'.
+ * tests/test-isinf.c (test_isinfl): Likewise.
+ * tests/test-isnan.c (test_long_double): Likewise.
+ * tests/test-isnanl.h (main): Likewise.
+
+2011-10-08 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'tanhf'.
+ * modules/tanhf-tests: New file.
+ * tests/test-tanhf.c: New file.
+
+ 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.
+
+ tanh: Use a .m4 file.
+ * m4/tanh.m4: New file.
+ * modules/tanh (Files): Add it.
+ (configure.ac): Just invoke gl_FUNC_TANH.
+
+2011-10-08 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'coshf'.
+ * modules/coshf-tests: New file.
+ * tests/test-coshf.c: New file.
+
+ New module 'coshf'.
+ * lib/math.in.h (coshf): New declaration.
+ * lib/coshf.c: New file.
+ * m4/coshf.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whether coshf is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_COSHF, HAVE_COSHF.
+ * modules/math (Makefile.am): Substitute GNULIB_COSHF, HAVE_COSHF.
+ * modules/coshf: New file.
+ * tests/test-math-c++.cc: Check the declaration of coshf.
+ * doc/posix-functions/coshf.texi: Mention the new module.
+
+ cosh: Use a .m4 file.
+ * m4/cosh.m4: New file.
+ * modules/cosh (Files): Add it.
+ (configure.ac): Just invoke gl_FUNC_COSH.
+
+2011-10-08 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'sinhf'.
+ * modules/sinhf-tests: New file.
+ * tests/test-sinhf.c: New file.
+
+ New module 'sinhf'.
+ * lib/math.in.h (sinhf): New declaration.
+ * lib/sinhf.c: New file.
+ * m4/sinhf.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whether sinhf is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_SINHF, HAVE_SINHF.
+ * modules/math (Makefile.am): Substitute GNULIB_SINHF, HAVE_SINHF.
+ * modules/sinhf: New file.
+ * tests/test-math-c++.cc: Check the declaration of sinhf.
+ * doc/posix-functions/sinhf.texi: Mention the new module.
+
+ sinh: Use a .m4 file.
+ * m4/sinh.m4: New file.
+ * modules/sinh (Files): Add it.
+ (configure.ac): Just invoke gl_FUNC_SINH.
+
+2011-10-08 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'atan2f'.
+ * modules/atan2f-tests: New file.
+ * tests/test-atan2f.c: New file.
+
+ New module 'atan2f'.
+ * lib/math.in.h (atan2f): New declaration.
+ * lib/atan2f.c: New file.
+ * m4/atan2f.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whether atan2f is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_ATAN2F, HAVE_ATAN2F.
+ * modules/math (Makefile.am): Substitute GNULIB_ATAN2F, HAVE_ATAN2F.
+ * modules/atan2f: New file.
+ * tests/test-math-c++.cc: Check the declaration of atan2f.
+ * doc/posix-functions/atan2f.texi: Mention the new module.
+
+ atan2: Use a .m4 file.
+ * m4/atan2.m4: New file.
+ * modules/atan2 (Files): Add it.
+ (configure.ac): Just invoke gl_FUNC_ATAN2.
+
+2011-10-08 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'atanf'.
+ * modules/atanf-tests: New file.
+ * tests/test-atanf.c: New file.
+
+ New module 'atanf'.
+ * lib/math.in.h (atanf): New declaration.
+ * lib/atanf.c: New file.
+ * m4/atanf.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whether atanf is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_ATANF, HAVE_ATANF.
+ * modules/math (Makefile.am): Substitute GNULIB_ATANF, HAVE_ATANF.
+ * modules/atanf: New file.
+ * tests/test-math-c++.cc: Check the declaration of atanf.
+ * doc/posix-functions/atanf.texi: Mention the new module.
+
+ atan: Use a .m4 file.
+ * m4/atan.m4: New file.
+ * modules/atan (Files): Add it.
+ (configure.ac): Just invoke gl_FUNC_ATAN.
+
+2011-10-08 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'acosf'.
+ * modules/acosf-tests: New file.
+ * tests/test-acosf.c: New file.
+
+ New module 'acosf'.
+ * lib/math.in.h (acosf): New declaration.
+ * lib/acosf.c: New file.
+ * m4/acosf.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whether acosf is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_ACOSF, HAVE_ACOSF.
+ * modules/math (Makefile.am): Substitute GNULIB_ACOSF, HAVE_ACOSF.
+ * modules/acosf: New file.
+ * tests/test-math-c++.cc: Check the declaration of acosf.
+ * doc/posix-functions/acosf.texi: Mention the new module.
+
+ acos: Use a .m4 file.
+ * m4/acos.m4: New file.
+ * modules/acos (Files): Add it.
+ (configure.ac): Just invoke gl_FUNC_ACOS.
+
+2011-10-08 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'asinf'.
+ * modules/asinf-tests: New file.
+ * tests/test-asinf.c: New file.
+
+ New module 'asinf'.
+ * lib/math.in.h (asinf): New declaration.
+ * lib/asinf.c: New file.
+ * m4/asinf.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whether asinf is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_ASINF, HAVE_ASINF.
+ * modules/math (Makefile.am): Substitute GNULIB_ASINF, HAVE_ASINF.
+ * modules/asinf: New file.
+ * tests/test-math-c++.cc: Check the declaration of asinf.
+ * doc/posix-functions/asinf.texi: Mention the new module.
+
+ asin: Use a .m4 file.
+ * m4/asin.m4: New file.
+ * modules/asin (Files): Add it.
+ (configure.ac): Just invoke gl_FUNC_ASIN.
+
+2011-10-08 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'tanf'.
+ * modules/tanf-tests: New file.
+ * tests/test-tanf.c: New file.
+
+ New module 'tanf'.
+ * lib/math.in.h (tanf): New declaration.
+ * lib/tanf.c: New file.
+ * m4/tanf.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whether tanf is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_TANF, HAVE_TANF.
+ * modules/math (Makefile.am): Substitute GNULIB_TANF, HAVE_TANF.
+ * modules/tanf: New file.
+ * tests/test-math-c++.cc: Check the declaration of tanf.
+ * doc/posix-functions/tanf.texi: Mention the new module.
+
+ tan: Use a .m4 file.
+ * m4/tan.m4: New file.
+ * modules/tan (Files): Add it.
+ (configure.ac): Just invoke gl_FUNC_TAN.
+
+2011-10-08 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'cosf'.
+ * modules/cosf-tests: New file.
+ * tests/test-cosf.c: New file.
+
+ New module 'cosf'.
+ * lib/math.in.h (cosf): New declaration.
+ * lib/cosf.c: New file.
+ * m4/cosf.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whether cosf is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_COSF, HAVE_COSF.
+ * modules/math (Makefile.am): Substitute GNULIB_COSF, HAVE_COSF.
+ * modules/cosf: New file.
+ * tests/test-math-c++.cc: Check the declaration of cosf.
+ * doc/posix-functions/cosf.texi: Mention the new module.
+
+ cos: Use a .m4 file.
+ * m4/cos.m4: New file.
+ * modules/cos (Files): Add it.
+ (configure.ac): Just invoke gl_FUNC_COS.
+
+2011-10-08 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'sinf'.
+ * modules/sinf-tests: New file.
+ * tests/test-sinf.c: New file.
+
+ New module 'sinf'.
+ * lib/math.in.h (sinf): New declaration.
+ * lib/sinf.c: New file.
+ * m4/sinf.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whether sinf is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_SINF, HAVE_SINF.
+ * modules/math (Makefile.am): Substitute GNULIB_SINF, HAVE_SINF.
+ * modules/sinf: New file.
+ * tests/test-math-c++.cc: Check the declaration of sinf.
+ * doc/posix-functions/sinf.texi: Mention the new module.
+
+ sin: Use a .m4 file.
+ * m4/sin.m4: New file.
+ * modules/sin (Files): Add it.
+ (configure.ac): Just invoke gl_FUNC_SIN.
+
+2011-10-08 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'powf'.
+ * modules/powf-tests: New file.
+ * tests/test-powf.c: New file.
+
+ New module 'powf'.
+ * lib/math.in.h (powf): New declaration.
+ * lib/powf.c: New file.
+ * m4/powf.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whether powf is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_POWF, HAVE_POWF.
+ * modules/math (Makefile.am): Substitute GNULIB_POWF, HAVE_POWF.
+ * modules/powf: New file.
+ * tests/test-math-c++.cc: Check the declaration of powf.
+ * doc/posix-functions/powf.texi: Mention the new module.
+
+ pow: Use a .m4 file.
+ * m4/pow.m4: New file.
+ * modules/pow (Files): Add it.
+ (configure.ac): Just invoke gl_FUNC_POW.
+
+2011-10-08 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'log10f'.
+ * modules/log10f-tests: New file.
+ * tests/test-log10f.c: New file.
+
+ New module 'log10f'.
+ * lib/math.in.h (log10f): New declaration.
+ * lib/log10f.c: New file.
+ * m4/log10f.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whether log10f is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_LOG10F, HAVE_LOG10F.
+ * modules/math (Makefile.am): Substitute GNULIB_LOG10F, HAVE_LOG10F.
+ * modules/log10f: New file.
+ * tests/test-math-c++.cc: Check the declaration of log10f.
+ * doc/posix-functions/log10f.texi: Mention the new module.
+
+ log10: Use a .m4 file.
+ * m4/log10.m4: New file.
+ * modules/log10 (Files): Add it.
+ (configure.ac): Just invoke gl_FUNC_LOG10.
+
+2011-10-08 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'logf'.
+ * modules/logf-tests: New file.
+ * tests/test-logf.c: New file.
+
+ New module 'logf'.
+ * lib/math.in.h (logf): New declaration.
+ * lib/logf.c: New file.
+ * m4/logf.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whether logf is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_LOGF, HAVE_LOGF.
+ * modules/math (Makefile.am): Substitute GNULIB_LOGF, HAVE_LOGF.
+ * modules/logf: New file.
+ * tests/test-math-c++.cc: Check the declaration of logf.
+ * doc/posix-functions/logf.texi: Mention the new module.
+
+ log: Use a .m4 file.
+ * m4/log.m4: New file.
+ * modules/log (Files): Add it.
+ (configure.ac): Just invoke gl_FUNC_LOG.
+
+2011-10-08 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'expf'.
+ * modules/expf-tests: New file.
+ * tests/test-expf.c: New file.
+
+ New module 'expf'.
+ * lib/math.in.h (expf): New declaration.
+ * lib/expf.c: New file.
+ * m4/expf.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whether expf is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_EXPF, HAVE_EXPF.
+ * modules/math (Makefile.am): Substitute GNULIB_EXPF, HAVE_EXPF.
+ * modules/expf: New file.
+ * tests/test-math-c++.cc: Check the declaration of expf.
+ * doc/posix-functions/expf.texi: Mention the new module.
+
+ exp: Use a .m4 file.
+ * m4/exp.m4: New file.
+ * modules/exp (Files): Add it.
+ (configure.ac): Just invoke gl_FUNC_EXP.
+
+2011-10-08 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'sqrtf'.
+ * modules/sqrtf-tests: New file.
+ * tests/test-sqrtf.c: New file.
+
+ New module 'sqrtf'.
+ * lib/math.in.h (sqrtf): New declaration.
+ * lib/sqrtf.c: New file.
+ * m4/sqrtf.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whether sqrtf is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_SQRTF, HAVE_SQRTF.
+ * modules/math (Makefile.am): Substitute GNULIB_SQRTF, HAVE_SQRTF.
+ * modules/sqrtf: New file.
+ * tests/test-math-c++.cc: Check the declaration of sqrtf.
+ * doc/posix-functions/sqrtf.texi: Mention the new module.
+
+2011-10-08 Bruno Haible <bruno@clisp.org>
+
+ Tests: Avoid link failures w.r.t. libintl.
+ * modules/faccessat-tests (Makefile.am): Link test-faccessat against
+ $(LIBINTL).
+ * modules/fchdir-tests (Makefile.am): Link test-fchdir against
+ $(LIBINTL).
+ * modules/getcwd-lgpl-tests (Makefile.am): Link test-getcwd-lgpl
+ against $(LIBINTL).
+ * modules/getcwd-tests (Makefile.am): Link test-getcwd against
+ $(LIBINTL).
+ * modules/openat-tests (Makefile.am): Link test-fchmodat against
+ $(LIBINTL).
+ * modules/stat-tests (Makefile.am): Link test-stat against $(LIBINTL).
+
+2011-10-08 Bruno Haible <bruno@clisp.org>
+
+ pow tests: Defeat compiler optimizations.
+ * tests/test-pow.c (main): Assign arguments to x and y before use.
+
+2011-10-08 Bruno Haible <bruno@clisp.org>
+
+ gnulib-tool: Improve last commit.
+ * gnulib-tool (func_modules_transitive_closure): Simplify code.
+ (func_emit_autoconf_snippets): Instead of invoking func_acceptable,
+ ignore dependencies that are not among the modules list.
+
+2011-10-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ gnulib-tool: don't follow dependencies to avoided modules
+ This fixes a bug that is related to the previous one.
+ * gnulib-tool (func_modules_transitive_closure)
+ (func_emit_autoconf_snippets):
+ Check whether a dependency is acceptable before using it.
+ (--extract-dependencies): Report an error if --avoid is also used,
+ since this combination of options is not yet supported.
+
+ gnulib-tool: fix typo that broke Emacs on powerpc-apple-darwin9.8.0.
+ Problem reported by Peter Dyballa in
+ <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9696>.
+ * gnulib-tool (func_emit_autoconf_snippets): Quote with "", not '',
+ when echoing "$condition".
+
+2011-10-07 Bruno Haible <bruno@clisp.org>
+
+ Fix documentation about math functions on MacOS X.
+ * doc/posix-functions/exp2.texi: Don't say the function is missing on
+ MacOS X 10.5.
+ * doc/posix-functions/fdim.texi: Likewise.
+ * doc/posix-functions/feclearexcept.texi: Likewise.
+ * doc/posix-functions/fegetenv.texi: Likewise.
+ * doc/posix-functions/fegetround.texi: Likewise.
+ * doc/posix-functions/feholdexcept.texi: Likewise.
+ * doc/posix-functions/feraiseexcept.texi: Likewise.
+ * doc/posix-functions/fesetenv.texi: Likewise.
+ * doc/posix-functions/fesetround.texi: Likewise.
+ * doc/posix-functions/fetestexcept.texi: Likewise.
+ * doc/posix-functions/feupdateenv.texi: Likewise.
+ * doc/posix-functions/fmax.texi: Likewise.
+ * doc/posix-functions/fmin.texi: Likewise.
+ * doc/posix-functions/log2.texi: Likewise.
+ * doc/posix-functions/modff.texi: Likewise.
+ * doc/posix-functions/nan.texi: Likewise.
+ * doc/posix-functions/nanf.texi: Likewise.
+ * doc/posix-functions/nextafterf.texi: Likewise.
+ * doc/posix-functions/remquo.texi: Likewise.
+
+2011-10-07 Bruno Haible <bruno@clisp.org>
+
+ modff: Drop assumption about library that defines modff.
+ * m4/modff.m4 (gl_FUNC_MODFF): Use gl_MATHFUNC macro instead of
+ AC_CHECK_FUNCS.
+ * modules/modff (Files): Add m4/mathfunc.m4.
+
+2011-10-07 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ raise tests: Avoid a GCC warning.
+ * tests/test-raise.c (handler): Use _Noreturn.
+
+2011-10-07 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'ldexpf'.
+ * modules/ldexpf-tests: New file.
+ * tests/test-ldexpf.c: New file.
+
+ New module 'ldexpf'.
+ * lib/math.in.h (ldexpf): New declaration.
+ * lib/ldexpf.c: New file.
+ * m4/ldexpf.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whether ldexpf is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_LDEXPF, HAVE_LDEXPF.
+ * modules/math (Makefile.am): Substitute GNULIB_LDEXPF, HAVE_LDEXPF.
+ * modules/ldexpf: New file.
+ * tests/test-math-c++.cc: Check the declaration of ldexpf.
+ * doc/posix-functions/ldexpf.texi: Mention the new module.
+
+2011-10-06 Bruno Haible <bruno@clisp.org>
+
+ frexpf: Work around problems on IRIX and mingw.
+ * lib/math.in.h (frexpf): Consider also REPLACE_FREXPF.
+ * m4/math_h.m4 (gl_MATH_H_DEFAULTS): Initialize REPLACE_FREXPF.
+ * m4/frexpf.m4 (gl_FUNC_FREXPF_WORKS): New macro.
+ (gl_FUNC_FREXPF): Invoke it. Set REPLACE_FREXPF.
+ * modules/frexpf (Depends-on, configure.ac): Consider REPLACE_FREXPF.
+ * modules/math (Makefile.am): Substitute REPLACE_FREXPF.
+ * doc/posix-functions/frexpf.texi: Mention the IRIX and mingw problems.
+
+2011-10-06 Bruno Haible <bruno@clisp.org>
+
+ fabsf: Drop assumption about library that defines fabsf.
+ * m4/fabsf.m4 (gl_FUNC_FABSF): Use gl_MATHFUNC macro instead of
+ AC_CHECK_FUNCS.
+ * modules/fabsf (Files): Add m4/mathfunc.m4.
+
+2011-10-06 Bruno Haible <bruno@clisp.org>
+
+ frexpf: Drop assumption about library that defines frexpf.
+ * m4/mathfunc.m4 (gl_MATHFUNC): Support also the argument types
+ 'int *', 'float *', 'long double *', 'float', 'long double'.
+ * m4/frexpf.m4 (gl_FUNC_FREXPF): Use gl_MATHFUNC macro instead of
+ AC_CHECK_FUNCS.
+ * modules/frexpf (Files): Add m4/mathfunc.m4.
+
+ Tests for module 'frexpf'.
+ * modules/frexpf-tests: New file.
+ * tests/test-frexpf.c: New file.
+
+ New module 'frexpf'.
+ * lib/math.in.h (frexpf): New declaration.
+ * lib/frexpf.c: New file.
+ * m4/frexpf.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whether frexpf is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_FREXPF, HAVE_FREXPF.
+ * modules/math (Makefile.am): Substitute GNULIB_FREXPF, HAVE_FREXPF.
+ * modules/frexpf: New file.
+ * tests/test-math-c++.cc: Check the declaration of frexpf.
+ * doc/posix-functions/frexpf.texi: Mention the new module.
+
+2011-10-06 Bruno Haible <bruno@clisp.org>
+
+ math: Sort function declarations of math.in.h.
+ * lib/math.in.h (frexp, logb): Move declarations.
+
+2011-10-05 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'modff'.
+ * modules/modff-tests: New file.
+ * tests/test-modff.c: New file.
+
+ New module 'modff'.
+ * lib/math.in.h (modff): New declaration.
+ * lib/modff.c: New file.
+ * m4/modff.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whether modff is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_MODFF, HAVE_MODFF.
+ * modules/math (Makefile.am): Substitute GNULIB_MODFF, HAVE_MODFF.
+ * modules/modff: New file.
+ * tests/test-math-c++.cc: Check the declaration of modff.
+ * doc/posix-functions/modff.texi: Mention the new module.
+
+ modf tests: Make test sharper.
+ * tests/test-modf.c (main): Strengthen upper bound.
+
+ modf: Use a .m4 file.
+ * m4/modf.m4: New file.
+ * modules/modf (Files): Add it.
+ (configure.ac): Just invoke gl_FUNC_MODF.
+
+2011-10-05 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'fmodf'.
+ * modules/fmodf-tests: New file.
+ * tests/test-fmodf.c: New file.
+
+ New module 'fmodf'.
+ * lib/math.in.h (fmodf): New declaration.
+ * lib/fmodf.c: New file.
+ * m4/fmodf.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whether fmodf is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_FMODF, HAVE_FMODF.
+ * modules/math (Makefile.am): Substitute GNULIB_FMODF, HAVE_FMODF.
+ * modules/fmodf: New file.
+ * tests/test-math-c++.cc: Check the declaration of fmodf.
+ * doc/posix-functions/fmodf.texi: Mention the new module.
+
+ fmod: Use a .m4 file.
+ * m4/fmod.m4: New file.
+ * modules/fmod (Files): Add it.
+ (configure.ac): Just invoke gl_FUNC_FMOD.
+
+2011-10-05 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'fabsf'.
+ * modules/fabsf-tests: New file.
+ * tests/test-fabsf.c: New file.
+
+ New module 'fabsf'.
+ * lib/math.in.h (fabsf): New declaration.
+ * lib/fabsf.c: New file.
+ * m4/fabsf.m4: New file.
+ * m4/math_h.m4 (gl_MATH_H): Test whether fabsf is declared.
+ (gl_MATH_H_DEFAULTS): Initialize GNULIB_FABSF, HAVE_FABSF.
+ * modules/math (Makefile.am): Substitute GNULIB_FABSF, HAVE_FABSF.
+ * modules/fabsf: New file.
+ * tests/test-math-c++.cc: Check the declaration of fabsf.
+ * doc/posix-functions/fabsf.texi: Mention the new module.
+
+ fabs: Use a .m4 file.
+ * m4/fabs.m4: New file.
+ * modules/fabs (Files): Add it.
+ (configure.ac): Just invoke gl_FUNC_FABS.
+
+2011-10-05 Jim Meyering <meyering@redhat.com>
+
+ file-has-acl: revert both recent changes, 80af92af and 95f7c57f
+ * lib/file-has-acl.c: While the 2011-10-03 change does fix the
+ ls -lL regression introduced in coreutils-8.12, it does so at the
+ cost of an additional stat call in the common case. Besides, now
+ that the kernel change that prompted commit 95f7c57f has been reverted
+ (see https://bugzilla.redhat.com/show_bug.cgi?id=720325#c24)
+ we have no use for commit 95f7c57f, "file-has-acl: use
+ acl_extended_file_nofollow if available".
+
+2011-10-03 Kamil Dudka <kdudka@redhat.com>
+
+ file-has-acl: revert unintended change in behavior of ls -L
+ * lib/file-has-acl.c (acl_extended_file_wrap): New function,
+ derived from...
+ (file_has_acl): ...code here. Call it.
+ This problem was introduced with 2011-07-22 commit 95f7c57f,
+ "file-has-acl: use acl_extended_file_nofollow if available".
+ See http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/28538
+
+2011-10-03 Bruno Haible <bruno@clisp.org>
+
+ poll: Avoid link errors on MSVC.
+ * m4/poll.m4 (gl_FUNC_POLL): Determine LIB_POLL.
+ * modules/poll (Depends-on): Add sockets.
+ (Link): New section.
+ * NEWS: Mention the change.
+ * modules/poll-tests (Makefile.am): Link test-poll against $(LIB_POLL).
+ * modules/poll-h-c++-tests (Makefile.am): Link test-poll-h-c++ against
+ $(LIB_POLL) instead of $(LIBSOCKET).
+
+2011-10-03 Bruno Haible <bruno@clisp.org>
+
+ sys_select tests: Fix link error on MSVC 9.
+ * modules/sys_select-c++-tests (Makefile.am): Link test-sys_select-c++
+ with $(LIB_SELECT) instead of $(LIBSOCKET).
+
+2011-10-03 Bruno Haible <bruno@clisp.org>
+
+ sys_select: Fix compilation error on mingw.
+ * lib/sys_select.in.h: On native Windows, include <io.h>.
+
+2011-10-03 Bruno Haible <bruno@clisp.org>
+
+ wmemset: Support for MSVC.
+ * m4/wmemset.m4 (gl_FUNC_WMEMSET): Use a small test program to test
+ whether wmemset() exists.
+
+2011-10-03 Bruno Haible <bruno@clisp.org>
+
+ wmemmove: Support for MSVC.
+ * m4/wmemmove.m4 (gl_FUNC_WMEMMOVE): Use a small test program to test
+ whether wmemmove() exists.
+
+2011-10-03 Bruno Haible <bruno@clisp.org>
+
+ wmemcpy: Support for MSVC.
+ * m4/wmemcpy.m4 (gl_FUNC_WMEMCPY): Use a small test program to test
+ whether wmemcpy() exists.
+
+2011-10-03 Bruno Haible <bruno@clisp.org>
+
+ wmemcmp: Support for MSVC.
+ * m4/wmemcmp.m4 (gl_FUNC_WMEMCMP): Use a small test program to test
+ whether wmemcmp() exists.
+
+2011-10-03 Bruno Haible <bruno@clisp.org>
+
+ wmemchr: Support for MSVC.
+ * m4/wmemchr.m4 (gl_FUNC_WMEMCHR): Use a small test program to test
+ whether wmemchr() exists.
+
+2011-10-03 Bruno Haible <bruno@clisp.org>
+
+ glthread/*, strsignal: Support for MSVC.
+ * lib/glthread/cond.h: Define WIN32_LEAN_AND_MEAN, so as to avoid
+ including <winsock.h> on MSVC 9.
+ * lib/glthread/lock.h: Likewise.
+ * lib/glthread/thread.h: Likewise.
+ * lib/glthread/tls.h: Likewise.
+ * lib/glthread/yield.h: Likewise.
+ * lib/strsignal.c: Include <string.h> first. Don't include <unistd.h>
+ if HAVE_UNISTD_H is false.
+ * m4/strsignal.m4 (gl_PREREQ_STRSIGNAL): Test for <unistd.h>.
+
+2011-10-03 Bruno Haible <bruno@clisp.org>
+
+ nonblocking tests: Fix test failure on OpenBSD/SPARC64.
+ * tests/test-nonblocking-socket.h (SOCKET_DATA_BLOCK_SIZE) [OpenBSD]:
+ Set to 100000.
+
+2011-10-03 Bruno Haible <bruno@clisp.org>
+
+ acl: Fix specification.
+ * lib/file-has-acl.c (file_has_acl): Fix specification.
+
+2011-10-03 Bruno Haible <bruno@clisp.org>
+
+ relocatable-lib[-lgpl]: Avoid expensive /proc access on Linux, Cygwin.
+ * lib/relocatable.c (ENABLE_COSTLY_RELOCATABLE): New macro.
+ (compute_curr_prefix, shared_library_fullname,
+ find_shared_library_fullname, get_shared_library_fullname, relocate):
+ Use it together with PIC && INSTALLDIR.
+ Reported by <jojelino@gmail.com>
+ via Charles Wilson <cygwin@cwilson.fastmail.fm>.
+
+2011-10-01 Jim Meyering <meyering@redhat.com>
+
+ maint.mk: adjust a release-related rule not to require use of gzip
+ * top/maint.mk (writable-files): Don't hard-code use of .tar.gz.
+ Instead, check each file in $(DIST_ARCHIVES). This is better for
+ projects that build only .tar.xz files. Also fix an erroneous test.
+
+ test-linkat: don't leave behind a temporary file
+ * tests/test-linkat.c (main): Don't forget to remove a temporary file.
+ Otherwise, coreutils' "make distcheck" would fail with this:
+ Only in /c/cu/tests/torture/coreutils/test/\
+ coreutils-8.13.22-d5caf.old/gnulib-tests: test-linkat.too
+ make[2]: *** [my-distcheck] Error 1
+
+ float, math: add omitted file
+ * lib/itold.c: Add file, required for yesterday's float change.
+
+2011-10-01 Bruno Haible <bruno@clisp.org>
+
+ isinf: Fix for OpenBSD/x86.
+ * m4/isinf.m4 (gl_ISINFL_WORKS): Also test the behaviour of isinf on
+ pseudo-NaNs, pseudo-Infinities, and other non-IEEE values.
+ * doc/posix-functions/isinf.texi: Mention the problem on OpenBSD/x86.
+
+2011-10-01 Bruno Haible <bruno@clisp.org>
+
+ isfinite: Fix syntax error in configure test.
+ * m4/isfinite.m4 (gl_ISFINITEL_WORKS): Fix syntax error.
+
+ isfinite: Fix typo.
+ * m4/isfinite.m4 (gl_ISFINITEL_WORKS): When cross-compiling, set
+ gl_cv_func_isfinitel_works, not gl_cv_func_isnanl_works.
+
+2011-10-01 Bruno Haible <bruno@clisp.org>
+
+ nonblocking tests: Fix test failure on Linux/IA-64.
+ * tests/test-nonblocking-pipe.h (PIPE_DATA_BLOCK_SIZE) [Linux/IA-64]:
+ Set to 270000.
+
+2011-10-01 Bruno Haible <bruno@clisp.org>
+
+ mkfifoat tests: Fix a test failure on mingw.
+ * tests/test-mkfifoat.c (main): Allow mkfifoat or test_mknodat to fail
+ with error ENOSYS.
+
+2011-09-30 Bruno Haible <bruno@clisp.org>
+
+ float, math: Fix 'int' to 'long double' conversion on Linux/SPARC64.
+ * 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.
+
+2011-09-30 Bruno Haible <bruno@clisp.org>
+
+ nonblocking tests: Fix test failure on Linux/SPARC (32-bit and 64-bit).
+ * tests/test-nonblocking-pipe.h (PIPE_DATA_BLOCK_SIZE) [Linux/SPARC]:
+ Set to 140000.
+
+2011-09-30 Bruno Haible <bruno@clisp.org>
+
+ gnulib-tool: Improve suggestion where to put gl_EARLY invocation.
+ * gnulib-tool (func_import): If the configure.ac has an AC_PROG_CC_STDC
+ invocation, say "right after AC_PROG_CC_STDC", not "right after
+ AC_PROG_CC".
+ Reported by Gary V. Vaughan <gary@gnu.org>.
+
+2011-09-30 Bruno Haible <bruno@clisp.org>
+
+ Centralize C99 requirement.
+ * m4/gnulib-common.m4 (gl_PROG_CC_C99): New macro.
+ * modules/stdarg (configure.ac-early): Invoke it instead of
+ AC_PROG_CC_STDC.
+ Reported by Gary V. Vaughan and Paul Eggert.
+
+2011-09-29 Bruno Haible <bruno@clisp.org>
+
+ float: Fix LDBL_MAX value on Linux/PowerPC.
+ * 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>.
+
+2011-09-29 Bruno Haible <bruno@clisp.org>
+
+ doc: Improve doc about gl_EARLY.
+ * doc/gnulib-tool.texi (Initial import): Mention where to place an
+ AC_PROG_CC_STDC invocation.
+ Reported by Gary V. Vaughan <gary@gnu.org>.
+
+2011-09-28 Bruno Haible <bruno@clisp.org>
+
+ fgetc, fputc, fread, fwrite tests: Fix link error.
+ * tests/test-fgetc.c (main): Don't invoke gl_msvc_inval_ensure_handler
+ on non-MSVC platforms.
+ * tests/test-fputc.c (main): Likewise.
+ * tests/test-fread.c (main): Likewise.
+ * tests/test-fwrite.c (main): Likewise.
+ Reported by Jim Meyering.
+
+2011-09-27 Bruno Haible <bruno@clisp.org>
+
+ fputc, fwrite tests: Avoid test failure on MSVC.
+ * tests/test-fgetc.c: Include msvc-inval.h.
+ (main): Invoke gl_msvc_inval_ensure_handler.
+ * tests/test-fputc.c: Include msvc-inval.h.
+ (main): Invoke gl_msvc_inval_ensure_handler.
+ * tests/test-fread.c: Include msvc-inval.h.
+ (main): Invoke gl_msvc_inval_ensure_handler.
+ * tests/test-fwrite.c: Include msvc-inval.h.
+ (main): Invoke gl_msvc_inval_ensure_handler.
+ * modules/fgetc-tests (Depends-on): Add msvc-inval.
+ * modules/fputc-tests (Depends-on): Likewise.
+ * modules/fread-tests (Depends-on): Likewise.
+ * modules/fwrite-tests (Depends-on): Likewise.
+
+2011-09-27 Bruno Haible <bruno@clisp.org>
+
+ raise: Fix double declaration with modules 'sigprocmask' and 'sigpipe'.
+ * lib/signal.in.h (GNULIB_defined_signal_blocking): New macro.
+ (raise): Remove older, duplicated declaration.
+ (_gl_raise_SIGPIPE): New declaration.
+ * lib/sigprocmask.c (_gl_raise_SIGPIPE): New function.
+ (rpl_raise): Remove function.
+ * lib/raise.c (rpl_raise, raise): Merge into a single function. Handle
+ a gnulib-defined SIGPIPE here.
+ * m4/raise.m4 (gl_FUNC_RAISE): Set REPLACE_RAISE also if the module
+ 'sigprocmask' has detected missing signal-blocking and the module
+ 'sigpipe' is enabled.
+ Reported by Tatsuro MATSUOKA <tmacchant5@yahoo.co.jp>.
+
+2011-09-26 Gijs van Tulder <gvtulder@gmail.com>
+
+ base64-tests: avoid memory leak
+ * tests/test-base64.c (main): Plug memory leak.
+
+ base32: new module
+ * modules/base32: New module.
+ * lib/base32.c: New file.
+ * lib/base32.h: Likewise.
+ * m4/base32.m4: Likewise.
+ * modules/base32-tests: New test.
+ * tests/test-base32.c: Likewise.
+ * MODULES.html.sh (Misc): Mention it.
+
+2011-09-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ gnulib: use more-standard license notice wording
+ * gnulib-tool (func_emit_copyright_notice): When emitting a
+ license notice into a file, use the standard wording as suggested
+ by the current information for GNU maintainers, except say "file"
+ rather than "program". The new wording gives a license version
+ number, which addresses an issue raised by Glenn Morris in
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-09/msg00397.html>.
+ * m4/onceonly.m4: Use that same wording here, too.
+
+ dup2: minor simplification
+ * m4/dup2.m4 (gl_PREREQ_DUP2): Don't require AC_C_INLINE,
+ as lib/dup2.c no longer uses 'inline'.
+
+2011-09-25 Bruno Haible <bruno@clisp.org>
+
+ strings: Fix compilation error on MSVC.
+ * lib/strings.in.h: Include <stddef.h> for size_t.
+
+2011-09-25 Bruno Haible <bruno@clisp.org>
+
+ fflush et al.: Document limitation on MSVC.
+ * doc/posix-functions/fflush.texi: Document possible crash in handling
+ mode other than DEFAULT_HANDLING.
+ * doc/posix-functions/fgetc.texi: Likewise.
+ * doc/posix-functions/fputc.texi: Likewise.
+ * doc/posix-functions/fread.texi: Likewise.
+ * doc/posix-functions/fwrite.texi: Likewise.
+
+2011-09-25 Bruno Haible <bruno@clisp.org>
+
+ msvc-inval: Allow three invalid parameter handling modes.
+ * lib/msvc-inval.h: Don't include <stdlib.h> here.
+ (DEFAULT_HANDLING, HAIRY_LIBRARY_HANDLING, SANE_LIBRARY_HANDLING): New
+ macros.
+ (gl_msvc_inval_ensure_handler, TRY_MSVC_INVAL, CATCH_MSVC_INVAL,
+ DONE_MSVC_INVAL): Implement DEFAULT_HANDLING. Treat
+ SANE_LIBRARY_HANDLING as a no-op.
+ * lib/msvc-inval.c: Treat SANE_LIBRARY_HANDLING as a no-op. Include
+ <stdlib.h>.
+ (gl_msvc_invalid_parameter_handler): Implement DEFAULT_HANDLING.
+
+2011-09-25 Bruno Haible <bruno@clisp.org>
+
+ msvc-inval: Make handler multithread-safe.
+ * lib/msvc-inval.h (struct gl_msvc_inval_per_thread): New type.
+ (gl_msvc_inval_restart, gl_msvc_inval_restart_valid): Remove
+ declarations.
+ (gl_msvc_inval_current): New declaration.
+ (TRY_MSVC_INVAL, CATCH_MSVC_INVAL, DONE_MSVC_INVAL) [!_MSC_VER]:
+ Operate on the structure returned by gl_msvc_inval_current().
+ * lib/msvc-inval.c (gl_msvc_inval_restart, gl_msvc_inval_restart_valid):
+ Remove varaiables.
+ (tls_index, tls_initialized): New variables.
+ (not_per_thread): New variable.
+ (gl_msvc_inval_current): New function.
+ (gl_msvc_invalid_parameter_handler) [!_MSC_VER]: Use the structure
+ returned by gl_msvc_inval_current().
+
+2011-09-25 Bruno Haible <bruno@clisp.org>
+
+ msvc-inval: Install handler globally.
+ * lib/msvc-inval.h (STATUS_GNULIB_INVALID_PARAMETER): Define also for
+ !_MSC_VER.
+ (gl_msvc_invalid_parameter_handler): Remove declaration.
+ (gl_msvc_inval_restart_valid, gl_msvc_inval_ensure_handler): New
+ declarations.
+ (TRY_MSVC_INVAL, CATCH_MSVC_INVAL, DONE_MSVC_INVAL) [!_MSC_VER]:
+ Install the handler globally, don't uninstall it.
+ * lib/msvc-inval.c (gl_msvc_inval_restart_valid): New variable.
+ (gl_msvc_invalid_parameter_handler): Make static. If the restart is not
+ currently valid, call RaiseException instead.
+ (gl_msvc_inval_initialized, gl_msvc_inval_ensure_handler): Define also
+ for !_MSC_VER.
+
+2011-09-25 Bruno Haible <bruno@clisp.org>
+
+ strerror_r-posix: Fix for MSVC 9.
+ * lib/strerror_r.c (local_snprintf): New function.
+ (snprintf): Define to local_snprintf, not to _snprintf.
+
+2011-09-25 Bruno Haible <bruno@clisp.org>
+
+ ftruncate: Support for MSVC 9.
+ * lib/ftruncate.c: Include errno.h, msvc-inval.h.
+ (chsize_nothrow): New function.
+ (chsize): Redefine as a macro.
+ * m4/ftruncate.m4 (gl_PREREQ_FTRUNCATE): Require AC_C_INLINE.
+ * modules/ftruncate (Depends-on): Add msvc-inval.
+
+2011-09-25 Bruno Haible <bruno@clisp.org>
+
+ New module 'fstat'.
+ * lib/sys_stat.in.h (fstat): Declare only if GNULIB_FSTAT is set.
+ * lib/fstat.c: New file, based on a piece of lib/fchdir.c.
+ * lib/fchdir.c (rpl_fstat): Remove function.
+ * m4/fstat.m4: New file.
+ * m4/fchdir.m4 (gl_FUNC_FCHDIR): Don't set REPLACE_FSTAT.
+ * m4/sys_stat_h.m4 (gl_HEADER_SYS_STAT_H): Test whether fstat is
+ declared.
+ (gl_SYS_STAT_H_DEFAULTS): Initialize GNULIB_FSTAT.
+ * modules/sys_stat (Makefile.am): Substitute GNULIB_FSTAT.
+ * modules/fstat: New file.
+ * modules/sys_stat-tests (Depends-on): Remove fstat-tests.
+ * tests/test-sys_stat-c++.cc (fstat): Check only if GNULIB_TEST_FSTAT
+ is set.
+ * doc/posix-functions/fstat.texi: Mention the new module and the
+ problem on MSVC.
+ * NEWS: Mention the change.
+ * modules/acl (Depends-on): Add fstat.
+ * modules/chdir-safer (Depends-on): Likewise.
+ * modules/chown (Depends-on): Likewise.
+ * modules/copy-file (Depends-on): Likewise.
+ * modules/fchdir (Depends-on): Likewise.
+ * modules/fdopendir (Depends-on): Likewise.
+ * modules/fopen (Depends-on): Likewise.
+ * modules/fts (Depends-on): Likewise.
+ * modules/getcwd (Depends-on): Likewise.
+ * modules/isapipe (Depends-on): Likewise.
+ * modules/linkat (Depends-on): Likewise.
+ * modules/lseek (Depends-on): Likewise.
+ * modules/mkdir-p (Depends-on): Likewise.
+ * modules/open (Depends-on): Likewise.
+ * modules/openat (Depends-on): Likewise.
+ * modules/read-file (Depends-on): Likewise.
+ * modules/renameat (Depends-on): Likewise.
+ * modules/utimens (Depends-on): Likewise.
+
+2011-09-25 Bruno Haible <bruno@clisp.org>
+
+ linkat: Fix compilation on MSVC 9.
+ * lib/linkat.c: Don't include <stdint.h>.
+
+2011-09-25 Bruno Haible <bruno@clisp.org>
+
+ fclose: Support for MSVC 9.
+ * lib/fclose.c: Include msvc-inval.h.
+ (fclose_nothrow): New function.
+ (rpl_fclose): Use it.
+ * modules/fclose (Depends-on): Add msvc-inval.
+ * doc/posix-functions/fclose.texi: Mention the problem on MSVC.
+
+2011-09-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ dup2: minor simplifications
+ * lib/dup2.c (ms_windows_dup2): Omit 'inline' as it's not clear
+ that it's a performance win.
+ (rpl_dup2): Change "if !((defined _WIN32 || defined __WIN32__) &&
+ ! defined __CYGWIN__)" to "ifdef F_GETFL".
+
+2011-09-24 Jim Meyering <meyering@redhat.com>
+
+ test-futimens: avoid a warning from gcc -Wshadow
+ * tests/test-futimens.h (test_futimens): Rename inner local, s/fd/fd0/
+ to avoid a shadowing warning.
+
+2011-09-24 Bruno Haible <bruno@clisp.org>
+
+ fdopen: Support for MSVC 9.
+ * m4/fdopen.m4 (gl_FUNC_FDOPEN): Set REPLACE_FDOPEN also if
+ HAVE_MSVC_INVALID_PARAMETER_HANDLER is 1.
+ * lib/fdopen.c: Include msvc-inval.h.
+ (fdopen_nothrow): New function.
+ (rpl_fdopen): Use it.
+ * modules/fdopen (Depends-on): Add msvc-inval.
+ * modules/fclose-tests (Depends-on): Add fdopen.
+ * modules/fflush-tests (Depends-on): Likewise.
+ * modules/fgetc-tests (Depends-on): Likewise.
+ * modules/fputc-tests (Depends-on): Likewise.
+ * modules/fread-tests (Depends-on): Likewise.
+ * modules/freopen-tests (Depends-on): Likewise.
+ * modules/fseeko-tests (Depends-on): Likewise.
+ * modules/ftello-tests (Depends-on): Likewise.
+ * modules/fwrite-tests (Depends-on): Likewise.
+ * doc/posix-functions/fdopen.texi: Mention the problem on MSVC.
+
+2011-09-24 Bruno Haible <bruno@clisp.org>
+
+ fgetc, fputc, fread, fwrite tests: Avoid compilation error on MSVC.
+ * modules/fgetc-tests (Depends-on): Add unistd.
+ * modules/fputc-tests (Depends-on): Likewise.
+ * modules/fread-tests (Depends-on): Likewise.
+ * modules/fwrite-tests (Depends-on): Likewise.
+
+2011-09-24 Bruno Haible <bruno@clisp.org>
+
+ dup: Simplify autoconf test.
+ * m4/dup.m4 (gl_FUNC_DUP): Don't run a test program. Instead, just rely
+ on gl_MSVC_INVAL's result.
+
+2011-09-24 Bruno Haible <bruno@clisp.org>
+
+ Tests for function fwrite().
+ * modules/fwrite-tests: New file.
+ * tests/test-fwrite.c: New file.
+ * modules/stdio-tests (Depends-on): Add fwrite-tests.
+
+ Tests for function fread().
+ * modules/fread-tests: New file.
+ * tests/test-fread.c: New file.
+ * modules/stdio-tests (Depends-on): Add fread-tests.
+
+ Activate fputc tests.
+ * modules/stdio-tests (Depends-on): Add fputc-tests.
+
+ Enhance fgetc, fputc tests.
+ * tests/test-fgetc.c (main): Also test the stream's error indicator.
+ * tests/test-fputc.c (main): Likewise.
+
+2011-09-24 Bruno Haible <bruno@clisp.org>
+
+ write: Support for MSVC 9.
+ * lib/unistd.in.h (write): Replace also when GNULIB_UNISTD_H_NONBLOCKING
+ is not 1.
+ * lib/write.c (write_nothrow): New function.
+ (rpl_write): Define also when GNULIB_NONBLOCKING or GNULIB_SIGPIPE is
+ not 1. Use write_nothrow.
+ * m4/write.m4 (gl_FUNC_WRITE): Replace read if the platform has an
+ invalid parameter handler.
+ (gl_PREREQ_WRITE): New macro.
+ * modules/write (Depends-on): Add msvc-inval.
+ (configure.ac): Invoke gl_PREREQ_WRITE.
+ * doc/posix-functions/write.texi: Mention the problem on MSVC.
+
+2011-09-24 Bruno Haible <bruno@clisp.org>
+
+ read: Fix last commit.
+ * lib/read.c (read_nothrow): Change return type to 'ssize_t'.
+
+2011-09-24 Bruno Haible <bruno@clisp.org>
+
+ dup2: Fix last commit.
+ * lib/dup2.c: Restore comments. Treat Cygwin like Unix.
+ (rpl_dup2): Disable fcntl workaround on native Windows.
+
+ sigprocmask: Make code safer.
+ * lib/sigprocmask.c: Move '#include "msvc-inval.h"' before the code
+ section that changes macro definitions for this compilation unit.
+
+2011-09-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ dup2: clarify by coalescing Windows-specific material
+ * lib/dup2.c: Move '#include "msvc-inval.h"' and '#include
+ "msvc-nothrow.h"' to the Windows-specific section, so that the
+ Emacs source need not contain these include files.
+ (ms_windows_dup2): Rename from dup2_nothrow, and move all the
+ Windows-specific fixes into this function rather than just the
+ nothrow fix, as this shortens and clarifies the code. Always
+ define as a function, as that's a bit cleaner than having it be
+ sometimes a function and sometimes a macro.
+ (rpl_dup2): Move the Windows-specific stuff out of here and into
+ ms_windows_dup2. Don't protect the Haiku-related fix with
+ "#if !defined __linux__", as the same code also works around
+ a Linux kernel bug, and it doesn't add any system calls on any
+ platform. Add comment about FreeBSD 6.1.
+
+ sigprocmask: move #include directive
+ * lib/sigprocmask.c: Move '#include "msvc-inval.h"' to the
+ Windows-specific section, so that the Emacs source need not
+ contain msvc-inval.h.
+
+2011-09-23 Bruno Haible <bruno@clisp.org>
+
+ read: Support for MSVC 9.
+ * lib/unistd.in.h (read): Replace also when GNULIB_UNISTD_H_NONBLOCKING
+ is not 1.
+ * lib/read.c (read_nothrow): New function.
+ (rpl_read): Define also when GNULIB_NONBLOCKING is not 1. Use
+ read_nothrow.
+ * m4/read.m4 (gl_FUNC_READ): Replace read if the platform has an
+ invalid parameter handler.
+ (gl_PREREQ_READ): New macro.
+ * modules/read (Depends-on): Add msvc-inval.
+ (configure.ac): Invoke gl_PREREQ_READ.
+ * doc/posix-functions/read.texi: Mention the problem on MSVC.
+
+2011-09-23 Bruno Haible <bruno@clisp.org>
+
+ close: Support for MSVC 9.
+ * lib/close.c: Include <errno.h>, msvc-inval.h.
+ (close_nothrow): New function.
+ (rpl_close): Use it.
+ * m4/close.m4 (gl_FUNC_CLOSE): Replace close if the platform has an
+ invalid parameter handler.
+ * modules/close (Depends-on): Add msvc-inval.
+ * modules/dup2-tests (Depends-on): Add close.
+ * modules/dup3-tests (Depends-on): Likewise.
+ * modules/fcntl-tests (Depends-on): Likewise.
+ * modules/spawn-pipe-tests (Depends-on): Likewise.
+ * modules/unistd-safer-tests (Depends-on): Likewise.
+ * doc/posix-functions/close.texi: Mention the problem on MSVC.
+
+2011-09-23 Bruno Haible <bruno@clisp.org>
+
+ New module 'dup'.
+ * lib/unistd.in.h (dup): Declare only if the 'dup' module is in use.
+ Allow replacement.
+ * lib/dup.c: New file.
+ * lib/fchdir.c (rpl_dup): Remove function.
+ * m4/dup.m4: New file.
+ * m4/fchdir.m4 (gl_FUNC_FCHDIR): Don't set REPLACE_DUP here.
+ * m4/unistd_h.m4 (gl_UNISTD_H): Test whether 'dup' is declared.
+ (gl_UNISTD_H_DEFAULTS): Initialize GNULIB_DUP.
+ * modules/unistd (Makefile.am): Substitute GNULIB_DUP.
+ * modules/dup: New file.
+ * tests/test-unistd-c++.cc: Check the signature of 'dup' only if the
+ 'dup' module is in use.
+ * modules/fdopendir (Depends-on): Add dup.
+ * modules/fdutimensat-tests (Depends-on): Likewise.
+ * modules/fts (Depends-on): Likewise.
+ * modules/futimens-tests (Depends-on): Likewise.
+ * modules/posix_spawnp-tests (Depends-on): Likewise.
+ * modules/unistd-safer-tests (Depends-on): Likewise.
+ * modules/utimens-tests (Depends-on): Likewise.
+ * doc/posix-functions/dup.texi: Mention the new module and the problem
+ on MSVC.
+
+2011-09-23 Bruno Haible <bruno@clisp.org>
+
+ getdtablesize: Support for MSVC 9.
+ * lib/getdtablesize.c: Include msvc-inval.h.
+ (_setmaxstdio_nothrow): New function.
+ (_setmaxstdio): Redefine it.
+ * m4/getdtablesize.m4 (gl_PREREQ_GETDTABLESIZE): New macro.
+ * modules/getdtablesize (Depends-on): Add msvc-inval.
+ (configure.ac): Invoke gl_PREREQ_GETDTABLESIZE.
+
+2011-09-23 Bruno Haible <bruno@clisp.org>
+
+ signal-h: Rename from signal.
+ * modules/signal-h: Renamed from modules/signal.
+ * modules/pthread_sigmask (Depends-on): Update.
+ * modules/raise (Depends-on): Likewise.
+ * modules/sigaction (Depends-on): Likewise.
+ * modules/sigpipe (Depends-on): Likewise.
+ * modules/sigprocmask (Depends-on): Likewise.
+ * modules/sys_select (Depends-on): Likewise.
+ * modules/signal-h-tests: Renamed from modules/signal-tests.
+ (Files, Depends-on, Makefile.am): Update.
+ * tests/test-signal-h.c: Renamed from tests/test-signal.c.
+ * modules/signal-h-c++-tests: Renamed from modules/signal-c++-tests.
+ (Files, Makefile.am): Update.
+ * tests/test-signal-h-c++.cc: Renamed from tests/test-signal-c++.cc.
+ * tests/test-signal-h-c++2.cc: Renamed from tests/test-signal-c++2.cc.
+ * modules/signal: New placeholder file.
+ * MODULES.html.sh (Support for systems lacking POSIX:2008): Update.
+ * doc/posix-headers/signal.texi: Update.
+ * NEWS: Mention the change.
+
+2011-09-23 Bruno Haible <bruno@clisp.org>
+
+ sigprocmask: Avoid crashes through signal() on MSVC 9.
+ * lib/sigprocmask.c: Include msvc-inval.h.
+ (signal_nothrow): New function.
+ (signal): Redefine it.
+ * m4/signalblocking.m4 (gl_PREREQ_SIGPROCMASK): Require AC_C_INLINE.
+ * modules/sigprocmask (Depends-on): Add msvc-inval.
+ * doc/posix-functions/signal.texi: Mention the problem on MSVC.
+
+2011-09-23 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'raise'.
+ * modules/raise-tests: New file.
+ * tests/test-raise.c: New file.
+
+ raise: Support for MSVC.
+ * lib/signal.in.h (raise): New declaration.
+ * lib/raise.c (raise_nothrow, rpl_raise): New alternate implementation
+ for native Windows platforms.
+ * m4/raise.m4: New file.
+ * m4/signal_h.m4 (gl_SIGNAL_H_DEFAULTS): Initialize GNULIB_RAISE,
+ HAVE_RAISE, REPLACE_RAISE.
+ * modules/signal (Makefile.am): Substitute GNULIB_RAISE, HAVE_RAISE,
+ REPLACE_RAISE.
+ * modules/raise (Status, Notice): Remove fields.
+ (Files): Add m4/raise.m4.
+ (Depends-on): Add signal, msvc-inval.
+ (configure.ac): Use the common idioms.
+ (Maintainer): Add me.
+ * tests/test-signal-c++.cc: Check the signature of raise.
+ * doc/posix-functions/raise.texi: Mention the problem on MSVC.
+
+2011-09-23 Bruno Haible <bruno@clisp.org>
+
+ pipe2: Fix compilation on pre-C99 compilers.
+ * lib/pipe2.c (pipe2): Surround verify(...) declaration with braces.
+
+2011-09-23 Bruno Haible <bruno@clisp.org>
+
+ New module 'msvc-nothrow'. Makes _get_osfhandle safe on MSVC 9.
+ * lib/msvc-nothrow.h: New file.
+ * lib/msvc-nothrow.c: New file.
+ * m4/msvc-nothrow.m4: New file.
+ * modules/msvc-nothrow: New file.
+ * lib/dup2.c: Include msvc-nothrow.h.
+ (rpl_dup2): No need to protect _get_osfhandle call here.
+ * lib/accept4.c: Include msvc-nothrow.h.
+ * lib/error.c: Likewise.
+ * lib/fcntl.c: Likewise.
+ * lib/lseek.c: Likewise.
+ * lib/nonblocking.c: Likewise.
+ * lib/poll.c: Likewise.
+ * lib/read.c: Likewise.
+ * lib/select.c: Likewise.
+ * lib/sockets.h: Likewise.
+ * lib/sockets.c: Likewise.
+ * lib/stdio-read.c: Likewise.
+ * lib/stdio-write.c: Likewise.
+ * lib/write.c: Likewise.
+ * lib/w32sock.h: Likewise.
+ * lib/w32spawn.h: Likewise.
+ * lib/flock.c: Include msvc-nothrow.h instead of <io.h>.
+ * lib/fsync.c: Likewise.
+ * lib/isapipe.c: Likewise.
+ * modules/dup2 (Depends-on): Add msvc-nothrow.
+ * modules/accept4 (Depends-on): Likewise.
+ * modules/error (Depends-on): Likewise.
+ * modules/fcntl (Depends-on): Likewise.
+ * modules/lseek (Depends-on): Likewise.
+ * modules/nonblocking (Depends-on): Likewise.
+ * modules/poll (Depends-on): Likewise.
+ * modules/read (Depends-on): Likewise.
+ * modules/select (Depends-on): Likewise.
+ * modules/sockets (Depends-on): Likewise.
+ * modules/sigpipe (Depends-on): Likewise.
+ * modules/write (Depends-on): Likewise.
+ * modules/accept (Depends-on): Likewise.
+ * modules/bind (Depends-on): Likewise.
+ * modules/connect (Depends-on): Likewise.
+ * modules/gethostname (Depends-on): Likewise.
+ * modules/getpeername (Depends-on): Likewise.
+ * modules/getsockname (Depends-on): Likewise.
+ * modules/getsockopt (Depends-on): Likewise.
+ * modules/ioctl (Depends-on): Likewise.
+ * modules/listen (Depends-on): Likewise.
+ * modules/recv (Depends-on): Likewise.
+ * modules/recvfrom (Depends-on): Likewise.
+ * modules/send (Depends-on): Likewise.
+ * modules/sendto (Depends-on): Likewise.
+ * modules/setsockopt (Depends-on): Likewise.
+ * modules/shutdown (Depends-on): Likewise.
+ * modules/socket (Depends-on): Likewise.
+ * modules/execute (Depends-on): Likewise.
+ * modules/spawn-pipe (Depends-on): Likewise.
+ * modules/flock (Depends-on): Likewise.
+ * modules/fsync (Depends-on): Likewise.
+ * modules/isapipe (Depends-on): Likewise.
+ * tests/test-cloexec.c: Include msvc-nothrow.h.
+ * tests/test-dup-safer.c: Likewise.
+ * tests/test-dup2.c: Likewise.
+ * tests/test-dup3.c: Likewise.
+ * tests/test-fcntl.c: Likewise.
+ * tests/test-pipe.c: Likewise.
+ * tests/test-pipe2.c: Likewise.
+ * modules/cloexec-tests (Depends-on): Add msvc-nothrow.
+ * modules/unistd-safer-tests (Depends-on): Likewise.
+ * modules/dup2-tests (Depends-on): Likewise.
+ * modules/dup3-tests (Depends-on): Likewise.
+ * modules/fcntl-tests (Depends-on): Likewise.
+ * modules/pipe-posix-tests (Depends-on): Likewise.
+ * modules/pipe2-tests (Depends-on): Likewise.
+
+2011-09-23 Bruno Haible <bruno@clisp.org>
+
+ dup2: Make code more maintainable.
+ * lib/dup2.c (dup2_nothrow): New function, extracted from rpl_dup2.
+ (rpl_dup2): Use it.
+ * m4/dup2.m4 (gl_PREREQ_DUP2): New macro.
+ * modules/dup2 (configure.ac): Invoke it.
+ Reported by Paul Eggert.
+
+2011-09-23 Bruno Haible <bruno@clisp.org>
+
+ msvc-inval: Fix compilation error.
+ * lib/msvc-inval.h: Include <excpt.h>.
+
+2011-09-23 Bruno Haible <bruno@clisp.org>
+
+ mkdir: Tweak for MSVC 9.
+ * lib/sys_stat.in.h: Update comments.
+ * doc/posix-functions/mkdir.texi: Mention problem on MSVC 9.
+
+ Tests for module 'chdir'.
+ * modules/chdir-tests: New file.
+ * tests/test-chdir.c: New file.
+
+ New module 'chdir'.
+ * modules/chdir: New file.
+ * lib/unistd.in.h: Include <io.h>, <direct.h> also for chdir.
+ (chdir): New declaration.
+ * m4/unistd_h.m4 (gl_UNISTD_H): Test whether chdir is declared.
+ (gl_UNISTD_H_DEFAULTS): Initialize GNULIB_CHDIR.
+ * modules/unistd (Makefile.am): Substitute GNULIB_CHDIR.
+ * tests/test-unistd-c++.cc: Check signature of chdir.
+ * doc/posix-functions/chdir.texi: Mention problem on native Windows.
+ * modules/chdir-long (Depends-on): Add chdir.
+ * modules/fchdir (Depends-on): Likewise.
+ * modules/rename (Depends-on): Likewise.
+ * modules/savewd (Depends-on): Likewise.
+
+ rmdir: Support for mingw, MSVC 9.
+ * lib/unistd.in.h: Include <io.h> and <direct.h> also for rmdir.
+ * doc/posix-functions/getcwd.texi: Mention problem on native Windows.
+
+ getcwd: Tweak for MSVC 9.
+ * lib/unistd.in.h: Update comments.
+ * doc/posix-functions/getcwd.texi: Mention problem on MSVC 9.
+
+2011-09-22 Bruno Haible <bruno@clisp.org>
+
+ strerror_r-posix: Avoid a link error on MSVC.
+ * m4/strerror_r.m4 (gl_PREREQ_STRERROR_R): Check for snprintf.
+ * lib/strerror_r.c (snprintf): Define to _snprintf if it doesn't exist.
+
+2011-09-22 Bruno Haible <bruno@clisp.org>
+
+ select: Avoid link errors on MSVC.
+ * m4/select.m4 (gl_FUNC_SELECT): Determine LIB_SELECT.
+ * modules/select (Link): Replace $(LIBSOCKET) with $(LIB_SELECT).
+ * modules/pselect (Link): Likewise.
+ * NEWS: Mention the change.
+ * modules/select-tests (Makefile.am): Link test-select, test-select-fd,
+ test-select-stdin against $(LIB_SELECT).
+ * modules/pselect-tests (Makefile.am): Link test-pselect against
+ $(LIB_SELECT).
+
+2011-09-22 Bruno Haible <bruno@clisp.org>
+
+ select: Avoid compilation error on MSVC.
+ * lib/select.c: Don't include <stdbool.h>.
+
+2011-09-21 Bruno Haible <bruno@clisp.org>
+
+ Consolidate all uses of PATH_MAX in *.m4 files.
+ * m4/pathmax.m4 (gl_PATHMAX_SNIPPET, gl_PATHMAX_SNIPPET_PREREQ): New
+ macros.
+ * m4/chdir-long.m4 (gl_FUNC_CHDIR_LONG): Use gl_PATHMAX_SNIPPET_PREREQ
+ and gl_PATHMAX_SNIPPET.
+ * m4/getcwd-abort-bug.m4 (gl_FUNC_GETCWD_ABORT_BUG): Likewise.
+ * m4/getcwd-path-max.m4 (gl_FUNC_GETCWD_PATH_MAX): Likewise.
+ * modules/chdir-long (Files): Add m4/pathmax.m4.
+ * modules/getcwd (Files): Likewise.
+
+2011-09-21 Bruno Haible <bruno@clisp.org>
+
+ ftruncate: Un-deprecate, concentrate on Win32 support.
+ * modules/ftruncate (Status, Notice): Remove sections.
+ (Depends-on): Add largefile.
+ * m4/ftruncate.m4 (gl_FUNC_FTRUNCATE): Drop failure message on
+ non-mingw platforms.
+ * lib/ftruncate.c: Remove code for the older platforms. For Win32,
+ include <io.h>.
+ * modules/perror-tests (Depends-on): Add ftruncate.
+ * doc/posix-functions/ftruncate.texi: Mention the MSVC problem and the
+ 'ftruncate' module.
+
+2011-09-21 Bruno Haible <bruno@clisp.org>
+
+ Add dependencies to new dirent related modules.
+ * modules/opendir (Depends-on): Add closedir.
+ * modules/getcwd (Depends-on): Add opendir, closedir.
+ * modules/dirent-safer-tests (Depends-on): Likewise.
+ * modules/fdopendir-tests (Depends-on): Likewise.
+ * modules/rename-tests (Depends-on): Add opendir, readdir, closedir.
+ * modules/renameat-tests (Depends-on): Likewise.
+
+2011-09-21 Bruno Haible <bruno@clisp.org>
+
+ opendir: Avoid compilation error on mingw.
+ * lib/opendir.c: Include <stddef.h> always. Include <unistd.h> as well.
+ * modules/opendir (Depends-on): Add unistd.
+
+2011-09-21 Bruno Haible <bruno@clisp.org>
+
+ ftruncate tests: Avoid a test failure on mingw.
+ * tests/test-ftruncate.c (main): Allow a failure with EACCES.
+
+2011-09-21 Bruno Haible <bruno@clisp.org>
+
+ select tests: Avoid test failures on OSF/1 5.1 and mingw.
+ * tests/test-select.h (test_bad_fd): Disable all tests on OSF/1 and
+ native Windows.
+
+2011-09-21 Bruno Haible <bruno@clisp.org>
+
+ New module 'fdopen'.
+ * lib/stdio.in.h (fdopen): New declaration.
+ * lib/fdopen.c: New file.
+ * m4/fdopen.m4: New file.
+ * m4/stdio_h.m4 (gl_STDIO_H_DEFAULTS): Initialize GNULIB_FDOPEN,
+ REPLACE_FDOPEN.
+ * modules/stdio (Makefile.am): Substitute GNULIB_FDOPEN,
+ REPLACE_FDOPEN.
+ * modules/fdopen: New file.
+ * modules/stdio-tests (Depends-on): Remove fdopen-tests.
+ * tests/test-stdio-c++.cc: Check signature of fdopen.
+ * doc/posix-functions/fdopen.texi: Mention the new module.
+
+2011-09-21 Bruno Haible <bruno@clisp.org>
+
+ unlockpt tests: Avoid test failure on NetBSD 5.1.
+ * tests/test-unlockpt.c (main): Skip the EBADF tests on NetBSD.
+ * doc/posix-functions/unlockpt.texi: Mention the bug on NetBSD.
+
+2011-09-21 Bruno Haible <bruno@clisp.org>
+
+ getlogin, getlogin_r tests: Avoid test failure on Linux/SPARC.
+ * tests/test-getlogin.c (main): Allow a failure with EINVAL.
+ * tests/test-getlogin_r.c (main): Likewise.
+
+2011-09-20 Bruno Haible <bruno@clisp.org>
+
+ time tests: Don't require pid_t.
+ * 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.
+
+2011-09-20 Bruno Haible <bruno@clisp.org>
+
+ fsync tests: Avoid a test failure on mingw.
+ * tests/test-fsync.c (main): Allow a failure with EIO.
+
+2011-09-20 Bruno Haible <bruno@clisp.org>
+
+ euidaccess: Update comments.
+ * m4/euidaccess.m4 (gl_PREREQ_EUIDACCESS): Update comments.
+
+2011-09-20 Bruno Haible <bruno@clisp.org>
+
+ Ensure EBADF returns for socket functions on mingw.
+ * lib/accept.c (rpl_accept): Fail with error EBADF if the file
+ descriptor is invalid.
+ * lib/bind.c (rpl_bind): Likewise.
+ * lib/connect.c (rpl_connect): Likewise.
+ * lib/getpeername.c (rpl_getpeername): Likewise.
+ * lib/getsockname.c (rpl_getsockname): Likewise.
+ * lib/getsockopt.c (rpl_getsockopt): Likewise.
+ * lib/listen.c (rpl_listen): Likewise.
+ * lib/recv.c (rpl_recv): Likewise.
+ * lib/recvfrom.c (rpl_recvfrom): Likewise.
+ * lib/send.c (rpl_send): Likewise.
+ * lib/sendto.c (rpl_sendto): Likewise.
+ * lib/setsockopt.c (rpl_setsockopt): Likewise.
+ * lib/shutdown.c (rpl_shutdown): Likewise.
+
+2011-09-20 Bruno Haible <bruno@clisp.org>
+
+ select tests: EBADF tests.
+ * tests/test-select.h (do_select_bad_fd, do_select_bad_fd_nowait,
+ test_bad_fd): New functions.
+ (test_function): Invoke also test_bad_fd.
+
+2011-09-20 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'posix_spawn_file_actions_addopen.
+ * modules/posix_spawn_file_actions_addopen-tests: New file.
+ * tests/test-posix_spawn_file_actions_addopen.c: New file.
+
+ Tests for module 'posix_spawn_file_actions_adddup2'.
+ * modules/posix_spawn_file_actions_adddup2-tests: New file.
+ * tests/test-posix_spawn_file_actions_adddup2.c: New file.
+
+ Tests for module 'posix_spawn_file_actions_addclose'.
+ * modules/posix_spawn_file_actions_addclose-tests: New file.
+ * tests/test-posix_spawn_file_actions_addclose.c: New file.
+
+2011-09-20 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'unlockpt'.
+ * modules/unlockpt-tests: New file.
+ * tests/test-unlockpt.c: New file.
+ * doc/posix-functions/unlockpt.texi: Mention the Cygwin 1.7 problem.
+
+ Tests for module 'grantpt'.
+ * modules/grantpt-tests: New file.
+ * tests/test-grantpt.c: New file.
+ * doc/posix-functions/grantpt.texi: Mention the Cygwin 1.7 problem.
+
+2011-09-20 Bruno Haible <bruno@clisp.org>
+
+ freopen tests: EBADF tests.
+ * tests/test-freopen.c: Include errno.h, unistd.h.
+ (main): Add tests for EBADF, commented out for the moment.
+
+ fclose tests: EBADF tests.
+ * tests/test-fclose.c (main): Add tests for EBADF.
+
+ fflush tests: EBADF tests.
+ * tests/test-fflush.c: Include errno.h, macros.h.
+ (main): Add tests for EBADF.
+
+ ftello tests: EBADF tests.
+ * tests/test-ftello4.sh: New file.
+ * tests/test-ftello4.c: New file.
+ * modules/ftello-tests (Files): Add them.
+ (Makefile.am): Arrange to compile test-ftello4 and run test-ftello4.sh.
+
+ fseeko tests: EBADF tests.
+ * tests/test-fseeko4.sh: New file.
+ * tests/test-fseeko4.c: New file.
+ * modules/fseeko-tests (Files): Add them.
+ (Makefile.am): Arrange to compile test-fseeko4 and run test-fseeko4.sh.
+
+ Tests for function fputc().
+ * modules/fputc-tests: New file.
+ * tests/test-fputc.c: New file.
+ * modules/stdio-tests (Depends-on): Add fputc-tests.
+
+ Tests for function fgetc().
+ * modules/fgetc-tests: New file.
+ * tests/test-fgetc.c: New file.
+ * modules/stdio-tests (Depends-on): Add fgetc-tests.
+
+ Tests for function fdopen().
+ * modules/fdopen-tests: New file.
+ * tests/test-fdopen.c: New file.
+ * modules/stdio-tests (Depends-on): Add fdopen-tests.
+
+ Tests for module 'vdprintf'.
+ * modules/vdprintf-tests: New file.
+ * tests/test-vdprintf.c: New file.
+
+ Tests for module 'dprintf'.
+ * modules/dprintf-tests: New file.
+ * tests/test-dprintf.c: New file.
+
+2011-09-20 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'ioctl'.
+ * modules/ioctl-tests: New file.
+ * tests/test-ioctl.c: New file.
+
+2011-09-20 Bruno Haible <bruno@clisp.org>
+
+ fcntl tests: EBADF tests.
+ * tests/test-fcntl.c (main): Add more tests for EBADF.
+
+2011-09-20 Bruno Haible <bruno@clisp.org>
+
+ utimensat tests: EBADF tests.
+ * tests/test-utimensat.c (main): Add tests for EBADF.
+
+ renameat tests: EBADF tests.
+ * tests/test-renameat.c (main): Add tests for EBADF.
+
+ mkfifoat tests: EBADF tests.
+ * tests/test-mkfifoat.c (main): Add tests for EBADF.
+
+ readlinkat tests: EBADF tests.
+ * tests/test-readlinkat.c (main): Add tests for EBADF.
+
+ symlinkat tests: EBADF tests.
+ * tests/test-symlinkat.c (main): Add tests for EBADF.
+
+ linkat tests: EBADF tests.
+ * tests/test-linkat.c (main): Add tests for EBADF.
+
+ Tests for module 'faccessat'.
+ * modules/faccessat-tests: New file.
+ * tests/test-faccessat.c: New file.
+
+ fdopendir tests: EBADF tests.
+ * tests/test-fdopendir.c (main): Add more tests for EBADF.
+
+ openat tests: EBADF tests.
+ * tests/test-fchownat.c (main): Add tests for EBADF.
+ * tests/test-fstatat.c (main): Likewise.
+ * tests/test-mkdirat.c (main): Likewise.
+ * tests/test-openat.c (main): Likewise.
+ * tests/test-unlinkat.c (main): Likewise.
+ * tests/test-fchmodat.c: New file.
+ * modules/openat-tests (Files): Add tests/test-fchmodat.c.
+ (Makefile.am): Also run 'test-fchmodat'.
+
+2011-09-20 Bruno Haible <bruno@clisp.org>
+
+ utimens, futimens, fdutimensat tests: EBADF tests.
+ * tests/test-futimens.h (test_futimens): Add more tests for EBADF.
+
+ Tests for function fstat().
+ * modules/fstat-tests: New file.
+ * tests/test-fstat.c: New file.
+ * modules/sys_stat-tests (Depends-on): Add fstat-tests.
+
+2011-09-20 Bruno Haible <bruno@clisp.org>
+
+ test-ttyname_r tests: EBADF tests.
+ * tests/test-ttyname_r.c (main): Add tests for EBADF.
+
+ Tests for module 'isatty'.
+ * modules/isatty-tests: New file.
+ * tests/test-isatty.c: New file.
+
+ Tests for module 'write'.
+ * modules/write-tests: New file.
+ * tests/test-write.c: New file.
+
+ Tests for module 'read'.
+ * modules/read-tests: New file.
+ * tests/test-read.c: New file.
+
+ pwrite tests: EBADF tests.
+ * tests/test-pwrite.c (main): Add tests for EBADF.
+
+ pread tests: EBADF tests.
+ * tests/test-pread.c (main): Add tests for EBADF.
+
+ lseek tests: EBADF tests.
+ * tests/test-lseek.c (main): Add more tests for EBADF.
+
+ Tests for module 'ftruncate'.
+ * modules/ftruncate-tests: New file.
+ * tests/test-ftruncate.sh: New file.
+ * tests/test-ftruncate.c: New file.
+
+ fsync tests: EBADF tests.
+ * tests/test-fsync.c (main): Add more tests for EBADF.
+
+ fdatasync tests: EBADF tests.
+ * tests/test-fdatasync.c (main): Add more tests for EBADF.
+
+ Tests for module 'fchown'.
+ * modules/fchown-tests: New file.
+ * tests/test-fchown.c: New file.
+
+ Tests for module 'fchmod'.
+ * modules/fchmod-tests: New file.
+ * tests/test-fchmod.c: New file.
+
+ fchdir tests: EBADF tests.
+ * tests/test-fchdir.c (main): Add more tests for EBADF.
+
+ dup2 tests: EBADF tests.
+ * tests/test-dup2.c (main): Add more tests for EBADF.
+
+ Tests for module 'dup'.
+ * modules/dup-tests: New file.
+ * tests/test-dup.c: New file.
+
+ Tests for module 'close'.
+ * modules/close-tests: New file.
+ * tests/test-close.c: New file.
+
+2011-09-20 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'shutdown'.
+ * modules/shutdown-tests: New file.
+ * tests/test-shutdown.c: New file.
+
+ Tests for module 'setsockopt'.
+ * modules/setsockopt-tests: New file.
+ * tests/test-setsockopt.c: New file.
+
+ Tests for module 'sendto'.
+ * modules/sendto-tests: New file.
+ * tests/test-sendto.c: New file.
+
+ Tests for module 'send'.
+ * modules/send-tests: New file.
+ * tests/test-send.c: New file.
+
+ Tests for module 'recvfrom'.
+ * modules/recvfrom-tests: New file.
+ * tests/test-recvfrom.c: New file.
+
+ Tests for module 'recv'.
+ * modules/recv-tests: New file.
+ * tests/test-recv.c: New file.
+
+ Tests for module 'listen'.
+ * modules/listen-tests: New file.
+ * tests/test-listen.c: New file.
+
+ Tests for module 'getsockopt'.
+ * modules/getsockopt-tests: New file.
+ * tests/test-getsockopt.c: New file.
+
+ Tests for module 'getsockname'.
+ * modules/getsockname-tests: New file.
+ * tests/test-getsockname.c: New file.
+
+ Tests for module 'getpeername'.
+ * modules/getpeername-tests: New file.
+ * tests/test-getpeername.c: New file.
+
+ Tests for module 'connect'.
+ * modules/connect-tests: New file.
+ * tests/test-connect.c: New file.
+
+ Tests for module 'bind'.
+ * modules/bind-tests: New file.
+ * tests/test-bind.c: New file.
+
+ accept4 tests: Fix for native Windows.
+ * tests/test-accept4.c: Include sockets.h.
+ (main): Invoke gl_sockets_startup.
+ * modules/accept4-tests (Depends-on): Add sockets.
+
+ accept tests: Fix for native Windows.
+ * tests/test-accept.c: Include sockets.h.
+ (main): Invoke gl_sockets_startup.
+ * modules/accept-tests (Depends-on): Add sockets.
+
+2011-09-19 Bruno Haible <bruno@clisp.org>
+
+ msvc-inval: Require a semicolon after DONE_MSVC_INVAL.
+ * lib/msvc-inval.h (TRY_MSVC_INVAL, DONE_MSVC_INVAL): Wrap in a
+ do...while(0).
+ * lib/dup2.c (rpl_dup2): Add a semicolon after DONE_MSVC_INVAL.
+ Suggested by Paul Eggert.
+
+2011-09-19 Bruno Haible <bruno@clisp.org>
+
+ sched: Ensure pid_t is defined.
+ * 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>.
+
+2011-09-19 Bruno Haible <bruno@clisp.org>
+
+ msvc-inval: Ensure the entire expansion is a single statement.
+ * lib/msvc-inval.h (TRY_MSVC_INVAL, DONE_MSVC_INVAL): Add an extra pair
+ of braces.
+
+2011-09-19 Jim Meyering <meyering@redhat.com>
+
+ tests: use printf, not echo in init.sh's warn_ function
+ * tests/init.sh (warn_): Use printf, not echo. The latter would
+ misbehave when given strings containing a backslash or starting
+ with e.g., -n. James Youngman suggested setting IFS.
+
+2011-09-19 Eric Blake <eblake@redhat.com>
+
+ futimens: enhance test
+ * tests/test-futimens.h (test_futimens): Also check for EBADF on
+ closed non-negative fd.
+
+ date: accept 'hence' as opposite of 'ago'
+ * lib/parse-datetime.y (relative_time_table): Add 'hence'.
+ * tests/test-parse-datetime.c (main): Enhance test.
+ Suggested by Jesse Wilson.
+
+2011-09-19 Jim Meyering <meyering@redhat.com>
+
+ getcwd: don't fail in a deep directory on a system without openat
+ Before this change, getcwd would fail when called from a directory
+ of depth PATH_MAX / 3 or greater. That was due to the fact that
+ the non-openat implementation used "..", "../..", "../../..", etc.
+ to access ancestor directories. With too many, that string would
+ be longer than PATH_MAX.
+ * lib/getcwd.c (HAVE_OPENAT_SUPPORT): Define also when we are
+ using gnulib's openat replacement.
+ * m4/openat.m4: Set GNULIB_OPENAT, so getcwd.c knows when
+ we're using the replacement function.
+
+2011-09-14 Martin von Gagern <Martin.vGagern@gmx.net>
+
+ maint.mk: avoid warnings from perl about missing files
+ * top/maint.mk (def_sym_regex): Ignore files listed in
+ $(gl_other_headers_) that do not exist, say because a project
+ does not use a corresponding module.
+
+2011-09-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ stat: use pathmax.h only if needed
+ * lib/stat.c: Include pathmax.h only if REPLACE_FUNC_STAT_DIR.
+ This is better for Emacs, which does not have a mingw port and
+ therefore can avoid the pathmax module.
+
+ utimens: remove dependency on dup2
+ * lib/utimens.c (fdutimens): Don't invoke dup2; it's not needed
+ to work around the Linux kernel bug.
+ * modules/utimens (Depends-on): Remove dup2.
+
+2011-09-18 Bruno Haible <bruno@clisp.org>
+
+ inet_ntop, inet_pton: Look for it also in libresolv.
+ * m4/inet_ntop.m4 (gl_FUNC_INET_NTOP): If the function was not found in
+ libnsl, search for it in libresolv.
+ * m4/inet_pton.m4 (gl_FUNC_INET_PTON): Likewise.
+ Needed on Solaris 7.
+
+2011-09-18 Bruno Haible <bruno@clisp.org>
+
+ accept, accept4 tests: Avoid link error on Solaris.
+ * modules/accept-tests (Makefile.am): Link test-accept against
+ $(LIBSOCKET).
+ * modules/accept4-tests (Makefile.am): Link test-accept4 against
+ $(LIBSOCKET).
+
+ accept4: Avoid link error on Solaris.
+ * modules/accept4 (Link): New section.
+
+ socket functions: Avoid link errors on Solaris.
+ * modules/accept (Depends-on): Add socketlib.
+ (Link): New section.
+ * modules/bind (Depends-on): Add socketlib.
+ (Link): New section.
+ * modules/connect (Depends-on): Add socketlib.
+ (Link): New section.
+ * modules/getpeername (Depends-on): Add socketlib.
+ (Link): New section.
+ * modules/getsockname (Depends-on): Add socketlib.
+ (Link): New section.
+ * modules/getsockopt (Depends-on): Add socketlib.
+ (Link): New section.
+ * modules/listen (Depends-on): Add socketlib.
+ (Link): New section.
+ * modules/recv (Depends-on): Add socketlib.
+ (Link): New section.
+ * modules/recvfrom (Depends-on): Add socketlib.
+ (Link): New section.
+ * modules/send (Depends-on): Add socketlib.
+ (Link): New section.
+ * modules/sendto (Depends-on): Add socketlib.
+ (Link): New section.
+ * modules/setsockopt (Depends-on): Add socketlib.
+ (Link): New section.
+ * modules/shutdown (Depends-on): Add socketlib.
+ (Link): New section.
+ * modules/socket (Depends-on): Add socketlib.
+ (Link): New section.
+
+2011-09-18 Bruno Haible <bruno@clisp.org>
+
+ ptsname tests: Let the test fail rather than hang (e.g. on AIX 5.1).
+ * tests/test-ptsname.c (main): Terminate the test if it takes longer
+ than 5 seconds.
+ * modules/ptsname-tests (configure.ac): Test for alarm.
+
+2011-09-18 Bruno Haible <bruno@clisp.org>
+
+ posix_spawn_file_actions_add*: Fix module dependencies.
+ * modules/posix_spawn_file_actions_addclose (Dependencies): Add
+ posix_spawn_file_actions_init.
+ * modules/posix_spawn_file_actions_adddup2 (Dependencies): Likewise.
+ * modules/posix_spawn_file_actions_addopen (Dependencies): Likewise.
+
+2011-09-18 Bruno Haible <bruno@clisp.org>
+
+ rename, renameat tests: Avoid test failures on FreeBSD 6.4.
+ * tests/test-rename.h (test_rename): Allow error code EEXIST.
+ * tests/test-renameat.c (main): Likewise.
+
+2011-09-18 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'accept4'.
+ * modules/accept4-tests: New file.
+ * tests/test-accept4.c: New file.
+
+2011-09-18 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'accept'.
+ * modules/accept-tests: New file.
+ * tests/test-accept.c: New file.
+
+2011-09-18 Bruno Haible <bruno@clisp.org>
+
+ dup2: Support for MSVC.
+ * lib/dup2.c: Include msvc-inval.h.
+ (rpl_dup2): Handle invalid parameter notifications during dup2 and
+ _get_osfhandle calls.
+ * modules/dup2 (Depends-on): Add msvc-inval.
+ * doc/posix-functions/dup2.texi: Mention problem on MSVC.
+
+ New module 'msvc-inval'.
+ * lib/msvc-inval.h: New file.
+ * lib/msvc-inval.c: New file.
+ * m4/msvc-inval.m4: New file.
+ * modules/msvc-inval: New file.
+
+2011-09-17 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'pclose'.
+ * modules/pclose-tests: New file.
+
+ New module 'pclose'.
+ * lib/stdio.in.h (pclose): New declaration.
+ * lib/pclose.c: New file.
+ * m4/pclose.m4: New file.
+ * m4/stdio_h.m4 (gl_STDIO_H): Test whether pclose is declared.
+ (gl_STDIO_H_DEFAULTS): Initialize GNULIB_PCLOSE, HAVE_PCLOSE.
+ * modules/stdio (Makefile.am): Substitute GNULIB_PCLOSE, HAVE_PCLOSE.
+ * modules/pclose: New file.
+ * modules/popen-tests (Depends-on): Add pclose.
+ * modules/popen-safer-tests (Depends-on): Likewise.
+ * doc/posix-functions/pclose.texi: Mention the new module.
+
+2011-09-17 Bruno Haible <bruno@clisp.org>
+
+ popen: Support for MSVC.
+ * lib/stdio.in.h (popen): Declare it if the system lacks this function.
+ * lib/popen.c (popen): Provide alternate definition for native Windows.
+ * m4/popen.m4 (gl_FUNC_POPEN): Test if popen exists. Set HAVE_POPEN.
+ * m4/stdio_h.m4 (gl_STDIO_H_DEFAULTS): Initialize HAVE_POPEN.
+ * modules/popen (Depends-on, configure.ac): Update condition.
+ * modules/stdio (Makefile.am): Substitute HAVE_POPEN.
+ * doc/posix-functions/popen.texi: Mention that the MSVC problem is
+ fixed.
+
+2011-09-17 Bruno Haible <bruno@clisp.org>
+
+ isnanl, isnand, isnanf: Work around MSVC bug.
+ * lib/isnan.c (FUNC): Use alternate ways of computing NaN and Infinity.
+
+2011-09-17 Bruno Haible <bruno@clisp.org>
+
+ sys_socket tests: Fix recent mistake.
+ * tests/test-sys_socket.c (t1): Avoid collision of identifiers.
+
+2011-09-17 Bruno Haible <bruno@clisp.org>
+
+ putenv: Support for MSVC.
+ * modules/putenv (Depends-on): Add environ.
+ * lib/putenv.c (environ): Disable declaration.
+ * lib/unistd.in.h: Update comment.
+
+2011-09-17 Bruno Haible <bruno@clisp.org>
+
+ math: Avoid macro redefinition warnings on MSVC.
+ * lib/math.in.h (ceilf, ceill, floorf, floorl, frexpl, ldexpl):
+ Undefine before redefining.
+
+2011-09-17 Bruno Haible <bruno@clisp.org>
+
+ doc: Mention functions which are declared as macros.
+ * doc/posix-functions/*[fl].texi: Mention that some functions are
+ defined as macros with arguments only.
+
+2011-09-17 Bruno Haible <bruno@clisp.org>
+
+ Add dependencies to new dirent related modules.
+ * modules/backupfile (Depends-on): Add opendir, readdir, closedir.
+ * modules/fts (Depends-on): Likewise.
+ * modules/glob (Depends-on): Likewise.
+ * modules/savedir (Depends-on): Likewise.
+ * modules/scandir (Depends-on): Likewise.
+ * modules/dirent-safer (Depends-on): Add opendir, closedir.
+ * modules/fdopendir (Depends-on): Add opendir.
+
+2011-09-17 Bruno Haible <bruno@clisp.org>
+
+ inet_pton: Support for MSVC on Windows Vista or newer.
+ * lib/arpa_inet.in.h (inet_pton): Also consider REPLACE_INET_PTON.
+ * lib/inet_pton.c (rpl_inet_pton): Use a simple wrapper if
+ HAVE_DECL_INET_PTON is defined.
+ * m4/inet_pton.m4 (gl_FUNC_INET_PTON): Invoke gl_PREREQ_SYS_H_WINSOCK2.
+ On platforms with <winsock2.h>, test whether inet_pton is declared in
+ <ws2tcpip.h>. If so, arrange to replace it.
+ * m4/arpa_inet_h.m4 (gl_ARPA_INET_H_DEFAULTS): Initialize
+ REPLACE_INET_PTON.
+ * modules/arpa_inet (Makefile.am): Substitute REPLACE_INET_PTON.
+ * modules/inet_pton (Files): Add m4/sys_socket_h.m4.
+ (Depends-on, configure.ac): Update condition.
+ * doc/posix-functions/inet_pton.texi: Mention the MSVC problem.
+
+2011-09-17 Bruno Haible <bruno@clisp.org>
+
+ inet_ntop: Support for MSVC on Windows Vista or newer.
+ * lib/arpa_inet.in.h (inet_ntop): Also consider REPLACE_INET_NTOP.
+ * lib/inet_ntop.c (rpl_inet_ntop): Use a simple wrapper if
+ HAVE_DECL_INET_NTOP is defined.
+ * m4/inet_ntop.m4 (gl_FUNC_INET_NTOP): Invoke gl_PREREQ_SYS_H_WINSOCK2.
+ On platforms with <winsock2.h>, test whether inet_ntop is declared in
+ <ws2tcpip.h>. If so, arrange to replace it.
+ * m4/arpa_inet_h.m4 (gl_ARPA_INET_H_DEFAULTS): Initialize
+ REPLACE_INET_NTOP.
+ * modules/arpa_inet (Makefile.am): Substitute REPLACE_INET_NTOP.
+ * modules/inet_ntop (Files): Add m4/sys_socket_h.m4.
+ (Depends-on, configure.ac): Update condition.
+ * doc/posix-functions/inet_ntop.texi: Mention the MSVC problem.
+
+2011-09-16 Eric Blake <eblake@redhat.com>
+
+ test-fsync: yet another enhancement
+ * tests/test-fsync.c (main): Also test behavior on read-only text
+ file.
+
+2011-09-16 Bruno Haible <bruno@clisp.org>
+
+ Enhance fsync, fdatasync tests.
+ * tests/test-fsync.c (main): Test both STDIN_FILENO and STDOUT_FILENO.
+ * tests/test-fdatasync.c (main): Likewise.
+
+2011-09-16 Bruno Haible <bruno@clisp.org>
+
+ Support for MSVC compiler: Ensure mode_t gets defined.
+ * m4/fcntl_h.m4 (gl_FCNTL_H): Require AC_TYPE_MODE_T.
+ * m4/spawn_h.m4 (gl_SPAWN_H): Likewise.
+ * m4/sys_stat_h.m4 (gl_HEADER_SYS_STAT_H): Likewise.
+ * m4/sys_types_h.m4 (gl_SYS_TYPES_H): Likewise.
+ * tests/test-fcntl-h.c: Check that mode_t is defined.
+ * tests/test-sys_stat.c: Likewise.
+ * tests/test-sys_types.c: Likewise.
+ * doc/posix-headers/fcntl.texi: Mention the missing mode_t problem.
+ * doc/posix-headers/sys_stat.texi: Likewise.
+ * doc/posix-headers/sys_types.texi: Likewise.
+
+2011-09-16 Bruno Haible <bruno@clisp.org>
+
+ sys_stat: Support for MSVC.
+ * 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.
+
+2011-09-16 Bruno Haible <bruno@clisp.org>
+
+ Support for MSVC compiler: Ensure off_t gets defined.
+ * lib/unistd.in.h: Include <sys/types.h>.
+ * tests/test-fcntl-h.c: Check that off_t is defined.
+ * tests/test-sys_stat.c: Likewise.
+ * tests/test-sys_types.c: Likewise.
+
+2011-09-16 Eric Blake <eblake@redhat.com>
+
+ fdatasync: port to Solaris
+ * m4/fdatasync.m4 (gl_FUNC_FDATASYNC): Set LIB_FDATASYNC.
+ * modules/fdatasync (Link): Document it.
+ * modules/fdatasync-tests (test_fdatasync_LDADD): Link with it.
+
+ fdatasync: port to MacOS X 10.7
+ * m4/fdatasync.m4 (gl_FUNC_FDATASYNC): Check for present but not
+ declared.
+ * m4/unistd_h.m4 (gl_UNISTD_H_DEFAULTS): Another default.
+ * modules/unistd (Makefile.am): Substitute it.
+ * lib/unistd.in.h (fdatasync): Declare on MacOS.
+ * doc/posix-functions/fdatasync.texi (fdatasync): Document it.
+
+ fdatasync: minor improvements
+ * modules/fdatasync (Depends-on): Add condition for fsync.
+ * lib/fdatasync.c (fdatasync): Add comment.
+ * tests/test-unistd-c++.cc: Test fdatasync.
+
+ unistd: update refs to newer POSIX
+ * lib/unistd.in.h: Prefer POSIX 2008 over 2001.
+ Suggested by Bruno Haible.
+
+ fdatasync: new module
+ * modules/fsync (Description): Document difference to fdatasync.
+ * modules/fdatasync: New module.
+ * m4/fdatasync.m4 (gl_FUNC_FDATASYNC): New file.
+ * lib/fdatasync.c (fdatasync): Likewise.
+ * m4/unistd_h.m4 (gl_UNISTD_H, gl_UNISTD_H_DEFAULTS): Set up
+ defaults.
+ * modules/unistd (Makefile.am): Set witnesses.
+ * lib/unistd.in.h (fdatasync): Declare.
+ * MODULES.html.sh: Document it.
+ * doc/posix-functions/fdatasync.texi (fdatasync): Likewise.
+ * modules/fdatasync-tests: New test.
+ * tests/test-fdatasync.c: Likewise.
+
+2011-09-16 Eric Blake <eblake@redhat.com>
+
+ test-fsync: enhance tests
+ * modules/fsync-tests (Depends-on): Add errno, for mingw.
+ * tests/test-fsync.c (main): Enhance test.
+
+2011-09-15 Bruno Haible <bruno@clisp.org>
+
+ Support for MSVC compiler: Ensure ssize_t gets defined.
+ * doc/posix-headers/sys_types.texi: Mention the missing ssize_t problem.
+ * doc/posix-headers/stdio.texi: Likewise.
+ * modules/stdio (Depends-on): Add ssize_t.
+ * modules/sys_socket (Depends-on): Likewise.
+ * modules/sys_types (Depends-on): Likewise.
+ * modules/sys_uio (Depends-on): Likewise.
+ * modules/unistd (Depends-on): Likewise.
+ * tests/test-sys_socket.c: Check that size_t and ssize_t are defined.
+ * tests/test-sys_types.c: Check that ssize_t is defined.
+
+2011-09-14 Bruno Haible <bruno@clisp.org>
+
+ Avoid using #, the m4 comment starter character, near brackets.
+ * m4/absolute-header.m4 (gl_ABSOLUTE_HEADER_ONE): Use |, not #, as
+ delimiter character in sed expressions.
+ * m4/include_next.m4 (gl_NEXT_HEADERS_INTERNAL): Likewise.
+ Suggested by Eric Blake.
+
+ Properly quote AC_CHECK_DECLS' 4th argument.
+ * m4/c-stack.m4 (gl_PREREQ_C_STACK): Double-quote AC_CHECK_DECLS' 4th
+ argument.
+ * m4/ceilf.m4 (gl_FUNC_CEILF): Likewise.
+ * m4/ceill.m4 (gl_FUNC_CEILL): Likewise.
+ * m4/dirfd.m4 (gl_FUNC_DIRFD): Likewise.
+ * m4/floorf.m4 (gl_FUNC_FLOORF): Likewise.
+ * m4/floorl.m4 (gl_FUNC_FLOORL): Likewise.
+ * m4/fnmatch.m4 (gl_PREREQ_FNMATCH): Likewise.
+ * m4/getaddrinfo.m4 (gl_PREREQ_GETADDRINFO): Likewise.
+ * m4/getdomainname.m4 (gl_FUNC_GETDOMAINNAME): Likewise.
+ * m4/gethrxtime.m4 (gl_GETHRXTIME): Likewise.
+ * m4/getpass.m4 (gl_PREREQ_GETPASS): Likewise.
+ * m4/inet_ntop.m4 (gl_FUNC_INET_NTOP): Likewise.
+ * m4/inet_pton.m4 (gl_FUNC_INET_PTON): Likewise.
+ * m4/isfinite.m4 (gl_ISFINITE): Likewise.
+ * m4/isinf.m4 (gl_ISINF): Likewise.
+ * m4/logb.m4 (gl_FUNC_LOGB): Likewise.
+ * m4/readutmp.m4 (gl_READUTMP): Likewise.
+ * m4/regex.m4 (gl_PREREQ_REGEX): Likewise.
+ * m4/round.m4 (gl_FUNC_ROUND): Likewise.
+ * m4/roundf.m4 (gl_FUNC_ROUNDF): Likewise.
+ * m4/roundl.m4 (gl_FUNC_ROUNDL): Likewise.
+ * m4/signbit.m4 (gl_SIGNBIT): Likewise.
+ * m4/sleep.m4 (gl_FUNC_SLEEP): Likewise.
+ * m4/strsignal.m4 (gl_PREREQ_STRSIGNAL): Likewise.
+ * m4/trunc.m4 (gl_FUNC_TRUNC): Likewise.
+ * m4/truncf.m4 (gl_FUNC_TRUNCF): Likewise.
+ * m4/truncl.m4 (gl_FUNC_TRUNCL): Likewise.
+ * m4/vasnprintf.m4 (gl_PREREQ_VASNPRINTF): Likewise.
+ * m4/wctob.m4 (gl_FUNC_WCTOB): Likewise.
+ * m4/wcwidth.m4 (gl_FUNC_WCWIDTH): Likewise.
+ Reported by Eric Blake.
+
+ Properly quote AC_CHECK_DECL's 4th argument.
+ * m4/acosl.m4 (gl_FUNC_ACOSL): Double-quote AC_CHECK_DECL's 4th
+ argument.
+ * m4/argp.m4 (gl_ARGP): Likewise.
+ * m4/asinl.m4 (gl_FUNC_ASINL): Likewise.
+ * m4/atanl.m4 (gl_FUNC_ATANL): Likewise.
+ * m4/cosl.m4 (gl_FUNC_COSL): Likewise.
+ * m4/expl.m4 (gl_FUNC_EXPL): Likewise.
+ * m4/frexpl.m4 (gl_FUNC_FREXPL, gl_FUNC_FREXPL_NO_LIBM): Likewise.
+ * m4/getloadavg.m4 (gl_GETLOADAVG): Likewise.
+ * m4/ldexpl.m4 (gl_FUNC_LDEXPL): Likewise.
+ * m4/logl.m4 (gl_FUNC_LOGL): Likewise.
+ * m4/printf-frexpl.m4 (gl_FUNC_PRINTF_FREXPL): Likewise.
+ * m4/sinl.m4 (gl_FUNC_SINL): Likewise.
+ * m4/sqrtl.m4 (gl_FUNC_SQRTL): Likewise.
+ * m4/tanl.m4 (gl_FUNC_TANL): Likewise.
+ Reported by Eric Blake.
+
+2011-09-14 Eric Blake <eblake@redhat.com>
+
+ opendir: avoid compile warning
+ * lib/opendir.c (includes): Always include errno.h.
+ Reported by Tatsuro MATSUOKA.
+
+2011-09-14 Jim Meyering <meyering@redhat.com>
+
+ maint.mk: sc_tight_scope: propagate failure from sub-make
+ * top/maint.mk (sc_tight_scope): Actually initialize and use $fail.
+ Reported by Martin von Gagern.
+
+2011-09-13 Bruno Haible <bruno@clisp.org>
+
+ tempname: Support for MSVC.
+ * doc/posix-headers/fcntl.texi: Document the problem with O_ACCMODE on
+ MSVC.
+ * modules/tempname (Depends-on): Add fcntl-h.
+
+2011-09-13 Bruno Haible <bruno@clisp.org>
+
+ sys_time: Support for MSVC.
+ * m4/sys_time_h.m4 (gl_HEADER_SYS_TIME_H_BODY): Invoke
+ gl_PREREQ_SYS_H_WINSOCK2. When testing for 'struct timeval', also
+ include <winsock2.h>.
+ * lib/sys_time.in.h: On MSVC, include <winsock2.h> and hide its
+ function declarations that collide with POSIX.
+ * modules/sys_time (Files): Add m4/sys_socket_h.m4.
+ (Makefile.am): Substitute HAVE_WINSOCK2_H.
+
+2011-09-13 Bruno Haible <bruno@clisp.org>
+
+ stat: Support for MSVC.
+ * lib/stat.c: Include pathmax.h.
+ * modules/stat (Depends-on): Add pathmax.
+
+ pathmax: Support for native Windows.
+ * lib/pathmax.h (PATH_MAX): Define to 260 on native Windows.
+
+2011-09-12 Bruno Haible <bruno@clisp.org>
+
+ New modules 'opendir', 'readdir', 'rewinddir', 'closedir'.
+ * lib/dirent.in.h (struct dirent): New type.
+ (DT_UNKNOWN, DT_FIFO, DT_CHR, DT_DIR, DT_BLK, DT_REG, DT_LNK, DT_SOCK,
+ DT_WHT): New macros.
+ (DIR): New type.
+ (opendir, closedir): Declare only if the module 'opendir' is enabled.
+ (readdir, rewinddir): New declarations.
+ * lib/dirent-private.h: New file.
+ * lib/opendir.c: New file.
+ * lib/readdir.c: New file.
+ * lib/rewinddir.c: New file.
+ * lib/closedir.c: New file.
+ * lib/fchdir.c (rpl_closedir, rpl_opendir): Remove functions.
+ * m4/opendir.m4: New file.
+ * m4/readdir.m4: New file.
+ * m4/rewinddir.m4: New file.
+ * m4/closedir.m4: New file.
+ * m4/fchdir.m4 (gl_FUNC_FCHDIR): Don't set REPLACE_OPENDIR,
+ REPLACE_CLOSEDIR here.
+ * m4/dirent_h.m4 (gl_DIRENT_H): Also check whether closedir, opendir,
+ readdir, rewinddir are declared.
+ (gl_DIRENT_H_DEFAULTS): Initialize GNULIB_OPENDIR, GNULIB_READDIR,
+ GNULIB_REWINDDIR, GNULIB_CLOSEDIR, HAVE_OPENDIR, HAVE_READDIR,
+ HAVE_REWINDDIR, HAVE_CLOSEDIR.
+ * modules/dirent (Makefile.am): Substitute GNULIB_OPENDIR,
+ GNULIB_READDIR, GNULIB_REWINDDIR, GNULIB_CLOSEDIR, HAVE_OPENDIR,
+ HAVE_READDIR, HAVE_REWINDDIR, HAVE_CLOSEDIR.
+ * modules/opendir: New file.
+ * modules/readdir: New file.
+ * modules/rewinddir: New file.
+ * modules/closedir: New file.
+ * doc/posix-functions/opendir.texi: Mention the 'opendir' module.
+ * doc/posix-functions/readdir.texi: Mention the 'readdir' module.
+ * doc/posix-functions/rewinddir.texi: Mention the 'rewinddir' module.
+ * doc/posix-functions/closedir.texi: Mention the 'closedir' module.
+ * NEWS: Mention the 'fchdir' change.
+
+2011-09-11 Bruno Haible <bruno@clisp.org>
+
+ asm-underscore.m4: Support for MSVC.
+ * m4/asm-underscore.m4 (gl_C_ASM): New macro.
+ (gl_ASM_SYMBOL_PREFIX): Require it. Use its results.
+
+2011-09-11 Reuben Thomas <rrt@sc3d.org>
+
+ Doc about crypt functions.
+ * doc/posix-functions/crypt.texi: Expand range of glibc versions
+ needing for _GNU_SOURCE to get crypt.
+ * doc/posix-functions/encrypt.texi: Likewise.
+ * doc/posix-functions/setkey.texi: Likewise.
+
+2011-09-11 Bruno Haible <bruno@clisp.org>
+
+ doc: Update regarding MSVC 9.
+ * doc/gnulib-intro.texi (Target Platforms): Classify MSVC as "rarely
+ tested".
+ * doc/posix-functions/*.texi: Update with info about MSVC 9.
+ * doc/posix-headers/*.texi: Likewise.
+ * doc/pastposix-functions/*.texi: Likewise.
+ * doc/glibc-functions/*.texi: Likewise.
+ * doc/glibc-headers/*.texi: Likewise.
+
+2011-09-11 Bruno Haible <bruno@clisp.org>
+
+ unistd et al.: Don't assume <unistd.h> exists.
+ * 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.
+
+2011-09-11 Bruno Haible <bruno@clisp.org>
+
+ strcase: Support for MSVC.
+ * modules/strcase (Status, Notice): Remove obsoletion mark.
+ * doc/posix-functions/strcasecmp.texi: Mention MSVC problem.
+ * doc/posix-functions/strncasecmp.texi: Likewise.
+
+ strings: Don't assume <strings.h> exists.
+ * 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.
+
+2011-09-11 Bruno Haible <bruno@clisp.org>
+
+ dirent: Don't assume <dirent.h> exists.
+ * 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.
+
+2011-09-11 Bruno Haible <bruno@clisp.org>
+
+ Fix wint_t on MSVC.
+ * 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.
+
+2011-09-11 Bruno Haible <bruno@clisp.org>
+
+ sys_types: Fix typo.
+ * lib/sys_types.in.h: Fix typo in comment.
+ Reported by Paul Eggert.
+
+ Support for MSVC compiler: Ensure size_t gets defined.
+ * modules/strings (Depends-on): Add 'sys_types'.
+ * modules/sys_uio (Depends-on): Likewise.
+ * lib/sys_uio.in.h: Update comment.
+
+ C++ tests for module 'sys_types'.
+ * modules/sys_types-c++-tests: New file.
+ * tests/test-sys_types-c++.cc: New file.
+
+ Tests for module 'sys_types'.
+ * modules/sys_types-tests: New file.
+ * tests/test-sys_types.c: New file.
+
+ New module 'sys_types'.
+ * 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.
+
+2011-09-11 Bruno Haible <bruno@clisp.org>
+
+ Support for MSVC compiler: Avoid division by a literal 0.
+ * lib/math.in.h (NAN): Define through a function call also on MSVC.
+ * m4/frexp.m4 (gl_FUNC_FREXP_WORKS): Divide by 'zero' instead of 0.0.
+ * m4/printf.m4 (gl_PRINTF_INFINITE, gl_PRINTF_DIRECTIVE_A,
+ gl_PRINTF_DIRECTIVE_F, gl_PRINTF_FLAG_ZERO): Likewise.
+ (gl_PRINTF_INFINITE_LONG_DOUBLE): Divide by 'zeroL' instead of 0.0L.
+ * tests/infinity.h: New file.
+ * tests/nan.h (NaNf, NaNd, NaNl): Define through a function call also
+ on MSVC.
+ * tests/test-ceilf1.c: Include infinity.h.
+ (main): Use Infinityf.
+ * tests/test-ceil1.c: Include infinity.h.
+ (main): Use Infinityd.
+ * tests/test-ceill.c: Include infinity.h.
+ (main): Use Infinityl.
+ * tests/test-dprintf-posix.c: Include infinity.h.
+ (test_function): Use Infinityd.
+ * tests/test-floorf1.c: Include infinity.h.
+ (main): Use Infinityf.
+ * tests/test-floor1.c: Include infinity.h.
+ (main): Use Infinityd.
+ * tests/test-floorl.c: Include infinity.h.
+ (main): Use Infinityl.
+ * tests/test-fprintf-posix.c: Include infinity.h.
+ (test_function): Use Infinityd.
+ * tests/test-frexp.c: Include infinity.h.
+ (main): Use Infinityd.
+ * tests/test-frexpl.c: Include infinity.h.
+ (main): Use Infinityl.
+ * tests/test-isfinite.c: Include infinity.h.
+ (test_isfinitef): Use Infinityf.
+ (test_isfinited): Use Infinityd.
+ (test_isfinitel): Use Infinityl.
+ * tests/test-isinf.c: Include infinity.h.
+ (test_isinff): Use Infinityf.
+ (test_isinfd): Use Infinityd.
+ (test_isinfl): Use Infinityl.
+ * tests/test-isnan.c: Include infinity.h.
+ (test_float): Use Infinityf.
+ (test_double): Use Infinityd.
+ (test_long_double): Use Infinityl.
+ * tests/test-isnanf.h: Include infinity.h.
+ (main): Use Infinityf.
+ * tests/test-isnand.h: Include infinity.h.
+ (main): Use Infinityd.
+ * tests/test-isnanl.h: Include infinity.h.
+ (main): Use Infinityl.
+ * tests/test-ldexpl.c: Include infinity.h.
+ (main): Use Infinityl.
+ * tests/test-printf-posix.h: Include infinity.h.
+ (test_function): Use Infinityd.
+ * tests/test-roundf1.c: Include infinity.h.
+ (main): Use Infinityf.
+ * tests/test-round1.c: Include infinity.h.
+ (main): Use Infinityd.
+ * tests/test-roundl.c: Include infinity.h.
+ (main): Use Infinityl.
+ * tests/test-signbit.c: Include infinity.h.
+ (test_signbitf): Use Infinityf.
+ (test_signbitd): Use Infinityd.
+ (test_signbitl): Use Infinityl.
+ * tests/test-snprintf-posix.h: Include infinity.h.
+ (test_function): Use Infinityd, Infinityl.
+ * tests/test-sprintf-posix.h: Include infinity.h.
+ (test_function): Use Infinityd, Infinityl.
+ * tests/test-truncf1.c: Include infinity.h.
+ (main): Use Infinityf.
+ * tests/test-trunc1.c: Include infinity.h.
+ (main): Use Infinityd.
+ * tests/test-truncl.c: Include infinity.h.
+ (main): Use Infinityl.
+ * tests/test-vasnprintf-posix.c: Include infinity.h.
+ (test_function): Use Infinityd, Infinityl.
+ * tests/test-vasprintf-posix.c: Include infinity.h.
+ (test_function): Use Infinityd, Infinityl.
+ * modules/ceilf-tests (Files): Add tests/infinity.h.
+ * modules/ceil-tests (Files): Likewise.
+ * modules/ceill-tests (Files): Likewise.
+ * modules/dprintf-posix-tests (Files): Likewise.
+ * modules/floorf-tests (Files): Likewise.
+ * modules/floor-tests (Files): Likewise.
+ * modules/floorl-tests (Files): Likewise.
+ * modules/fprintf-posix-tests (Files): Likewise.
+ * modules/frexp-tests (Files): Likewise.
+ * modules/frexp-nolibm-tests (Files): Likewise.
+ * modules/frexpl-tests (Files): Likewise.
+ * modules/frexpl-nolibm-tests (Files): Likewise.
+ * modules/isfinite-tests (Files): Likewise.
+ * modules/isinf-tests (Files): Likewise.
+ * modules/isnan-tests (Files): Likewise.
+ * modules/isnanf-tests (Files): Likewise.
+ * modules/isnanf-nolibm-tests (Files): Likewise.
+ * modules/isnand-tests (Files): Likewise.
+ * modules/isnand-nolibm-tests (Files): Likewise.
+ * modules/isnanl-tests (Files): Likewise.
+ * modules/isnanl-nolibm-tests (Files): Likewise.
+ * modules/ldexpl-tests (Files): Likewise.
+ * modules/printf-posix-tests (Files): Likewise.
+ * modules/roundf-tests (Files): Likewise.
+ * modules/round-tests (Files): Likewise.
+ * modules/roundl-tests (Files): Likewise.
+ * modules/signbit-tests (Files): Likewise.
+ * modules/snprintf-posix-tests (Files): Likewise.
+ * modules/sprintf-posix-tests (Files): Likewise.
+ * modules/truncf-tests (Files): Likewise.
+ * modules/trunc-tests (Files): Likewise.
+ * modules/truncl-tests (Files): Likewise.
+ * modules/vasnprintf-posix-tests (Files): Likewise.
+ * modules/vasprintf-posix-tests (Files): Likewise.
+ * modules/vdprintf-posix-tests (Files): Likewise.
+ * modules/vfprintf-posix-tests (Files): Likewise.
+ * modules/vprintf-posix-tests (Files): Likewise.
+ * modules/vsnprintf-posix-tests (Files): Likewise.
+ * modules/vsprintf-posix-tests (Files): Likewise.
+ * modules/xprintf-posix-tests (Files): Likewise.
+
+2011-09-11 Bruno Haible <bruno@clisp.org>
+
+ Ensure pid_t gets defined.
+ * m4/fcntl_h.m4 (gl_FCNTL_H): Require AC_TYPE_PID_T.
+ * m4/sched_h.m4 (gl_SCHED_H): Likewise.
+ * m4/signal_h.m4 (gl_SIGNAL_H): Likewise.
+ * m4/spawn_h.m4 (gl_SPAWN_H): Likewise.
+ * m4/sys_wait_h.m4 (gl_SYS_WAIT_H): Likewise.
+ * m4/termios_h.m4 (gl_TERMIOS_H): Likewise.
+ * m4/time_h.m4 (gl_HEADER_TIME_H_BODY): Likewise.
+ * m4/unistd_h.m4 (gl_UNISTD_H): Likewise.
+ * tests/test-fcntl-h.c: Check that pid_t is defined.
+ * tests/test-sched.c: Likewise.
+ * tests/test-termios.c: Likewise.
+ * tests/test-time.c: Likewise.
+ * doc/posix-headers/fcntl.texi: Mention lack of pid_t on MSVC platform.
+ * doc/posix-headers/signal.texi: Likewise.
+ * doc/posix-headers/sys_types.texi: Likewise.
+ * doc/posix-headers/time.texi: Likewise.
+
+2011-09-11 Bruno Haible <bruno@clisp.org>
+
+ acl: Fix compilation on Solaris 10 (older version).
+ * lib/file-has-acl.c (acl_ace_nontrivial): Use NEW_ACE_EVERYONE instead
+ of ACE_EVERYONE.
+ * lib/set-mode-acl.c (qset_acl): Likewise.
+ Reported by Christian Jullien <eligis@orange.fr>.
+
+2011-09-10 Bruno Haible <bruno@clisp.org>
+
+ iconv, unsetenv: Add support for MSVC compiler.
+ * m4/iconv.m4 (AM_ICONV): Use ISO C declaration syntax on MSVC.
+ * m4/setenv.m4 (gl_FUNC_UNSETENV): Drop support for K&R C compilers.
+
+2011-09-10 Bruno Haible <bruno@clisp.org>
+
+ *printf: Add support for MSVC compiler.
+ * m4/printf.m4 (gl_PRINTF_DIRECTIVE_N): On MSVC, install a handler that
+ handles the exception caused by the %n directive. When cross-compiling,
+ guess no on native Windows.
+ (gl_SNPRINTF_TRUNCATION_C99, gl_SNPRINTF_RETVAL_C99,
+ gl_SNPRINTF_DIRECTIVE_N, gl_SNPRINTF_SIZE1): When snprintf is missing,
+ emulate it through vsnprintf.
+ * m4/vsnprintf-posix.m4 (gl_FUNC_VSNPRINTF_POSIX): Update comment.
+ * doc/posix-functions/dprintf.texi: Update documentation regarding
+ MSVC 9.
+ * doc/posix-functions/fprintf.texi: Likewise.
+ * doc/posix-functions/printf.texi: Likewise.
+ * doc/posix-functions/snprintf.texi: Likewise.
+ * doc/posix-functions/sprintf.texi: Likewise.
+ * doc/posix-functions/swprintf.texi: Likewise.
+ * doc/posix-functions/vdprintf.texi: Likewise.
+ * doc/posix-functions/vfprintf.texi: Likewise.
+ * doc/posix-functions/vprintf.texi: Likewise.
+ * doc/posix-functions/vsnprintf.texi: Likewise.
+ * doc/posix-functions/vsprintf.texi: Likewise.
+ * doc/glibc-functions/asprintf.texi: Likewise.
+ * doc/glibc-functions/obstack_printf.texi: Likewise.
+ * doc/glibc-functions/obstack_vprintf.texi: Likewise.
+ * doc/glibc-functions/vasprintf.texi: Likewise.
+
+2011-09-10 Bruno Haible <bruno@clisp.org>
+
+ nocrash: Add support for native Windows.
+ * m4/nocrash.m4 (GL_NOCRASH): Avoid a crash also on native Windows.
+
+2011-09-10 Michael Goffioul <michael.goffioul@gmail.com> (tiny change)
+ Bruno Haible <bruno@clisp.org>
+
+ absolute-header, include-next: Add support for MSVC compiler.
+ * m4/absolute-header.m4 (gl_ABSOLUTE_HEADER_ONE): Require
+ AC_CANONICAL_HOST. On native Windows, recognize also backslash as
+ directory separator in #line directives.
+ * m4/include_next.m4 (gl_NEXT_HEADERS_INTERNAL): On native Windows,
+ recognize also backslash as directory separator in #line directives.
+
+2011-09-08 Jim Meyering <meyering@redhat.com>
+
+ maint.mk: mark the post-release commit log with "maint: " prefix
+ * top/maint.mk (emit-commit-log): Add "maint: " prefix to the
+ one-line commit-log summary.
+
+2011-09-08 Reuben Thomas <rrt@sc3d.org>
+ Bruno Haible <bruno@clisp.org>
+
+ Doc about crypt functions.
+ * doc/posix-functions/crypt.texi: Mention need for _GNU_SOURCE on glibc
+ systems.
+ * doc/posix-functions/encrypt.texi: Likewise.
+ * doc/posix-functions/setkey.texi: Likewise.
+
+2011-09-08 Simon Josefsson <simon@josefsson.org>
+
+ * lib/gc.h: Fix copyright header.
+
+2011-09-07 Bruno Haible <bruno@clisp.org>
+
+ pthread: Determine $(LIB_PTHREAD) correctly on OSF/1 5.1.
+ * m4/pthread.m4 (gl_PTHREAD_CHECK): Use AC_CACHE_CHECK and
+ AC_LINK_IFELSE instead of AC_SEARCH_LIBS.
+
2011-09-07 Bruno Haible <bruno@clisp.org>
openat: Work around compilation error with OSF/1 5.1 DTK cc.
- * lib/openat.h: Use different syntax for include of <fcntl.h>.
+ * lib/fopen.c: Use different syntax for include of <stdio.h>.
+ * lib/freopen.c: Likewise.
+ * lib/fstatat.c: Use different syntax for include of <sys/stat.h>.
+ * lib/lstat.c: Likewise.
+ * lib/stat.c: Likewise.
+ * lib/open.c: Use different syntax for include of <fcntl.h>.
+ * lib/openat.c: Include fcntl.h again, explicitly.
+
+2011-09-04 J.T. Conklin <jtc@acorntoolworks.com>
+
+ parse-datetime: document the newly accepted format
+ * doc/parse-datetime.texi (Combined date and time of day items):
+ New section.
+
+2011-09-06 Bruno Haible <bruno@clisp.org>
+
+ acl: Fix a test failure on newer Solaris 10 with ZFS.
+ * tests/test-sameacls.c (main): Interpret acl GETACLCNT failure with
+ ENOSYS as no ACL.
+ Reported by Jim Meyering.
+
+2011-09-06 Bruno Haible <bruno@clisp.org>
+
+ acl: Update for AIX >= 5.3 with NFS.
+ * lib/file-has-acl.c (file_has_acl): Interpret aclx_get failure with
+ ENOSYS as no ACL.
+
+ acl: Fix a test failure on AIX >= 5.3 with NFS.
+ * tests/test-sameacls.c (main): Interpret aclx_get failure with ENOSYS
+ as no ACL.
+
+2011-09-06 Bruno Haible <bruno@clisp.org>
+
+ acl: Fix a test failure on IRIX 6.5 with NFS.
+ * lib/acl-internal.h (MODE_INSIDE_ACL): Define to 0 on IRIX.
+ * lib/set-mode-acl.c (qset_acl): Test !HAVE_ACL_TYPE_EXTENDED instead
+ of MODE_INSIDE_ACL. If !MODE_INSIDE_ACL, do a chmod_or_fchmod always.
+ * lib/copy-acl.c (qcopy_acl): Likewise.
2011-09-05 Paul Eggert <eggert@cs.ucla.edu>
(openat) [HAVE_OPENAT]: Do not undef.
(rpl_openat): Use orig_openat, not openat.
+2011-09-05 Joachim Schmitz <schmitz@hp.com> (tiny change)
+ Bruno Haible <bruno@clisp.org>
+
+ acl: Avoid errors on NonStop Kernel.
+ * lib/file-has-acl.c (file_has_acl) [NonStop Kernel]: Ignore ENOSYS and
+ ENOTSUP errors.
+
+2011-09-05 Bruno Haible <bruno@clisp.org>
+
+ acl: Clean up Solaris code.
+ * lib/acl-internal.h: Remove no-op #if.
+ * lib/file-has-acl.c: Likewise.
+ * lib/set-mode-acl.c (qset_acl): Remove unused Solaris code.
+ * lib/copy-acl.c (qcopy_acl): Likewise.
+
+2011-09-05 Bruno Haible <bruno@clisp.org>
+
+ acl: Fix a bug with NFSv4 ACLs on Solaris 10 (newer version) in
+ binaries built on the original Solaris 10.
+ * lib/file-has-acl.c (file_has_acl): ACLs with 4..6 ACEs can be
+ trivial.
+
+2011-09-05 Bruno Haible <bruno@clisp.org>
+
+ acl: Improve support of NFSv4 ACLs on Solaris 10 (newer version).
+ * lib/acl-internal.h (acl_nontrivial): Declare also on newer Solaris
+ 10.
+ * lib/file-has-acl.c (acl_nontrivial): Define also on newer Solaris 10.
+ (acl_ace_nontrivial): Likewise. Recognize the trivial ACLs with 6 ACEs.
+ * lib/copy-acl.c (qcopy_acl): On newer Solaris 10, use acl or facl
+ instead of acl_get, facl_get, acl_set, facl_set.
+
+2011-09-05 Bruno Haible <bruno@clisp.org>
+
+ copy-file: Try unit tests on more file systems.
+ * tests/test-copy-file-1.sh: New file.
+ * tests/test-copy-file-2.sh: New file.
+ * modules/copy-file-tests (Files): Add them.
+ (Makefile.am): Add them to TESTS.
+
+ acl: Try unit tests on more file systems.
+ * tests/test-file-has-acl-1.sh: New file.
+ * tests/test-file-has-acl-2.sh: New file.
+ * tests/test-set-mode-acl-1.sh: New file.
+ * tests/test-set-mode-acl-2.sh: New file.
+ * tests/test-copy-acl-1.sh: New file.
+ * tests/test-copy-acl-2.sh: New file.
+ * modules/acl-tests (Files): Add them.
+ (Makefile.am): Add them to TESTS.
+
+2011-09-04 Bruno Haible <bruno@clisp.org>
+
+ acl: Improve support of NFSv4 ACLs on Solaris 10 (newer version).
+ * lib/acl-internal.h (ACE_*, NEW_ACE_*): Define also on newer Solaris
+ 10.
+ (OLD_ALLOW, OLD_DENY): New macros.
+ (NEW_ACE_ACCESS_ALLOWED_ACE_TYPE): Renamed from
+ ACE_ACCESS_ALLOWED_ACE_TYPE.
+ (NEW_ACE_ACCESS_DENIED_ACE_TYPE): Renamed from
+ ACE_ACCESS_DENIED_ACE_TYPE.
+ (OLD_ACE_OWNER, OLD_ACE_GROUP, OLD_ACE_OTHER): New macros.
+ (NEW_ACE_EXECUTE): Fix value.
+ (NEW_ACE_APPEND_DATA, NEW_ACE_READ_NAMED_ATTRS,
+ NEW_ACE_WRITE_NAMED_ATTRS, NEW_ACE_DELETE_CHILD,
+ NEW_ACE_READ_ATTRIBUTES, NEW_ACE_WRITE_ATTRIBUTES, NEW_ACE_DELETE,
+ NEW_ACE_READ_ACL, NEW_ACE_WRITE_ACL, NEW_ACE_WRITE_OWNER,
+ NEW_ACE_SYNCHRONIZE): New macros.
+ * lib/set-mode-acl.c (qset_acl): On newer Solaris 10, use acl or facl
+ instead of acl_fromtext, acl_set, facl_set.
+ Fixes a coreutils/tests/cp/perm failure.
+
2011-09-03 Paul Eggert <eggert@cs.ucla.edu>
openat: test for fstatat (..., 0) bug
* doc/regex.texi (Character Class Operators): Avoid literal ":"
in index entries.
+2011-09-02 Bruno Haible <bruno@clisp.org>
+
+ Allow the user to override the choice of AR, ARFLAGS, RANLIB.
+ * m4/gnulib-common.m4 (gl_PROG_AR_RANLIB): Don't override the given
+ values of AR, ARFLAGS, RANLIB.
+ Reported by John W. Eaton <jwe@gnu.org> for Octave.
+
+2011-09-02 Bruno Haible <bruno@clisp.org>
+
+ Find 'ar' program that fits with --host argument.
+ * m4/gnulib-common.m4 (gl_PROG_AR_RANLIB): Use AC_CHECK_TOOL.
+
+2011-09-02 Bruno Haible <bruno@clisp.org>
+
+ tests: init.sh: Support any non-GNU diff.
+ * tests/init.sh (compare): If "diff -c" is supported but "diff -u" is
+ not, use "diff -c". Useful on AIX 6.1, HP-UX 11.31, OSF/1 5.1,
+ Solaris 8.
+
+2011-09-02 Bruno Haible <bruno@clisp.org>
+
+ tests: init.sh: work also with any non-GNU diff that supports -u
+ * tests/init.sh: Relax check for diff -u support.
+ Rather than checking for GNU diff via --version, simply check
+ for support for -u itself. Useful at least on OpenBSD 4.9,
+ AIX 7.1, IRIX 6.5, and Solaris 10.
+
2011-09-01 Bruno Haible <bruno@clisp.org>
strtoimax, strtoumax: Document problem on HP-UX 11.
2011-09-01 Bruno Haible <bruno@clisp.org>
+ Tests for module 'strtoumax'.
+ * modules/strtoumax-tests: New file.
+ * tests/test-strtoumax.c: New file.
+
+ Tests for module 'strtoimax'.
+ * modules/strtoimax-tests: New file.
+ * tests/test-strtoimax.c: New file.
+
+ Tests for module 'imaxdiv'.
+ * modules/imaxdiv-tests: New file.
+ * tests/test-imaxdiv.c: New file.
+
+ Tests for module 'imaxabs'.
+ * modules/imaxabs-tests: New file.
+ * tests/test-imaxabs.c: New file.
+
+2011-09-01 Bruno Haible <bruno@clisp.org>
+
pthread: Determine $(LIB_PTHREAD) correctly on IRIX 6.5.
* m4/pthread.m4 (gl_PTHREAD_CHECK): Check for pthread_join, not
pthread_create.
LDBL_MIN_EXP <= DBL_MIN_EXP, that is failing at least on PowerPC-64
with gcc-4.4.4.
+ maint: indent with spaces, not TABs
+ I need to get in the habit of running gnulib's "make check".
+ Both of these would have been caught.
+ * m4/largefile.m4: Indent with spaces, not TABs.
+ * lib/parse-datetime.y (iso_8601_time): Likewise.
+ Spotted by Pádraig Brady.
+
+ test-parse-datetime.c: accommodate a relatively strict gcc warning
+ * tests/test-parse-datetime.c (gmt_offset): Declare function "static",
+ to avoid a warning from gcc's -Werror=missing-declarations.
+ Insert a few spaces-before-funcall-parenthesis.
+
+2011-08-17 J.T. Conklin <jtc@acorntoolworks.com>
+
+ parse-datetime: accept ISO 8601 date and time rep with "T" separator
+ The parser now accepts ISO 8601 date-time strings with "T" as the
+ separator. It has long parsed dates like "2004-02-29 16:21:42"
+ with a space between the date and time strings. Now it also parses
+ "2004-02-29T16:21:42" and fractional-second and time-zone-annotated
+ variants like "2004-02-29T16:21:42.333-07:00"
+ * lib/parse-datetime.y: Parse ISO 8601 extended date and time
+ of day representation using the 'T' separator character.
+ * doc/parse-datetime.texi (General date syntax): replace use of
+ deprecated --iso-8601 option with --rfc-3339 in example of date
+ command output formats that can be parsed.
+ * tests/test-parse-datetime.c (tm_diff): New function, taken from
+ lib/parse-datetime.y.
+ (gmt_offset): New function.
+ (main): Add additional test cases to validate ISO8601 extended
+ date and time of day parsing.
+
2011-08-31 Bruno Haible <bruno@clisp.org>
freopen: Documentation.
# parentheses (as per GNU standards, section "GNU Manuals").
# - Flag the remaining symbol() constructs as errors.
# - Change 'xxx' to <CODE>xxx</CODE>.
+ sed_extract_element='
+ '$sed_lt'
+ '$sed_gt'
+ '$sed_remove_trailing_empty_line'
+ s,^, ,
+ s,$, ,
+ s,\([^a-zA-Z_]\)'$posix_functions'() \(function\|macro\),\1<A HREF="'$POSIX2008_URL'/functions/\2.html">\2</A> \3,g
+ s,\([^a-zA-Z_]\)'$posix_functions' \(function\|macro\),\1<A HREF="'$POSIX2008_URL'/functions/\2.html">\2</A> \3,g
+ s,\([^a-zA-Z_]\)'$posix_functions'(),\1<A HREF="'$POSIX2008_URL'/functions/\2.html">\2</A> <SPAN STYLE="color:#FF0000;">what?? If you mean a function\, please say so.</SPAN>,g
+ s,\([^a-zA-Z_]\)'$posix2001_functions'() \(function\|macro\),\1<A HREF="'$POSIX2001_URL'xsh/\2.html">\2</A> \3,g
+ s,\([^a-zA-Z_]\)'$posix2001_functions' \(function\|macro\),\1<A HREF="'$POSIX2001_URL'xsh/\2.html">\2</A> \3,g
+ s,\([^a-zA-Z_]\)'$posix2001_functions'(),\1<A HREF="'$POSIX2001_URL'xsh/\2.html">\2</A> <SPAN STYLE="color:#FF0000;">what?? If you mean a function\, please say so.</SPAN>,g
+ s,\([^a-zA-Z_]\)\([a-zA-Z_][a-zA-Z0-9_]*\)() \(function\|macro\),\1\2 \3,g
+ s,\([^a-zA-Z_]\)\([a-zA-Z_][a-zA-Z0-9_]*\)(),\1\2 <SPAN STYLE="color:#FF0000;">what?? If you mean a function\, please say so.</SPAN>,g
+ s, '"'"'\([a-zA-Z0-9_ -]*\)'"'"'\([^a-zA-Z0-9_]\), <CODE>\1</CODE>\2,g
+ s,^ ,,
+ s, $,,
+ '
element=`gnulib-tool --extract-description $1 \
- | sed -e "$sed_lt" -e "$sed_gt" -e "$sed_remove_trailing_empty_line" \
- -e 's,^, ,' -e 's,$, ,' \
- -e 's,\([^a-zA-Z_]\)'"${posix_functions}"'() \(function\|macro\),\1<A HREF="'"$POSIX2008_URL"'/functions/\2.html">\2</A> \3,g' \
- -e 's,\([^a-zA-Z_]\)'"${posix_functions}"' \(function\|macro\),\1<A HREF="'"$POSIX2008_URL"'/functions/\2.html">\2</A> \3,g' \
- -e 's,\([^a-zA-Z_]\)'"${posix_functions}"'(),\1<A HREF="'"$POSIX2008_URL"'/functions/\2.html">\2</A> <SPAN STYLE="color:#FF0000;">what?? If you mean a function\, please say so.</SPAN>,g' \
- -e 's,\([^a-zA-Z_]\)'"${posix2001_functions}"'() \(function\|macro\),\1<A HREF="'"$POSIX2001_URL"'xsh/\2.html">\2</A> \3,g' \
- -e 's,\([^a-zA-Z_]\)'"${posix2001_functions}"' \(function\|macro\),\1<A HREF="'"$POSIX2001_URL"'xsh/\2.html">\2</A> \3,g' \
- -e 's,\([^a-zA-Z_]\)'"${posix2001_functions}"'(),\1<A HREF="'"$POSIX2001_URL"'xsh/\2.html">\2</A> <SPAN STYLE="color:#FF0000;">what?? If you mean a function\, please say so.</SPAN>,g' \
- -e 's,\([^a-zA-Z_]\)\([a-zA-Z_][a-zA-Z0-9_]*\)() \(function\|macro\),\1\2 \3,g' \
- -e 's,\([^a-zA-Z_]\)\([a-zA-Z_][a-zA-Z0-9_]*\)(),\1\2 <SPAN STYLE="color:#FF0000;">what?? If you mean a function\, please say so.</SPAN>,g' \
- -e 's, '"'"'\([a-zA-Z0-9_ -]*\)'"'"'\([^a-zA-Z0-9_]\), <CODE>\1</CODE>\2,g' \
- -e 's,^ ,,' -e 's, $,,'`
+ | LC_ALL=C sed -e "$sed_extract_element"`
func_echo "<TD ALIGN=LEFT VALIGN=TOP WIDTH=\"80%\">$element"
func_end TR
includes=`gnulib-tool --extract-include-directive $1`
files=`gnulib-tool --extract-filelist $1 \
| grep -v '^m4/gnulib-common\.m4$'`
+ sed_extract_element='
+ '$sed_lt'
+ '$sed_gt'
+ '$sed_remove_trailing_empty_line'
+ s,^#include "\(.*\)"$,#include "<A HREF="'$repo_url_prefix'lib/\1'$repo_url_suffix_repl'">\1</A>",
+ s,^#include <'$posix_headers'\.h>$,#include \<<A HREF="'$POSIX2008_URL'/basedefs/\1.h.html">\1.h</A>\>,
+ s,<A HREF="'$POSIX2008_URL'/basedefs/\([a-zA-Z0-9_]*\)/\([a-zA-Z0-9_]*\)\.h\.html">,<A HREF="'$POSIX2008_URL'/basedefs/\1_\2.h.html">,
+ s,^#include <'$posix2001_headers'\.h>$,#include \<<A HREF="'$POSIX2001_URL'xbd/\1.h.html">\1.h</A>\>,
+ s/$/<BR>/
+ '
element=`echo "$includes" \
- | sed -e "$sed_lt" -e "$sed_gt" -e "$sed_remove_trailing_empty_line" \
- -e 's,^#include "\(.*\)"$,#include "<A HREF="'$repo_url_prefix'lib/\1'$repo_url_suffix_repl'">\1</A>",' \
- -e 's,^#include <'"${posix_headers}"'\.h>$,#include \<<A HREF="'"$POSIX2008_URL"'/basedefs/\1.h.html">\1.h</A>\>,' \
- -e 's,<A HREF="'"$POSIX2008_URL"'/basedefs/\([a-zA-Z0-9_]*\)/\([a-zA-Z0-9_]*\)\.h\.html">,<A HREF="'"$POSIX2008_URL"'/basedefs/\1_\2.h.html">,' \
- -e 's,^#include <'"${posix2001_headers}"'\.h>$,#include \<<A HREF="'"$POSIX2001_URL"'xbd/\1.h.html">\1.h</A>\>,' \
- -e 's/$/<BR>/' | tr -d "$trnl" | sed -e 's/<BR>$//'`
+ | LC_ALL=C sed -e "$sed_extract_element" | tr -d "$trnl" \
+ | sed -e 's/<BR>$//'`
test -n "$element" || element='---'
func_echo "<TD ALIGN=LEFT VALIGN=TOP>$element"
| sed -n -e "$sed_choose_unconditional_nonstandard_include" \
| sed -e "$sed_escape_dot" | tr -d "$trnl"`
sed_choose_lib_files='s,^lib/\(.*\)$,\1,p'
+ sed_extract_include='
+ \|^'"$includefile"'$|d
+ s,^\(.*\)$,<A HREF="'$repo_url_prefix'lib/\1'$repo_url_suffix_repl'">\1</A>,
+ s/$/<BR>/
+ '
element=`echo "$files" \
| sed -e '/^$/d' \
| sed -n -e "$sed_choose_lib_files" \
- | sed -e '\|^'"${includefile}"'$|d' \
- -e 's,^\(.*\)$,<A HREF="'$repo_url_prefix'lib/\1'$repo_url_suffix_repl'">\1</A>,' \
- -e 's/$/<BR>/' | tr -d "$trnl" | sed -e 's/<BR>$//'`
+ | sed -e "$sed_extract_include" \
+ | tr -d "$trnl" | sed -e 's/<BR>$//'`
test -n "$element" || element='---'
func_echo "<TD ALIGN=LEFT VALIGN=TOP>$element"
sed_choose_m4_files='s,^m4/\(.*\)$,\1,p'
+ sed_extract_repo_url='
+ /^onceonly/d
+ s,^\(.*\)$,<A HREF="'$repo_url_prefix'm4/\1'$repo_url_suffix_repl'">\1</A>,
+ '
element=`(echo "$files" \
| sed -e "$sed_remove_trailing_empty_line" \
| sed -n -e "$sed_choose_m4_files" \
- | sed -e '/^onceonly/d' \
- -e 's,^\(.*\)$,<A HREF="'$repo_url_prefix'm4/\1'$repo_url_suffix_repl'">\1</A>,'; \
+ | sed -e "$sed_extract_repo_url"; \
gnulib-tool --extract-autoconf-snippet $1 \
| sed -e "$sed_remove_trailing_empty_line") \
| sed -e 's/$/<BR>/' | tr -d "$trnl" | sed -e 's/<BR>$//'`
func_echo "$element"
func_begin_table
+ func_module base32
func_module base64
func_module check-version
func_module crc
func_wrap H3
func_echo "$element"
+ func_begin_table
+ func_module stdalign
+ func_end_table
+
element="Support for obsolete systems lacking POSIX:2008"
func_section_wrap posix_sup_obsolete
func_wrap H2
func_module fclose
func_module fcntl-h
func_module fcntl
+ func_module fdatasync
func_module flock
func_module fopen
func_module fprintf-posix
func_module perror
func_module poll
func_module popen
+ func_module posix_openpt
func_module posix_spawn
func_module posix_spawnattr_destroy
func_module posix_spawnattr_getflags
func_module servent
func_module setsockopt
func_module shutdown
- func_module signal
+ func_module signal-h
func_module sleep
func_module snprintf-posix
func_module socket
func_module physmem
func_module posixver
func_module progname
+ func_module ptsname_r
func_module pty
func_module quotearg
func_module quote
func_echo "$element"
func_echo '<PRE>'
- echo "$missed_files" | sed -e 's,^\(.*\)$,<A HREF="'$repo_url_prefix'\1'$repo_url_suffix_repl'">\1</A>,'
+ echo "$missed_files" | sed -e 's,^\(.*\)$,<A HREF="'"$repo_url_prefix"'\1'"$repo_url_suffix_repl"'">\1</A>,'
echo '</PRE>'
fi
sc_prohibit_leading_TABs:
if test -d .git; then \
git grep -l '^ * ' lib m4 tests \
- | grep -Ev '^lib/reg|Makefile|test-update-copyright' \
- | grep . \
+ | grep -Ev '^lib/reg|Makefile|test-update-copyright' \
+ | grep . \
&& { printf '*** %s\n' 'indent with spaces, not TABs;' \
1>&2; exit 1; } || : \
else :; fi
# *.c files are consistently cpp indented.
sc_cpp_indent_check:
./gnulib-tool --extract-filelist \
- $$(cd ./modules; grep -ilrE '(meyering|blake)' .) \
- | sort -u \
- | grep '\.c$$' \
- | grep -vE '/(stdio-(read|write)|getloadavg)\.c$$' \
- | xargs cppi -c
+ $$(cd ./modules; grep -ilrE '(meyering|blake)' .) \
+ | sort -u \
+ | grep '\.c$$' \
+ | grep -vE '/(stdio-(read|write)|getloadavg)\.c$$' \
+ | xargs cppi -c
# Ensure that the list of symbols checked for by the
# sc_prohibit_intprops_without_use rule match those in the actual file.
i=lib/intprops.h; \
diff -u <(perl -lne '/^# *define ([A-Z]\w+)\(/ and print $$1' $$i|fmt) \
<(sed -n /^_intprops_name/,/^_intprops_syms_re/p top/maint.mk \
- |sed '/^_/d;s/^ //;s/ *\\$$//')
+ |sed '/^_/d;s/^ //;s/ *\\$$//')
+
+# Ensure that the copyright statements in files and in the module descriptions
+# are consistent.
+sc_check_copyright:
+ ./check-copyright
# Regenerate some files that are stored in the repository.
regen: MODULES.html
Date Modules Changes
+2011-11-18 hash This module deprecates the hash_insert0 function
+ using gcc's "deprecated" attribute. Use the better-
+ named hash_insert_if_absent equivalent.
+
+2011-11-04 openat This module no longer provides the mkdirat()
+ function. If you need this function, you now need
+ to request the 'mkdirat' module.
+
+2011-11-04 openat This module no longer provides the fstatat()
+ function. If you need this function, you now need
+ to request the 'fstatat' module.
+
+2011-11-03 openat This module no longer provides the unlinkat()
+ function. If you need this function, you now need
+ to request the 'unlinkat' module.
+
+2011-11-02 openat This module no longer provides the fchmodat()
+ function. If you need this function, you now need
+ to request the 'fchmodat' module.
+
+2011-11-01 alignof This module no longer provides the alignof() macro.
+ Use either alignof_slot() or alignof_type() instead.
+
+2011-11-01 openat This module no longer provides the fchownat()
+ function. If you need this function, you now need
+ to request the 'fchownat' module.
+
+2011-10-03 poll The link requirements of this module are changed
+ from empty to $(LIB_POLL).
+
+2011-09-25 sys_stat This module no longer provides the fstat()
+ function. If you need this function, you now need
+ to request the 'fstat' module.
+
+2011-09-23 signal This module is renamed to 'signal-h'.
+
+2011-09-22 select The link requirements of this module are changed
+ from $(LIBSOCKET) to $(LIB_SELECT).
+
+2011-09-12 fchdir This module no longer overrides the functions
+ opendir() and closedir(), unless the modules
+ 'opendir' and 'closedir' are in use, respectively.
+ If you use opendir(), please use module 'opendir'.
+ If you use closedir(), please use module 'closedir'.
+
2011-08-04 pathmax The header file "pathmax.h" no longer defines
PATH_MAX on GNU/Hurd. Please use one of the methods
listed in pathmax.h to ensure your package is
Gnulib stable snapshot
----------------------
+ * 20111211-stable
+
+Snapshot taken based on:
+
+commit b572c3a256e7bf1e4eecc8c36448c08093240a6a
+Date: Sat Dec 3 13:09:58 2011 +0100
+
+with the following additional commits:
+
+ * [c69114d]->[b3a93d2] tests: Avoid spurious error message on platforms without mktemp program.
+ * [8446103]->[46519aa] autoupdate
+ * [7c25126]->[6057366] autoupdate
+
+----------------------------------------------------------------------
+
* 20110908-stable
Snapshot taken based on:
if 0;
# Generate a release announcement message.
-my $VERSION = '2011-05-17 20:25'; # UTC
+my $VERSION = '2011-11-09 21:30'; # UTC
# The definition above must lie within the first 8 lines in order
# for the Emacs time-stamp write hook (at end) to update it.
# If you change this file with Emacs, please let the write hook
EOF
- print_locations ("compressed sources", @url_dir_list, %size, @tarballs);
- -f $xd
- and print_locations ("xdelta diffs (useful? if so, "
- . "please tell bug-gnulib\@gnu.org)",
- @url_dir_list, %size, $xd);
- my @sig_files = map { "$_.sig" } @tarballs;
- print_locations ("GPG detached signatures[*]", @url_dir_list, %size,
- @sig_files);
+ if (@url_dir_list == 1 && @tarballs == 1)
+ {
+ # When there's only one tarball and one URL, use a more concise form.
+ my $m = "$url_dir_list[0]/$tarballs[0]";
+ print "Here are the compressed sources and a GPG detached signature[*]:\n"
+ . " $m\n"
+ . " $m.sig\n\n";
+ }
+ else
+ {
+ print_locations ("compressed sources", @url_dir_list, %size, @tarballs);
+ -f $xd
+ and print_locations ("xdelta diffs (useful? if so, "
+ . "please tell bug-gnulib\@gnu.org)",
+ @url_dir_list, %size, $xd);
+ my @sig_files = map { "$_.sig" } @tarballs;
+ print_locations ("GPG detached signatures[*]", @url_dir_list, %size,
+ @sig_files);
+ }
+
if ($url_dir_list[0] =~ "gnu\.org")
{
- print "To reduce load on the main server, use a mirror listed at:\n";
- print " http://www.gnu.org/order/ftp.html\n\n";
+ print "Use a mirror for higher download bandwidth:\n";
+ if (@tarballs == 1 && $url_dir_list[0] =~ m!http://ftp\.gnu\.org/gnu/!)
+ {
+ (my $m = "$url_dir_list[0]/$tarballs[0]")
+ =~ s!http://ftp\.gnu\.org/gnu/!http://ftpmirror\.gnu\.org/!;
+ print " $m\n"
+ . " $m.sig\n\n";
+
+ }
+ else
+ {
+ print " http://www.gnu.org/order/ftp.html\n\n";
+ }
}
$print_checksums_p
and print_checksums (@sizable);
print <<EOF;
-[*] You can use either of the above signature files to verify that
-the corresponding file (without the .sig suffix) is intact. First,
-be sure to download both the .sig file and the corresponding tarball.
-Then, run a command like this:
+[*] Use a .sig file to verify that the corresponding file (without the
+.sig suffix) is intact. First, be sure to download both the .sig file
+and the corresponding tarball. Then, run a command like this:
gpg --verify $tarballs[0].sig
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
# 2011 Free Software Foundation, Inc.
-timestamp='2011-08-20'
+timestamp='2011-11-11'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
+ i*:MSYS*:*)
+ echo ${UNAME_MACHINE}-pc-msys
+ exit ;;
i*:windows32*:*)
# uname -m includes "-pc" on this system.
echo ${UNAME_MACHINE}-mingw32
frv:Linux:*:*)
echo frv-unknown-linux-gnu
exit ;;
+ hexagon:Linux:*:*)
+ echo hexagon-unknown-linux-gnu
+ exit ;;
i*86:Linux:*:*)
LIBC=gnu
eval $set_cc_for_build
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
# 2011 Free Software Foundation, Inc.
-timestamp='2011-08-23'
+timestamp='2011-11-11'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
| bfin \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
+ | epiphany \
| fido | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | hexagon \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
| le32 | le64 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
- | rx \
+ | rl78 | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
| le32-* | le64-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
| pyramid-* \
- | romp-* | rs6000-* | rx-* \
+ | rl78-* | romp-* | rs6000-* | rx-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
ms1-*)
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
+ msys)
+ basic_machine=i386-pc
+ os=-msys
+ ;;
mvs)
basic_machine=i370-ibm
os=-mvs
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -linux-gnu* | -linux-android* \
| -linux-newlib* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2011-04-16.09; # UTC
+scriptversion=2011-12-04.11; # UTC
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
# 2011 Free Software Foundation, Inc.
object Object file output by `PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
- tmpdepfile Temporary file to use when outputing dependencies.
+ tmpdepfile Temporary file to use when outputting dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
#!/bin/sh
# Print a version string.
-scriptversion=2011-08-11.12; # UTC
+scriptversion=2011-11-13.13; # UTC
# Copyright (C) 2007-2011 Free Software Foundation, Inc.
#
# dist-hook:
# echo $(VERSION) > $(distdir)/.tarball-version
-case $# in
- 1|2) ;;
- *) echo 1>&2 "Usage: $0 \$srcdir/.tarball-version" \
- '[TAG-NORMALIZATION-SED-SCRIPT]'
- exit 1;;
-esac
-tarball_version_file=$1
-tag_sed_script="${2:-s/x/x/}"
+me=$0
+
+version="git-version-gen $scriptversion
+
+Copyright 2011 Free Software Foundation, Inc.
+There is NO warranty. You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING."
+
+usage="\
+Usage: $me [OPTION]... \$srcdir/.tarball-version [TAG-NORMALIZATION-SED-SCRIPT]
+Print a version string.
+
+Options:
+
+ --prefix prefix of git tags (default 'v')
+
+ --help display this help and exit
+ --version output version information and exit
+
+Running without arguments will suffice in most cases."
+
+while test $# -gt 0; do
+ case $1 in
+ --help) echo "$usage"; exit 0;;
+ --version) echo "$version"; exit 0;;
+ --prefix) shift; prefix="$1";;
+ -*)
+ echo "$0: Unknown option \`$1'." >&2
+ echo "$0: Try \`--help' for more information." >&2
+ exit 1;;
+ *)
+ if test -z "$tarball_version_file"; then
+ tarball_version_file="$1"
+ elif test -z "$tag_sed_script"; then
+ tag_sed_script="$1"
+ else
+ echo "$0: extra non-option argument \`$1'." >&2
+ exit 1
+ fi;;
+ esac
+ shift
+done
+
+if test -z "$tarball_version_file"; then
+ echo "$usage"
+ exit 1
+fi
+
+tag_sed_script="${tag_sed_script:-s/x/x/}"
+prefix="${prefix:-v}"
+
nl='
'
# directory, and "git describe" output looks sensible, use that to
# derive a version string.
elif test "`git log -1 --pretty=format:x . 2>&1`" = x \
- && v=`git describe --abbrev=4 --match='v*' HEAD 2>/dev/null \
+ && v=`git describe --abbrev=4 --match="$prefix*" HEAD 2>/dev/null \
|| git describe --abbrev=4 HEAD 2>/dev/null` \
&& v=`printf '%s\n' "$v" | sed "$tag_sed_script"` \
&& case $v in
- v[0-9]*) ;;
+ $prefix[0-9]*) ;;
*) (exit 1) ;;
esac
then
v=UNKNOWN
fi
-v=`echo "$v" |sed 's/^v//'`
+v=`echo "$v" |sed "s/^$prefix//"`
# Test whether to append the "-dirty" suffix only if the version
# string we're using came from git. I.e., skip the test if it's "UNKNOWN"
if 0;
# Convert git log output to ChangeLog format.
-my $VERSION = '2009-10-30 13:46'; # UTC
+my $VERSION = '2011-11-02 07:53'; # UTC
# The definition above must lie within the first 8 lines in order
# for the Emacs time-stamp write hook (at end) to update it.
# If you change this file with Emacs, please let the write hook
OPTIONS:
+ --amend=FILE FILE maps from an SHA1 to perl code (i.e., s/old/new/) that
+ makes a change to SHA1's commit log text or metadata.
+ --append-dot append a dot to the first line of each commit message if
+ there is no other punctuation or blank at the end.
--since=DATE convert only the logs since DATE;
the default is to convert all log entries.
--format=FMT set format string for commit subject and body;
$ME --since=2008-01-01 > ChangeLog
$ME -- -n 5 foo > last-5-commits-to-branch-foo
+In a FILE specified via --amend, comment lines (starting with "#") are ignored.
+FILE must consist of <SHA,CODE+> pairs where SHA is a 40-byte SHA1 (alone on
+a line) referring to a commit in the current project, and CODE refers to one
+or more consecutive lines of Perl code. Pairs must be separated by one or
+more blank line.
+
+Here is sample input for use with --amend=FILE, from coreutils:
+
+3a169f4c5d9159283548178668d2fae6fced3030
+# fix typo in title:
+s/all tile types/all file types/
+
+1379ed974f1fa39b12e2ffab18b3f7a607082202
+# Due to a bug in vc-dwim, I mis-attributed a patch by Paul to myself.
+# Change the author to be Paul. Note the escaped "@":
+s,Jim .*>,Paul Eggert <eggert\@cs.ucla.edu>,
+
EOF
}
exit $exit_code;
return join (' ', map {shell_quote $_} @_);
}
+# Parse file F.
+# Comment lines (starting with "#") are ignored.
+# F must consist of <SHA,CODE+> pairs where SHA is a 40-byte SHA1
+# (alone on a line) referring to a commit in the current project, and
+# CODE refers to one or more consecutive lines of Perl code.
+# Pairs must be separated by one or more blank line.
+sub parse_amend_file($)
{
- my $since_date = '1970-01-01 UTC';
+ my ($f) = @_;
+
+ open F, '<', $f
+ or die "$ME: $f: failed to open for reading: $!\n";
+
+ my $fail;
+ my $h = {};
+ my $in_code = 0;
+ my $sha;
+ while (defined (my $line = <F>))
+ {
+ $line =~ /^\#/
+ and next;
+ chomp $line;
+ $line eq ''
+ and $in_code = 0, next;
+
+ if (!$in_code)
+ {
+ $line =~ /^([0-9a-fA-F]{40})$/
+ or (warn "$ME: $f:$.: invalid line; expected an SHA1\n"),
+ $fail = 1, next;
+ $sha = lc $1;
+ $in_code = 1;
+ exists $h->{$sha}
+ and (warn "$ME: $f:$.: duplicate SHA1\n"),
+ $fail = 1, next;
+ }
+ else
+ {
+ $h->{$sha} ||= '';
+ $h->{$sha} .= "$line\n";
+ }
+ }
+ close F;
+
+ $fail
+ and exit 1;
+
+ return $h;
+}
+
+{
+ my $since_date;
my $format_string = '%s%n%b%n';
+ my $amend_file;
+ my $append_dot = 0;
GetOptions
(
help => sub { usage 0 },
version => sub { print "$ME version $VERSION\n"; exit },
'since=s' => \$since_date,
'format=s' => \$format_string,
+ 'amend=s' => \$amend_file,
+ 'append-dot' => \$append_dot,
) or usage 1;
- my @cmd = (qw (git log --log-size), "--since=$since_date",
- '--pretty=format:%ct %an <%ae>%n%n'.$format_string, @ARGV);
+
+ defined $since_date
+ and unshift @ARGV, "--since=$since_date";
+
+ # This is a hash that maps an SHA1 to perl code (i.e., s/old/new/)
+ # that makes a correction in the log or attribution of that commit.
+ my $amend_code = defined $amend_file ? parse_amend_file $amend_file : {};
+
+ my @cmd = (qw (git log --log-size),
+ '--pretty=format:%H:%ct %an <%ae>%n%n'.$format_string, @ARGV);
open PIPE, '-|', @cmd
or die ("$ME: failed to run `". quoted_cmd (@cmd) ."': $!\n"
. "(Is your Git too old? Version 1.5.1 or later is required.)\n");
my $prev_date_line = '';
+ my @prev_coauthors = ();
while (1)
{
defined (my $in = <PIPE>)
$n_read == $log_nbytes
or die "$ME:$.: unexpected EOF\n";
- my @line = split "\n", $log;
+ # Extract leading hash.
+ my ($sha, $rest) = split ':', $log, 2;
+ defined $sha
+ or die "$ME:$.: malformed log entry\n";
+ $sha =~ /^[0-9a-fA-F]{40}$/
+ or die "$ME:$.: invalid SHA1: $sha\n";
+
+ # If this commit's log requires any transformation, do it now.
+ my $code = $amend_code->{$sha};
+ if (defined $code)
+ {
+ eval 'use Safe';
+ my $s = new Safe;
+ # Put the unpreprocessed entry into "$_".
+ $_ = $rest;
+
+ # Let $code operate on it, safely.
+ my $r = $s->reval("$code")
+ or die "$ME:$.:$sha: failed to eval \"$code\":\n$@\n";
+
+ # Note that we've used this entry.
+ delete $amend_code->{$sha};
+
+ # Update $rest upon success.
+ $rest = $_;
+ }
+
+ my @line = split "\n", $rest;
my $author_line = shift @line;
defined $author_line
or die "$ME:$.: unexpected EOF\n";
. "(expected date/author/email):\n$author_line\n";
my $date_line = sprintf "%s $2\n", strftime ("%F", localtime ($1));
- # If this line would be the same as the previous date/name/email
- # line, then arrange not to print it.
- if ($date_line ne $prev_date_line)
+
+ # Format 'Co-authored-by: A U Thor <email@example.com>' lines in
+ # standard multi-author ChangeLog format.
+ my @coauthors = grep /^Co-authored-by:.*$/, @line;
+ for (@coauthors)
+ {
+ s/^Co-authored-by:\s*/\t /;
+ s/\s*</ </;
+
+ /<.*?@.*\..*>/
+ or warn "$ME: warning: missing email address for "
+ . substr ($_, 5) . "\n";
+ }
+
+ # If this header would be the same as the previous date/name/email/
+ # coauthors header, then arrange not to print it.
+ if ($date_line ne $prev_date_line or "@coauthors" ne "@prev_coauthors")
{
$prev_date_line eq ''
or print "\n";
print $date_line;
+ @coauthors
+ and print join ("\n", @coauthors), "\n";
}
$prev_date_line = $date_line;
+ @prev_coauthors = @coauthors;
- # Omit "Signed-off-by..." lines.
+ # Omit "Co-authored-by..." and "Signed-off-by..." lines.
@line = grep !/^Signed-off-by: .*>$/, @line;
+ @line = grep !/^Co-authored-by: /, @line;
+
+ # Remove leading and trailing blank lines.
+ if (@line)
+ {
+ while ($line[0] =~ /^\s*$/) { shift @line; }
+ while ($line[$#line] =~ /^\s*$/) { pop @line; }
+ }
# If there were any lines
if (@line == 0)
}
else
{
- # Remove leading and trailing blank lines.
- while ($line[0] =~ /^\s*$/) { shift @line; }
- while ($line[$#line] =~ /^\s*$/) { pop @line; }
+ if ($append_dot)
+ {
+ # If the first line of the message has enough room, then
+ if (length $line[0] < 72)
+ {
+ # append a dot if there is no other punctuation or blank
+ # at the end.
+ $line[0] =~ /[[:punct:]\s]$/
+ or $line[0] .= '.';
+ }
+ }
# Prefix each non-empty line with a TAB.
@line = map { length $_ ? "\t$_" : '' } @line;
close PIPE
or die "$ME: error closing pipe from " . quoted_cmd (@cmd) . "\n";
# FIXME-someday: include $PROCESS_STATUS in the diagnostic
+
+ # Complain about any unused entry in the --amend=F specified file.
+ my $fail = 0;
+ foreach my $sha (keys %$amend_code)
+ {
+ warn "$ME:$amend_file: unused entry: $sha\n";
+ $fail = 1;
+ }
+
+ exit $fail;
}
# Local Variables:
rm -f relocwrapper.o \
progname.o \
progreloc.o \
- xreadlink.o \
areadlink.o \
careadlinkat.o \
allocator.o \
+ readlink.o \
canonicalize-lgpl.o \
malloca.o \
relocatable.o \
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2011-01-19.21; # UTC
+scriptversion=2011-11-20.07; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
- # other-writeable bit of parent directory when it shouldn't.
+ # other-writable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
ls_ld_tmpdir=`ls -ld "$tmpdir"`
case $ls_ld_tmpdir in
dev_rand=/dev/urandom
if test -r "$dev_rand"; then
# Note: 256-length($chars) == 194; 3 copies of $chars is 186 + 8 = 194.
- dd ibs=$n count=1 if="$dev_rand" | tr -c $chars 01234567$chars$chars$chars
+ dd ibs=$n count=1 if="$dev_rand" 2>/dev/null \
+ | tr -c $chars 01234567$chars$chars$chars
return
fi
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2011-08-14.17}
+\def\texinfoversion{2011-11-09.15}
%
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
% Set up fixed words for English if not already set.
\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
+\ifx\putworderror\undefined \gdef\putworderror{error}\fi
\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
\ifx\putwordin\undefined \gdef\putwordin{in}\fi
\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
\def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
\def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
%
- % pdftex (and the PDF format) support .png, .jpg, .pdf (among
- % others). Let's try in that order.
+ % pdftex (and the PDF format) support .pdf, .png, .jpg (among
+ % others). Let's try in that order, PDF first since if
+ % someone has a scalable image, presumably better to use that than a
+ % bitmap.
\let\pdfimgext=\empty
\begingroup
- \openin 1 #1.png \ifeof 1
- \openin 1 #1.jpg \ifeof 1
- \openin 1 #1.jpeg \ifeof 1
- \openin 1 #1.JPG \ifeof 1
- \openin 1 #1.pdf \ifeof 1
- \openin 1 #1.PDF \ifeof 1
+ \openin 1 #1.pdf \ifeof 1
+ \openin 1 #1.PDF \ifeof 1
+ \openin 1 #1.png \ifeof 1
+ \openin 1 #1.jpg \ifeof 1
+ \openin 1 #1.jpeg \ifeof 1
+ \openin 1 #1.JPG \ifeof 1
\errhelp = \nopdfimagehelp
\errmessage{Could not find image file #1 for pdf}%
- \else \gdef\pdfimgext{PDF}%
+ \else \gdef\pdfimgext{JPG}%
\fi
- \else \gdef\pdfimgext{pdf}%
+ \else \gdef\pdfimgext{jpeg}%
\fi
- \else \gdef\pdfimgext{JPG}%
+ \else \gdef\pdfimgext{jpg}%
\fi
- \else \gdef\pdfimgext{jpeg}%
+ \else \gdef\pdfimgext{png}%
\fi
- \else \gdef\pdfimgext{jpg}%
+ \else \gdef\pdfimgext{PDF}%
\fi
- \else \gdef\pdfimgext{png}%
+ \else \gdef\pdfimgext{pdf}%
\fi
\closein 1
\endgroup
\else\ifx\next-%
\else\ifx\next.%
\else\ptexslash
- \fi\fi\fi}
+ \fi\fi\fi
+ \aftersmartic
+}
% like \smartslanted except unconditionally uses \ttsl, and no ic.
% @var is set to this for defun arguments.
% ttsl for book titles, do we?
\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
+\def\aftersmartic{}
+\def\var#1{%
+ \let\saveaftersmartic = \aftersmartic
+ \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
+ \smartslanted{#1}%
+}
+
\let\i=\smartitalic
\let\slanted=\smartslanted
-\def\var#1{\smartslanted{#1}}
\let\dfn=\smartslanted
\let\emph=\smartitalic
\plainfrenchspacing
#1%
}%
- \null
+ \null % reset spacefactor to 1000
}
% We *must* turn on hyphenation at `-' and `_' in @code.
\ifx\temp\empty \else
\space ({\unsepspaces \ignorespaces \temp \unskip})%
\fi
+ \null % reset \spacefactor=1000
}
% @abbr for "Comput. J." and the like.
\ifx\temp\empty \else
\space ({\unsepspaces \ignorespaces \temp \unskip})%
\fi
+ \null % reset \spacefactor=1000
}
% @asis just yields its argument. Used with @table, for example.
{\tentt \global\dimen0 = 3em}% Width of the box.
\dimen2 = .55pt % Thickness of rules
% The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
+\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt}
%
\setbox\errorbox=\hbox to \dimen0{\hfil
\hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
% If so, set to same dimension as multitablelinespace.
\ifdim\multitableparskip>\multitablelinespace
\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
- %% than skip between lines in the table.
+\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
+ % than skip between lines in the table.
\fi%
\ifdim\multitableparskip=0pt
\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
- %% than skip between lines in the table.
+\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
+ % than skip between lines in the table.
\fi}
\def\macroxxx#1{%
\getargs{#1}% now \macname is the macname and \argl the arglist
\ifx\argl\empty % no arguments
- \paramno=0
+ \paramno=0\relax
\else
\expandafter\parsemargdef \argl;%
+ \if\paramno>256\relax
+ \ifx\eTeXversion\thisisundefined
+ \errhelp = \EMsimple
+ \errmessage{You need eTeX to compile a file with macros with more than 256 arguments}
+ \fi
+ \fi
\fi
\if1\csname ismacro.\the\macname\endcsname
\message{Warning: redefining \the\macname}%
\def\getmacname#1 #2\relax{\macname={#1}}
\def\getmacargs#1{\def\argl{#1}}
+% For macro processing make @ a letter so that we can make Texinfo private macro names.
+\edef\texiatcatcode{\the\catcode`\@}
+\catcode `@=11\relax
+
% Parse the optional {params} list. Set up \paramno and \paramlist
-% so \defmacro knows what to do. Define \macarg.blah for each blah
-% in the params list to be ##N where N is the position in that list.
+% so \defmacro knows what to do. Define \macarg.BLAH for each BLAH
+% in the params list to some hook where the argument si to be expanded. If
+% there are less than 10 arguments that hook is to be replaced by ##N where N
+% is the position in that list, that is to say the macro arguments are to be
+% defined `a la TeX in the macro body.
+%
% That gets used by \mbodybackslash (above).
%
% We need to get `macro parameter char #' into several definitions.
%
% The same technique is used to protect \eatspaces till just before
% the macro is used.
-
+%
+% If there are 10 or more arguments, a different technique is used, where the
+% hook remains in the body, and when macro is to be expanded the body is
+% processed again to replace the arguments.
+%
+% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the
+% argument N value and then \edef the body (nothing else will expand because of
+% the catcode regime underwhich the body was input).
+%
+% If you compile with TeX (not eTeX), and you have macros with 10 or more
+% arguments, you need that no macro has more than 256 arguments, otherwise an
+% error is produced.
\def\parsemargdef#1;{%
\paramno=0\def\paramlist{}%
\let\hash\relax
\let\xeatspaces\relax
\parsemargdefxxx#1,;,%
+ % In case that there are 10 or more arguments we parse again the arguments
+ % list to set new definitions for the \macarg.BLAH macros corresponding to
+ % each BLAH argument. It was anyhow needed to parse already once this list
+ % in order to count the arguments, and as macros with at most 9 arguments
+ % are by far more frequent than macro with 10 or more arguments, defining
+ % twice the \macarg.BLAH macros does not cost too much processing power.
+ \ifnum\paramno<10\relax\else
+ \paramno0\relax
+ \parsemmanyargdef@@#1,;,% 10 or more arguments
+ \fi
}
\def\parsemargdefxxx#1,{%
\if#1;\let\next=\relax
\edef\paramlist{\paramlist\hash\the\paramno,}%
\fi\next}
+\def\parsemmanyargdef@@#1,{%
+ \if#1;\let\next=\relax
+ \else
+ \let\next=\parsemmanyargdef@@
+ \edef\tempb{\eatspaces{#1}}%
+ \expandafter\def\expandafter\tempa
+ \expandafter{\csname macarg.\tempb\endcsname}%
+ % Note that we need some extra \noexpand\noexpand, this is because we
+ % don't want \the to be expanded in the \parsermacbody as it uses an
+ % \xdef .
+ \expandafter\edef\tempa
+ {\noexpand\noexpand\noexpand\the\toks\the\paramno}%
+ \advance\paramno by 1\relax
+ \fi\next}
+
% These two commands read recursive and nonrecursive macro bodies.
% (They're different since rec and nonrec macros end differently.)
%
+
+\catcode `\@\texiatcatcode
\long\def\parsemacbody#1@end macro%
{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
\long\def\parsermacbody#1@end rmacro%
{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+\catcode `\@=11\relax
+
+\let\endargs@\relax
+\let\nil@\relax
+\def\nilm@{\nil@}%
+\long\def\nillm@{\nil@}%
+
+% This macro is expanded during the Texinfo macro expansion, not during its
+% definition. It gets all the arguments values and assigns them to macros
+% macarg.ARGNAME
+%
+% #1 is the macro name
+% #2 is the list of argument names
+% #3 is the list of argument values
+\def\getargvals@#1#2#3{%
+ \def\macargdeflist@{}%
+ \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion.
+ \def\paramlist{#2,\nil@}%
+ \def\macroname{#1}%
+ \begingroup
+ \macroargctxt
+ \def\argvaluelist{#3,\nil@}%
+ \def\@tempa{#3}%
+ \ifx\@tempa\empty
+ \setemptyargvalues@
+ \else
+ \getargvals@@
+ \fi
+}
+
+%
+\def\getargvals@@{%
+ \ifx\paramlist\nilm@
+ % Some sanity check needed here that \argvaluelist is also empty.
+ \ifx\argvaluelist\nillm@
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Too many arguments in macro `\macroname'!}%
+ \fi
+ \let\next\macargexpandinbody@
+ \else
+ \ifx\argvaluelist\nillm@
+ % No more arguments values passed to macro. Set remaining named-arg
+ % macros to empty.
+ \let\next\setemptyargvalues@
+ \else
+ % pop current arg name into \@tempb
+ \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}%
+ \expandafter\@tempa\expandafter{\paramlist}%
+ % pop current argument value into \@tempc
+ \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}%
+ \expandafter\@tempa\expandafter{\argvaluelist}%
+ % Here \@tempb is the current arg name and \@tempc is the current arg value.
+ % First place the new argument macro definition into \@tempd
+ \expandafter\macname\expandafter{\@tempc}%
+ \expandafter\let\csname macarg.\@tempb\endcsname\relax
+ \expandafter\def\expandafter\@tempe\expandafter{%
+ \csname macarg.\@tempb\endcsname}%
+ \edef\@tempd{\long\def\@tempe{\the\macname}}%
+ \push@\@tempd\macargdeflist@
+ \let\next\getargvals@@
+ \fi
+ \fi
+ \next
+}
-% This defines the macro itself. There are six cases: recursive and
-% nonrecursive macros of zero, one, and many arguments.
+\def\push@#1#2{%
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter#2%
+ \expandafter\expandafter\expandafter{%
+ \expandafter#1#2}%
+}
+
+% Replace arguments by their values in the macro body, and place the result
+% in macro \@tempa
+\def\macvalstoargs@{%
+ % To do this we use the property that token registers that are \the'ed
+ % within an \edef expand only once. So we are going to place all argument
+ % values into respective token registers.
+ %
+ % First we save the token context, and initialize argument numbering.
+ \begingroup
+ \paramno0\relax
+ % Then, for each argument number #N, we place the corresponding argument
+ % value into a new token list register \toks#N
+ \expandafter\putargsintokens@\saveparamlist@,;,%
+ % Then, we expand the body so that argument are replaced by their
+ % values. The trick for values not to be expanded themselves is that they
+ % are within tokens and that tokens expand only once in an \edef .
+ \edef\@tempc{\csname mac.\macroname .body\endcsname}%
+ % Now we restore the token stack pointer to free the token list registers
+ % which we have used, but we make sure that expanded body is saved after
+ % group.
+ \expandafter
+ \endgroup
+ \expandafter\def\expandafter\@tempa\expandafter{\@tempc}%
+ }
+
+\def\macargexpandinbody@{%
+ %% Define the named-macro outside of this group and then close this group.
+ \expandafter
+ \endgroup
+ \macargdeflist@
+ % First the replace in body the macro arguments by their values, the result
+ % is in \@tempa .
+ \macvalstoargs@
+ % Then we point at the \norecurse or \gobble (for recursive) macro value
+ % with \@tempb .
+ \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname
+ % Depending on whether it is recursive or not, we need some tailing
+ % \egroup .
+ \ifx\@tempb\gobble
+ \let\@tempc\relax
+ \else
+ \let\@tempc\egroup
+ \fi
+ % And now we do the real job:
+ \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}%
+ \@tempd
+}
+
+\def\putargsintokens@#1,{%
+ \if#1;\let\next\relax
+ \else
+ \let\next\putargsintokens@
+ % First we allocate the new token list register, and give it a temporary
+ % alias \@tempb .
+ \toksdef\@tempb\the\paramno
+ % Then we place the argument value into that token list register.
+ \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname
+ \expandafter\@tempb\expandafter{\@tempa}%
+ \advance\paramno by 1\relax
+ \fi
+ \next
+}
+
+% Save the token stack pointer into macro #1
+\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}}
+% Restore the token stack pointer from number in macro #1
+\def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax}
+% newtoks that can be used non \outer .
+\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi}
+
+% Tailing missing arguments are set to empty
+\def\setemptyargvalues@{%
+ \ifx\paramlist\nilm@
+ \let\next\macargexpandinbody@
+ \else
+ \expandafter\setemptyargvaluesparser@\paramlist\endargs@
+ \let\next\setemptyargvalues@
+ \fi
+ \next
+}
+
+\def\setemptyargvaluesparser@#1,#2\endargs@{%
+ \expandafter\def\expandafter\@tempa\expandafter{%
+ \expandafter\def\csname macarg.#1\endcsname{}}%
+ \push@\@tempa\macargdeflist@
+ \def\paramlist{#2}%
+}
+
+% #1 is the element target macro
+% #2 is the list macro
+% #3,#4\endargs@ is the list value
+\def\pop@#1#2#3,#4\endargs@{%
+ \def#1{#3}%
+ \def#2{#4}%
+}
+\long\def\longpop@#1#2#3,#4\endargs@{%
+ \long\def#1{#3}%
+ \long\def#2{#4}%
+}
+
+% This defines a Texinfo @macro. There are eight cases: recursive and
+% nonrecursive macros of zero, one, up to nine, and many arguments.
% Much magic with \expandafter here.
% \xdef is used so that macro definitions will survive the file
% they're defined in; @include reads the file inside a group.
\expandafter\noexpand\csname\the\macname xxx\endcsname}%
\expandafter\xdef\csname\the\macname xxx\endcsname##1{%
\egroup\noexpand\scanmacro{\temp}}%
- \else % many
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \noexpand\csname\the\macname xx\endcsname}%
- \expandafter\xdef\csname\the\macname xx\endcsname##1{%
- \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname xxx\endcsname
- \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+ \else
+ \ifnum\paramno<10\relax % at most 9
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \noexpand\csname\the\macname xx\endcsname}%
+ \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+ \expandafter\expandafter
+ \expandafter\xdef
+ \expandafter\expandafter
+ \csname\the\macname xxx\endcsname
+ \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+ \else % 10 or more
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \noexpand\getargvals@{\the\macname}{\argl}%
+ }%
+ \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+ \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
+ \fi
\fi
\else
\ifcase\paramno
\egroup
\noexpand\norecurse{\the\macname}%
\noexpand\scanmacro{\temp}\egroup}%
- \else % many
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \expandafter\noexpand\csname\the\macname xx\endcsname}%
- \expandafter\xdef\csname\the\macname xx\endcsname##1{%
- \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname xxx\endcsname
- \paramlist{%
- \egroup
- \noexpand\norecurse{\the\macname}%
- \noexpand\scanmacro{\temp}\egroup}%
+ \else % at most 9
+ \ifnum\paramno<10\relax
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \expandafter\noexpand\csname\the\macname xx\endcsname}%
+ \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+ \expandafter\expandafter
+ \expandafter\xdef
+ \expandafter\expandafter
+ \csname\the\macname xxx\endcsname
+ \paramlist{%
+ \egroup
+ \noexpand\norecurse{\the\macname}%
+ \noexpand\scanmacro{\temp}\egroup}%
+ \else % 10 or more:
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \noexpand\getargvals@{\the\macname}{\argl}%
+ }%
+ \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+ \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse
+ \fi
\fi
\fi}
+\catcode `\@\texiatcatcode\relax
+
\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
% \braceorline decides whether the next nonwhitespace character is a
% space to prevent strange expansion errors.)
\def\supereject{\par\penalty -20000\footnoteno =0 }
-% @footnotestyle is meaningful for info output only.
+% @footnotestyle is meaningful for Info output only.
\let\footnotestyle=\comment
{\catcode `\@=11
% expands into a box, it must come within the paragraph, lest it
% provide a place where TeX can split the footnote.
\footstrut
+ %
+ % Invoke rest of plain TeX footnote routine.
\futurelet\next\fo@t
}
}%end \catcode `\@=11
--- /dev/null
+#!/bin/sh
+#
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+error=0
+for module in `./gnulib-tool --list`; do
+ module_license=`./gnulib-tool --extract-license $module`
+ if test "$module_license" = 'GPLed build tool'; then
+ module_license='GPL'
+ fi
+ for file in `./gnulib-tool --extract-filelist $module | grep '^\(lib\|build-aux\)/'`; do
+ if grep 'GNU General Public' $file > /dev/null; then
+ if grep 'version 3 or later' $file > /dev/null \
+ || grep 'either version 3' $file > /dev/null; then
+ file_license='GPL'
+ else
+ if grep 'version 2 or later' $file > /dev/null \
+ || grep 'either version 2' $file > /dev/null; then
+ file_license='GPLv2+'
+ else
+ file_license='GPL??'
+ fi
+ fi
+ else
+ if grep 'Lesser General' $file > /dev/null; then
+ if grep 'version 3 or later' $file > /dev/null \
+ || grep 'either version 3' $file > /dev/null; then
+ file_license='LGPL'
+ else
+ if grep 'version 2 or later' $file > /dev/null \
+ || grep 'version 2 of the License, or' $file > /dev/null \
+ || grep 'version 2\.1 of the License, or' $file > /dev/null; then
+ file_license='LGPLv2+'
+ else
+ file_license='LGPL??'
+ fi
+ fi
+ else
+ file_license='??'
+ fi
+ fi
+ if test "$file_license" != "$module_license"; then
+ if test $error = 0; then
+ echo "Module License File License File name"
+ echo "============== ============== ====================================="
+ fi
+ printf '%-14s %-14s %s\n' "$module_license" "$file_license" "$file"
+ error=1
+ fi
+ done
+done
+exit $error
@end smallexample
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
-replace the ``with@dots{}Texts.'' line with this:
+replace the ``with@dots{}Texts.''@: line with this:
@smallexample
@group
@end smallexample
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
-replace the ``with@dots{}Texts.'' line with this:
+replace the ``with@dots{}Texts.''@: line with this:
@smallexample
@group
@item
This function is missing on many non-glibc platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.1, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.1, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This variable is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This variable is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This variable is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This variable is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is broken on some platforms:
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is broken on some platforms:
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is broken on some platforms:
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is broken on some platforms:
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is broken on some platforms:
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is broken on some platforms:
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is broken on some platforms:
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is broken on some platforms:
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is broken on some platforms:
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is broken on some platforms:
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is broken on some platforms:
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is broken on some platforms:
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, Interix 3.5.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, MSVC 9, Interix 3.5.
@end itemize
Portability problems fixed by Gnulib module @code{vasprintf-posix}:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 11 2010-11, Cygwin, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 11 2010-11, Cygwin, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Cygwin 1.5.x, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Cygwin 1.5.x, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, Cygwin, mingw.
+AIX 5.1, Cygwin, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@item
This function is missing on many non-glibc platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function fails to detect trailing slashes on non-directories on
some platforms:
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, Minix 3.1.8, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, mingw, BeOS.
+AIX 5.1, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, mingw.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, mingw, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Cygwin 1.5.x, mingw, Interix 3.5.
+Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 11 2010-11, mingw.
+Minix 3.1.8, HP-UX 11, Solaris 11 2010-11, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, mingw.
+MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on many non-glibc platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.1, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.1, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 4.3.2, IRIX 6.5, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 4.3.2, IRIX 6.5, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is missing a declaration on some platforms:
Solaris 9.
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This variable is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This variable is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This variable is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-HP-UX 11, Cygwin, mingw, Interix 3.5, BeOS.
+HP-UX 11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-HP-UX 11, Cygwin, mingw, Interix 3.5, BeOS.
+HP-UX 11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-HP-UX 11, Cygwin, mingw, Interix 3.5, BeOS.
+HP-UX 11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-HP-UX 11, Cygwin, mingw, Interix 3.5, BeOS.
+HP-UX 11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-HP-UX 11, Cygwin, mingw, Interix 3.5, BeOS.
+HP-UX 11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on many non-glibc platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on older glibc versions and all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly across the entire data range of files larger than 2 GB.
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX
-11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.7, mingw, Interix 3.5, BeOS.
+11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX
-11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.7, mingw, Interix 3.5, BeOS.
+11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on all non-glibc platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.7, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 5.3, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 5.3, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@item
This function is missing on many non-glibc platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11.
+Minix 3.1.8, HP-UX 11, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, mingw.
+MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on many non-glibc platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw
+mingw, MSVC 9
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on many non-glibc platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on many non-glibc platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on many non-glibc platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, mingw, Interix 3.5, BeOS.
+AIX 5.1, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On platforms where @code{f_blocks} in @samp{struct statfs} is a 32-bit
value, this function may not work correctly on files systems larger than
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
correctly report the size of files or block devices larger than 2 GB and
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
correctly report the size of files or block devices larger than 2 GB and
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw,
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9,
Interix 3.5, BeOS.
@item
This function cannot set full timestamp resolution. Use
@item
This function is missing on some platforms:
glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8,
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 8, Cygwin 1.5.x, mingw,
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 8, Cygwin 1.5.x, mingw, MSVC 9,
Interix 3.5, BeOS.
@item
On some platforms, this function mis-handles trailing slash:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, mingw.
+MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on many non-glibc platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.1, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.1, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@item
This function is missing on many non-glibc platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.7.1, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.7.1, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Gnulib provides the module @code{nproc} that performs a similar
@item
This function is missing on many non-glibc platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.7.1, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.7.1, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on many non-glibc platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.1, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.1, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 4.3.2, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 4.3.2, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly on huge directories larger than 2 GB. The fix is to use
@itemize
@item
This function is missing on some platforms:
-Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is declared in @code{netdb.h}, not in @code{unistd.h}, on
some platforms:
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
On those platforms, this module provides a stub that always sets
@code{errno} to @code{ENOTSUP} and returns @samp{-1}.
@item
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 2.6, Cygwin, mingw, Interix 3.5, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 2.6, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is declared in @code{<sys/loadavg.h>}, not @code{<stdlib.h>},
on some platforms:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, OSF/1 5.1, mingw, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, OSF/1 5.1, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems fixed by Gnulib:
@itemize
@item
+This function is missing on some platforms:
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, MSVC 9, Interix 3.5.
+@item
The function @code{getopt_long} does not obey the combination of
@samp{+} and @samp{:} flags in the options string on some platforms:
glibc 2.11.
arguments on some platforms:
MacOS X 10.5, OpenBSD 4.0, AIX 5.2, IRIX 6.5, Solaris 11 2010-11, Cygwin 1.5.x.
@item
-This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Interix 3.5.
-@item
This function crashes if the option string includes @code{W;} but
there are no long options, on some platforms:
glibc 2.14.
@item
This function is missing on some platforms:
MacOS X 10.3, FreeBSD 5.2.1, NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 5.1, mingw, Interix 3.5.
+OSF/1 5.1, mingw, MSVC 9, Interix 3.5.
@item
This function crashes if the option string includes @code{W;} but
there are no long options, on some platforms:
@itemize
@item
This function is missing on some platforms:
-BeOS.
+MSVC 9, BeOS.
@item
This function is broken on some platforms:
mingw.
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
Portability problems fixed by Gnulib module @code{getpass-gnu}:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11.00, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11.00, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11.00, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11.00, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 4.3.2, IRIX 6.5, Cygwin, mingw, BeOS.
+Minix 3.1.8, AIX 4.3.2, IRIX 6.5, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, Minix 3.1.8, HP-UX 11, IRIX 5.3, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 5.3, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 5.3, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 5.3, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 5.3, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 4.3.2, IRIX 6.5, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 4.3.2, IRIX 6.5, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is missing a declaration on some platforms:
Solaris 9.
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@item
This function is missing on many non-glibc platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on most non-glibc platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, OSF/1 5.1, Cygwin, mingw, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, OSF/1 5.1, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, mingw, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, mingw, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, Interix 3.5.
+Minix 3.1.8, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, mingw, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, HP-UX 11, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This constant is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, HP-UX 11.00, IRIX 6.5, OSF/1 5.1, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, Minix 3.1.8, HP-UX 11.00, IRIX 6.5, OSF/1 5.1, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This constant is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, AIX 4.3.2, HP-UX 11.00, IRIX 6.5, OSF/1 5.1, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, Minix 3.1.8, AIX 4.3.2, HP-UX 11.00, IRIX 6.5, OSF/1 5.1, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11.00, IRIX 6.5, OSF/1 4.0, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, HP-UX 11.00, IRIX 6.5, OSF/1 4.0, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11.00, IRIX 6.5, OSF/1 4.0, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, HP-UX 11.00, IRIX 6.5, OSF/1 4.0, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11.00, IRIX 6.5, OSF/1 4.0, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, HP-UX 11.00, IRIX 6.5, OSF/1 4.0, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11.00, IRIX 5.3, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, HP-UX 11.00, IRIX 5.3, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11.00, IRIX 5.3, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, HP-UX 11.00, IRIX 5.3, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, Interix 3.5, BeOS.
+mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw.
+MacOS X 10.5, FreeBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11.
+MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin, MSVC 9, Interix 3.5.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, mingw.
+MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, mingw.
+MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, mingw.
+MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5 x86, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, mingw.
+MacOS X 10.5 x86, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, mingw.
+MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on many non-glibc platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on many non-glibc platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on many non-glibc platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This variable is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This variable is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This variable is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
This function is declared in @code{<utmp.h>} on glibc, Cygwin,
in @code{<util.h>} on MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8,
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on many non-glibc platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on many non-glibc platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.4, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1,
-Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function cannot set full timestamp resolution. Use
@code{utimensat(AT_FDCWD,file,times,AT_SYMLINK_NOFOLLOW)}, or the
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Cygwin, mingw, BeOS.
+Minix 3.1.8, AIX 5.1, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.00, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.00, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, mingw.
+FreeBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.00, OSF/1 5.1, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.00, OSF/1 5.1, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 4.0, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 4.0, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function has reversed arguments on some older platforms:
Linux libc 5.0.9
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on many non-glibc platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.5, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.5, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, @code{mkostemp} may not work
correctly to create files larger than 2 GB. (Cf. @code{AC_SYS_LARGEFILE}.)
@item
This function is missing on many non-glibc platforms:
glibc 2.10, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8,
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.5, mingw, Interix 3.5, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.5, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, @code{mkostemps} may not work
correctly to create files larger than 2 GB. (Cf. @code{AC_SYS_LARGEFILE}.)
@item
This function is missing on many non-glibc platforms:
glibc 2.10, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10,
-Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is declared in @code{<unistd.h>} instead of @code{<stdlib.h>}
on some platforms:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, Interix 3.5.
+mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This variable is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This variable is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems fixed by Gnulib module @code{ostack-printf-posix}:
@item
This function does not support size specifiers as in C99 (@code{hh}, @code{ll},
@code{j}, @code{t}, @code{z}) on some platforms:
-AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.24, mingw, BeOS.
+AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.24, mingw, MSVC 9, BeOS.
@item
printf of @samp{long double} numbers is unsupported on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@item
printf @code{"%f"}, @code{"%e"}, @code{"%g"} of Infinity and NaN yields an
incorrect result on some platforms:
-AIX 5.2, OSF/1 5.1, Solaris 11 2010-11, mingw.
+AIX 5.2, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9.
@item
This function does not support the @samp{a} and @samp{A} directives on some
platforms:
glibc-2.3.6, MacOS X 10.5, NetBSD 5.0, OpenBSD 4.0, AIX 5.2, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, BeOS.
@item
This function does not support the @samp{F} directive on some platforms:
NetBSD 3.0, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9,
-Cygwin 1.5.x, mingw, BeOS.
+Cygwin 1.5.x, mingw, MSVC 9, BeOS.
+@item
+This function does not support the @samp{n} directive on some platforms:
+MSVC 9.
@item
This function does not support the @samp{ls} directive on some platforms:
OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Cygwin 1.5.x, Haiku.
@item
This function does not support format directives that access arguments in an
arbitrary order, such as @code{"%2$s"}, on some platforms:
-NetBSD 3.0, mingw, BeOS.
+NetBSD 3.0, mingw, MSVC 9, BeOS.
@item
This function doesn't support the @code{'} flag on some platforms:
-NetBSD 3.0, Cygwin 1.5.24, mingw.
+NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 9.
@item
This function behaves incorrectly when a @samp{-} flag and a negative width
are specified together, on some platforms:
@item
printf @code{"%010f"} of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9.
@item
This function does not support precisions larger than 512 or 1024 in integer,
floating-point and pointer output on some platforms:
-Solaris 10/x86, mingw, BeOS.
+Solaris 10/x86, mingw, MSVC 9, BeOS.
@item
This function can crash in out-of-memory conditions on some platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0.
@item
This function does not fully support the @samp{n} directive on some platforms:
-HP-UX 11, mingw.
+HP-UX 11, mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems fixed by Gnulib module @code{ostack-printf-posix}:
@item
This function does not support size specifiers as in C99 (@code{hh}, @code{ll},
@code{j}, @code{t}, @code{z}) on some platforms:
-AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.24, mingw, BeOS.
+AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.24, mingw, MSVC 9, BeOS.
@item
printf of @samp{long double} numbers is unsupported on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@item
printf @code{"%f"}, @code{"%e"}, @code{"%g"} of Infinity and NaN yields an
incorrect result on some platforms:
-AIX 5.2, OSF/1 5.1, Solaris 11 2010-11, mingw.
+AIX 5.2, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9.
@item
This function does not support the @samp{a} and @samp{A} directives on some
platforms:
glibc-2.3.6, MacOS X 10.5, NetBSD 5.0, OpenBSD 4.0, AIX 5.2, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, BeOS.
@item
This function does not support the @samp{F} directive on some platforms:
NetBSD 3.0, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9,
-Cygwin 1.5.x, mingw, BeOS.
+Cygwin 1.5.x, mingw, MSVC 9, BeOS.
+@item
+This function does not support the @samp{n} directive on some platforms:
+MSVC 9.
@item
This function does not support the @samp{ls} directive on some platforms:
OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Cygwin 1.5.x, Haiku.
@item
This function does not support format directives that access arguments in an
arbitrary order, such as @code{"%2$s"}, on some platforms:
-NetBSD 3.0, mingw, BeOS.
+NetBSD 3.0, mingw, MSVC 9, BeOS.
@item
This function doesn't support the @code{'} flag on some platforms:
-NetBSD 3.0, Cygwin 1.5.24, mingw.
+NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 9.
@item
This function behaves incorrectly when a @samp{-} flag and a negative width
are specified together, on some platforms:
@item
printf @code{"%010f"} of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9.
@item
This function does not support precisions larger than 512 or 1024 in integer,
floating-point and pointer output on some platforms:
-Solaris 10/x86, mingw, BeOS.
+Solaris 10/x86, mingw, MSVC 9, BeOS.
@item
This function can crash in out-of-memory conditions on some platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0.
@item
This function does not fully support the @samp{n} directive on some platforms:
-HP-UX 11, mingw.
+HP-UX 11, mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
After a successful call to @code{openpty}, the application needs to close
the master's file descriptor before closing the slave's file descriptor,
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on many non-glibc platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.1, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.1, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.9, MacOS X 10.5, FreeBSD 5.2.1, Minix 3.1.8, AIX 5.2, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.9, MacOS X 10.5, FreeBSD 5.2.1, Minix 3.1.8, AIX 5.2, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly on files larger than 2 GB. The fix is to use the
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This variable is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This variable is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.3.2, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.2, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function has a different signature on some platforms:
glibc 2.3.3.
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.3.2, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.2, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function has a different signature on some platforms:
glibc 2.3.3.
@itemize
@item
This function is missing on many non-glibc platforms:
-glibc 2.3.2, MacOS X 10.5, FreeBSD 6.4, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.2, MacOS X 10.5, FreeBSD 6.4, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function has a different signature on some platforms:
glibc 2.3.3.
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many non-glibc platforms:
-glibc 2.11, MacOS X 10.5, FreeBSD 6.4, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.11, MacOS X 10.5, FreeBSD 6.4, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many non-glibc platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 7, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 7, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many non-glibc platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 7, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 7, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
This function has now been standardized by POSIX under the name
@itemize
@item
This function is missing on many non-glibc platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 7, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 7, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
This function has now been standardized by POSIX under the name
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many non-glibc platforms:
-glibc 2.3.2, MacOS X 10.5, FreeBSD 6.4, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.2, MacOS X 10.5, FreeBSD 6.4, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function has a different signature on some platforms:
glibc 2.3.3.
@itemize
@item
This function is missing on many non-glibc platforms:
-glibc 2.11, MacOS X 10.5, FreeBSD 6.4, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.11, MacOS X 10.5, FreeBSD 6.4, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function has a different signature on some platforms:
NetBSD 5.0, OSF/1 5.1.
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.10, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.10, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.3.2, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.2, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
FreeBSD 6.4 has a function of this name in @code{libthr} but not in
@code{libpthread}, and it also is missing a declaration.
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.3.2, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.2, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+AIX 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@subsection @code{ptsname_r}
@findex ptsname_r
-Gnulib module: ---
+Gnulib module: ptsname_r
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8,
+AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin 1.7.9, mingw,
+MSVC 9, BeOS.
+@item
+This function is not declared unless @code{_REENTRANT} is defined,
+on some platforms:
+OSF/1 5.1.
+@item
+This function has an incompatible declaration on some platforms:
+OSF/1 5.1.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.9, MacOS X 10.5, FreeBSD 5.2.1, Minix 3.1.8, AIX 5.2, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.9, MacOS X 10.5, FreeBSD 5.2.1, Minix 3.1.8, AIX 5.2, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly on files larger than 2 GB. The fix is to use the
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.7, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.7, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11.11, IRIX 6.5, OSF/1 4.0, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11.11, IRIX 6.5, OSF/1 4.0, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This variable is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+AIX 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on many non-glibc platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Cygwin 1.5.x, mingw, Interix 3.5.
+Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Cygwin 1.5.x, mingw, Interix 3.5.
+Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Cygwin 1.5.x, mingw, Interix 3.5.
+Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Cygwin 1.5.x, mingw, Interix 3.5.
+Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Cygwin 1.5.x, mingw, Interix 3.5.
+Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, mingw, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.11, IRIX 6.5, OSF/1 4.0, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.11, IRIX 6.5, OSF/1 4.0, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This variable is missing on some platforms:
-Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, BeOS.
+Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11.11, IRIX 6.5, OSF/1 4.0, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11.11, IRIX 6.5, OSF/1 4.0, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, mingw.
+AIX 5.1, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, mingw.
+MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly on files larger than 2 GB. The fix is to use the
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, mingw.
+Minix 3.1.8, HP-UX 11, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, mingw, Interix 3.5, BeOS.
+AIX 5.1, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On very old systems, this function operated on an array of @samp{int},
even though that was a different size than an array of @samp{gid_t};
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
+@item
+This function is not declared on some platforms:
+AIX 7.1, OSF/1 5.1, Solaris 10.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11.23, mingw.
+Minix 3.1.8, HP-UX 11.23, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 4.3.2, IRIX 6.5, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 4.3.2, IRIX 6.5, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is missing a declaration on some platforms:
Solaris 9.
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on many non-glibc platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.9, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Solaris 11 2010-11, Cygwin, mingw, BeOS.
+Minix 3.1.8, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, mingw.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, mingw.
+MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Solaris 11 2010-11, Cygwin, mingw, BeOS.
+Minix 3.1.8, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 11 2010-11, Cygwin, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.11, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.11, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On platforms where @code{f_blocks} in @samp{struct statfs} is a 32-bit
value, this function may not work correctly on files systems larger than
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x,
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@item
This function can trigger memchr bugs on some platforms:
@item
This function is missing on many non-glibc platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.7.8, mingw, Interix 3.5,
+IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.7.8, mingw, MSVC 9, Interix 3.5,
BeOS.
@item
This function crashes when no occurrence is found on some platforms:
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, BeOS.
+AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, MSVC 9, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This variable is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This variable is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This variable is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-glibc 2.13, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.13, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This constant is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Cygwin, mingw, BeOS.
+Minix 3.1.8, AIX 5.1, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 5.3, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 5.3, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, OSF/1 5.1, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, OSF/1 5.1, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1,
-Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, Interix 3.5.
+Minix 3.1.8, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, Interix 3.5.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, MSVC 9, Interix 3.5.
@end itemize
Portability problems fixed by Gnulib module @code{vasprintf-posix}:
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, OSF/1 5.1, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, OSF/1 5.1, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, mingw, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11, OSF/1 5.1, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 4.3.2, HP-UX 11.11, IRIX 6.5, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 4.3.2, HP-UX 11.11, IRIX 6.5, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 11 2010-11, Cygwin, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, Cygwin 1.7.4, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin 1.7.4, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin 1.7.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin 1.7.4, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin 1.7.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1,
-Cygwin 1.7.4, mingw, Interix 3.5, BeOS.
+Cygwin 1.7.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Cygwin 1.7.4, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Cygwin 1.7.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, Cygwin 1.7.4, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 11 2010-11, Cygwin, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5,
-OSF/1 5.1, Cygwin 1.7.4, mingw, Interix 3.5, BeOS.
+OSF/1 5.1, Cygwin 1.7.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Cygwin 1.7.4, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Cygwin 1.7.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, Cygwin 1.7.4, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Cygwin 1.7.4, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Cygwin 1.7.4, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is not declared in the header on some platforms:
Cygwin 1.7.5.
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is not declared in the header on some platforms:
Cygwin 1.7.5.
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is not declared in the header on some platforms:
Cygwin 1.7.5.
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is not declared in the header on some platforms:
Cygwin 1.7.5.
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.7.4, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, mingw.
+MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, mingw.
+MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, mingw.
+MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, HP-UX 11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.5, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This header file is useless because most executables and object files are
in ELF format on some platforms:
@itemize
@item
This header file is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX 4.3.2, mingw.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX 4.3.2, mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This header file is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This header file is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@item
The argz functions do not work on some platforms:
Cygwin.
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, Interix 3.5, BeOS.
@item
The functions @code{crypt}, @code{setkey}, @code{encrypt} are missing on some
platforms:
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, MSVC 9, BeOS.
@end itemize
Portability problems fixed by Gnulib:
@itemize
@item
-This header file is missing on all non-glibc platforms:
+This header file is missing on many platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+@item
+This header file contains unrelated definitions on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This header file is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-Minix 3.1.8, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
The macro @code{_PATH_FSTAB} is missing on some platforms:
AIX 5.1, HP-UX 11.
@itemize
@item
This header file is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-AIX 5.1, HP-UX 11, Interix 3.5.
+AIX 5.1, HP-UX 11, MSVC 9, Interix 3.5.
@item
The function @code{getopt_long} is missing on some platforms:
IRIX 6.5, OSF/1 5.1, Solaris 9.
@itemize
@item
This header file is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.4, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This header file is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, mingw, MSVC 9, Interix 3.5, BeOS.
@item
The functions cannot deal with GNU .mo files with system-dependent strings
(of major version 1 or of minor version 1) on some non-glibc platforms:
@itemize
@item
This header file is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, OSF/1 5.1, Solaris 11 2010-11, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9, Interix 3.5, BeOS.
@item
The function @code{getmntent_r} is missing on all non-glibc platforms:
AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin.
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This header file is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 11 2010-11, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 11 2010-11, mingw, MSVC 9, BeOS.
@item
The set of @code{_PATH_*} macros is platform dependent.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-Cygwin, mingw, Interix 3.5, BeOS.
+Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
The functions are missing on some platforms:
HP-UX 11.
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
The functions @code{getspent_r}, @code{getspnam_r}, @code{sgetspent_r},
@code{fgetspent}, @code{fgetspent_r}, @code{putspent} are missing on some
@itemize
@item
This header file is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
This header file does not declare the @code{ioctl} function on some platforms:
AIX 5.1, Solaris 11 2010-11.
@itemize
@item
This header file is missing on some platforms:
-mingw, Interix 3.5, BeOS.
+mingw, MSVC 9, Interix 3.5, BeOS.
@item
The macro @code{EX_CONFIG} is missing on some platforms:
HP-UX 11.
@itemize
@item
This header file is missing on some platforms:
-HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+HP-UX 11, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@code{mkancesdirs}, @code{mkdir-p}, @code{euidaccess}, @code{faccessat}.
The versions of Windows that are supported are Windows XP and newer.
@item
-Native Windows, with MSVC as compiler, is not tested and low priority.
+Native Windows, with MSVC as compiler, is rarely tested and low priority.
@item
mingw in 64-bit mode is not tested and low priority so far.
@item
...
@end example
+If you are using @code{AC_PROG_CC_STDC}, the macro @code{gl_EARLY} must
+be called after it, like this:
+
+@example
+...
+AC_PROG_CC
+AC_PROG_CC_STDC
+gl_EARLY
+...
+@end example
+
The core part of the gnulib checks are done by the macro
@code{gl_INIT}. Place it further down in the file, typically where
you normally check for header files or functions. It must come after
* setjmp.h::
* signal.h::
* spawn.h::
+* stdalign.h::
* stdarg.h::
* stdbool.h::
* stddef.h::
@include posix-headers/setjmp.texi
@include posix-headers/signal.texi
@include posix-headers/spawn.texi
+@include posix-headers/stdalign.texi
@include posix-headers/stdarg.texi
@include posix-headers/stdbool.texi
@include posix-headers/stddef.texi
@c For double-sided printing, uncomment:
@c @setchapternewpage odd
@c This date is automagically updated when you save this file:
-@set lastupdate September 5, 2011
+@set lastupdate December 2, 2011
@c %**end of header
@dircategory GNU organization
papers to sign. The @file{request-} file also raises the issue of
getting an employer's disclaimer from the contributor's employer.
-When the contributor emails the form to the FSF, the FSF sends per
-papers to sign. If person signs them right away, the whole process
-takes a couple of weeks---mostly waiting for letters to go back and
-forth.
+When the contributor emails the form to the FSF, the FSF sends per an
+electronic (usually PDF) copy of the assignment. All contributors
+then print the assignment and sign it. Contributors residing outside
+the U.S. must mail the signed form to the FSF via the post.
+Contributors located in the U.S. can then email or fax a scanned copy
+back to the FSF (or use postal mail, if they prefer). (To emphasize,
+the necessary distinction is between US residents and non-residents,
+citizenship does not matter.)
For less common cases, we have template files you should send to the
contributor. Be sure to fill in the name of the person and the name
automatically, if you are careful about the formatting of the change
log entries.
+It is ok to include other email addresses, names, and program
+information in @file{AUTHORS}, such as bug-reporting information.
+@xref{Standard Mailing Lists}.
+
+
@node Copying from Other Packages
@section Copying from Other Packages
advertised bug-reporting email address should always be
@samp{bug-@var{package}@@gnu.org}, to help show users that the program
is a GNU package, but it is ok to set up that list to forward to another
-site if you prefer. The package distribution should state the
-name of the bug-reporting list in a prominent place, and ask users to
-help us by reporting bugs there.
+site if you prefer.
@cindex @email{bug-gnu-utils@@gnu.org}
We also have a catch-all list, @email{bug-gnu-utils@@gnu.org}, which is
nowadays we want to give each program its own bug-reporting list and
move away from using @email{bug-gnu-utils}.
+@xref{Replying to Mail}, for more about handling and tracking bug
+reports.
+
@cindex help for users, mailing list for
Some GNU programs with many users have another mailing list,
@samp{help-@var{package}.org}, for people to ask other users for help.
@cindex announcements, mailing list for
If you wish, you can also have a mailing list
-@samp{info-@var{package}} for announcements (@pxref{Announcements}),
-and any others you find useful.
+@samp{info-@var{package}} for announcements (@pxref{Announcements}).
+Any other mailing lists you find useful can also be created.
+
+The package distribution should state the name of all the package's
+mailing lists in a prominent place, and ask users to help us by
+reporting bugs appropriately. The top-level @file{README} file and/or
+@file{AUTHORS} file are good places. Mailing list information should
+also be included in the manual and the package web pages (@pxref{Web
+Pages}).
+
@node Creating Mailing Lists
to make bug reports useful. Copying and adapting that could be very
useful for your package.
+@cindex @url{http://bugs.gnu.org}
+@cindex bug reports, email tracker for
+@cindex bug reports, web tracker for
+If you would like to use an email-based bug tracking system, see
+@url{http://bugs.gnu.org}; this can be connected with the regular
+bug-reporting address. Alternatively, if you would like to use a
+web-based bug tracking system, Savannah supports this (@pxref{Old
+Versions}), but please don't fail to accept bugs by regular email as
+well---we don't want to put up unnecessary barriers against users
+submitting reports.
+
@node Old Versions
@chapter Recording Old Versions
@cindex time stamp in diffs
If you use GNU @code{diff} to make the patch, use the options
@samp{-rc2P}. That will put any new files into the output as ``entirely
-different.'' Also, the patch's context diff headers should have dates
+different''. Also, the patch's context diff headers should have dates
and times in Universal Time using traditional Unix format, so that patch
recipients can use GNU @code{patch}'s @samp{-Z} option. For example,
you could use the following Bourne shell command to create the patch:
subdirectory named after the package, and all the distribution files
for the package should go in that subdirectory.
-@c If you have an interest in seeing the monthly download logs from the FTP
-@c site at @code{ftp.gnu.org} for your program, that is something that
-@c @email{ftp-upload@@gnu.org} can set up for you. Please contact them if
-@c you are interested.
-
@xref{Automated FTP Uploads}, for procedural details of putting new
versions on @code{ftp.gnu.org}.
@item
Compose a message with the following items in some @var{msgfile}.
Then GPG-sign it by running @code{gpg --clearsign @var{msgfile}}, and
-finally email the resulting @file{@var{msgfile}.asc}), to
+finally email the resulting @file{@var{msgfile}.asc} to
@email{ftp-upload@@gnu.org}.
@enumerate
command line @code{ftp}.
If you have difficulties with an upload, email
-@email{ftp-upload@@gnu.org}.
+@email{ftp-upload@@gnu.org}. You can check the archive of uploads
+processed at
+@url{https://lists.gnu.org/archive/html/ftp-upload-report}.
@node FTP Upload Directive File - v1.1
@end smallexample
@noindent where @var{yourmanual} is the short name for your package
-and @var{yourbuglist} is the email address for bug reports (typically
-@code{bug-@var{package}@@gnu.org}). The script processes the file
-@file{@var{yourmanual}.texinfo} (or @file{.texi} or @file{.txi}). For
-example:
+and @var{yourbuglist} is the email address for bug reports (which
+should be @code{bug-@var{package}@@gnu.org}). The script processes
+the file @file{@var{yourmanual}.texinfo} (or @file{.texi} or
+@file{.txi}). For example:
@smallexample
-cd .../emacs/man
+cd .../texinfo/doc
# download gendocs.sh and gendocs_template
-gendocs.sh --email bug-gnu-emacs@@gnu.org emacs "GNU Emacs manual"
+gendocs.sh --email bug-texinfo@@gnu.org texinfo "GNU Texinfo manual"
@end smallexample
@command{gendocs.sh} creates a subdirectory @file{manual/} containing
precisely, they know about it, but don't realize it is the GNU Project's
accomplishment and reason for existence. Even people who believe they
know the real history often believe that the goal of GNU was to develop
-``tools'' or ``utilities.''
+``tools'' or ``utilities''.
To correct this confusion, we have made a years-long effort to
distinguish between Linux, the kernel that Linus Torvalds wrote, and
@url{http://www.gnu.org/gnu/linux-and-gnu.html}.
To contrast the GNU system properly with respect to GNU/Linux, you can
-call it ``GNU/Hurd'' or ``the GNU/Hurd system.'' However, when that
+call it ``GNU/Hurd'' or ``the GNU/Hurd system''. However, when that
contrast is not specifically the focus, please call it just ``GNU'' or
-``the GNU system.''
+``the GNU system''.
When referring to the collection of servers that is the higher level
-of the GNU kernel, please call it ``the Hurd'' or ``the GNU Hurd.''
+of the GNU kernel, please call it ``the Hurd'' or ``the GNU Hurd''.
Note that this uses a space, not a slash.
* Calendar date items:: 19 Dec 1994.
* Time of day items:: 9:20pm.
* Time zone items:: @sc{est}, @sc{pdt}, @sc{gmt}.
+* Combined date and time of day items:: 1972-09-24T20:02:00,000000-0500
* Day of week items:: Monday and others.
* Relative items in date strings:: next tuesday, 2 years ago.
* Pure numbers in date strings:: 19931219, 1440.
@item calendar date items
@item time of day items
@item time zone items
+@item combined date and time of day items
@item day of the week items
@item relative items
@item pure numbers.
Mon Mar 1 00:21:42 UTC 2004
$ TZ=UTC0 date +'%Y-%m-%d %H:%M:%SZ'
2004-03-01 00:21:42Z
-$ date --iso-8601=ns | tr T ' ' # --iso-8601 is a GNU extension.
-2004-02-29 16:21:42,692722128-0800
+$ date --rfc-3339=ns # --rfc-3339 is a GNU extension.
+2004-02-29 16:21:42.692722128-08:00
$ date --rfc-2822 # a GNU extension
Sun, 29 Feb 2004 16:21:42 -0800
$ date +'%Y-%m-%d %H:%M:%S %z' # %z is a GNU extension.
(@pxref{Specifying time zone rules}).
+@node Combined date and time of day items
+@section Combined date and time of day items
+
+@cindex combined date and time of day item
+
+A @dfn{combined date and time of day item} specifies the time on a
+specific day of the year. This type is needed for formats that cannot
+be represented by individual calendar date (@pxref{Calendar date items})
+and time of day (@pxref{Time of day items}) items due to ambiguity.
+
+@example
+# ISO 8601 extended date and time of day format
+1972-09-24T20:02:00,000000-0500
+@end example
+
+@cindex @sc{iso} 8601 date and time of day format
+@cindex date and time of day format, @sc{iso} 8601
+
+The @sc{iso} 8601 extended date and time of day format is an @sc{iso}
+8601 date, a @samp{T} character separator, followed by an @sc{iso} 8601 time
+of day.
+
+
@node Day of week items
@section Day of week items
@itemize
@item
This function is missing on some platforms:
-Solaris 2.4, mingw.
+Solaris 2.4, mingw, MSVC 9.
@item
This function is marked as ``legacy'' in POSIX. Better use @code{memcmp}
instead.
@itemize
@item
This function is missing on some platforms:
-Solaris 2.4, mingw.
+Solaris 2.4, mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, IRIX 5.3, Solaris 2.5.1, Cygwin, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, IRIX 5.3, Solaris 2.5.1, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Solaris 2.4, mingw.
+Solaris 2.4, mingw, MSVC 9.
@item
This function is marked as ``legacy'' in POSIX. Better use @code{memset}
instead.
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, OpenBSD 3.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, OpenBSD 3.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Solaris 2.4, mingw, BeOS.
+Solaris 2.4, mingw, MSVC 9, BeOS.
@item
The size of the buffer required for this function is not a compile-time
constant. Also, the function truncates a result that would be larger than
@itemize
@item
This function is missing on some platforms:
-IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5.
+IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Solaris 2.4, mingw.
+Solaris 2.4, mingw, MSVC 9.
@item
This function is marked as ``legacy'' in POSIX. Better use @code{strchr}
instead.
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, OpenBSD 3.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, OpenBSD 3.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-HP-UX 11, Solaris 2.4, Cygwin, mingw, BeOS.
+HP-UX 11, Solaris 2.4, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-HP-UX 11, IRIX 5.3, Solaris 2.4, Cygwin, mingw, BeOS.
+HP-UX 11, IRIX 5.3, Solaris 2.4, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Solaris 2.4, mingw.
+Solaris 2.4, mingw, MSVC 9.
@item
This function is marked as ``legacy'' in POSIX. Better use @code{strrchr}
instead.
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, OpenBSD 3.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, OpenBSD 3.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
The effects of this call are system and compiler optimization dependent,
since it restores the contents of register-allocated variables but not
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, OpenBSD 3.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, OpenBSD 3.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Solaris 2.4, mingw, BeOS.
+Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
This function is missing on some platforms. However, the replacement
is designed to be lightweight, and may round to the neareset second;
use @code{select} or @code{nanosleep} if better resolution is needed:
-IRIX 5.3, Solaris 2.4, older mingw, BeOS.
+IRIX 5.3, Solaris 2.4, older mingw, MSVC 9, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-IRIX 6.5, mingw, BeOS.
+IRIX 6.5, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, IRIX 5.3, Solaris 2.5.1, Cygwin, mingw, BeOS.
+MacOS X 10.5, FreeBSD 6.0, IRIX 5.3, Solaris 2.5.1, Cygwin, mingw, MSVC 9, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on some platforms:
-Solaris 2.5.1, mingw.
+Solaris 2.5.1, mingw, MSVC 9.
@end itemize
Note: A future revision of POSIX later than the 2008/2009 one may drop the
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, Minix 3.1.8, mingw, BeOS.
+FreeBSD 6.0, Minix 3.1.8, mingw, MSVC 9, BeOS.
@item
This function was not correctly implemented in glibc versions before 2.2.5.
@end itemize
@item
Some platforms always print a message to stderr, even if a SIGABRT handler
uses longjmp to resume execution at a safe point:
-mingw.
+mingw, MSVC 9.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/acosf.html}
-Gnulib module: ---
+Gnulib module: acosf
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, AIX 5.1, Solaris 9.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Solaris 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, mingw.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
+@item
This function is not declared on some platforms:
MacOS X 10.3.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, Interix 3.5, BeOS.
+NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly on files larger than 2 GB. The fix is to use the
@itemize
@item
This function is missing on some platforms:
-NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, Interix 3.5, BeOS.
+NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly on files larger than 2 GB. The fix is to use the
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly on files larger than 2 GB. The fix is to use the
@itemize
@item
This function is missing on some platforms:
-NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, Interix 3.5, BeOS.
+NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly on files larger than 2 GB. The fix is to use the
@itemize
@item
This function is missing on some platforms:
-NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, Interix 3.5, BeOS.
+NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly on files larger than 2 GB. The fix is to use the
@itemize
@item
This function is missing on some platforms:
-NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, Interix 3.5, BeOS.
+NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly on files larger than 2 GB. The fix is to use the
@itemize
@item
This function is missing on some platforms:
-NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, Interix 3.5, BeOS.
+NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly on files larger than 2 GB. The fix is to use the
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Solaris 9, mingw, BeOS.
+Minix 3.1.8, Solaris 9, mingw, MSVC 9, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
This function may put more than 26 bytes into the argument buffer if an
invalid year is passed.
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/asinf.html}
-Gnulib module: ---
+Gnulib module: asinf
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, AIX 5.1, Solaris 9.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Solaris 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, mingw.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
+@item
This function is not declared on some platforms:
MacOS X 10.3.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/atan2f.html}
-Gnulib module: ---
+Gnulib module: atan2f
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, AIX 5.1, Solaris 9.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Solaris 9.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/atanf.html}
-Gnulib module: ---
+Gnulib module: atanf
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, AIX 5.1, Solaris 9.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Solaris 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, mingw.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
+@item
This function is not declared on some platforms:
MacOS X 10.3.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11.23, OSF/1 5.1, Interix 3.5.
+Minix 3.1.8, AIX 5.1, HP-UX 11.23, OSF/1 5.1, MSVC 9, Interix 3.5.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-IRIX 6.5, Solaris 2.5.1, mingw, BeOS.
+IRIX 6.5, Solaris 2.5.1, mingw, MSVC 9, BeOS.
@item
glibc has two different functions @code{basename}: the POSIX version and
the GNU version.
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, mingw.
+Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
Upon failure, the function does not set @code{errno} to @code{ENOMEM} on
some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8.
+Minix 3.1.8, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, IRIX 6.5, Solaris 9.
+Minix 3.1.8, AIX 5.1, IRIX 6.5, Solaris 9, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems fixed by Gnulib module @code{ceilf-ieee}:
@item
This function is missing on some platforms:
FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems fixed by Gnulib module @code{ceill-ieee}:
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is declared in different header files (namely, @code{<io.h>} or
+@code{<direct.h>}) on some platforms:
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms; however, the replacement
always fails with @code{ENOSYS}:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
FreeBSD 5.2.1, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 5.2.1, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, IRIX 5.3, Solaris 2.4, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, Minix 3.1.8, IRIX 5.3, Solaris 2.4, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems fixed by Gnulib:
@itemize
@item
+This function crashes when invoked with invalid arguments on some platforms:
+MSVC 9.
+@item
On Windows platforms (excluding Cygwin), @code{socket} and @code{accept}
do not return file descriptors that can be closed by @code{close}.
Instead, @code{closesocket} must be used.
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/closedir.html}
-Gnulib module: ---
+Gnulib module: closedir
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Cygwin 1.5.x, mingw.
+Minix 3.1.8, IRIX 5.3, Cygwin 1.5.x, mingw, MSVC 9.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 5.2.1, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 5.2.1, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-Minix 3.1.8.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/copysignf.html}
-Gnulib module: ---
+Gnulib module: copysignf
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, AIX 5.1, IRIX 6.5, Solaris 9, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, IRIX 6.5, Solaris 9.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/copysignl.html}
-Gnulib module: ---
+Gnulib module: copysignl
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, older IRIX 6.5, Solaris 9, Cygwin, MSVC 9, Interix 3.5.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/cosf.html}
-Gnulib module: ---
+Gnulib module: cosf
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, AIX 5.1, Solaris 9.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Solaris 9.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/coshf.html}
-Gnulib module: ---
+Gnulib module: coshf
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, AIX 5.1, Solaris 9.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Solaris 9.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
+@item
This function is not declared on some platforms:
MacOS X 10.3.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@item
The glibc implementation is or was broken.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@item
The glibc implementation is or was broken.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
The glibc implementation is or was broken.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 5.2.1, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 5.2.1, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, Cygwin, mingw.
+FreeBSD 6.0, NetBSD 5.0, Cygwin, mingw, MSVC 9.
+@item
+This function is not declared in @code{<unistd.h>}
+(without @code{-D_GNU_SOURCE}) on some platforms:
+glibc (at least 2.11–2.13).
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, Interix 3.5.
+OSF/1 4.0, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
This function may put more than 26 bytes into the argument buffer if an
invalid year is passed.
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, HP-UX 11.11, IRIX 5.3, OSF/1 5.1, Solaris 2.5.1, Cygwin, mingw, BeOS.
+glibc 2.3.6, HP-UX 11.11, IRIX 5.3, OSF/1 5.1, Solaris 2.5.1, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, Cygwin, mingw, BeOS.
+glibc 2.3.6, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, Cygwin, mingw, BeOS.
+glibc 2.3.6, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, HP-UX 11.11, IRIX 5.3, OSF/1 4.0, Solaris 2.5.1, Cygwin, mingw, BeOS.
+glibc 2.3.6, HP-UX 11.11, IRIX 5.3, OSF/1 4.0, Solaris 2.5.1, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, Cygwin, mingw, BeOS.
+glibc 2.3.6, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, Cygwin, mingw, BeOS.
+glibc 2.3.6, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, Cygwin, mingw, BeOS.
+glibc 2.3.6, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, Cygwin, mingw, BeOS.
+glibc 2.3.6, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, Cygwin, mingw, BeOS.
+glibc 2.3.6, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 7.1, HP-UX 11, OSF/1 5.1, Solaris 10, mingw.
+Minix 3.1.8, AIX 7.1, HP-UX 11, OSF/1 5.1, Solaris 10, mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-IRIX 6.5, Solaris 2.5.1, mingw, BeOS.
+IRIX 6.5, Solaris 2.5.1, mingw, MSVC 9, BeOS.
@item
@code{dirname} assumes file names in POSIX syntax; it does not work with file
names in Windows syntax.
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, mingw, MSVC 9, Interix 3.5, BeOS.
@item
If the file name argument is not absolute, the file is searched for. The
search algorithm is system specific.
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, mingw, MSVC 9, Interix 3.5, BeOS.
@item
The visibility of symbols loaded in dependent shared libraries or present
in the main executable is system dependent.
@item
This function is missing on many non-glibc platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems fixed by Gnulib module @code{dprintf-posix}:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/dup.html}
-Gnulib module: ---
+Gnulib module: dup
Portability problems fixed by Gnulib:
@itemize
+@item
+This function crashes when invoked with invalid arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function always returns 0 for success on some platforms:
-mingw.
+mingw, MSVC 9.
@item
This function can hang when duplicating an fd to itself on some platforms:
-mingw.
+mingw, MSVC 9.
+
+@item
+This function crashes when invoked with invalid arguments on some platforms:
+MSVC 9.
@item
This function resets the @code{FD_CLOEXEC} flag when duplicating an fd
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 5.0, Minix 3.1.8, Cygwin, mingw, BeOS.
+NetBSD 5.0, Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
+@item
+This function is not declared in @code{<unistd.h>}
+(without @code{-D_GNU_SOURCE}) on some platforms:
+glibc (at least 2.11–2.13).
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Cygwin, mingw, BeOS.
+Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, BeOS.
+MacOS X 10.3, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8.
+Minix 3.1.8, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8.
+Minix 3.1.8, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/expf.html}
-Gnulib module: ---
+Gnulib module: expf
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, AIX 5.1, Solaris 9.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Solaris 9.
@end itemize
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
+@item
This function is not declared on some platforms:
MacOS X 10.3.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, mingw.
+Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/fabsf.html}
-Gnulib module: ---
+Gnulib module: fabsf
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+AIX 5.1, Solaris 9.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-AIX 5.1, Solaris 9.
@end itemize
@item
This function is missing on some platforms:
NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
@item
This function is missing on some platforms:
glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8,
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw,
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, MSVC 9,
Interix 3.5, BeOS.
However, the replacement does not always take into account ACLs. Also,
it is not safe to be used in libraries and is not multithread-safe.
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Tandem/NSK, mingw, BeOS.
+Tandem/NSK, mingw, MSVC 9, BeOS.
But the replacement function is not safe to be used in libraries and is not multithread-safe.
@item
This function is not declared on some platforms:
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/fchmodat.html}
-Gnulib module: openat
+Gnulib module: fchmodat
Portability problems fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8,
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
But the replacement function is not safe to be used in libraries and is not multithread-safe.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/fchownat.html}
-Gnulib module: openat
+Gnulib module: fchownat
Portability problems fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8,
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
But the replacement function is not safe to be used in libraries and
is not multithread-safe. Also, the replacement may fail to change
symlinks if @code{lchown} is unsupported, or fail altogether if
seekable input stream to the byte after the last one actually read:
glibc 2.13, FreeBSD.
@item
+This function crashes if the stream's file descriptor has already been
+closed on some platforms:
+MSVC 9.
+@item
On Windows platforms (excluding Cygwin), @code{socket} and @code{accept}
followed by @code{fdopen} do not return streams that can be closed by
@code{fclose}.
Portability problems fixed by Gnulib:
@itemize
@item
+This function is missing on some platforms:
+mingw, MSVC 9.
+
+@item
This function does not support @code{F_DUPFD_CLOEXEC} on some
platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.1, mingw, Interix 3.5,
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.1, Interix 3.5,
BeOS.
Note that the gnulib replacement code is functional but not atomic.
The @code{F_DUPFD} action of this function mistakenly clears
FD_CLOEXEC on the source descriptor on some platforms:
Haiku.
-
-@item
-This function is missing on some platforms:
-mingw.
@end itemize
Portability problems not fixed by Gnulib:
The replacement function does not support @code{F_SETFD},
@code{F_GETFL}, @code{F_SETFL}, @code{F_GETOWN}, @code{F_SETOWN},
@code{F_GETLK}, @code{F_SETLK}, and @code{F_SETLKW} on some platforms:
-mingw
+mingw, MSVC 9.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/fdatasync.html}
-Gnulib module: ---
+Gnulib module: fdatasync
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is present but not declared on some platforms:
+MacOS X 10.7.
+@item
+This function is missing on some platforms:
+MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, Interix 3.5, BeOS.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/fdopen.html}
-Gnulib module: ---
+Gnulib module: fdopen
Portability problems fixed by Gnulib:
@itemize
+@item
+This function crashes when invoked with invalid arguments on some platforms:
+MSVC 9.
+@item
+On Windows platforms (excluding Cygwin), this function does not set @code{errno}
+upon failure.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-On Windows platforms (excluding Cygwin), this function does not set @code{errno}
-upon failure.
@end itemize
@item
This function is missing on some platforms:
glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8,
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
But the replacement function is not safe to be used in libraries and
is not multithread-safe. Also, the replacement does not guarantee
that @samp{dirfd(fdopendir(n))==n} (dirfd might fail, or return a
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5,
-OSF/1 5.1, Solaris 9, Cygwin 1.7.7, Interix 3.5.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5,
+OSF/1 5.1, Solaris 9, Cygwin 1.7.7, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1,
-IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.7.7, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1,
+IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.7.7, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1,
-Solaris 9, Cygwin 1.7.7, Interix 3.5.
+Solaris 9, Cygwin 1.7.7, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, IRIX 6.5,
-Solaris 9, Cygwin 1.7.7, Interix 3.5.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, IRIX 6.5,
+Solaris 9, Cygwin 1.7.7, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, IRIX
-6.5, OSF/1 5.1, Solaris 9, Cygwin 1.7.7, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, IRIX
+6.5, OSF/1 5.1, Solaris 9, Cygwin 1.7.7, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1,
-IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.7.7, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1,
+IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.7.7, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5,
-OSF/1 5.1, Solaris 9, Cygwin 1.7.7, Interix 3.5.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5,
+OSF/1 5.1, Solaris 9, Cygwin 1.7.7, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1,
-Solaris 9, Cygwin 1.7.7, Interix 3.5.
+Solaris 9, Cygwin 1.7.7, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, IRIX 6.5,
-Solaris 9, Cygwin 1.7.7, Interix 3.5.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, IRIX 6.5,
+Solaris 9, Cygwin 1.7.7, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5,
-OSF/1 5.1, Solaris 9, Cygwin 1.7.7, Interix 3.5.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5,
+OSF/1 5.1, Solaris 9, Cygwin 1.7.7, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1,
-IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.7.7, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1,
+IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.7.7, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on many non-glibc platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
It doesn't do this on some platforms.
@item
@code{fflush} on an input stream changes the position of the stream to the
-end of the previous buffer, on some platforms: mingw.
+end of the previous buffer, on some platforms: mingw, MSVC 9.
@item
@code{fflush} on an input stream right after @code{ungetc} does not discard
the @code{ungetc} buffer, on some platforms:
@item
@code{fflush}, @code{ftell}, @code{ftello}, @code{fgetpos} behave incorrectly
on input streams that are opened in @code{O_TEXT} mode and whose contents
-contains Unix line terminators (LF), on some platforms: mingw.
+contains Unix line terminators (LF), on some platforms: mingw, MSVC 9.
@item
On Windows platforms (excluding Cygwin), this function does not set @code{errno}
upon failure.
@item
+This function crashes if the stream's file descriptor has already been
+closed, if @code{MSVC_INVALID_PARAMETER_HANDLING} is
+@code{HAIRY_LIBRARY_HANDLING} or @code{SANE_LIBRARY_HANDLING},
+on some platforms:
+MSVC 9.
+@item
@code{fflush} on an input stream right after @code{ungetc} does not discard
the @code{ungetc} buffer, on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
When reading from a non-blocking pipe whose buffer is empty, this function
fails with @code{errno} being set to @code{EINVAL} instead of @code{EAGAIN} on
some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@item
On Windows platforms (excluding Cygwin), this function does not set @code{errno}
upon failure.
+@item
+This function crashes if the stream's file descriptor has already been
+closed, if @code{MSVC_INVALID_PARAMETER_HANDLING} is
+@code{HAIRY_LIBRARY_HANDLING} or @code{SANE_LIBRARY_HANDLING},
+on some platforms:
+MSVC 9.
@end itemize
@item
@code{fflush}, @code{ftell}, @code{ftello}, @code{fgetpos} behave incorrectly
on input streams that are opened in @code{O_TEXT} mode and whose contents
-contains Unix line terminators (LF), on some platforms: mingw.
+contains Unix line terminators (LF), on some platforms: mingw, MSVC 9.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly on files larger than 2 GB. The fix is to use the
When reading from a non-blocking pipe whose buffer is empty, this function
fails with @code{errno} being set to @code{EINVAL} instead of @code{EAGAIN} on
some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
@item
This function is missing on some platforms:
Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems fixed by Gnulib module @code{floorf-ieee}:
@item
This function is missing on some platforms:
FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/fma.html}
-Gnulib module: ---
+Gnulib module: fma
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
+@item
+This function produces wrong results on some platforms:
+glibc 2.11, MacOS X 10.5, FreeBSD 6.4/x86, OSF/1 5.1, Cygwin 1.5, mingw.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/fmaf.html}
-Gnulib module: ---
+Gnulib module: fmaf
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
+@item
+This function produces wrong results on some platforms:
+glibc 2.11, MacOS X 10.5, FreeBSD 6.4/x86, OSF/1 5.1, Cygwin 1.5, mingw.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/fmal.html}
-Gnulib module: ---
+Gnulib module: fmal
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
+@item
+This function produces wrong results on some platforms:
+glibc 2.11, MacOS X 10.5, FreeBSD 6.4/x86, OSF/1 5.1, mingw.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, Interix 3.5, BeOS.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on many non-glibc platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, Interix 3.5, BeOS.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/fmodf.html}
-Gnulib module: ---
+Gnulib module: fmodf
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, AIX 5.1, Solaris 9.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Solaris 9.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-IRIX 5.3, mingw.
+IRIX 5.3, mingw, MSVC 9.
@item
This function is broken in some versions of Solaris and glibc.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
On some platforms, @code{fork} followed by a call of the @code{exec} family
(@code{execl}, @code{execlp}, @code{execle}, @code{execv}, @code{execvp},
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@item
This function does not support size specifiers as in C99 (@code{hh}, @code{ll},
@code{j}, @code{t}, @code{z}) on some platforms:
-AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.24, mingw, BeOS.
+AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.24, mingw, MSVC 9, BeOS.
@item
printf of @samp{long double} numbers is unsupported on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@item
printf @code{"%f"}, @code{"%e"}, @code{"%g"} of Infinity and NaN yields an
incorrect result on some platforms:
-AIX 5.2, OSF/1 5.1, Solaris 11 2010-11, mingw.
+AIX 5.2, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9.
@item
This function does not support the @samp{a} and @samp{A} directives on some
platforms:
glibc-2.3.6, MacOS X 10.5, NetBSD 5.0, OpenBSD 4.0, AIX 5.2, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, BeOS.
@item
This function does not support the @samp{F} directive on some platforms:
NetBSD 3.0, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9,
-Cygwin 1.5.x, mingw, BeOS.
+Cygwin 1.5.x, mingw, MSVC 9, BeOS.
+@item
+This function does not support the @samp{n} directive on some platforms:
+MSVC 9.
@item
This function does not support the @samp{ls} directive on some platforms:
OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Cygwin 1.5.x, Haiku.
@item
This function does not support format directives that access arguments in an
arbitrary order, such as @code{"%2$s"}, on some platforms:
-NetBSD 3.0, mingw, BeOS.
+NetBSD 3.0, mingw, MSVC 9, BeOS.
@item
This function doesn't support the @code{'} flag on some platforms:
-NetBSD 3.0, Cygwin 1.5.24, mingw.
+NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 9.
@item
This function behaves incorrectly when a @samp{-} flag and a negative width
are specified together, on some platforms:
@item
printf @code{"%010f"} of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9.
@item
This function does not support precisions larger than 512 or 1024 in integer,
floating-point and pointer output on some platforms:
-AIX 7.1, Solaris 10/x86, mingw, BeOS.
+AIX 7.1, Solaris 10/x86, mingw, MSVC 9, BeOS.
@item
This function mishandles large floating point precisions
(for example, formatting 1.0 with @samp{"%.511f"})
When writing to a non-blocking pipe whose buffer is full, this function fails
with @code{errno} being set to @code{ENOSPC} instead of @code{EAGAIN} on some
platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems fixed by Gnulib module @code{stdio} or @code{fprintf-posix}, together with module @code{sigpipe}:
@item
When writing to a pipe with no readers, this function fails, instead of
obeying the current @code{SIGPIPE} handler, on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
When writing to a non-blocking pipe whose buffer is full, this function fails
with @code{errno} being set to @code{ENOSPC} instead of @code{EAGAIN} on some
platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems fixed by Gnulib module @code{stdio}, together with module @code{sigpipe}:
@item
When writing to a pipe with no readers, this function fails, instead of
obeying the current @code{SIGPIPE} handler, on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
On some platforms, this function does not set @code{errno} or the
stream error indicator on attempts to write to a read-only stream:
Cygwin 1.7.9.
+@item
+This function crashes if the stream's file descriptor has already been
+closed, if @code{MSVC_INVALID_PARAMETER_HANDLING} is
+@code{HAIRY_LIBRARY_HANDLING} or @code{SANE_LIBRARY_HANDLING},
+on some platforms:
+MSVC 9.
@end itemize
When writing to a non-blocking pipe whose buffer is full, this function fails
with @code{errno} being set to @code{ENOSPC} instead of @code{EAGAIN} on some
platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems fixed by Gnulib module @code{stdio}, together with module @code{sigpipe}:
@item
When writing to a pipe with no readers, this function fails, instead of
obeying the current @code{SIGPIPE} handler, on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
When reading from a non-blocking pipe whose buffer is empty, this function
fails with @code{errno} being set to @code{EINVAL} instead of @code{EAGAIN} on
some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@item
On Windows platforms (excluding Cygwin), this function does not set @code{errno}
upon failure.
+@item
+This function crashes if the stream's file descriptor has already been
+closed, if @code{MSVC_INVALID_PARAMETER_HANDLING} is
+@code{HAIRY_LIBRARY_HANDLING} or @code{SANE_LIBRARY_HANDLING},
+on some platforms:
+MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-HP-UX 11.11, IRIX 6.5, OSF/1 4.0, Solaris 7, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+HP-UX 11.11, IRIX 6.5, OSF/1 4.0, Solaris 7, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function does not support a @code{NULL} file name argument on some
platforms:
-OpenBSD 4.9, AIX 7.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw.
+OpenBSD 4.9, AIX 7.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, MSVC 9.
@item
This function does not fail when the file name argument ends in a slash
and (without the slash) names a nonexistent file or a file that is not a
NetBSD 3.0.
@item
This function does not work on negative zero on some platforms:
-NetBSD 4.99.
+NetBSD 4.99, MSVC 9.
@item
This function does not work on infinite numbers on some platforms:
-IRIX 6.5, mingw.
+IRIX 6.5, mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/frexpf.html}
-Gnulib module: ---
+Gnulib module: frexpf
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, AIX 5.1, HP-UX 11, older IRIX 6.5, Solaris 9.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
+@item
+This function does not work on negative zero on some platforms:
+mingw.
+@item
+This function does not work on infinite numbers on some platforms:
+IRIX 6.5, mingw.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9.
@end itemize
This function is missing on some platforms:
FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5.
@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
+@item
This function is not declared on some platforms:
MacOS X 10.3.
@item
This function does not work on finite numbers on some platforms:
-MacOS X 10.4/PowerPC, AIX 5.1, BeOS.
+MacOS X 10.4/PowerPC, AIX 5.1, MSVC 9, BeOS.
@item
This function does not work on denormalized numbers on some platforms:
MacOS X 10.5/i386.
@item
This function does not work on infinite numbers on some platforms:
-IRIX 6.5, mingw.
+IRIX 6.5, mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
When reading from a non-blocking pipe whose buffer is empty, this function
fails with @code{errno} being set to @code{EINVAL} instead of @code{EAGAIN} on
some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
Portability problems fixed by Gnulib:
@itemize
@item
-This function mistakenly succeeds on pipes on some platforms: mingw.
+This function mistakenly succeeds on pipes on some platforms:
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-IRIX 5.3, OSF/1 4.0, Solaris 2.5.1, mingw.
+IRIX 5.3, OSF/1 4.0, Solaris 2.5.1, mingw, MSVC 9.
@item
The declaration of @code{fseeko} in @code{<stdio.h>} is not enabled by default
on some platforms:
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/fstat.html}
-Gnulib module: ---
+Gnulib module: fstat
Portability problems fixed by Gnulib:
@itemize
+@item
+This function crashes when invoked with invalid arguments on some platforms:
+MSVC 9.
+@item
+On platforms where @code{off_t} is a 32-bit type, @code{fstat} may not correctly
+report the size of files or block devices larger than 2 GB.
+(Cf. @code{AC_SYS_LARGEFILE}.)
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
-On platforms where @code{off_t} is a 32-bit type, @code{fstat} may not correctly
-report the size of files or block devices larger than 2 GB. The fix is to
-use the @code{AC_SYS_LARGEFILE} macro.
-@item
On Cygwin, @code{fstat} applied to the file descriptors 0 and 1, returns
different @code{st_ino} values, even if standard input and standard output
are not redirected and refer to the same terminal.
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/fstatat.html}
-Gnulib module: openat
+Gnulib module: fstatat
Portability problems fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8,
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
But the replacement function is not safe to be used in libraries and is not multithread-safe.
@item
On platforms where @code{off_t} is a 32-bit type, @code{fstatat} may
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, OpenBSD 3.8, mingw.
+MacOS X 10.3, OpenBSD 3.8, mingw, MSVC 9.
@item
On platforms where @code{f_blocks} in @samp{struct statvfs} is a 32-bit
value, this function may not work correctly on files systems larger than
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
Portability problems fixed by Gnulib:
@itemize
@item
-This function mistakenly succeeds on pipes on some platforms: mingw.
+This function mistakenly succeeds on pipes on some platforms:
+mingw, MSVC 9.
@item
This function produces incorrect results after @code{putc} that followed a
@code{getc} call that reached EOF on some platforms:
@item
@code{fflush}, @code{ftell}, @code{ftello}, @code{fgetpos} behave incorrectly
on input streams that are opened in @code{O_TEXT} mode and whose contents
-contains Unix line terminators (LF), on some platforms: mingw.
+contains Unix line terminators (LF), on some platforms: mingw, MSVC 9.
@item
On platforms where @code{long} is a 32-bit type, @code{ftell} does not work
correctly with files larger than 2 GB, even when the @code{AC_SYS_LARGEFILE}
@itemize
@item
This function is missing on some platforms:
-IRIX 5.3, OSF/1 4.0, Solaris 2.5.1, mingw.
+IRIX 5.3, OSF/1 4.0, Solaris 2.5.1, mingw, MSVC 9.
@item
The declaration of @code{ftello} in @code{<stdio.h>} is not enabled by default
on some platforms:
@item
@code{fflush}, @code{ftell}, @code{ftello}, @code{fgetpos} behave incorrectly
on input streams that are opened in @code{O_TEXT} mode and whose contents
-contains Unix line terminators (LF), on some platforms: mingw.
+contains Unix line terminators (LF), on some platforms: mingw, MSVC 9.
@item
On platforms where @code{off_t} is a 64-bit type, but @code{fseeko} is
not present, stream operations on files larger than 2 GB silently do
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/ftruncate.html}
-Gnulib module: ---
+Gnulib module: ftruncate
Portability problems fixed by Gnulib:
@itemize
-@end itemize
-
-Portability problems not fixed by Gnulib:
-@itemize
+@item
+This function is missing on some platforms:
+MSVC 9.
@item
On platforms where @code{off_t} is a 32-bit type, this function is not
applicable to arbitrary lengths for files larger than 2 GB. The fix is to
use the @code{AC_SYS_LARGEFILE} macro.
@end itemize
+
+Portability problems not fixed by Gnulib:
+@itemize
+@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Solaris 2.4, mingw.
+Minix 3.1.8, Solaris 2.4, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, FreeBSD 5.2.1, NetBSD 3.0, Minix 3.1.8, mingw, BeOS.
+MacOS X 10.3, FreeBSD 5.2.1, NetBSD 3.0, Minix 3.1.8, mingw, MSVC 9, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
correctly report the size of files or block devices larger than 2 GB.
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
@item
This function is missing on some platforms:
glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8,
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw,
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, MSVC 9,
Interix 3.5, BeOS.
However, the replacement function may end up truncating timestamps to
less resolution than supported by the file system.
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11.00, IRIX 6.5, Solaris 2.6, Cygwin 1.5.x, Interix 3.5, BeOS.
+Minix 3.1.8, HP-UX 11.00, IRIX 6.5, Solaris 2.6, Cygwin 1.5.x, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
When writing to a non-blocking pipe whose buffer is full, this function fails
with @code{errno} being set to @code{ENOSPC} instead of @code{EAGAIN} on some
platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems fixed by Gnulib module @code{stdio}, together with module @code{sigpipe}:
@item
When writing to a pipe with no readers, this function fails, instead of
obeying the current @code{SIGPIPE} handler, on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
On some platforms, this function does not set @code{errno} or the
stream error indicator on attempts to write to a read-only stream:
Cygwin 1.7.9.
+@item
+This function crashes if the stream's file descriptor has already been
+closed, if @code{MSVC_INVALID_PARAMETER_HANDLING} is
+@code{HAIRY_LIBRARY_HANDLING} or @code{SANE_LIBRARY_HANDLING},
+on some platforms:
+MSVC 9.
@end itemize
@item
This function is only available in @code{<ws2tcpip.h>} on some
platforms:
-mingw.
+mingw, MSVC 9.
@item
This function's return type is @code{char *} instead of @code{const char *}
on some platforms:
-AIX 7.1, HP-UX 11, OSF/1 5.1, Solaris 9, mingw.
+AIX 7.1, HP-UX 11, OSF/1 5.1, Solaris 9, mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-HP-UX 11.11, IRIX 6.5, OSF/1 5.1, Solaris 7, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+HP-UX 11.11, IRIX 6.5, OSF/1 5.1, Solaris 7, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On Windows, this function is declared in @code{<ws2tcpip.h>} rather than in
@code{<netdb.h>}.
When reading from a non-blocking pipe whose buffer is empty, this function
fails with @code{errno} being set to @code{EINVAL} instead of @code{EAGAIN} on
some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
When reading from a non-blocking pipe whose buffer is empty, this function
fails with @code{errno} being set to @code{EINVAL} instead of @code{EAGAIN} on
some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
@code{getcwd-lgpl}:
@itemize
@item
+This function is declared in different header files (namely, @code{<io.h>} or
+@code{<direct.h>}) on some platforms:
+mingw, MSVC 9.
+@item
On glibc platforms, @code{getcwd (NULL, n)} allocates memory for the result.
On some other platforms, this call is not allowed.
@item
On some platforms, the prototype for @code{getcwd} uses @code{int}
instead of @code{size_t} for the size argument when using non-standard
headers, and the declaration is missing from @code{<unistd.h>}:
-mingw.
+mingw, MSVC 9.
@item
On some platforms, @code{getcwd (buf, 0)} fails with @code{ERANGE}
instead of the required @code{EINVAL}:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems fixed by Gnulib module @code{getcwd}:
This function is missing on some older platforms.
@item
This function does not handle long file names (greater than @code{PATH_MAX})
-correctly on some platforms.
+correctly on some platforms:
+glibc on Linux 2.4.20, MacOS X 10.5, FreeBSD 6.4, NetBSD 5.1, OpenBSD 4.9, AIX 7.1.
@end itemize
Portability problems not fixed by Gnulib:
When using @code{getcwd(NULL, nonzero)}, some platforms, such as glibc
or cygwin, allocate exactly @code{nonzero} bytes and fail with
@code{ERANGE} if it was not big enough, while other platforms, such as
-FreeBSD or mingw, ignore the size argument and allocate whatever size
+FreeBSD, mingw, or MSVC 9, ignore the size argument and allocate whatever size
is necessary. If this call succeeds, an application cannot portably
access beyond the string length of the result.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
Gnulib provides a module @code{parse-datetime} that contains a function
@itemize
@item
This variable is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, MSVC 9, Interix 3.5.
@item
This function is missing a declaration on some platforms:
BeOS.
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
On some platforms, this function fails to reject a negative count,
even though that is less than the size that would be returned:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Solaris 2.4, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Solaris 2.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems fixed by Gnulib:
@itemize
@item
-On mingw, this function has a prototype that differs from that
+On mingw and MSVC 9, this function has a prototype that differs from that
specified by POSIX, and it is defined only in the ws2_32 library.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, Interix 3.5.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, MSVC 9, Interix 3.5.
@item
This function is missing a declaration on some platforms:
AIX 7.1, BeOS.
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-NetBSD 3.0, Minix 3.1.8, mingw.
+NetBSD 3.0, Minix 3.1.8, mingw, MSVC 9.
@item
This function is not declared unless @code{_REENTRANT} is defined,
on some platforms:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-HP-UX 11.11, IRIX 6.5, OSF/1 4.0, Solaris 7, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+HP-UX 11.11, IRIX 6.5, OSF/1 4.0, Solaris 7, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-Cygwin, mingw, BeOS.
+Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Cygwin, mingw, BeOS.
+Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Cygwin, mingw, BeOS.
+Cygwin, mingw, MSVC 9, BeOS.
@end itemize
Portability problems fixed by Gnulib module @code{getopt-gnu}:
@itemize
@item
+This function is missing on some platforms:
+MSVC 9.
+@item
The function @code{getopt} does not support the @samp{+} flag in the options
string on some platforms:
MacOS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11.
Solaris 11 2010-11, Cygwin 1.5.x.
@item
The function @code{getopt_long} is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Interix 3.5.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, MSVC 9, Interix 3.5.
@item
The function @code{getopt_long_only} is missing on some platforms:
MacOS X 10.3, FreeBSD 5.2.1, NetBSD 5.0, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 5.1, Solaris 9, mingw, Interix 3.5.
+OSF/1 5.1, Solaris 9, mingw, MSVC 9, Interix 3.5.
@item
This function crashes if the option string includes @code{W;} on some
platforms:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Solaris 2.4, mingw, BeOS.
+Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-OpenBSD 3.8, Minix 3.1.8, mingw, BeOS.
+OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, BeOS.
+@item
+This function has an incompatible declaration, with fewer than five
+arguments, on some platforms:
+IRIX 5.3.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-OpenBSD 3.8, Minix 3.1.8, mingw, BeOS.
+OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@item
On platforms where @code{rlim_t} is a 32-bit type, this function does not
allow to retrieve limits larger than 4 GB, such as for RLIMIT_FSIZE. The
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Solaris 2.4, mingw.
+Minix 3.1.8, Solaris 2.4, mingw, MSVC 9.
@item
Many platforms don't fill in all the fields of @code{struct rusage} with
meaningful values.
When reading from a non-blocking pipe whose buffer is empty, this function
fails with @code{errno} being set to @code{EINVAL} instead of @code{EAGAIN} on
some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Cygwin 1.7.1.
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
This function is declared with a nonstandard function prototype (only one
argument, or ``...'' after the first argument) on some platforms.
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, BeOS.
+MacOS X 10.3, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, BeOS.
+MacOS X 10.3, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, BeOS.
+MacOS X 10.3, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-IRIX 5.3, mingw, BeOS.
+IRIX 5.3, mingw, MSVC 9, BeOS.
@item
This function may list symbolic links to nonexistent files among the results,
on some platforms.
@itemize
@item
This function is missing on some platforms:
-IRIX 5.3, mingw, BeOS.
+IRIX 5.3, mingw, MSVC 9, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
This function is not declared unless @code{_REENTRANT} is defined,
on some platforms:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, mingw, BeOS.
+MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
+@item
+This function is not declared on some platforms:
+IRIX 5.3.
+@item
+This function reports success for invalid file descriptors on some platforms:
+Cygwin 1.7.9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-HP-UX 11, mingw, BeOS.
+HP-UX 11, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-HP-UX 11, mingw, BeOS.
+HP-UX 11, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9.
+Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Cygwin, mingw, BeOS,
+MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Cygwin, mingw, MSVC 9, BeOS,
when GNU libiconv is not installed.
@item
This function was not correctly implemented in glibc versions before 2.2.
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Cygwin, mingw, BeOS,
+MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Cygwin, mingw, MSVC 9, BeOS,
when GNU libiconv is not installed.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Cygwin, mingw, BeOS,
+MacOS X 10.5, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Cygwin, mingw, MSVC 9, BeOS,
when GNU libiconv is not installed.
@item
For some encodings A and B, this function cannot convert directly from A to B,
@item
This function is missing on some platforms:
OpenBSD 3.8, Minix 3.1.8, HP-UX 11.23, IRIX 6.5, OSF/1 4.0, Solaris 7, Cygwin 1.5.x,
-mingw, Interix 3.5, BeOS.
+mingw, MSVC 9, Interix 3.5, BeOS.
@item
This is available only as a macro, rather than a function, on some
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11.23, IRIX 6.5, OSF/1 4.0, Solaris 7, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, HP-UX 11.23, IRIX 6.5, OSF/1 4.0, Solaris 7, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11.23, IRIX 6.5, OSF/1 4.0, Solaris 7, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, HP-UX 11.23, IRIX 6.5, OSF/1 4.0, Solaris 7, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11.23, IRIX 6.5, OSF/1 4.0, Solaris 7, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, HP-UX 11.23, IRIX 6.5, OSF/1 4.0, Solaris 7, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3.
+Minix 3.1.8, IRIX 5.3, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Interix 3.5, BeOS.
+NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Interix 3.5, BeOS.
+NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
On some old platforms, this function returns a @samp{struct in_addr} rather
than a scalar type such as @samp{unsigned int} or @samp{unsigned long}.
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
The @code{inet_ntoa} function need not be reentrant, and consequently
is not required to be thread safe. Implementations of
@itemize
@item
This function is missing on some platforms:
-HP-UX 11.00, OSF/1 4.0, Solaris 2.5.1, mingw, Interix 3.5, BeOS.
+HP-UX 11.00, OSF/1 4.0, Solaris 2.5.1, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is declared in @code{<netdb.h>} instead of @code{<arpa/inet.h>}
on some platforms:
NonStop Kernel.
+@item
+This function is declared in @code{<ws2tcpip.h>}, with a POSIX incompatible
+declaration, on some platforms:
+MSVC 9 on Windows >= Vista.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-HP-UX 11.00, OSF/1 4.0, Solaris 2.5.1, mingw, Interix 3.5, BeOS.
+HP-UX 11.00, OSF/1 4.0, Solaris 2.5.1, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is declared in @code{<netdb.h>} instead of @code{<arpa/inet.h>}
on some platforms:
NonStop Kernel.
+@item
+This function is declared in @code{<ws2tcpip.h>}, with a POSIX incompatible
+declaration, on some platforms:
+MSVC 9 on Windows >= Vista.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-Solaris 2.4, mingw.
+Solaris 2.4, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 4.3.2, IRIX 6.5, OSF/1 5.1, Solaris 9, mingw.
+AIX 4.3.2, IRIX 6.5, OSF/1 5.1, Solaris 9, mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This macro is missing on some platforms:
-AIX 4.3.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11.
+AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11.
+@item
+This macro incorrectly yields true for some @samp{long double} arguments, on
+some platforms:
+OpenBSD 4.9/x86 (pseudo-Infinity).
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems fixed by Gnulib:
@itemize
@item
+This macro is missing on some platforms:
+MSVC 9.
+@item
@code{isnan} was introduced with C99 and is thus commonly not present
on pre-C99 systems.
@item
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 4.3.2, IRIX 6.5, OSF/1 5.1, Solaris 9, mingw.
+Minix 3.1.8, AIX 4.3.2, IRIX 6.5, OSF/1 5.1, Solaris 9, mingw, MSVC 9.
@item
This function is declared but not defined on some platforms:
IRIX 6.5.30.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Solaris 2.4, mingw, BeOS.
+Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, Minix 3.1.8, mingw, BeOS.
+FreeBSD 6.0, Minix 3.1.8, mingw, MSVC 9, BeOS.
@item
This function was not correctly implemented in glibc versions before 2.2.5.
@end itemize
This function is missing on some platforms; however, the replacement
fails on symlinks if @code{chown} is supported, and fails altogether
with @code{ENOSYS} otherwise:
-MacOS X 10.3, Minix 3.1.8, mingw, BeOS.
+MacOS X 10.3, Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/ldexpf.html}
-Gnulib module: ---
+Gnulib module: ldexpf
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, AIX 5.1, HP-UX 11, older IRIX 6.5, Solaris 9.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9.
@end itemize
This function is missing on some platforms:
FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5.
@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
+@item
This function has no prototype in @code{<math.h>} on some platforms:
MacOS X.
@item
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8.
+Minix 3.1.8, MSVC 9.
+@item
+This function is not declared on some platforms:
+IRIX 5.3.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
This function fails to reject trailing slashes on non-directories on
some platforms:
@item
This function is missing on some platforms:
glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8,
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
But the replacement function is not safe to be used in libraries and is not multithread-safe.
@item
This function fails to reject trailing slashes on non-directories on
@itemize
@item
This function is missing on some platforms:
-NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, Interix 3.5, BeOS.
+NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly on files larger than 2 GB. The fix is to use the
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11.23, OSF/1 5.1, Interix 3.5.
+Minix 3.1.8, HP-UX 11.23, OSF/1 5.1, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-OpenBSD 3.8, Minix 3.1.8, HP-UX 11.23, OSF/1 5.1, Interix 3.5.
+OpenBSD 3.8, Minix 3.1.8, HP-UX 11.23, OSF/1 5.1, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9,
-Cygwin 1.5.x, Interix 3.5.
+Cygwin 1.5.x, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0,
-Solaris 9, Cygwin 1.5.x, Interix 3.5.
+Solaris 9, Cygwin 1.5.x, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.5.x, Interix 3.5, BeOS.
+OSF/1 4.0, Solaris 9, Cygwin 1.5.x, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, Interix 3.5.
+FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, Interix 3.5.
+FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, Interix 3.5, BeOS.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
This function is not declared unless @code{_REENTRANT} is defined,
on some platforms:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.5.x, mingw, BeOS.
+Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 9, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly across the entire data range of files larger than 2 GB.
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/log10f.html}
-Gnulib module: ---
+Gnulib module: log10f
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, AIX 5.1, Solaris 9.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Solaris 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8.
+Minix 3.1.8, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9.
+Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5,
-Solaris 9, Interix 3.5.
+FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5,
+Solaris 9, MSVC 9, Interix 3.5.
@item
This function is only provided as a macro on some platforms:
Cygwin 1.5.x.
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, Solaris 9,
+FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, Solaris 9, MSVC 9,
Interix 3.5.
@item
This function is only provided as a macro on some platforms:
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8.
+Minix 3.1.8, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/logf.html}
-Gnulib module: ---
+Gnulib module: logf
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, AIX 5.1, Solaris 9.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Solaris 9.
@end itemize
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
+@item
This function is not declared on some platforms:
MacOS X 10.3.
+@item
+This function returns wrong results on some platforms:
+glibc 2.7 on Linux/SPARC64.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-OSF/1 4.0, Solaris 9, Cygwin 1.5.x, Interix 3.5, BeOS.
+OSF/1 4.0, Solaris 9, Cygwin 1.5.x, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, Interix 3.5, BeOS.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@end itemize
On platforms where @code{off_t} is a 32-bit type, @code{lseek} does not work
correctly with files larger than 2 GB. (Cf. @code{AC_SYS_LARGEFILE}.)
@item
-This function mistakenly succeeds on pipes on some platforms: mingw, BeOS.
+This function mistakenly succeeds on pipes on some platforms: mingw, MSVC 9, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@item
Upon failure, the function does not set @code{errno} to @code{ENOMEM} on
some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
This function returns the total number of bytes that make up the multibyte
character, not the number of bytes that were needed to complete the multibyte
character, on some platforms:
-HP-UX 11.11, Solaris 11 2010-11, mingw.
+HP-UX 11.11, Solaris 11 2010-11, mingw, possibly MSVC 9.
@item
This function may not return 0 when parsing the NUL character on some platforms:
Solaris 9.
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11.00, IRIX 6.5, Solaris 2.6, Interix 3.5.
+Minix 3.1.8, HP-UX 11.00, IRIX 6.5, Solaris 2.6, MSVC 9, Interix 3.5.
@item
This function always returns 1, even in multibyte locales, on some platforms:
mingw.
@item
This function is missing on some platforms:
MacOS X 10.3, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2,
-HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
Portability problems fixed by Gnulib:
@itemize
@item
+This function is declared in different header files (namely, @code{<io.h>} or
+@code{<direct.h>}) on some platforms:
+mingw, MSVC 9.
+@item
When the argument ends in a slash, the function call fails on some platforms.
@item
This function mistakenly succeeds on @samp{mkdir("d/./",mode)} on
some platforms:
-Cygwin 1.5.x, mingw.
+Cygwin 1.5.x, mingw, MSVC 9.
@item
On Windows platforms (excluding Cygwin), this function is called @code{_mkdir}
and takes only one argument. The fix (without Gnulib) is to define a macro
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/mkdirat.html}
-Gnulib module: openat
+Gnulib module: mkdirat
Portability problems fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8,
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
But the replacement function is not safe to be used in libraries and is not multithread-safe.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, Interix 3.5, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms; however, the replacement
always fails with @code{ENOSYS}:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8,
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw,
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, MSVC 9,
Interix 3.5, BeOS.
But the replacement function is not safe to be used in libraries and is not multithread-safe.
@end itemize
@item
The gnulib replacement function always fails with @samp{ENOSYS} on
some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@item
This function is missing on some platforms; however, the replacement
always fails with @code{ENOSYS}:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8,
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw,
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, MSVC 9,
Interix 3.5, BeOS.
But the replacement function is not safe to be used in libraries and is not multithread-safe.
@end itemize
@item
The gnulib replacement function always fails with @samp{ENOSYS} on
some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
This function is declared in @code{<unistd.h>} instead of @code{<stdlib.h>}
on some platforms:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, OSF/1 4.0, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, OSF/1 4.0, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, OSF/1 4.0, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, OSF/1 4.0, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly across the entire data range of files larger than 2 GB.
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/modff.html}
-Gnulib module: ---
+Gnulib module: modff
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, AIX 5.1, HP-UX 11.
+@item
+This function is only defined as a buggy macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@item
This function does not set @code{errno} on some platforms:
mingw.
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3,
-Solaris 2.4, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+Solaris 2.4, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3,
-Solaris 2.4, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+Solaris 2.4, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3,
-Solaris 2.4, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+Solaris 2.4, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3,
-Solaris 2.4, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+Solaris 2.4, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3,
-Solaris 2.4, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+Solaris 2.4, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3,
-Solaris 2.4, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+Solaris 2.4, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3,
-Solaris 2.4, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+Solaris 2.4, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3,
-Solaris 2.4, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+Solaris 2.4, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@item
On NetBSD, @code{msync} takes only two arguments.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, OSF/1 4.0, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, OSF/1 4.0, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, OSF/1 4.0, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, OSF/1 4.0, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Solaris 2.4, mingw, Interix 3.5, BeOS.
+Solaris 2.4, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function reports failure when called with small arguments such as 1 ns
on some platforms:
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8.
+Minix 3.1.8, MSVC 9.
+@item
+This function is not declared on some platforms:
+IRIX 5.3.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, AIX 5.1, IRIX 6.5, Solaris 9.
+Minix 3.1.8, AIX 5.1, IRIX 6.5, Solaris 9, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, FreeBSD 5.2.1, NetBSD 3.0, Minix 3.1.8, mingw, BeOS.
+MacOS X 10.3, FreeBSD 5.2.1, NetBSD 3.0, Minix 3.1.8, mingw, MSVC 9, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
correctly report the size of files or block devices larger than 2 GB.
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@item
In glibc before glibc 2.2.4, @code{nice} returned 0 upon success.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@item
The constant @code{CODESET} is not supported on some platforms:
glibc 2.0.6, OpenBSD 3.8.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-HP-UX 11, mingw, BeOS.
+HP-UX 11, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-HP-UX 11, mingw, BeOS.
+HP-UX 11, mingw, MSVC 9, BeOS.
@end itemize
@item
This function does not support the @code{O_NONBLOCK} flag when it is defined
by the gnulib module @code{nonblocking} on some platforms:
-mingw.
+mingw, MSVC 9.
@item
On Windows platforms (excluding Cygwin), this function does usually not
recognize the @file{/dev/null} filename.
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8,
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@item
This function is missing on some platforms:
glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8,
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
But the replacement function is not safe to be used in libraries and is not multithread-safe.
@item
On platforms where @code{off_t} is a 32-bit type, @code{open} may not work
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/opendir.html}
-Gnulib module: ---
+Gnulib module: opendir
Portability problems fixed by Gnulib:
@itemize
-@end itemize
-
-Portability problems not fixed by Gnulib:
-@itemize
+@item
+This function is missing on some platforms:
+MSVC 9.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly on huge directories larger than 2 GB. Also, on platforms
where @code{ino_t} is a 32-bit type, this function may report inode numbers
-incorrectly. The fix is to use the @code{AC_SYS_LARGEFILE} macro.
+incorrectly. (Cf. @code{AC_SYS_LARGEFILE}.)
+@end itemize
+
+Portability problems not fixed by Gnulib:
+@itemize
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This variable is missing on some platforms:
-MacOS X 10.5, IRIX 6.5, OSF/1 5.1.
+MacOS X 10.5, IRIX 6.5, OSF/1 5.1, MSVC 9.
@end itemize
@itemize
@item
This variable is missing on some platforms:
-IRIX 6.5, OSF/1 5.1.
+IRIX 6.5, OSF/1 5.1, MSVC 9.
@end itemize
@itemize
@item
This variable is missing on some platforms:
-IRIX 6.5, OSF/1 5.1.
+IRIX 6.5, OSF/1 5.1, MSVC 9.
@end itemize
@itemize
@item
This variable is missing on some platforms:
-MacOS X 10.5, IRIX 6.5, OSF/1 5.1.
+MacOS X 10.5, IRIX 6.5, OSF/1 5.1, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/pclose.html}
-Gnulib module: ---
+Gnulib module: pclose
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function does not support the error values that are specified by POSIX
but not defined by the system, on some platforms:
-OpenBSD 4.0, OSF/1 5.1, Cygwin 1.5.x, mingw.
+OpenBSD 4.0, OSF/1 5.1, Cygwin 1.5.x, mingw, MSVC 9.
@item
This function treats @code{errno} of 0 like failure, although POSIX
requires that the message declare it as a success, on some platforms:
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@item
This function doesn't work on special files like @file{/dev/null} and ttys like
@file{/dev/tty} on some platforms:
Portability problems fixed by Gnulib:
@itemize
@item
+This function is missing on some platforms:
+MSVC 9.
+@item
Some platforms start the child with closed stdin or stdout if the
standard descriptors were closed in the parent:
Cygwin 1.5.x.
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23,
-IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly across the entire data range of files larger than 2 GB.
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly across the entire data range of files larger than 2 GB.
@item
This function is missing on some platforms:
NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1,
-Solaris 10, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+Solaris 10, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
+
+The Gnulib module @code{pagealign_alloc} provides a similar API
+that returns memory aligned on a system page boundary.
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/posix_openpt.html}
-Gnulib module: ---
+Gnulib module: posix_openpt
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1,
+Solaris 9, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
+However, the replacement may fail with @code{ENOSYS} or @code{ENOENT} on
+some platforms.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1,
-Solaris 9, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
@end itemize
+
+Note that when using this function to open the master side of a
+pseudo-terminal, you still need platform dependent code to open the
+corresponding slave side. The Gnulib module @code{openpty} provides
+an easy-to-use API that does both at once.
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
When this function fails, it causes the stdio buffer contents to be output
twice on some platforms:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
When this function fails, it causes the stdio buffer contents to be output
twice on some platforms:
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/powf.html}
-Gnulib module: ---
+Gnulib module: powf
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, AIX 5.1, Solaris 9.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Solaris 9.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-HP-UX 10, mingw, BeOS.
+HP-UX 10, mingw, MSVC 9, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly on files larger than 2 GB. (Cf. @code{AC_SYS_LARGEFILE}.)
@item
This function does not support size specifiers as in C99 (@code{hh}, @code{ll},
@code{j}, @code{t}, @code{z}) on some platforms:
-AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.24, mingw, BeOS.
+AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.24, mingw, MSVC 9, BeOS.
@item
printf of @samp{long double} numbers is unsupported on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@item
printf @code{"%f"}, @code{"%e"}, @code{"%g"} of Infinity and NaN yields an
incorrect result on some platforms:
-AIX 5.2, OSF/1 5.1, Solaris 11 2010-11, mingw.
+AIX 5.2, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9.
@item
This function does not support the @samp{a} and @samp{A} directives on some
platforms:
glibc-2.3.6, MacOS X 10.5, NetBSD 5.0, OpenBSD 4.0, AIX 5.2, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, BeOS.
@item
This function does not support the @samp{F} directive on some platforms:
NetBSD 3.0, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9,
-Cygwin 1.5.x, mingw, BeOS.
+Cygwin 1.5.x, mingw, MSVC 9, BeOS.
+@item
+This function does not support the @samp{n} directive on some platforms:
+MSVC 9.
@item
This function does not support the @samp{ls} directive on some platforms:
OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Cygwin 1.5.x, Haiku.
@item
This function does not support format directives that access arguments in an
arbitrary order, such as @code{"%2$s"}, on some platforms:
-NetBSD 3.0, mingw, BeOS.
+NetBSD 3.0, mingw, MSVC 9, BeOS.
@item
This function doesn't support the @code{'} flag on some platforms:
-NetBSD 3.0, Cygwin 1.5.24, mingw.
+NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 9.
@item
This function behaves incorrectly when a @samp{-} flag and a negative width
are specified together, on some platforms:
@item
printf @code{"%010f"} of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9.
@item
This function does not support precisions larger than 512 or 1024 in integer,
floating-point and pointer output on some platforms:
-AIX 7.1, Solaris 10/x86, mingw, BeOS.
+AIX 7.1, Solaris 10/x86, mingw, MSVC 9, BeOS.
@item
This function mishandles large floating point precisions
(for example, formatting 1.0 with @samp{"%.511f"})
When writing to a non-blocking pipe whose buffer is full, this function fails
with @code{errno} being set to @code{ENOSPC} instead of @code{EAGAIN} on some
platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems fixed by Gnulib module @code{stdio} or @code{printf-posix}, together with module @code{sigpipe}:
@item
When writing to a pipe with no readers, this function fails, instead of
obeying the current @code{SIGPIPE} handler, on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, mingw, Interix 3.5, BeOS.
+OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
glibc 2.9, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1,
-HP-UX 11, OSF/1 5.1, Cygwin 1.7.9, mingw, Interix 3.5, BeOS.
+HP-UX 11, OSF/1 5.1, Cygwin 1.7.9, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Cygwin 1.7.9, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, HP-UX 11, Cygwin 1.7.9, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, Solaris 2.4, mingw, BeOS.
+MacOS X 10.3, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-OpenBSD 3.8, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, Cygwin, mingw, BeOS.
+OpenBSD 3.8, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11.11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11.11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11.11, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11.11, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-OpenBSD 3.8, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, Cygwin, mingw, BeOS.
+OpenBSD 3.8, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11.11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, BeOS.
+Minix 3.1.8, AIX 5.1, HP-UX 11.11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, NetBSD 5.0, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, NetBSD 5.0, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, NetBSD 5.0, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, NetBSD 5.0, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.4, mingw, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.4, mingw, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11.11, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11.11, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@item
On Linux/glibc platforms before the advent of NPTL, signals could only be
sent to one particular thread. In POSIX, signals are sent to the entire
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 5.0, Minix 3.1.8, HP-UX 11, Solaris 2.6, mingw, BeOS.
+NetBSD 5.0, Minix 3.1.8, HP-UX 11, Solaris 2.6, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.11, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.11, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, NetBSD 5.0, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.4, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, NetBSD 5.0, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, NetBSD 5.0, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.4, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, NetBSD 5.0, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, BeOS.
+MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, NetBSD 5.0, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.4, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, NetBSD 5.0, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, NetBSD 5.0, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.4, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, NetBSD 5.0, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.4, mingw, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.11, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.11, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 2.6, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 2.6, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, NetBSD 5.0, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.4, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, NetBSD 5.0, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, NetBSD 5.0, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.4, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, NetBSD 5.0, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.4, mingw, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.11, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.11, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 2.6, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 2.6, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, OSF/1 4.0, Solaris 2.6, mingw, BeOS.
+Minix 3.1.8, OSF/1 4.0, Solaris 2.6, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, BeOS.
+MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, BeOS.
+MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 5.0, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, mingw, BeOS.
+NetBSD 5.0, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 5.0, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, mingw, BeOS.
+NetBSD 5.0, Minix 3.1.8, HP-UX 11, OSF/1 4.0, Solaris 2.6, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 5.0, Minix 3.1.8, HP-UX 11, Solaris 2.6, mingw, BeOS.
+NetBSD 5.0, Minix 3.1.8, HP-UX 11, Solaris 2.6, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, HP-UX 11, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, Solaris 2.4, mingw, MSVC 9, BeOS.
@item
This function is declared in @code{<pthread.h>} instead of @code{<signal.h>}
on some platforms:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, BeOS.
+MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, BeOS.
+MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, BeOS.
+MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, BeOS.
+MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, BeOS.
+MacOS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, mingw, BeOS.
+MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
+This function is not declared on some platforms:
+IRIX 5.3.
+@item
On Solaris 11 2010-11, this function fails on all BSD-style @file{/dev/pty*}
device files.
+@item
+This function is not thread-safe on some platforms:
+Cygwin 1.7.9.
+Likewise, the gnulib replacement is not thread-safe.
@end itemize
+
+Note that the Gnulib module @code{ptsname_r} is a version of this
+function that is more likely to be thread-safe.
When writing to a non-blocking pipe whose buffer is full, this function fails
with @code{errno} being set to @code{ENOSPC} instead of @code{EAGAIN} on some
platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems fixed by Gnulib module @code{stdio}, together with module @code{sigpipe}:
@item
When writing to a pipe with no readers, this function fails, instead of
obeying the current @code{SIGPIPE} handler, on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@item
On some platforms, this function does not set @code{errno} or the
stream error indicator on attempts to write to a read-only stream:
When writing to a non-blocking pipe whose buffer is full, this function fails
with @code{errno} being set to @code{ENOSPC} instead of @code{EAGAIN} on some
platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems fixed by Gnulib module @code{stdio}, together with module @code{sigpipe}:
@item
When writing to a pipe with no readers, this function fails, instead of
obeying the current @code{SIGPIPE} handler, on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@item
On some platforms, this function does not set @code{errno} or the
stream error indicator on attempts to write to a read-only stream:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
When writing to a non-blocking pipe whose buffer is full, this function fails
with @code{errno} being set to @code{ENOSPC} instead of @code{EAGAIN} on some
platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems fixed by Gnulib module @code{stdio}, together with module @code{sigpipe}:
@item
When writing to a pipe with no readers, this function fails, instead of
obeying the current @code{SIGPIPE} handler, on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, BeOS.
+MacOS X 10.3, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-HP-UX 10, mingw, BeOS.
+HP-UX 10, mingw, MSVC 9, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly on files larger than 2 GB. (Cf. @code{AC_SYS_LARGEFILE}.)
@itemize
@item
This function is missing on some old platforms.
+@item
+This function crashes when invoked with invalid arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Solaris 2.4, mingw.
+Solaris 2.4, mingw, MSVC 9.
@end itemize
Portability problems fixed by Gnulib module @code{stdio}, together with module @code{nonblocking}:
@itemize
@item
+This function crashes when invoked with invalid arguments on some platforms:
+MSVC 9.
+@item
When reading from a non-blocking pipe whose buffer is empty, this function
fails with @code{errno} being set to @code{EINVAL} instead of @code{EAGAIN} on
some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/readdir.html}
-Gnulib module: ---
+Gnulib module: readdir
Portability problems fixed by Gnulib:
@itemize
-@end itemize
-
-Portability problems not fixed by Gnulib:
-@itemize
+@item
+This function is missing on some platforms:
+MSVC 9.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly on huge directories larger than 2 GB. Also, on platforms
where @code{ino_t} is a 32-bit type, this function may report inode numbers
-incorrectly. The fix is to use the @code{AC_SYS_LARGEFILE} macro.
+incorrectly. (Cf. @code{AC_SYS_LARGEFILE}.)
+@end itemize
+
+Portability problems not fixed by Gnulib:
+@itemize
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly on huge directories larger than 2 GB. Also, on platforms
glibc 2.4, FreeBSD 6.0, OpenBSD 3.8, Cygwin 1.5.x.
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8,
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
But the replacement function is not safe to be used in libraries and is not multithread-safe.
@end itemize
@itemize
@item
This function always fails on platforms that don't support symlinks:
-mingw
+mingw, MSVC 9.
@item
When @code{readlink} is called on a directory: In the case of NFS mounted
directories, Cygwin sets @code{errno} to @code{ENOENT} or @code{EIO} instead of
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@item
Upon failure, the function does not set @code{errno} to @code{ENOMEM} on
some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@item
This function does not allow for a NULL @samp{resolved} parameter on
some platforms:
@itemize
@item
This function is missing on some platforms:
-mingw, Interix 3.5, BeOS.
+mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
Many regular expression implementations have bugs.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
Many regular expression implementations have bugs.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
Portability problems not fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+MSVC 9.
+@item
+This function is not declared on some platforms:
+IRIX 5.3.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9.
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@end itemize
Cygwin 1.5.x.
@item
This function does not remove empty directories on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This function does not reject trailing slashes on the destination for
non-directories on some platforms, as in @code{rename("file","new/")}:
-AIX 7.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw.
+AIX 7.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9.
@item
This function does not reject trailing slashes on symlinks to
non-directories on some platforms, as in
@item
This function will not always replace an existing destination on some
platforms:
-Cygwin 1.5.x, mingw.
+Cygwin 1.5.x, mingw, MSVC 9.
However, the replacement is not atomic for directories, and may end up
losing the empty destination if the source could not be renamed.
@item
This function mistakenly allows names ending in @samp{.} or @samp{..}
on some platforms:
-Cygwin 1.5.x, mingw.
+Cygwin 1.5.x, mingw, MSVC 9.
@item
This function does not reject attempts to rename existing directories
and non-directories onto one another on some platforms:
-Cygwin 1.5.x, mingw.
+Cygwin 1.5.x, mingw, MSVC 9.
@item
This function does not allow trailing slashes on source directories on
older platforms, as in @samp{rename("dir/","new")}:
@item
This function will not rename a source that is currently opened
by any process:
-mingw.
+mingw, MSVC 9.
@end itemize
@item
This function is missing on some platforms:
glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8,
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 8, Cygwin 1.5.x, mingw,
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 8, Cygwin 1.5.x, mingw, MSVC 9,
Interix 3.5, BeOS.
But the replacement function is not safe to be used in libraries and is not multithread-safe.
@end itemize
@item
This function will not rename a source that is currently opened
by any process:
-mingw.
+mingw, MSVC 9.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/rewinddir.html}
-Gnulib module: ---
+Gnulib module: rewinddir
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+MSVC 9.
+@item
+On MacOS X platforms where @code{long int} is a 32-bit type, this function may
+not work correctly on huge directories larger than 2 GB.
+(Cf. @code{AC_SYS_LARGEFILE}.)
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-On platforms where @code{long int} is a 32-bit type, this function may not
-work correctly on huge directories larger than 2 GB. The fix is to use
-the @code{AC_SYS_LARGEFILE} macro (only on MacOS X systems).
@end itemize
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/rintf.html}
-Gnulib module: ---
+Gnulib module: rintf
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/rintl.html}
-Gnulib module: ---
+Gnulib module: rintl
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
+Solaris 9, Cygwin 1.5.x, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
-Solaris 9, Cygwin 1.5.x, Interix 3.5, BeOS.
@end itemize
Portability problems fixed by Gnulib:
@itemize
@item
+This function is declared in different header files (namely, @code{<io.h>} or
+@code{<direct.h>}) on some platforms:
+mingw, MSVC 9.
+@item
This function mistakenly removes a directory with
@code{rmdir("dir/./")} on some platforms:
Cygwin 1.5.x.
@item
This function fails with @code{EINVAL} instead of the expected
@code{ENOTDIR} for @code{rmdir("file/")} on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@item
This function is not declared on some platforms:
glibc 2.8, OSF/1 5.1.
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@item
This function is not declared on some platforms:
glibc 2.8, OSF/1 5.1.
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, Interix 3.5, BeOS.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@item
This function is not declared on some platforms:
glibc 2.8, OSF/1 5.1.
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, IRIX 6.5, OSF/1 4.0.
+AIX 5.1, IRIX 6.5, OSF/1 4.0, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Solaris 9, mingw, BeOS.
+Minix 3.1.8, Solaris 9, mingw, MSVC 9, BeOS.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly on huge directories larger than 2 GB. Also, on platforms
When reading from a non-blocking pipe whose buffer is empty, this function
fails with @code{errno} being set to @code{EINVAL} instead of @code{EAGAIN} on
some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, mingw, BeOS.
+OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-BeOS.
+MSVC 9, BeOS.
@item
On platforms where @code{long int} is a 32-bit type, this function may not
work correctly on huge directories larger than 2 GB. The fix is to use
@item
On Linux, when some file descriptor refers to a regular file, @code{select}
may fail, setting @code{errno} to @code{EBADF}.
+@item
+This function is declared in @code{<unistd.h>}, not @code{<sys/select.h>},
+on some platforms:
+IRIX 5.3.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, mingw, BeOS.
+MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Solaris 2.4, Cygwin 1.5.x, mingw, BeOS.
+Minix 3.1.8, IRIX 5.3, Solaris 2.4, Cygwin 1.5.x, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, Interix 3.5, BeOS.
+mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-HP-UX 11.23, mingw, BeOS.
+HP-UX 11.23, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 4.3.2, HP-UX 11.23, IRIX 6.5, Solaris 9, mingw, BeOS.
+AIX 4.3.2, HP-UX 11.23, IRIX 6.5, Solaris 9, mingw, MSVC 9, BeOS.
@item
This function is not declared on some platforms:
OSF/1 5.1.
@itemize
@item
This function is missing on some platforms:
-HP-UX 11.23, mingw, BeOS.
+HP-UX 11.23, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 5.0, Minix 3.1.8, Cygwin, mingw, BeOS.
+NetBSD 5.0, Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
+@item
+This function is not declared in @code{<stdlib.h>}
+(without @code{-D_GNU_SOURCE}) on some platforms:
+glibc (at least 2.11–2.13).
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Cygwin, mingw, BeOS.
+Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, Interix 3.5.
+Minix 3.1.8, mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Solaris 2.4, mingw, BeOS.
+Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Solaris 2.4, mingw, BeOS.
+Minix 3.1.8, Solaris 2.4, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@item
On platforms where @code{rlim_t} is a 32-bit type, this function does not
allow to set limits larger than 4 GB, such as for RLIMIT_FSIZE. The fix is
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Solaris 2.4, mingw.
+Solaris 2.4, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, BeOS.
+MacOS X 10.3, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Solaris 2.4, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Solaris 2.4, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Solaris 2.4, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Solaris 2.4, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@item
Attempts to @code{shmat} into a previously malloc-ed region fail on SunOS 4,
with @code{errno} set to @code{EINVAL}, even if there is an @code{munmap} call
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@item
On many platforms (not Linux), SHMMAX is so small that it is unusable for
reasonable applications, and/or @code{shmget} requires superuser privileges.
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@item
Support for SA_ONSTACK is missing on some platforms:
-mingw, cygwin.
+mingw, MSVC 9, cygwin.
@item
Support for SA_SIGINFO is missing on some platforms:
-mingw, Interix 3.5.
+mingw, MSVC 9, Interix 3.5.
@item
Support for SIGCHLD, and thus for SA_NOCLDSTOP and SA_NOCLDWAIT, is
missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
Support for SA_RESETHAND is missing on some platforms:
@item
Support for SA_RESTART is missing on some platforms:
-mingw, NonStop.
+mingw, MSVC 9, NonStop.
@item
In spite of having SA_SIGACTION, struct sigaction lacks the
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
@code{sigaltstack} doesn't work on HP-UX 11/IA-64 and OpenBSD
3.6/Sparc64.
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, BeOS.
+FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, Cygwin 1.5.x, mingw, BeOS.
+MacOS X 10.3, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Solaris 2.5.1, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, IRIX 5.3, Solaris 2.5.1, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Note: POSIX recommends using @code{sigaction} with SA_RESTART instead of
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@item
This is only provided as a macro on some platforms:
Portability problems not fixed by Gnulib:
@itemize
@item
+This function crashes when invoked with invalid arguments on some platforms:
+MSVC 9.
+@item
On System V platforms, when the signal is triggered, the kernel uninstalls the
handler (i.e.@: resets the signal's action to SIG_DFL) before invoking the
handler. This opens the door to race conditions: undesired things happen
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, OpenBSD 3.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Interix 3.5.
+MacOS X 10.5, OpenBSD 3.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, MSVC 9, Interix 3.5.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This variable is missing on some platforms:
-MacOS X 10.5, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, mingw.
+MacOS X 10.5, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Solaris 2.4, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Solaris 2.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, BeOS.
+FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, Cygwin 1.5.x, mingw, BeOS.
+MacOS X 10.3, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, Solaris 2.4, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, Solaris 2.4, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
Linux implements the meaning of NULL timeout by doing what @code{sigwaitinfo}
does; other platforms may not do the same.
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@item
On Linux/glibc platforms before the advent of NPTL, signals could only be
sent to one particular thread. In POSIX, signals are sent to the entire
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, Solaris 2.4, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, OpenBSD 3.8, Minix 3.1.8, Solaris 2.4, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/sinf.html}
-Gnulib module: ---
+Gnulib module: sinf
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, AIX 5.1, Solaris 9.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Solaris 9.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/sinhf.html}
-Gnulib module: ---
+Gnulib module: sinhf
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, AIX 5.1, Solaris 9.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Solaris 9.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
+@item
This function is not declared on some platforms:
MacOS X 10.3.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw (2005 or newer).
+mingw (2005 or newer), MSVC 9.
@item
This function takes milliseconds as argument and returns @code{void} on some
platforms:
@itemize
@item
This function is missing on some platforms:
-IRIX 5.3, OSF/1 4.0, Solaris 2.5.1.
+IRIX 5.3, OSF/1 4.0, Solaris 2.5.1, MSVC 9.
@item
This function does not support format directives that access arguments in an
arbitrary order, such as @code{"%2$s"}, on some platforms:
@item
This function does not support size specifiers as in C99 (@code{hh}, @code{ll},
@code{j}, @code{t}, @code{z}) on some platforms:
-AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.24, mingw, BeOS.
+AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.24, mingw, MSVC 9, BeOS.
@item
printf of @samp{long double} numbers is unsupported on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@item
printf @code{"%f"}, @code{"%e"}, @code{"%g"} of Infinity and NaN yields an
incorrect result on some platforms:
-AIX 5.2, OSF/1 5.1, Solaris 11 2010-11, mingw.
+AIX 5.2, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9.
@item
This function does not support the @samp{a} and @samp{A} directives on some
platforms:
glibc-2.3.6, MacOS X 10.5, NetBSD 5.0, OpenBSD 4.0, AIX 5.2, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, BeOS.
@item
This function does not support the @samp{F} directive on some platforms:
NetBSD 3.0, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9,
-Cygwin 1.5.x, mingw, BeOS.
+Cygwin 1.5.x, mingw, MSVC 9, BeOS.
+@item
+This function does not support the @samp{n} directive on some platforms:
+MSVC 9.
@item
This function does not support the @samp{ls} directive on some platforms:
OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Cygwin 1.5.x, Haiku.
Solaris 11 2010-11.
@item
This function doesn't support the @code{'} flag on some platforms:
-NetBSD 3.0, Cygwin 1.5.24, mingw.
+NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 9.
@item
This function behaves incorrectly when a @samp{-} flag and a negative width
are specified together, on some platforms:
@item
printf @code{"%010f"} of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9.
@item
This function does not support precisions larger than 512 or 1024 in integer,
floating-point and pointer output on some platforms:
-AIX 7.1, Solaris 10/x86, mingw, BeOS.
+AIX 7.1, Solaris 10/x86, mingw, MSVC 9, BeOS.
@item
This function mishandles large floating point precisions
(for example, formatting 1.0 with @samp{"%.511f"})
MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0.
@item
This function does not truncate the result as specified in C99 on some platforms:
-mingw.
+mingw, MSVC 9.
@item
This function does not fully support the @samp{n} directive on some platforms:
-HP-UX 11, mingw.
+HP-UX 11, mingw, MSVC 9.
@item
This function overwrites memory even when a zero size argument is passed on some
platforms:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@item
This function does not support size specifiers as in C99 (@code{hh}, @code{ll},
@code{j}, @code{t}, @code{z}) on some platforms:
-AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.24, mingw, BeOS.
+AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.24, mingw, MSVC 9, BeOS.
@item
printf of @samp{long double} numbers is unsupported on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@item
printf @code{"%f"}, @code{"%e"}, @code{"%g"} of Infinity and NaN yields an
incorrect result on some platforms:
-AIX 5.2, OSF/1 5.1, Solaris 11 2010-11, mingw.
+AIX 5.2, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9.
@item
This function does not support the @samp{a} and @samp{A} directives on some
platforms:
glibc-2.3.6, MacOS X 10.5, NetBSD 5.0, OpenBSD 4.0, AIX 5.2, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, BeOS.
@item
This function does not support the @samp{F} directive on some platforms:
NetBSD 3.0, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9,
-Cygwin 1.5.x, mingw, BeOS.
+Cygwin 1.5.x, mingw, MSVC 9, BeOS.
+@item
+This function does not support the @samp{n} directive on some platforms:
+MSVC 9.
@item
This function does not support the @samp{ls} directive on some platforms:
OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Cygwin 1.5.x, Haiku.
@item
This function does not support format directives that access arguments in an
arbitrary order, such as @code{"%2$s"}, on some platforms:
-NetBSD 3.0, mingw, BeOS.
+NetBSD 3.0, mingw, MSVC 9, BeOS.
@item
This function doesn't support the @code{'} flag on some platforms:
-NetBSD 3.0, Cygwin 1.5.24, mingw.
+NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 9.
@item
This function behaves incorrectly when a @samp{-} flag and a negative width
are specified together, on some platforms:
@item
printf @code{"%010f"} of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9.
@item
This function does not support precisions larger than 512 or 1024 in integer,
floating-point and pointer output on some platforms:
-AIX 7.1, Solaris 10/x86, mingw, BeOS.
+AIX 7.1, Solaris 10/x86, mingw, MSVC 9, BeOS.
@item
This function mishandles large floating point precisions
(for example, formatting 1.0 with @samp{"%.511f"})
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/sqrtf.html}
-Gnulib module: ---
+Gnulib module: sqrtf
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, AIX 5.1, Solaris 9.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Solaris 9.
@end itemize
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
+@item
This function is not declared on some platforms:
MacOS X 10.3.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Solaris 2.4, mingw.
+Solaris 2.4, mingw, MSVC 9.
@end itemize
@item
On some platforms, @code{stat(".",buf)} and @code{stat("./",buf)} give
different results:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, OpenBSD 3.8, mingw.
+MacOS X 10.3, OpenBSD 3.8, mingw, MSVC 9.
@item
On platforms where @code{f_blocks} in @samp{struct statvfs} is a 32-bit
value, this function may not work correctly on files systems larger than
@item
This function is missing on some platforms:
NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1,
-Solaris 10, Cygwin 1.5.x, mingw, Interix 3.5.
+Solaris 10, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2,
-HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function has an incompatible return value on some platforms:
AIX 5.1.
Portability problems fixed by Gnulib:
@itemize
@item
-This function is missing on some old platforms.
+This function is missing on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
Upon failure, the function does not set @code{errno} to @code{ENOMEM} on
some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function does not support the error values that are specified by POSIX
but not defined by the system, on some platforms:
-OpenBSD 4.0, OSF/1 5.1, NonStop Kernel, Cygwin 1.5.x, mingw.
+OpenBSD 4.0, OSF/1 5.1, NonStop Kernel, Cygwin 1.5.x, mingw, MSVC 9.
@item
This function reports failure for @code{strerror(0)} (by setting
@code{errno} or using a string similar to out-of-range values),
@itemize
@item
This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 3.0, Minix 3.1.8, HP-UX 11.23, IRIX 6.5, Solaris 9, mingw.
+NetBSD 3.0, Minix 3.1.8, HP-UX 11.23, IRIX 6.5, Solaris 9, mingw, MSVC 9.
@item
glibc and Cygwin have an incompatible version of this function. The
POSIX compliant code
@itemize
@item
This function is missing on some platforms:
-NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Cygwin 1.7.1, mingw, BeOS.
+NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Cygwin 1.7.1, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems fixed by Gnulib:
@itemize
@item
-This function is missing on some old platforms.
+This function is missing on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function does not NUL-terminate the result on some platforms:
AIX 5.1.
@itemize
@item
This function is missing on some platforms:
-IRIX 5.3, mingw, BeOS.
+IRIX 5.3, mingw, MSVC 9, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, mingw.
+Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, mingw, MSVC 9.
@item
This function does not return a string for out-of-range numbers on
This function has quadratic instead of linear worst-case complexity on some
platforms:
glibc 2.8, MacOS X 10.5, FreeBSD 6.2, NetBSD 5.0, OpenBSD 4.0, AIX
-5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw.
+5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function fails to parse Infinities and plain NaNs on some platforms:
-OpenBSD 4.0, HP-UX 11.11, IRIX 6.5, OSF/1 5.1, Solaris 9, mingw.
+OpenBSD 4.0, HP-UX 11.11, IRIX 6.5, OSF/1 5.1, Solaris 9, mingw, MSVC 9.
@item
This function fails to parse @samp{NaN()} on some platforms:
-glibc-2.3.6, MacOS X 10.5, FreeBSD 6.2, OpenBSD 4.0, AIX 7.1, HP-UX 11.11, IRIX 6.5, OSF/1 5.1, Cygwin < 1.5.25-11, mingw.
+glibc-2.3.6, MacOS X 10.5, FreeBSD 6.2, OpenBSD 4.0, AIX 7.1, HP-UX 11.11, IRIX 6.5, OSF/1 5.1, Cygwin < 1.5.25-11, mingw, MSVC 9.
@item
This function fails to parse @samp{NaN(@var{n-char-sequence})} on some
platforms:
-OpenBSD 4.0, HP-UX 11.11, IRIX 6.5, OSF/1 5.1, mingw.
+OpenBSD 4.0, HP-UX 11.11, IRIX 6.5, OSF/1 5.1, mingw, MSVC 9.
@item
This function parses @samp{NaN(@var{n-char-sequence})}, but returns
This function fails to parse C99 hexadecimal floating point on some
platforms:
NetBSD 5.0, OpenBSD 4.0, AIX 5.1, HP-UX 11.11, IRIX 6.5, OSF/1 5.1,
-Solaris 11 2010-11, mingw.
+Solaris 11 2010-11, mingw, MSVC 9.
@item
This function returns the wrong end pointer for @samp{0x1p} on some
@item
This function returns +0.0 (not -0.0) for negative underflow on some
platforms:
-glibc 2.7, Cygwin 1.5.x, mingw.
+glibc 2.7, Cygwin 1.5.x, mingw, MSVC 9.
@item
This function cannot distinguish between ``nan'' and ``-nan'' on some
platforms:
-glibc 2.7, IRIX 6.5, OSF/1 5.1, mingw.
+glibc 2.7, IRIX 6.5, OSF/1 5.1, mingw, MSVC 9.
@item
This function fails to correctly parse very long strings on some
platforms:
-MacOS X 10.5, FreeBSD 6.2, NetBSD 5.0, OpenBSD 4.0, IRIX 6.5, OSF/1 5.1, Cygwin, mingw.
+MacOS X 10.5, FreeBSD 6.2, NetBSD 5.0, OpenBSD 4.0, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9.
@item
The replacement function does not always return correctly rounded results.
@itemize
@item
This function is missing on some platforms:
-NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5, BeOS.
+NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, IRIX 6.5, OSF/1 5.1, Solaris 9, Interix 3.5.
+OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, IRIX 6.5, OSF/1 5.1, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
This function crashes when invoked from code compiled with optimization enabled
on some platforms:
@itemize
@item
This function is missing on some platforms:
-NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, Interix 3.5, BeOS.
+NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-HP-UX 11.11, OSF/1 5.1, Interix 3.5.
+HP-UX 11.11, OSF/1 5.1, MSVC 9, Interix 3.5.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-HP-UX 11.11, OSF/1 5.1, Interix 3.5.
+HP-UX 11.11, OSF/1 5.1, MSVC 9, Interix 3.5.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 9, Interix 3.5.
+OpenBSD 3.8, Minix 3.1.8, AIX 5.1, IRIX 6.5, OSF/1 5.1, Solaris 9, MSVC 9, Interix 3.5.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
This function is missing on some platforms:
NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11.00, IRIX 6.5, Solaris 2.6, Cygwin 1.5.x, Interix 3.5, BeOS.
@item
+This function does not support the @samp{n} directive on some platforms:
+MSVC 9.
+@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@item
@item
This function is missing on some platforms; however, the replacement
always fails with @code{EPERM}:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8,
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
But the replacement function is not safe to be used in libraries and is not multithread-safe.
@item
Some platforms declare this function in @code{stdio.h} instead of
@item
This function always fails with @samp{ENOSYS} on platforms that don't
support symlinks:
-mingw
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, Interix 3.5.
+mingw, MSVC 9, Interix 3.5.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/tanf.html}
-Gnulib module: ---
+Gnulib module: tanf
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, AIX 5.1, Solaris 9.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Solaris 9.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/tanhf.html}
-Gnulib module: ---
+Gnulib module: tanhf
Portability problems fixed by Gnulib:
@itemize
+@item
+This function is missing on some platforms:
+Minix 3.1.8, AIX 5.1, Solaris 9.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-This function is missing on some platforms:
-Minix 3.1.8, AIX 5.1, Solaris 9.
@end itemize
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
+@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
@end itemize
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
@item
+This function is only defined as a macro with arguments on some platforms:
+MSVC 9.
+@item
This function is not declared on some platforms:
MacOS X 10.3.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
On some platforms, @code{tcdrain} on a non-tty fails with @code{errno} set to
@code{EINVAL} or, on MacOS X, also @code{EOPNOTSUPP} or @code{ENODEV}, rather
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
On some platforms, @code{tcflush} of @code{TCIFLUSH} on a non-tty fails with
errno set to @code{EINVAL} rather than @code{ENOTTY}.
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, FreeBSD 6.0, OpenBSD 4.5, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, OpenBSD 4.5, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is not declared on some platforms:
OSF/1 5.1.
@itemize
@item
This function always fails on some platforms:
-FreeBSD 6.0, Cygwin, mingw, Interix 3.5, BeOS.
+FreeBSD 6.0, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@item
@code{tdelete} returns @code{NULL} when removing the last element of a tree
on some platforms:
@itemize
@item
This function is missing on some platforms:
-BeOS.
+MSVC 9, BeOS.
@item
On platforms where @code{long int} is a 32-bit type, this function may not
work correctly on huge directories larger than 2 GB. The fix is to use
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5, BeOS.
+NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.4, Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, Interix 3.5, BeOS, Tandem/NSK.
+MacOS X 10.5, FreeBSD 6.4, Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, Interix 3.5, BeOS, Tandem/NSK.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.4, Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, Interix 3.5, BeOS, Tandem/NSK.
+MacOS X 10.5, FreeBSD 6.4, Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, Interix 3.5, BeOS, Tandem/NSK.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, Minix 3.1.8, IRIX 5.3, Solaris 2.4, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, Minix 3.1.8, IRIX 5.3, Solaris 2.4, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.4, Minix 3.1.8, IRIX 5.3, mingw, Interix 3.5, BeOS, Tandem/NSK.
+MacOS X 10.5, FreeBSD 6.4, Minix 3.1.8, IRIX 5.3, mingw, MSVC 9, Interix 3.5, BeOS, Tandem/NSK.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.4, Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, Interix 3.5, BeOS, Tandem/NSK.
+MacOS X 10.5, FreeBSD 6.4, Minix 3.1.8, IRIX 5.3, Solaris 2.4, mingw, MSVC 9, Interix 3.5, BeOS, Tandem/NSK.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function often fails for trivial reasons on some platforms:
-mingw.
+mingw, MSVC 9.
@item
On platforms where @code{off_t} is a 32-bit type, @code{tmpfile} may not work
correctly to create files larger than 2 GB. (Cf. @code{AC_SYS_LARGEFILE}.)
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11.00, IRIX 6.5, Solaris 2.5.1, mingw, Interix 3.5.
+Minix 3.1.8, HP-UX 11.00, IRIX 6.5, Solaris 2.5.1, mingw, MSVC 9, Interix 3.5.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 3.0, OpenBSD 3.8, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 3.0, OpenBSD 3.8, Solaris 9, MSVC 9, Interix 3.5.
@item
This function is not declared (without @code{-D_GNU_SOURCE}) on some platforms:
glibc 2.8.
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
On platforms where @code{off_t} is a 32-bit type, this function is not
applicable to arbitrary lengths for files larger than 2 GB. The fix is to
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Interix 3.5.
+FreeBSD 5.2.1, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9, Interix 3.5.
@item
This function is not declared (without @code{-D_GNU_SOURCE}) on some platforms:
glibc 2.8.
@itemize
@item
This function is missing on some platforms:
-FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5, BeOS.
+FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@item
This function is not declared (without @code{-D_GNU_SOURCE}) on some platforms:
glibc 2.8.
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-NetBSD 3.0, Minix 3.1.8, mingw, BeOS.
+NetBSD 3.0, Minix 3.1.8, mingw, MSVC 9, BeOS.
@item
This function is not declared unless @code{_REENTRANT} is defined,
on some platforms:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, BeOS.
+OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/unlinkat.html}
-Gnulib module: openat
+Gnulib module: unlinkat
Portability problems fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8,
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
But the replacement function is not safe to be used in libraries and is not multithread-safe.
@item
Some systems mistakenly succeed on @code{unlinkat(fd,"file/",flag)}:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, mingw, BeOS.
+MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
+@item
+This function is not declared on some platforms:
+IRIX 5.3.
+@item
+This function reports success for invalid file descriptors on some platforms:
+NetBSD 5.1, Cygwin 1.7.9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-AIX 5.1, HP-UX 11.23, IRIX 6.5, Solaris 9, mingw, BeOS.
+AIX 5.1, HP-UX 11.23, IRIX 6.5, Solaris 9, mingw, MSVC 9, BeOS.
@item
This function is not declared on some platforms:
OSF/1 5.1.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
On some platforms, the prototype for @code{utime} omits @code{const}
for the second argument. Fortunately, the argument is not modified,
so it is safe to cast away const:
-mingw.
+mingw, MSVC 9.
@end itemize
@item
This function is missing on some platforms:
glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8,
-AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw,
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, MSVC 9,
Interix 3.5, BeOS.
However, the replacement function may end up truncating timestamps to
less resolution than supported by the file system. Furthermore, the
When using @code{UTIME_OMIT} for the modification time, but specifying
an access time, some systems fail to update the change time:
Linux kernel 2.6.32.
+@item
+Out-of-range values of @code{tv_nsec} do not lead to a failure on some
+platforms:
+Linux kernel 2.6.22.19 on hppa.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, mingw, Interix 3.5, BeOS.
+Minix 3.1.8, mingw, MSVC 9, Interix 3.5, BeOS.
@item
The declaration of this function lacks @code{const} in the second argument
on some platforms:
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5.
@end itemize
Portability problems fixed by Gnulib module @code{vdprintf-posix}:
@item
This function does not support size specifiers as in C99 (@code{hh}, @code{ll},
@code{j}, @code{t}, @code{z}) on some platforms:
-AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.24, mingw, BeOS.
+AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.24, mingw, MSVC 9, BeOS.
@item
printf of @samp{long double} numbers is unsupported on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@item
printf @code{"%f"}, @code{"%e"}, @code{"%g"} of Infinity and NaN yields an
incorrect result on some platforms:
-AIX 5.2, OSF/1 5.1, Solaris 11 2010-11, mingw.
+AIX 5.2, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9.
@item
This function does not support the @samp{a} and @samp{A} directives on some
platforms:
glibc-2.3.6, MacOS X 10.5, NetBSD 5.0, OpenBSD 4.0, AIX 5.2, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, BeOS.
@item
This function does not support the @samp{F} directive on some platforms:
NetBSD 3.0, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9,
-Cygwin 1.5.x, mingw, BeOS.
+Cygwin 1.5.x, mingw, MSVC 9, BeOS.
+@item
+This function does not support the @samp{n} directive on some platforms:
+MSVC 9.
@item
This function does not support the @samp{ls} directive on some platforms:
OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Cygwin 1.5.x, Haiku.
@item
This function does not support format directives that access arguments in an
arbitrary order, such as @code{"%2$s"}, on some platforms:
-NetBSD 3.0, mingw, BeOS.
+NetBSD 3.0, mingw, MSVC 9, BeOS.
@item
This function doesn't support the @code{'} flag on some platforms:
-NetBSD 3.0, Cygwin 1.5.24, mingw.
+NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 9.
@item
This function behaves incorrectly when a @samp{-} flag and a negative width
are specified together, on some platforms:
@item
printf @code{"%010f"} of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9.
@item
This function does not support precisions larger than 512 or 1024 in integer,
floating-point and pointer output on some platforms:
-AIX 7.1, Solaris 10/x86, mingw, BeOS.
+AIX 7.1, Solaris 10/x86, mingw, MSVC 9, BeOS.
@item
This function mishandles large floating point precisions
(for example, formatting 1.0 with @samp{"%.511f"})
When writing to a non-blocking pipe whose buffer is full, this function fails
with @code{errno} being set to @code{ENOSPC} instead of @code{EAGAIN} on some
platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems fixed by Gnulib module @code{stdio} or @code{vfprintf-posix}, together with module @code{sigpipe}:
@item
When writing to a pipe with no readers, this function fails, instead of
obeying the current @code{SIGPIPE} handler, on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
When reading from a non-blocking pipe whose buffer is empty, this function
fails with @code{errno} being set to @code{EINVAL} instead of @code{EAGAIN} on
some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function does not support size specifiers as in C99 (@code{hh}, @code{ll},
@code{j}, @code{t}, @code{z}) on some platforms:
-AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.24, mingw, BeOS.
+AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.24, mingw, MSVC 9, BeOS.
@item
printf of @samp{long double} numbers is unsupported on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@item
printf @code{"%f"}, @code{"%e"}, @code{"%g"} of Infinity and NaN yields an
incorrect result on some platforms:
-AIX 5.2, OSF/1 5.1, Solaris 11 2010-11, mingw.
+AIX 5.2, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9.
@item
This function does not support the @samp{a} and @samp{A} directives on some
platforms:
glibc-2.3.6, MacOS X 10.5, NetBSD 5.0, OpenBSD 4.0, AIX 5.2, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, BeOS.
@item
This function does not support the @samp{F} directive on some platforms:
NetBSD 3.0, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9,
-Cygwin 1.5.x, mingw, BeOS.
+Cygwin 1.5.x, mingw, MSVC 9, BeOS.
+@item
+This function does not support the @samp{n} directive on some platforms:
+MSVC 9.
@item
This function does not support the @samp{ls} directive on some platforms:
OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Cygwin 1.5.x, Haiku.
@item
This function does not support format directives that access arguments in an
arbitrary order, such as @code{"%2$s"}, on some platforms:
-NetBSD 3.0, mingw, BeOS.
+NetBSD 3.0, mingw, MSVC 9, BeOS.
@item
This function doesn't support the @code{'} flag on some platforms:
-NetBSD 3.0, Cygwin 1.5.24, mingw.
+NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 9.
@item
This function behaves incorrectly when a @samp{-} flag and a negative width
are specified together, on some platforms:
@item
printf @code{"%010f"} of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9.
@item
This function does not support precisions larger than 512 or 1024 in integer,
floating-point and pointer output on some platforms:
-AIX 7.1, Solaris 10/x86, mingw, BeOS.
+AIX 7.1, Solaris 10/x86, mingw, MSVC 9, BeOS.
@item
This function mishandles large floating point precisions
(for example, formatting 1.0 with @samp{"%.511f"})
When writing to a non-blocking pipe whose buffer is full, this function fails
with @code{errno} being set to @code{ENOSPC} instead of @code{EAGAIN} on some
platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems fixed by Gnulib module @code{stdio} or @code{vprintf-posix}, together with module @code{sigpipe}:
@item
When writing to a pipe with no readers, this function fails, instead of
obeying the current @code{SIGPIPE} handler, on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
When reading from a non-blocking pipe whose buffer is empty, this function
fails with @code{errno} being set to @code{EINVAL} instead of @code{EAGAIN} on
some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function does not support format directives that access arguments in an
arbitrary order, such as @code{"%2$s"}, on some platforms:
-NetBSD 3.0, mingw, BeOS.
+NetBSD 3.0, mingw, MSVC 9, BeOS.
@item
This function overwrites memory even when a size argument of 1 is passed on some
platforms:
@item
This function does not return a byte count as specified in C99 on some
platforms:
-HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, mingw.
+HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, mingw, MSVC 9.
@end itemize
Portability problems fixed by Gnulib module @code{vsnprintf-posix}:
@item
This function does not support size specifiers as in C99 (@code{hh}, @code{ll},
@code{j}, @code{t}, @code{z}) on some platforms:
-AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.24, mingw, BeOS.
+AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.24, mingw, MSVC 9, BeOS.
@item
printf of @samp{long double} numbers is unsupported on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@item
printf @code{"%f"}, @code{"%e"}, @code{"%g"} of Infinity and NaN yields an
incorrect result on some platforms:
-AIX 5.2, OSF/1 5.1, Solaris 11 2010-11, mingw.
+AIX 5.2, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9.
@item
This function does not support the @samp{a} and @samp{A} directives on some
platforms:
glibc-2.3.6, MacOS X 10.5, NetBSD 5.0, OpenBSD 4.0, AIX 5.2, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, BeOS.
@item
This function does not support the @samp{F} directive on some platforms:
NetBSD 3.0, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9,
-Cygwin 1.5.x, mingw, BeOS.
+Cygwin 1.5.x, mingw, MSVC 9, BeOS.
@item
This function does not support the @samp{ls} directive on some platforms:
OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Cygwin 1.5.x, Haiku.
Solaris 11 2010-11.
@item
This function doesn't support the @code{'} flag on some platforms:
-NetBSD 3.0, Cygwin 1.5.24, mingw.
+NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 9.
@item
This function behaves incorrectly when a @samp{-} flag and a negative width
are specified together, on some platforms:
@item
printf @code{"%010f"} of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9.
@item
This function does not support precisions larger than 512 or 1024 in integer,
floating-point and pointer output on some platforms:
-AIX 7.1, Solaris 10/x86, mingw, BeOS.
+AIX 7.1, Solaris 10/x86, mingw, MSVC 9, BeOS.
@item
This function mishandles large floating point precisions
(for example, formatting 1.0 with @samp{"%.511f"})
MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0.
@item
This function does not truncate the result as specified in C99 on some platforms:
-mingw.
+mingw, MSVC 9.
@item
This function does not fully support the @samp{n} directive on some platforms:
-HP-UX 11, mingw.
+HP-UX 11, mingw, MSVC 9.
@item
This function overwrites memory even when a zero size argument is passed on some
platforms:
@item
This function does not support size specifiers as in C99 (@code{hh}, @code{ll},
@code{j}, @code{t}, @code{z}) on some platforms:
-AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.24, mingw, BeOS.
+AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.24, mingw, MSVC 9, BeOS.
@item
printf of @samp{long double} numbers is unsupported on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@item
printf @code{"%f"}, @code{"%e"}, @code{"%g"} of Infinity and NaN yields an
incorrect result on some platforms:
-AIX 5.2, OSF/1 5.1, Solaris 11 2010-11, mingw.
+AIX 5.2, OSF/1 5.1, Solaris 11 2010-11, mingw, MSVC 9.
@item
This function does not support the @samp{a} and @samp{A} directives on some
platforms:
glibc-2.3.6, MacOS X 10.5, NetBSD 5.0, OpenBSD 4.0, AIX 5.2, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, BeOS.
@item
This function does not support the @samp{F} directive on some platforms:
NetBSD 3.0, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9,
-Cygwin 1.5.x, mingw, BeOS.
+Cygwin 1.5.x, mingw, MSVC 9, BeOS.
+@item
+This function does not support the @samp{n} directive on some platforms:
+MSVC 9.
@item
This function does not support the @samp{ls} directive on some platforms:
OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Cygwin 1.5.x, Haiku.
@item
This function does not support format directives that access arguments in an
arbitrary order, such as @code{"%2$s"}, on some platforms:
-NetBSD 3.0, mingw, BeOS.
+NetBSD 3.0, mingw, MSVC 9, BeOS.
@item
This function doesn't support the @code{'} flag on some platforms:
-NetBSD 3.0, Cygwin 1.5.24, mingw.
+NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 9.
@item
This function behaves incorrectly when a @samp{-} flag and a negative width
are specified together, on some platforms:
@item
printf @code{"%010f"} of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9.
@item
This function does not support precisions larger than 512 or 1024 in integer,
floating-point and pointer output on some platforms:
-AIX 7.1, Solaris 10/x86, mingw, BeOS.
+AIX 7.1, Solaris 10/x86, mingw, MSVC 9, BeOS.
@item
This function mishandles large floating point precisions
(for example, formatting 1.0 with @samp{"%.511f"})
@itemize
@item
This function is missing on some platforms:
-Solaris 8.
+Solaris 8, MSVC 9.
@item
On Windows platforms (excluding Cygwin), this function does not set @code{errno}
upon failure.
@item
This function is missing on some platforms:
NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1,
-Solaris 8, Cygwin 1.5.x, Interix 3.5, BeOS.
+Solaris 8, Cygwin 1.5.x, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.4, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
As of 2005, no system is known on which @code{waitid} with flag @code{WNOWAIT}
works correctly.
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is not declared (without @code{-D_GNU_SOURCE}) on some platforms:
glibc 2.13.
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@item
This function is not declared (without @code{-D_GNU_SOURCE}) on some platforms:
glibc 2.13.
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, AIX 4.3.2, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw.
+IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@item
This function is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, AIX 4.3.2, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, MSVC 9, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on all non-glibc platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@item
This function is missing on some platforms:
MacOS X 10.3, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2,
-HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1,
-Solaris 9, Cygwin 1.5.x, Interix 3.5, BeOS.
+Solaris 9, Cygwin 1.5.x, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on some platforms:
-OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin
-1.5.x, Interix 3.5.
+OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.11, IRIX 6.5, OSF/1 5.1, Solaris 9,
+Cygwin 1.5.x, MSVC 9, Interix 3.5.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on some platforms:
-NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, Interix 3.5, BeOS.
+NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11.11, IRIX 5.3, OSF/1 5.1, Solaris 9, Cygwin 1.5.x, Interix 3.5.
+Minix 3.1.8, HP-UX 11.11, IRIX 5.3, OSF/1 5.1, Solaris 9, Cygwin 1.5.x, MSVC 9, Interix 3.5.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11.11, IRIX 5.3, OSF/1 5.1, Solaris 9, Cygwin 1.5.x, Interix 3.5.
+Minix 3.1.8, HP-UX 11.11, IRIX 5.3, OSF/1 5.1, Solaris 9, Cygwin 1.5.x, MSVC 9, Interix 3.5.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@item
This function is missing on some platforms:
OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.11, IRIX 6.5, OSF/1 5.1, Solaris 9,
-Cygwin 1.5.x, Interix 3.5.
+Cygwin 1.5.x, MSVC 9, Interix 3.5.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on some platforms:
-OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Solaris 2.5.1, mingw, BeOS.
+OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Solaris 2.5.1, mingw, MSVC 9, BeOS.
@item
This function handles combining characters in UTF-8 locales incorrectly on some
platforms:
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, HP-UX 11.00, IRIX 6.5, Solaris 2.5.1, mingw, Interix 3.5.
+Minix 3.1.8, HP-UX 11.00, IRIX 6.5, Solaris 2.5.1, mingw, MSVC 9, Interix 3.5.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Solaris 2.5.1.
+Minix 3.1.8, IRIX 5.3, Solaris 2.5.1, MSVC 9.
@item
This function is declared in @code{<wchar.h>}, not in @code{<wctype.h>}, on
some platforms:
@itemize
@item
This function is missing on many platforms:
-MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
accommodate all Unicode characters.
@itemize
@item
This function is missing on some platforms:
-Minix 3.1.8, IRIX 5.3, Solaris 2.5.1, mingw, BeOS.
+Minix 3.1.8, IRIX 5.3, Solaris 2.5.1, mingw, MSVC 9, BeOS.
@item
This function is not declared (without @code{-D_GNU_SOURCE}) on some platforms:
glibc 2.8.
@itemize
@item
This function is missing on some platforms:
-HP-UX 11.00, IRIX 6.5, Solaris 2.6, Interix 3.5.
+HP-UX 11.00, IRIX 6.5, Solaris 2.6, MSVC 9, Interix 3.5.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-HP-UX 11.00, IRIX 6.5, Solaris 2.6, Interix 3.5.
+HP-UX 11.00, IRIX 6.5, Solaris 2.6, MSVC 9, Interix 3.5.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-HP-UX 11.00, IRIX 6.5, Solaris 2.6, Interix 3.5.
+HP-UX 11.00, IRIX 6.5, Solaris 2.6, MSVC 9, Interix 3.5.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-HP-UX 11.00, IRIX 6.5, Solaris 2.6, Interix 3.5.
+HP-UX 11.00, IRIX 6.5, Solaris 2.6, MSVC 9, Interix 3.5.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-HP-UX 11.00, IRIX 6.5, Solaris 2.6, Interix 3.5.
+HP-UX 11.00, IRIX 6.5, Solaris 2.6, MSVC 9, Interix 3.5.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@item
On some platforms, this function does not set @code{errno} or the
stream error indicator on attempts to write to a read-only stream:
@itemize
@item
This function is missing on some platforms:
-MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, IRIX 5.3, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems fixed by Gnulib module @code{stdio}, together with module @code{nonblocking}:
@itemize
@item
+This function crashes when invoked with invalid arguments on some platforms:
+MSVC 9.
+@item
When writing to a non-blocking pipe whose buffer is full, this function fails
with @code{errno} being set to @code{ENOSPC} instead of @code{EAGAIN} on some
platforms:
-mingw.
+mingw, MSVC 9.
@item
When writing to a non-blocking pipe on which no reader is currently waiting
an amount of bytes that exceeds the pipe buffer's size, then -- even if the
pipe's buffer is empty -- this function fails, instead of performing a partial
write into the pipe buffer, on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems fixed by Gnulib module @code{stdio}, together with module @code{sigpipe}:
When writing to a pipe with no readers, this function fails with error
@code{EINVAL}, instead of obeying the current @code{SIGPIPE} handler, on
some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.3, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems fixed by Gnulib:
@itemize
@item
-This header file is missing on some platforms: mingw, BeOS.
+This header file is missing on some platforms: mingw, MSVC 9, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@item
This header file is missing on some platforms:
NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1,
-Cygwin 1.7.7, mingw, Interix 3.5, BeOS.
+Cygwin 1.7.7, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.3, Minix 3.1.8, Cygwin, mingw, BeOS.
+MacOS X 10.3, Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
+@item
+This header file is missing on some platforms:
+MSVC 9.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@item
The macros @code{EOVERFLOW}, @code{ENOLINK}, @code{EMULTIHOP} are not defined
on some platforms:
-OpenBSD 4.0, OSF/1 5.1, mingw.
+OpenBSD 4.0, OSF/1 5.1, mingw, MSVC 9.
@item
The macro @code{ECANCELED} is not defined on some platforms:
-OpenBSD 4.0, Cygwin, mingw.
+OpenBSD 4.0, Cygwin, mingw, MSVC 9.
@item
The macros @code{ENOMSG}, @code{EIDRM}, @code{EPROTO}, @code{EBADMSG},
@code{ENOTSUP} are not defined on some platforms:
-OpenBSD 4.0, mingw.
+OpenBSD 4.0, mingw, MSVC 9.
@item
The macro @code{ESTALE} is not defined on some platforms:
-mingw, Interix 3.5.
+mingw, MSVC 9, Interix 3.5.
@item
The macro @code{EDQUOT} is not defined on some platforms:
-NonStop Kernel, mingw.
+NonStop Kernel, mingw, MSVC 9.
@item
The macros @code{ENETRESET}, @code{ECONNABORTED} are not defined on some
platforms:
-Minix 3.1.8, mingw.
+Minix 3.1.8, mingw, MSVC 9.
@item
The macros @code{EWOULDBLOCK}, @code{ETXTBSY}, @code{ELOOP}, @code{ENOTSOCK},
@code{EDESTADDRREQ}, @code{EMSGSIZE}, @code{EPROTOTYPE}, @code{ENOPROTOOPT},
@code{ECONNRESET}, @code{ENOBUFS}, @code{EISCONN}, @code{ENOTCONN},
@code{ETIMEDOUT}, @code{ECONNREFUSED}, @code{EHOSTUNREACH}, @code{EALREADY},
@code{EINPROGRESS} are not defined on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
Portability problems fixed by Gnulib:
@itemize
@item
+The type @code{pid_t} is not defined on some platforms:
+MSVC 9.
+
+@item
+The type @code{mode_t} is not defined on some platforms:
+MSVC 9.
+
+@item
@samp{O_CLOEXEC}, @samp{O_DIRECTORY}, @samp{O_DSYNC}, @samp{O_NOCTTY},
@samp{O_NOFOLLOW}, @samp{O_RSYNC}, @samp{O_SYNC},
and @samp{O_TTY_INIT} are not defined on some platforms. Gnulib defines
Gnulib defines these macros to @samp{O_RDONLY}, which is typically 0.
@item
+@samp{O_ACCMODE} is not defined on some platforms:
+MSVC 9.
+
+@item
The @samp{O_ACCMODE} mask mistakenly omits @samp{O_SEARCH} and
@samp{O_EXEC} on some platforms:
Cygwin.
@item
@samp{FD_CLOEXEC}, @samp{F_DUPFD}, and @samp{F_GETFD} are not defined
on some platforms:
-mingw.
+mingw, MSVC 9.
@item
@samp{F_DUPFD_CLOEXEC} is not defined on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.1, mingw, Interix 3.5,
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.1, mingw, MSVC 9, Interix 3.5,
BeOS.
@item
@samp{AT_SYMLINK_FOLLOW}, and @samp{AT_REMOVEDIR}
are not defined on many platforms:
glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX
-5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 8, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 8, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@item
@samp{AT_FDCWD} is defined with a value too large for an @code{int} on some
@samp{F_SETFD}, @samp{F_GETFL}, @samp{F_SETFL}, @samp{F_GETLK},
@samp{F_SETLK}, @samp{F_SETLOKW}, @samp{F_GETOWN}, and @samp{F_SETOWN}
are not defined on some platforms:
-mingw.
+mingw, MSVC 9.
@item
@samp{POSIX_FADV_DONTNEED}, @samp{POSIX_FADV_NOREUSE},
@item
This header file is missing on some platforms:
FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, IRIX 6.5, OSF/1 5.1,
-Cygwin 1.7.7, Interix 3.5, BeOS.
+Cygwin 1.7.7, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems fixed by Gnulib:
@itemize
@item
+The conversion from @code{int} to @code{long double} in incorrect on some
+platforms:
+glibc 2.7 on Linux/SPARC64.
+@item
The values of @code{LDBL_*} macros are incorrect on some platforms:
On OpenBSD 4.0, MirBSD 10, and BeOS, they are the same as the values of the
@code{DBL_*} macros, although @samp{long double} is a larger type than
@samp{double}.
On FreeBSD/x86 6.4, they represent the incorrect 53-bit precision assumptions
in the compiler, not the real 64-bit precision at runtime.
-On AIX 7.1 with GCC 4.2 and on IRIX 6.5, they don't reflect the
-``double double'' representation of @code{long double} correctly.
+On Linux/PowerPC with GCC 4.4, on AIX 7.1 with GCC 4.2, and on IRIX 6.5,
+they don't reflect the ``double double'' representation of @code{long double}
+correctly.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
+@item
+The macro @code{FLT_ROUNDS} is a constant expression and does not represent
+the current rounding mode on some platforms:
+glibc 2.11, HP-UX 11, mingw.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.3, FreeBSD 5.2.1, NetBSD 3.0, Minix 3.1.8, mingw, BeOS.
+MacOS X 10.3, FreeBSD 5.2.1, NetBSD 3.0, Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This header file is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, BeOS,
+FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, BeOS,
when GNU libiconv is not installed.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-OSF/1 4.0, Interix 3.5.
+OSF/1 4.0, MSVC 9, Interix 3.5.
@item
This header file is very incomplete on some platforms.
@item
@itemize
@item
This header file is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@item
The constant @code{CODESET} is not defined on some platforms:
glibc 2.0.6, OpenBSD 3.8.
@itemize
@item
This header file is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
Portability problems fixed by Gnulib:
@itemize
-@item The @code{HOST_NAME_MAX} macro is not defined on some platforms:
+@item
+The @code{HOST_NAME_MAX} macro is not defined on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
+@item
+The macros @code{LLONG_MIN}, @code{LLONG_MAX}, @code{ULLONG_MAX} are not
+defined on some platforms:
+AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1 with gcc.
+@item
+The macros @code{WORD_BIT}, @code{LONG_BIT} are not defined on some platforms:
+glibc 2.11 without @code{-D_GNU_SOURCE}, Cygwin, mingw, MSVC 9.
+@item
+The macro @code{SSIZE_MAX} is not defined on some platforms:
+MSVC 9.
@end itemize
For @code{PATH_MAX}, Gnulib provides a module @code{pathmax} with a header
@itemize
@item
The definition of @samp{LC_MESSAGES} is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
The @code{locale_t} type is not defined on some platforms:
Portability problems fixed by Gnulib:
@itemize
@item
+The conversion from @code{int} to @code{long double} in incorrect on some
+platforms:
+glibc 2.7 on Linux/SPARC64.
+
+@item
The macro @code{NAN} is not defined on some platforms:
OpenBSD 4.0, AIX 5.1, IRIX 6.5, OSF/1 5.1.
@item
@code{NAN} is not a compile time constant with some compilers:
OSF/1 with Compaq (ex-DEC) C 6.4.
+@item
+The macro or variable @code{math_errhandling} is not defined on some platforms:
+glibc 2.11, OpenBSD 4.9, NetBSD 5.1, UP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin 1.7.9, mingw, MSVC 9.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, BeOS.
+NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, Interix 3.5,
+MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, Interix 3.5,
BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-mingw, Interix 3.5, BeOS.
+mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@item
This header file is incomplete on some platforms:
@itemize
@item
This header file is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@item
This header file is not self-contained on some platforms (it requires
@code{<sys/types.h>} to be included first):
@itemize
@item
This header file is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@item
This header file is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
+@item
+This header file does not defined @code{nfds_t} on some platforms:
+IRIX 5.3.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This header file is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
+@item
+This header file does not define the type @code{pid_t} on some platforms:
+glibc 2.11, MacOS X 10.5.
@item
@code{struct sched_param} is not defined on some platforms:
Haiku.
@itemize
@item
This header file is missing on some platforms:
-Minix 3.1.8, mingw, BeOS.
+Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/basedefs/signal.h.html}
-Gnulib module: signal
+Gnulib module: signal-h
Portability problems fixed by Gnulib:
@itemize
platforms:
AIX.
@item
+@code{sigset_t} is missing on some platforms:
+MSVC 9.
+@item
@code{sigset_t} is only declared in <sys/types.h> on some platforms:
mingw.
@item
@code{struct sigaction} and @code{siginfo_t} are missing on some
platforms:
-mingw.
+mingw, MSVC 9.
@item
@code{struct sigaction} lacks the @code{sa_sigaction} member on some
platforms:
Irix 5.3, Interix 3.5.
@item
+The type @code{pid_t} is not defined on some platforms:
+MSVC 9.
+@item
The signal @code{SIGPIPE} is not defined on some platforms:
-mingw.
+mingw, MSVC 9.
@item
The macro @code{SA_NODEFER} is not defined on some platforms:
Interix 3.5.
The type @code{sighandler_t} (a GNU extension) is not defined on most non-glibc
platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
Many signals are not defined on some platforms:
-mingw.
+mingw, MSVC 9.
@item
The macros @code{SIGRTMIN} and @code{SIGRTMAX} expand to an expression of type
@code{long} instead of @code{int} on some platforms:
@item
This header file is missing on some platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
--- /dev/null
+@node stdalign.h
+@section @file{stdalign.h}
+
+POSIX specification:@* Not in POSIX yet, but we expect it will be.
+ISO C1X @url{http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf}
+sections 6.5.3.4, 6.7.5, 7.15.
+C++0X @url{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf}
+section 18.10.
+
+Gnulib module: stdalign
+
+Portability problems fixed by Gnulib:
+@itemize
+@item
+This header file is missing on most circa-2011 platforms.
+@item
+Clang 3.0's @code{<stdalign.h>} does not define @code{alignof}/@code{_Alignof}.
+@end itemize
+
+Portability problems not fixed by Gnulib:
+@itemize
+@item
+@code{_Alignas} and @code{alignas} are not always supported;
+on platforms lacking support, the
+macro @code{__alignas_is_defined} is not defined.
+Supported compilers include GCC, IBM C, Sun C 5.11 and later,
+and MSVC 7.0 and later.
+@item
+Some compilers do not support alignment via
+@code{alignas}/@code{_Alignas} of @code{auto} variables (i.e.,
+variables on the stack). They diagnose and ignore the alignment: Sun
+C 5.11.
+@item
+Some linkers do not support operands of @code{_Alignas}/@code{alignas}
+that are greater than 8: mingw.
+@item
+Some compilers require the operand of @code{_Alignas}/@code{alignas}
+to be a single integer constant, not an expression: MSVC 7.0 through
+at least 10.0.
+@item
+The Sun C 5.11 compiler sometimes mishandles the alignment of multiple
+external variables that are declared close together with
+@code{_Alignas}/@code{alignas}. This compiler bug causes the Gnulib
+module @code{stdalign-tests} to fail. The Sun Studio Developer Bug
+Report Review Team assigned the internal review ID 2125432 (dated
+2011-11-01) to this issue.
+@item
+@code{<stdalign.h>} must be #included before @samp{_Alignas} and
+@samp{_Alignof} can be used.
+@item
+You cannot assume that @code{_Alignas} and @code{_Alignof} are reserved words;
+they might be macros.
+@end itemize
@itemize
@item
This header file is missing on some platforms:
-OpenBSD 3.8, AIX 5.1, HP-UX 11.11, IRIX 6.5, OSF/1 5.1, Interix 3.5, BeOS.
+OpenBSD 3.8, AIX 5.1, HP-UX 11.11, IRIX 6.5, OSF/1 5.1, MSVC 9, Interix 3.5, BeOS.
@item
This header file is very incomplete on some platforms.
@item
glibc 2.8, eglibc 2.11.2 and others.
@item
The type @code{ssize_t} is missing on some platforms:
-glibc 2.8, MacOS X 10.5, Solaris 10, and others.
+glibc 2.8, MacOS X 10.5, Solaris 10, MSVC 9, and others.
@item
The type @code{va_list} is missing on some platforms:
glibc 2.8, OpenBSD 4.0, Solaris 11 2010-11, and others.
Portability problems not fixed by Gnulib:
@itemize
@item
+This header file is missing on some platforms:
+MSVC 9.
+@item
This header file defines symbols, such as @samp{index}, often used for
variables, making debugging harder.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, BeOS.
+MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.3, Minix 3.1.8, mingw, BeOS.
+MacOS X 10.3, Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
On some platforms, this header file requires that <sys/types.h> and
@itemize
@item
This header file is missing on some platforms:
-HP-UX 11.11, NonStop Kernel, mingw, BeOS.
+HP-UX 11.11, NonStop Kernel, mingw, MSVC 9, BeOS.
@item
This header file is not self-contained on some platforms: it requires
@code{<sys/types.h>} to be included first.
@itemize
@item
This header file is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
This header file is not self-contained on some platforms: it requires
@code{<sys/types.h>} to be included first.
Portability problems fixed by Gnulib:
@itemize
@item
-Some macros, such as @code{S_IFMT}, are missing on some platforms.
+The type @code{mode_t} is not defined on some platforms:
+MSVC 9.
+@item
+Some macros, such as @code{S_IFMT} or @code{S_IFIFO}, are missing on some
+platforms.
@item
The macros @code{S_ISBLK}, @code{S_ISCHR}, @code{S_ISDIR}, @code{S_ISFIFO},
@code{S_ISLNK}, @code{S_ISREG}, @code{S_ISSOCK} are broken on some platforms.
Some platforms define macros, such as @code{S_ISDOOR}, that are not defined
on other platforms.
@item
-The functions @code{lstat} and @code{mkdir} are not declared on mingw.
+The functions @code{lstat} and @code{mkdir} are not declared on some platforms:
+mingw, MSVC 9.
@item
The macros @code{UTIME_NOW} and @code{UTIME_OMIT} are missing on some
platforms.
Portability problems not fixed by Gnulib:
@itemize
+@item
+The macro @code{S_IFBLK} is missing on some platforms:
+MSVC 9.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.3, OpenBSD 3.8, mingw.
+MacOS X 10.3, OpenBSD 3.8, mingw, MSVC 9.
@end itemize
Portability problems fixed by Gnulib:
@itemize
@item
-This header file is missing on some platforms.
+This header file is missing on some platforms:
+MSVC 9.
@item
@samp{struct timeval} is not defined on some platforms.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html}
-Gnulib module: ---
+Gnulib module: sys_types
Portability problems fixed by Gnulib:
@itemize
+@item
+The type @code{pid_t} is not defined on some platforms:
+MSVC 9.
+@item
+The type @code{size_t} is not defined in this file on some platforms:
+MSVC 9.
+@item
+The type @code{ssize_t} is not defined on some platforms:
+MSVC 9.
+@item
+The type @code{mode_t} is not defined on some platforms:
+MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This header file is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
This header file is not self-contained (it requires @code{<sys/types.h>} to be
included first) on some platforms:
@itemize
@item
This header file is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@item
This header file is not self-contained on some platforms:
Minix 3.1.8.
@itemize
@item
This header file is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This header file is missing on some platforms:
-mingw, BeOS.
+mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-Cygwin, mingw, BeOS.
+Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
Portability problems not fixed by Gnulib:
@item
The types @code{struct termios}, @code{cc_t}, @code{speed_t}, @code{tcflag_t}
are not defined on some platforms:
-mingw.
+mingw, MSVC 9.
@end itemize
@item
This header file is missing on some platforms:
MacOS X 10.5, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@item
This header file is missing on some platforms:
MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11,
-IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS.
+IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-OpenBSD 3.8, Cygwin, mingw, BeOS.
+OpenBSD 3.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, BeOS.
+OpenBSD 3.8, Minix 3.1.8, Cygwin, mingw, MSVC 9, BeOS.
@end itemize
Portability problems fixed by Gnulib:
@itemize
@item
-This header file is missing on some platforms: msvc.
+This header file is missing on some platforms:
+MSVC 9.
@item
The SEEK_* macros are not defined in this file on some platforms:
mingw.
Portability problems not fixed by Gnulib:
@itemize
@item
-This header file is missing on some platforms. Use @code{<sys/utime.h>}
+This header file is missing on some platforms: MSVC 9. Use @code{<sys/utime.h>}
if @code{<utime.h>} is missing.
@end itemize
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.3, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, BeOS.
+MacOS X 10.3, FreeBSD 6.0, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 9, BeOS.
@end itemize
@item
The type @code{wint_t} and macro @code{WEOF} are missing on some platforms:
IRIX 5.3.
+@item
+The type @code{wint_t} is incorrect on some platforms:
+MSVC 9.
@item
Some platforms provide a @code{NULL} macro that cannot be used in arbitrary
The type @code{wint_t} and macro @code{WEOF} are missing on some platforms:
IRIX 5.3.
@item
+The type @code{wint_t} is incorrect on some platforms:
+MSVC 9.
+@item
The functions @code{isw*} are missing on some platforms:
FreeBSD 4.11.
@item
@itemize
@item
This header file is missing on some platforms:
-MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+MacOS X 10.3, OpenBSD 3.8, Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
@end itemize
@setfilename standards.info
@settitle GNU Coding Standards
@c This date is automagically updated when you save this file:
-@set lastupdate August 1, 2011
+@set lastupdate December 10, 2011
@c %**end of header
@dircategory GNU organization
were later adopted as part of the standard. If you want these
constructs to give an error message as ``required'' by the standard,
you must specify @samp{--pedantic}, which was implemented only so that
-we can say ``GCC is a 100% implementation of the standard,'' not
+we can say ``GCC is a 100% implementation of the standard'', not
because there is any reason to actually use it.
POSIX.2 specifies that @samp{df} and @samp{du} must output sizes by
POSIX is never a problem in practice, and it is very useful.
In particular, don't reject a new feature, or remove an old one,
-merely because a standard says it is ``forbidden'' or ``deprecated.''
+merely because a standard says it is ``forbidden'' or ``deprecated''.
@node Semantics
Utilities reading files should not drop NUL characters, or any other
nonprinting characters @emph{including those with codes above 0177}.
The only sensible exceptions would be utilities specifically intended
-for interface to certain types of terminals or printers
-that can't handle those characters.
-Whenever possible, try to make programs work properly with
-sequences of bytes that represent multibyte characters, using encodings
-such as UTF-8 and others.
+for interface to certain types of terminals or printers that can't
+handle those characters. Whenever possible, try to make programs work
+properly with sequences of bytes that represent multibyte characters;
+UTF-8 is the most important.
@cindex error messages
Check every system call for an error return, unless you know you wish
@noindent
Line numbers should start from 1 at the beginning of the file, and
-column numbers should start from 1 at the beginning of the line. (Both
-of these conventions are chosen for compatibility.) Calculate column
-numbers assuming that space and all ASCII printing characters have
-equal width, and assuming tab stops every 8 columns.
+column numbers should start from 1 at the beginning of the line.
+(Both of these conventions are chosen for compatibility.) Calculate
+column numbers assuming that space and all ASCII printing characters
+have equal width, and assuming tab stops every 8 columns. For
+non-ASCII characters, Unicode character widths should be used when in
+a UTF-8 locale; GNU libc and GNU gnulib provide suitable
+@code{wcwidth} functions.
The error message can also give both the starting and ending positions
of the erroneous text. There are several formats so that you can
the application domain. For example, if source code deals with the
French Revolutionary calendar, it is OK if its literal strings contain
accented characters in month names like ``Flor@'eal''. Also, it is OK
-to use non-ASCII characters to represent proper names of contributors in
-change logs (@pxref{Change Logs}).
+(but not required) to use non-ASCII characters to represent proper
+names of contributors in change logs (@pxref{Change Logs}).
-If you need to use non-ASCII characters, you should normally stick with
-one encoding, as one cannot in general mix encodings reliably.
+If you need to use non-ASCII characters, you should normally stick
+with one encoding, certainly within a single file. UTF-8 is likely to
+be the best choice.
@node Quote Characters
the @samp{`} character we use was standardized there as a grave
accent. Moreover, Latin1 is still not universally usable.
-Unicode contains the unambiguous quote characters required, and its
-common encoding UTF-8 is upward compatible with Latin1. However,
+Unicode contains the unambiguous quote characters required. However,
Unicode and UTF-8 are not universally well-supported, either.
This may change over the next few years, and then we will revisit
The reason this precaution is needed is that the GNU kernel (the HURD)
provides a user-extensible file system, in which there can be many
-different kinds of ``ordinary files.'' Many of them support
+different kinds of ``ordinary files''. Many of them support
@code{mmap}, but some do not. It is important to make programs handle
all these kinds of files.
+
@node Documentation
@chapter Documenting Programs
@cindex documentation
scope of what a software distribution needs to include.
Referring to a web site that describes or recommends a non-free
-program is promoting that program, so please do not make links (or
+program is promoting that program, so please do not make links to (or
mention by name) web sites that contain such material. This policy is
relevant particularly for the web pages for a GNU package.
q
}' < "$self_abspathname"
echo "#"
- echo "# This file is free software, distributed under the terms of the GNU"
- echo "# General Public License. As a special exception to the GNU General"
- echo "# Public License, this file may be distributed as part of a program"
- echo "# that contains a configuration script generated by Autoconf, under"
+ echo "# This file is free software; you can redistribute it and/or modify"
+ echo "# it under the terms of the GNU General Public License as published by"
+ echo "# the Free Software Foundation; either version 3 of the License, or"
+ echo "# (at your option) any later version."
+ echo "#"
+ echo "# This file is distributed in the hope that it will be useful,"
+ echo "# but WITHOUT ANY WARRANTY; without even the implied warranty of"
+ echo "# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the"
+ echo "# GNU General Public License for more details."
+ echo "#"
+ echo "# You should have received a copy of the GNU General Public License"
+ echo "# along with this file. If not, see <http://www.gnu.org/licenses/>."
+ echo "#"
+ echo "# As a special exception to the GNU General Public License,"
+ echo "# this file may be distributed as part of a program that"
+ echo "# contains a configuration script generated by Autoconf, under"
echo "# the same distribution terms as the rest of that program."
echo "#"
echo "# Generated by gnulib-tool."
;;
esac
done
- if $inc; then
+ if $inc && func_acceptable "$dep"; then
func_append inmodules " $dep"
if test "$cond_dependencies" = true; then
escaped_dep=`echo "$dep" | sed -e "$sed_escape_dependency"`
# - local_gnulib_dir from --local-dir
# - modcache true or false, from --cache-modules/--no-cache-modules
# - sed_replace_build_aux sed expression that replaces reference to build-aux
+# - sed_replace_include_guard_prefix
+# sed expression for resolving ${gl_include_guard_prefix}
# - module the module name
# - toplevel true or false. 'false' means a subordinate use of
# gnulib-tool.
func_get_autoconf_snippet "$module" \
| sed -e '/^$/d;' -e "s/^/$indentation/" \
-e "$sed_replace_build_aux" \
+ -e "$sed_replace_include_guard_prefix" \
| { if $disable_libtool; then
sed -e 's/\$gl_cond_libtool/false/g' \
-e 's/gl_libdeps/gltests_libdeps/g' \
# - local_gnulib_dir from --local-dir
# - modcache true or false, from --cache-modules/--no-cache-modules
# - sed_replace_build_aux sed expression that replaces reference to build-aux
+# - sed_replace_include_guard_prefix
+# sed expression for resolving ${gl_include_guard_prefix}
# - modules the list of modules.
# - verifier one of func_verify_module, func_verify_nontests_module,
# func_verify_tests_module. It selects the subset of
disable_libtool="$4"
disable_gettext="$5"
if test "$cond_dependencies" = true; then
+ for m in $modules; do echo $m; done | LC_ALL=C sort -u > "$tmp"/modules
# Emit the autoconf code for the unconditional modules.
for module in $1; do
eval $verifier
func_emit_autoconf_snippet " "
echo " $shellvar=true"
deps=`func_get_dependencies $module | sed -e "$sed_dependencies_without_conditions"`
+ # Intersect $deps with the modules list $1.
+ deps=`for m in $deps; do echo $m; done | LC_ALL=C sort -u | LC_ALL=C join - "$tmp"/modules`
for dep in $deps; do
if func_cond_module_p "$dep"; then
func_module_shellfunc_name "$dep"
func_cond_module_condition "$module" "$dep"
if test "$condition" != true; then
- echo ' if $condition; then'
+ echo " if $condition; then"
echo " $shellfunc"
echo ' fi'
else
:
else
deps=`func_get_dependencies $module | sed -e "$sed_dependencies_without_conditions"`
+ # Intersect $deps with the modules list $1.
+ deps=`for m in $deps; do echo $m; done | LC_ALL=C sort -u | LC_ALL=C join - "$tmp"/modules`
for dep in $deps; do
if func_cond_module_p "$dep"; then
func_module_shellfunc_name "$dep"
echo " - mention \"${val}\" in ${var} in ${dir}Makefile.am,"
fi
done
- echo " - invoke ${macro_prefix}_EARLY in $configure_ac, right after AC_PROG_CC,"
+ if grep '^ *AC_PROG_CC_STDC' "$configure_ac" > /dev/null; then
+ position_early_after=AC_PROG_CC_STDC
+ else
+ if grep '^ *AC_PROG_CC_C99' "$configure_ac" > /dev/null; then
+ position_early_after=AC_PROG_CC_C99
+ else
+ position_early_after=AC_PROG_CC
+ fi
+ fi
+ echo " - invoke ${macro_prefix}_EARLY in $configure_ac, right after $position_early_after,"
echo " - invoke ${macro_prefix}_INIT in $configure_ac."
}
;;
extract-dependencies )
+ if test -n "$avoidlist"; then
+ func_fatal_error "cannot combine --avoid and --extract-dependencies"
+ fi
for module
do
func_verify_module
int
rpl_accept (int fd, struct sockaddr *addr, socklen_t *addrlen)
{
- SOCKET fh = accept (FD_TO_SOCKET (fd), addr, addrlen);
- if (fh == INVALID_SOCKET)
+ SOCKET sock = FD_TO_SOCKET (fd);
+
+ if (sock == INVALID_SOCKET)
{
- set_winsock_errno ();
+ errno = EBADF;
return -1;
}
else
- return SOCKET_TO_FD (fh);
+ {
+ SOCKET fh = accept (sock, addr, addrlen);
+ if (fh == INVALID_SOCKET)
+ {
+ set_winsock_errno ();
+ return -1;
+ }
+ else
+ return SOCKET_TO_FD (fh);
+ }
}
#include <errno.h>
#include <fcntl.h>
#include "binary-io.h"
+#include "msvc-nothrow.h"
#ifndef SOCK_CLOEXEC
# define SOCK_CLOEXEC 0
# endif
/* Linux-specific */
-# ifndef HAVE_ACL_EXTENDED_FILE_NOFOLLOW
-# define HAVE_ACL_EXTENDED_FILE_NOFOLLOW false
-# define acl_extended_file_nofollow(name) (-1)
-# endif
-
-/* Linux-specific */
# ifndef HAVE_ACL_FROM_MODE
# define HAVE_ACL_FROM_MODE false
# define acl_from_mode(mode) (NULL)
/* Set to 1 if a file's mode is implicit by the ACL.
Set to 0 if a file's mode is stored independently from the ACL. */
-# if HAVE_ACL_COPY_EXT_NATIVE && HAVE_ACL_CREATE_ENTRY_NP /* MacOS X */
+# if (HAVE_ACL_COPY_EXT_NATIVE && HAVE_ACL_CREATE_ENTRY_NP) || defined __sgi /* MacOS X, IRIX */
# define MODE_INSIDE_ACL 0
# else
# define MODE_INSIDE_ACL 1
# define MODE_INSIDE_ACL 1
# endif
-# if !defined ACL_NO_TRIVIAL /* Solaris <= 10, Cygwin */
-
/* Return 1 if the given ACL is non-trivial.
Return 0 if it is trivial, i.e. equivalent to a simple stat() mode. */
extern int acl_nontrivial (int count, aclent_t *entries);
-# ifdef ACE_GETACL /* Solaris 10 */
+# ifdef ACE_GETACL /* Solaris 10 */
/* Test an ACL retrieved with ACE_GETACL.
Return 1 if the given ACL, consisting of COUNT entries, is non-trivial.
/* Definitions for when the built executable is executed on Solaris 10
(newer version) or Solaris 11. */
/* For a_type. */
-# define ACE_ACCESS_ALLOWED_ACE_TYPE 0 /* replaces ALLOW */
-# define ACE_ACCESS_DENIED_ACE_TYPE 1 /* replaces DENY */
+# define OLD_ALLOW 0
+# define OLD_DENY 1
+# define NEW_ACE_ACCESS_ALLOWED_ACE_TYPE 0 /* replaces ALLOW */
+# define NEW_ACE_ACCESS_DENIED_ACE_TYPE 1 /* replaces DENY */
/* For a_flags. */
-# define NEW_ACE_OWNER 0x1000
-# define NEW_ACE_GROUP 0x2000
-# define NEW_ACE_IDENTIFIER_GROUP 0x0040
-# define ACE_EVERYONE 0x4000
+# define OLD_ACE_OWNER 0x0100
+# define OLD_ACE_GROUP 0x0200
+# define OLD_ACE_OTHER 0x0400
+# define NEW_ACE_OWNER 0x1000
+# define NEW_ACE_GROUP 0x2000
+# define NEW_ACE_IDENTIFIER_GROUP 0x0040
+# define NEW_ACE_EVERYONE 0x4000
/* For a_access_mask. */
-# define NEW_ACE_READ_DATA 0x001 /* corresponds to 'r' */
-# define NEW_ACE_WRITE_DATA 0x002 /* corresponds to 'w' */
-# define NEW_ACE_EXECUTE 0x004 /* corresponds to 'x' */
-
-# endif
+# define NEW_ACE_READ_DATA 0x001 /* corresponds to 'r' */
+# define NEW_ACE_WRITE_DATA 0x002 /* corresponds to 'w' */
+# define NEW_ACE_APPEND_DATA 0x004
+# define NEW_ACE_READ_NAMED_ATTRS 0x008
+# define NEW_ACE_WRITE_NAMED_ATTRS 0x010
+# define NEW_ACE_EXECUTE 0x020
+# define NEW_ACE_DELETE_CHILD 0x040
+# define NEW_ACE_READ_ATTRIBUTES 0x080
+# define NEW_ACE_WRITE_ATTRIBUTES 0x100
+# define NEW_ACE_DELETE 0x10000
+# define NEW_ACE_READ_ACL 0x20000
+# define NEW_ACE_WRITE_ACL 0x40000
+# define NEW_ACE_WRITE_OWNER 0x80000
+# define NEW_ACE_SYNCHRONIZE 0x100000
# endif
--- /dev/null
+/* Inverse cosine function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+float
+acosf (float x)
+{
+ return (float) acos ((double) x);
+}
/* Specification. */
#include <math.h>
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+long double
+acosl (long double x)
+{
+ return acos (x);
+}
+
+#else
+
/*
Long double expansions contributed by
Stephen L. Moshier <moshier@na-net.ornl.gov>
return 2 * asinl (sqrtl ((1 - x) / 2));
}
+#endif
+
#if 0
int
main (void)
#include <stddef.h>
-/* Determine the alignment of a structure slot (field) of a given type,
+/* alignof_slot (TYPE)
+ Determine the alignment of a structure slot (field) of a given type,
at compile time. Note that the result depends on the ABI.
+ This is the same as alignof (TYPE) and _Alignof (TYPE), defined in
+ <stdalign.h> if __alignof_is_defined is 1.
Note: The result cannot be used as a value for an 'enum' constant,
due to bugs in HP-UX 10.20 cc and AIX 3.2.5 xlc. */
#if defined __cplusplus
# define alignof_slot(type) offsetof (struct { char __slot1; type __slot2; }, __slot2)
#endif
-/* Determine the good alignment of an object of the given type at compile time.
+/* alignof_type (TYPE)
+ Determine the good alignment of an object of the given type at compile time.
Note that this is not necessarily the same as alignof_slot(type).
For example, with GNU C on x86 platforms: alignof_type(double) = 8, but
- when -malign-double is not specified: alignof_slot(double) = 4,
# define alignof_type alignof_slot
#endif
-/* alignof is an alias for alignof_slot semantics, since that's what most
- callers need.
- Note: The result cannot be used as a value for an 'enum' constant,
- due to bugs in HP-UX 10.20 cc and AIX 3.2.5 xlc. */
-#define alignof alignof_slot
-
#endif /* _ALIGNOF_H */
to the same values in VALLIST). */
ptrdiff_t argmatch (char const *arg, char const *const *arglist,
- char const *vallist, size_t valsize);
+ char const *vallist, size_t valsize) _GL_ATTRIBUTE_PURE;
# define ARGMATCH(Arg, Arglist, Vallist) \
argmatch (Arg, Arglist, (char const *) (Vallist), sizeof *(Vallist))
char const *argmatch_to_argument (char const *value,
char const *const *arglist,
- char const *vallist, size_t valsize);
+ char const *vallist, size_t valsize)
+ _GL_ATTRIBUTE_PURE;
# define ARGMATCH_TO_ARGUMENT(Value, Arglist, Vallist) \
argmatch_to_argument (Value, Arglist, \
/* Fix up the short options pointers from HOL. */
for (e = entries, left = hol->num_entries; left > 0; e++, left--)
- e->short_options += (short_options - hol->short_options);
+ e->short_options =
+ short_options + (e->short_options - hol->short_options);
/* Now add the short options from MORE, fixing up its entries
too. */
#endif
#include <alloca.h>
+#include <stdalign.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include "argp.h"
#include "argp-namefrob.h"
-#define alignof(type) offsetof (struct { char c; type x; }, x)
#define alignto(n, d) ((((n) + (d) - 1) / (d)) * (d))
/* Getopt return values. */
char *argv_iter (struct argv_iterator *, enum argv_iter_err *)
_GL_ARG_NONNULL ((1, 2));
size_t argv_iter_n_args (struct argv_iterator const *)
- _GL_ARG_NONNULL ((1));
+ _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1));
void argv_iter_free (struct argv_iterator *)
_GL_ARG_NONNULL ((1));
#if @GNULIB_INET_NTOP@
-# if !@HAVE_DECL_INET_NTOP@
/* Converts an internet address from internal format to a printable,
presentable format.
AF is an internet address family, such as AF_INET or AF_INET6.
For more details, see the POSIX:2001 specification
<http://www.opengroup.org/susv3xsh/inet_ntop.html>. */
+# if @REPLACE_INET_NTOP@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef inet_ntop
+# define inet_ntop rpl_inet_ntop
+# endif
+_GL_FUNCDECL_RPL (inet_ntop, const char *,
+ (int af, const void *restrict src,
+ char *restrict dst, socklen_t cnt)
+ _GL_ARG_NONNULL ((2, 3)));
+_GL_CXXALIAS_RPL (inet_ntop, const char *,
+ (int af, const void *restrict src,
+ char *restrict dst, socklen_t cnt));
+# else
+# if !@HAVE_DECL_INET_NTOP@
_GL_FUNCDECL_SYS (inet_ntop, const char *,
(int af, const void *restrict src,
char *restrict dst, socklen_t cnt)
_GL_ARG_NONNULL ((2, 3)));
-# endif
+# endif
/* Need to cast, because on NonStop Kernel, the fourth parameter is
size_t cnt. */
_GL_CXXALIAS_SYS_CAST (inet_ntop, const char *,
(int af, const void *restrict src,
char *restrict dst, socklen_t cnt));
+# endif
_GL_CXXALIASWARN (inet_ntop);
#elif defined GNULIB_POSIXCHECK
# undef inet_ntop
#endif
#if @GNULIB_INET_PTON@
-# if !@HAVE_DECL_INET_PTON@
+# if @REPLACE_INET_PTON@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef inet_pton
+# define inet_pton rpl_inet_pton
+# endif
+_GL_FUNCDECL_RPL (inet_pton, int,
+ (int af, const char *restrict src, void *restrict dst)
+ _GL_ARG_NONNULL ((2, 3)));
+_GL_CXXALIAS_RPL (inet_pton, int,
+ (int af, const char *restrict src, void *restrict dst));
+# else
+# if !@HAVE_DECL_INET_PTON@
_GL_FUNCDECL_SYS (inet_pton, int,
(int af, const char *restrict src, void *restrict dst)
_GL_ARG_NONNULL ((2, 3)));
-# endif
+# endif
_GL_CXXALIAS_SYS (inet_pton, int,
(int af, const char *restrict src, void *restrict dst));
+# endif
_GL_CXXALIASWARN (inet_pton);
#elif defined GNULIB_POSIXCHECK
# undef inet_pton
--- /dev/null
+/* Inverse sine function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+float
+asinf (float x)
+{
+ return (float) asin ((double) x);
+}
/* Specification. */
#include <math.h>
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+long double
+asinl (long double x)
+{
+ return asin (x);
+}
+
+#else
+
/*
Long double expansions contributed by
Stephen L. Moshier <moshier@na-net.ornl.gov>
return t * sign;
}
+#endif
+
#if 0
int
main (void)
-/* Define an at-style functions like fstatat, unlinkat, fchownat, etc.
+/* Define at-style functions like fstatat, unlinkat, fchownat, etc.
Copyright (C) 2006, 2009-2011 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
-/* Define an at-style functions like linkat or renameat.
+/* Define 2-FD at-style functions like linkat or renameat.
Copyright (C) 2006, 2009-2011 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
--- /dev/null
+/* Angle of a point in the plane.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+float
+atan2f (float y, float x)
+{
+ return (float) atan2 ((double) y, (double) x);
+}
--- /dev/null
+/* Inverse tangent function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+float
+atanf (float x)
+{
+ return (float) atan ((double) x);
+}
/* Specification. */
#include <math.h>
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+long double
+atanl (long double x)
+{
+ return atan (x);
+}
+
+#else
+
/* s_atanl.c
*
* Inverse circular tangent for 128-bit long double precision
else
return u;
}
+
+#endif
--- /dev/null
+/* base32.c -- Encode binary data using printable characters.
+ Copyright (C) 1999-2001, 2004-2006, 2009-2011 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Adapted from Simon Josefsson's base64 code by Gijs van Tulder.
+ *
+ * See also RFC 4648 <http://www.ietf.org/rfc/rfc4648.txt>.
+ *
+ * Be careful with error checking. Here is how you would typically
+ * use these functions:
+ *
+ * bool ok = base32_decode_alloc (in, inlen, &out, &outlen);
+ * if (!ok)
+ * FAIL: input was not valid base32
+ * if (out == NULL)
+ * FAIL: memory allocation error
+ * OK: data in OUT/OUTLEN
+ *
+ * size_t outlen = base32_encode_alloc (in, inlen, &out);
+ * if (out == NULL && outlen == 0 && inlen != 0)
+ * FAIL: input too long
+ * if (out == NULL)
+ * FAIL: memory allocation error
+ * OK: data in OUT/OUTLEN.
+ *
+ */
+
+#include <config.h>
+
+/* Get prototype. */
+#include "base32.h"
+
+/* Get malloc. */
+#include <stdlib.h>
+
+/* Get UCHAR_MAX. */
+#include <limits.h>
+
+#include <string.h>
+
+/* C89 compliant way to cast 'char' to 'unsigned char'. */
+static inline unsigned char
+to_uchar (char ch)
+{
+ return ch;
+}
+
+/* Base32 encode IN array of size INLEN into OUT array of size OUTLEN.
+ If OUTLEN is less than BASE32_LENGTH(INLEN), write as many bytes as
+ possible. If OUTLEN is larger than BASE32_LENGTH(INLEN), also zero
+ terminate the output buffer. */
+void
+base32_encode (const char *restrict in, size_t inlen,
+ char *restrict out, size_t outlen)
+{
+ static const char b32str[32] =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
+
+ while (inlen && outlen)
+ {
+ *out++ = b32str[(to_uchar (in[0]) >> 3) & 0x1f];
+ if (!--outlen)
+ break;
+ *out++ = b32str[((to_uchar (in[0]) << 2)
+ + (--inlen ? to_uchar (in[1]) >> 6 : 0))
+ & 0x1f];
+ if (!--outlen)
+ break;
+ *out++ =
+ (inlen
+ ? b32str[(to_uchar (in[1]) >> 1) & 0x1f]
+ : '=');
+ if (!--outlen)
+ break;
+ *out++ =
+ (inlen
+ ? b32str[((to_uchar (in[1]) << 4)
+ + (--inlen ? to_uchar (in[2]) >> 4 : 0))
+ & 0x1f]
+ : '=');
+ if (!--outlen)
+ break;
+ *out++ =
+ (inlen
+ ? b32str[((to_uchar (in[2]) << 1)
+ + (--inlen ? to_uchar (in[3]) >> 7 : 0))
+ & 0x1f]
+ : '=');
+ if (!--outlen)
+ break;
+ *out++ =
+ (inlen
+ ? b32str[(to_uchar (in[3]) >> 2) & 0x1f]
+ : '=');
+ if (!--outlen)
+ break;
+ *out++ =
+ (inlen
+ ? b32str[((to_uchar (in[3]) << 3)
+ + (--inlen ? to_uchar (in[4]) >> 5 : 0))
+ & 0x1f]
+ : '=');
+ if (!--outlen)
+ break;
+ *out++ = inlen ? b32str[to_uchar (in[4]) & 0x1f] : '=';
+ if (!--outlen)
+ break;
+ if (inlen)
+ inlen--;
+ if (inlen)
+ in += 5;
+ }
+
+ if (outlen)
+ *out = '\0';
+}
+
+/* Allocate a buffer and store zero terminated base32 encoded data
+ from array IN of size INLEN, returning BASE32_LENGTH(INLEN), i.e.,
+ the length of the encoded data, excluding the terminating zero. On
+ return, the OUT variable will hold a pointer to newly allocated
+ memory that must be deallocated by the caller. If output string
+ length would overflow, 0 is returned and OUT is set to NULL. If
+ memory allocation failed, OUT is set to NULL, and the return value
+ indicates length of the requested memory block, i.e.,
+ BASE32_LENGTH(inlen) + 1. */
+size_t
+base32_encode_alloc (const char *in, size_t inlen, char **out)
+{
+ size_t outlen = 1 + BASE32_LENGTH (inlen);
+
+ /* Check for overflow in outlen computation.
+ *
+ * If there is no overflow, outlen >= inlen.
+ *
+ * TODO Is this a sufficient check? (See the notes in base64.c.)
+ */
+ if (inlen > outlen)
+ {
+ *out = NULL;
+ return 0;
+ }
+
+ *out = malloc (outlen);
+ if (!*out)
+ return outlen;
+
+ base32_encode (in, inlen, *out, outlen);
+
+ return outlen - 1;
+}
+
+/* With this approach this file works independent of the charset used
+ (think EBCDIC). However, it does assume that the characters in the
+ Base32 alphabet (A-Z2-7) are encoded in 0..255. POSIX
+ 1003.1-2001 require that char and unsigned char are 8-bit
+ quantities, though, taking care of that problem. But this may be a
+ potential problem on non-POSIX C99 platforms.
+
+ IBM C V6 for AIX mishandles "#define B32(x) ...'x'...", so use "_"
+ as the formal parameter rather than "x". */
+#define B32(_) \
+ ((_) == 'A' ? 0 \
+ : (_) == 'B' ? 1 \
+ : (_) == 'C' ? 2 \
+ : (_) == 'D' ? 3 \
+ : (_) == 'E' ? 4 \
+ : (_) == 'F' ? 5 \
+ : (_) == 'G' ? 6 \
+ : (_) == 'H' ? 7 \
+ : (_) == 'I' ? 8 \
+ : (_) == 'J' ? 9 \
+ : (_) == 'K' ? 10 \
+ : (_) == 'L' ? 11 \
+ : (_) == 'M' ? 12 \
+ : (_) == 'N' ? 13 \
+ : (_) == 'O' ? 14 \
+ : (_) == 'P' ? 15 \
+ : (_) == 'Q' ? 16 \
+ : (_) == 'R' ? 17 \
+ : (_) == 'S' ? 18 \
+ : (_) == 'T' ? 19 \
+ : (_) == 'U' ? 20 \
+ : (_) == 'V' ? 21 \
+ : (_) == 'W' ? 22 \
+ : (_) == 'X' ? 23 \
+ : (_) == 'Y' ? 24 \
+ : (_) == 'Z' ? 25 \
+ : (_) == '2' ? 26 \
+ : (_) == '3' ? 27 \
+ : (_) == '4' ? 28 \
+ : (_) == '5' ? 29 \
+ : (_) == '6' ? 30 \
+ : (_) == '7' ? 31 \
+ : -1)
+
+static const signed char b32[0x100] = {
+ B32 (0), B32 (1), B32 (2), B32 (3),
+ B32 (4), B32 (5), B32 (6), B32 (7),
+ B32 (8), B32 (9), B32 (10), B32 (11),
+ B32 (12), B32 (13), B32 (14), B32 (15),
+ B32 (16), B32 (17), B32 (18), B32 (19),
+ B32 (20), B32 (21), B32 (22), B32 (23),
+ B32 (24), B32 (25), B32 (26), B32 (27),
+ B32 (28), B32 (29), B32 (30), B32 (31),
+ B32 (32), B32 (33), B32 (34), B32 (35),
+ B32 (36), B32 (37), B32 (38), B32 (39),
+ B32 (40), B32 (41), B32 (42), B32 (43),
+ B32 (44), B32 (45), B32 (46), B32 (47),
+ B32 (48), B32 (49), B32 (50), B32 (51),
+ B32 (52), B32 (53), B32 (54), B32 (55),
+ B32 (56), B32 (57), B32 (58), B32 (59),
+ B32 (60), B32 (61), B32 (62), B32 (63),
+ B32 (32), B32 (65), B32 (66), B32 (67),
+ B32 (68), B32 (69), B32 (70), B32 (71),
+ B32 (72), B32 (73), B32 (74), B32 (75),
+ B32 (76), B32 (77), B32 (78), B32 (79),
+ B32 (80), B32 (81), B32 (82), B32 (83),
+ B32 (84), B32 (85), B32 (86), B32 (87),
+ B32 (88), B32 (89), B32 (90), B32 (91),
+ B32 (92), B32 (93), B32 (94), B32 (95),
+ B32 (96), B32 (97), B32 (98), B32 (99),
+ B32 (100), B32 (101), B32 (102), B32 (103),
+ B32 (104), B32 (105), B32 (106), B32 (107),
+ B32 (108), B32 (109), B32 (110), B32 (111),
+ B32 (112), B32 (113), B32 (114), B32 (115),
+ B32 (116), B32 (117), B32 (118), B32 (119),
+ B32 (120), B32 (121), B32 (122), B32 (123),
+ B32 (124), B32 (125), B32 (126), B32 (127),
+ B32 (128), B32 (129), B32 (130), B32 (131),
+ B32 (132), B32 (133), B32 (134), B32 (135),
+ B32 (136), B32 (137), B32 (138), B32 (139),
+ B32 (140), B32 (141), B32 (142), B32 (143),
+ B32 (144), B32 (145), B32 (146), B32 (147),
+ B32 (148), B32 (149), B32 (150), B32 (151),
+ B32 (152), B32 (153), B32 (154), B32 (155),
+ B32 (156), B32 (157), B32 (158), B32 (159),
+ B32 (160), B32 (161), B32 (162), B32 (163),
+ B32 (132), B32 (165), B32 (166), B32 (167),
+ B32 (168), B32 (169), B32 (170), B32 (171),
+ B32 (172), B32 (173), B32 (174), B32 (175),
+ B32 (176), B32 (177), B32 (178), B32 (179),
+ B32 (180), B32 (181), B32 (182), B32 (183),
+ B32 (184), B32 (185), B32 (186), B32 (187),
+ B32 (188), B32 (189), B32 (190), B32 (191),
+ B32 (192), B32 (193), B32 (194), B32 (195),
+ B32 (196), B32 (197), B32 (198), B32 (199),
+ B32 (200), B32 (201), B32 (202), B32 (203),
+ B32 (204), B32 (205), B32 (206), B32 (207),
+ B32 (208), B32 (209), B32 (210), B32 (211),
+ B32 (212), B32 (213), B32 (214), B32 (215),
+ B32 (216), B32 (217), B32 (218), B32 (219),
+ B32 (220), B32 (221), B32 (222), B32 (223),
+ B32 (224), B32 (225), B32 (226), B32 (227),
+ B32 (228), B32 (229), B32 (230), B32 (231),
+ B32 (232), B32 (233), B32 (234), B32 (235),
+ B32 (236), B32 (237), B32 (238), B32 (239),
+ B32 (240), B32 (241), B32 (242), B32 (243),
+ B32 (244), B32 (245), B32 (246), B32 (247),
+ B32 (248), B32 (249), B32 (250), B32 (251),
+ B32 (252), B32 (253), B32 (254), B32 (255)
+};
+
+#if UCHAR_MAX == 255
+# define uchar_in_range(c) true
+#else
+# define uchar_in_range(c) ((c) <= 255)
+#endif
+
+/* Return true if CH is a character from the Base32 alphabet, and
+ false otherwise. Note that '=' is padding and not considered to be
+ part of the alphabet. */
+bool
+isbase32 (char ch)
+{
+ return uchar_in_range (to_uchar (ch)) && 0 <= b32[to_uchar (ch)];
+}
+
+/* Initialize decode-context buffer, CTX. */
+void
+base32_decode_ctx_init (struct base32_decode_context *ctx)
+{
+ ctx->i = 0;
+}
+
+/* If CTX->i is 0 or 8, there are eight or more bytes in [*IN..IN_END), and
+ none of those eight is a newline, then return *IN. Otherwise, copy up to
+ 4 - CTX->i non-newline bytes from that range into CTX->buf, starting at
+ index CTX->i and setting CTX->i to reflect the number of bytes copied,
+ and return CTX->buf. In either case, advance *IN to point to the byte
+ after the last one processed, and set *N_NON_NEWLINE to the number of
+ verified non-newline bytes accessible through the returned pointer. */
+static inline char *
+get_8 (struct base32_decode_context *ctx,
+ char const *restrict *in, char const *restrict in_end,
+ size_t *n_non_newline)
+{
+ if (ctx->i == 8)
+ ctx->i = 0;
+
+ if (ctx->i == 0)
+ {
+ char const *t = *in;
+ if (8 <= in_end - *in && memchr (t, '\n', 8) == NULL)
+ {
+ /* This is the common case: no newline. */
+ *in += 8;
+ *n_non_newline = 8;
+ return (char *) t;
+ }
+ }
+
+ {
+ /* Copy non-newline bytes into BUF. */
+ char const *p = *in;
+ while (p < in_end)
+ {
+ char c = *p++;
+ if (c != '\n')
+ {
+ ctx->buf[ctx->i++] = c;
+ if (ctx->i == 8)
+ break;
+ }
+ }
+
+ *in = p;
+ *n_non_newline = ctx->i;
+ return ctx->buf;
+ }
+}
+
+#define return_false \
+ do \
+ { \
+ *outp = out; \
+ return false; \
+ } \
+ while (false)
+
+/* Decode eight bytes of base32-encoded data, IN, of length INLEN
+ into the output buffer, *OUT, of size *OUTLEN bytes. Return true if
+ decoding is successful, false otherwise. If *OUTLEN is too small,
+ as many bytes as possible are written to *OUT. On return, advance
+ *OUT to point to the byte after the last one written, and decrement
+ *OUTLEN to reflect the number of bytes remaining in *OUT. */
+static inline bool
+decode_8 (char const *restrict in, size_t inlen,
+ char *restrict *outp, size_t *outleft)
+{
+ char *out = *outp;
+ if (inlen < 8)
+ return false;
+
+ if (!isbase32 (in[0]) || !isbase32 (in[1]) )
+ return false;
+
+ if (*outleft)
+ {
+ *out++ = ((b32[to_uchar (in[0])] << 3)
+ | (b32[to_uchar (in[1])] >> 2));
+ --*outleft;
+ }
+
+ if (in[2] == '=')
+ {
+ if (in[3] != '=' || in[4] != '=' || in[5] != '='
+ || in[6] != '=' || in[7] != '=')
+ return_false;
+ }
+ else
+ {
+ if (!isbase32 (in[2]) || !isbase32 (in[3]))
+ return_false;
+
+ if (*outleft)
+ {
+ *out++ = ((b32[to_uchar (in[1])] << 6)
+ | (b32[to_uchar (in[2])] << 1)
+ | (b32[to_uchar (in[3])] >> 4));
+ --*outleft;
+ }
+
+ if (in[4] == '=')
+ {
+ if (in[5] != '=' || in[6] != '=' || in[7] != '=')
+ return_false;
+ }
+ else
+ {
+ if (!isbase32 (in[4]))
+ return_false;
+
+ if (*outleft)
+ {
+ *out++ = ((b32[to_uchar (in[3])] << 4)
+ | (b32[to_uchar (in[4])] >> 1));
+ --*outleft;
+ }
+
+ if (in[5] == '=')
+ {
+ if (in[6] != '=' || in[7] != '=')
+ return_false;
+ }
+ else
+ {
+ if (!isbase32 (in[5]) || !isbase32 (in[6]))
+ return_false;
+
+ if (*outleft)
+ {
+ *out++ = ((b32[to_uchar (in[4])] << 7)
+ | (b32[to_uchar (in[5])] << 2)
+ | (b32[to_uchar (in[6])] >> 3));
+ --*outleft;
+ }
+
+ if (in[7] != '=')
+ {
+ if (!isbase32 (in[7]))
+ return_false;
+
+ if (*outleft)
+ {
+ *out++ = ((b32[to_uchar (in[6])] << 5)
+ | (b32[to_uchar (in[7])]));
+ --*outleft;
+ }
+ }
+ }
+ }
+ }
+
+ *outp = out;
+ return true;
+}
+
+/* Decode base32-encoded input array IN of length INLEN to output array
+ OUT that can hold *OUTLEN bytes. The input data may be interspersed
+ with newlines. Return true if decoding was successful, i.e. if the
+ input was valid base32 data, false otherwise. If *OUTLEN is too
+ small, as many bytes as possible will be written to OUT. On return,
+ *OUTLEN holds the length of decoded bytes in OUT. Note that as soon
+ as any non-alphabet, non-newline character is encountered, decoding
+ is stopped and false is returned. If INLEN is zero, then process
+ only whatever data is stored in CTX.
+
+ Initially, CTX must have been initialized via base32_decode_ctx_init.
+ Subsequent calls to this function must reuse whatever state is recorded
+ in that buffer. It is necessary for when a octuple of base32 input
+ bytes spans two input buffers.
+
+ If CTX is NULL then newlines are treated as garbage and the input
+ buffer is processed as a unit. */
+
+bool
+base32_decode_ctx (struct base32_decode_context *ctx,
+ const char *restrict in, size_t inlen,
+ char *restrict out, size_t *outlen)
+{
+ size_t outleft = *outlen;
+ bool ignore_newlines = ctx != NULL;
+ bool flush_ctx = false;
+ unsigned int ctx_i = 0;
+
+ if (ignore_newlines)
+ {
+ ctx_i = ctx->i;
+ flush_ctx = inlen == 0;
+ }
+
+
+ while (true)
+ {
+ size_t outleft_save = outleft;
+ if (ctx_i == 0 && !flush_ctx)
+ {
+ while (true)
+ {
+ /* Save a copy of outleft, in case we need to re-parse this
+ block of four bytes. */
+ outleft_save = outleft;
+ if (!decode_8 (in, inlen, &out, &outleft))
+ break;
+
+ in += 8;
+ inlen -= 8;
+ }
+ }
+
+ if (inlen == 0 && !flush_ctx)
+ break;
+
+ /* Handle the common case of 72-byte wrapped lines.
+ This also handles any other multiple-of-8-byte wrapping. */
+ if (inlen && *in == '\n' && ignore_newlines)
+ {
+ ++in;
+ --inlen;
+ continue;
+ }
+
+ /* Restore OUT and OUTLEFT. */
+ out -= outleft_save - outleft;
+ outleft = outleft_save;
+
+ {
+ char const *in_end = in + inlen;
+ char const *non_nl;
+
+ if (ignore_newlines)
+ non_nl = get_8 (ctx, &in, in_end, &inlen);
+ else
+ non_nl = in; /* Might have nl in this case. */
+
+ /* If the input is empty or consists solely of newlines (0 non-newlines),
+ then we're done. Likewise if there are fewer than 8 bytes when not
+ flushing context and not treating newlines as garbage. */
+ if (inlen == 0 || (inlen < 8 && !flush_ctx && ignore_newlines))
+ {
+ inlen = 0;
+ break;
+ }
+ if (!decode_8 (non_nl, inlen, &out, &outleft))
+ break;
+
+ inlen = in_end - in;
+ }
+ }
+
+ *outlen -= outleft;
+
+ return inlen == 0;
+}
+
+/* Allocate an output buffer in *OUT, and decode the base32 encoded
+ data stored in IN of size INLEN to the *OUT buffer. On return, the
+ size of the decoded data is stored in *OUTLEN. OUTLEN may be NULL,
+ if the caller is not interested in the decoded length. *OUT may be
+ NULL to indicate an out of memory error, in which case *OUTLEN
+ contains the size of the memory block needed. The function returns
+ true on successful decoding and memory allocation errors. (Use the
+ *OUT and *OUTLEN parameters to differentiate between successful
+ decoding and memory error.) The function returns false if the
+ input was invalid, in which case *OUT is NULL and *OUTLEN is
+ undefined. */
+bool
+base32_decode_alloc_ctx (struct base32_decode_context *ctx,
+ const char *in, size_t inlen, char **out,
+ size_t *outlen)
+{
+ /* This may allocate a few bytes too many, depending on input,
+ but it's not worth the extra CPU time to compute the exact size.
+ The exact size is 5 * inlen / 8, minus one or more bytes if the
+ input is padded with one or more "=".
+ Dividing before multiplying avoids the possibility of overflow. */
+ size_t needlen = 5 * (inlen / 8) + 5;
+
+ *out = malloc (needlen);
+ if (!*out)
+ return true;
+
+ if (!base32_decode_ctx (ctx, in, inlen, *out, &needlen))
+ {
+ free (*out);
+ *out = NULL;
+ return false;
+ }
+
+ if (outlen)
+ *outlen = needlen;
+
+ return true;
+}
--- /dev/null
+/* base32.h -- Encode binary data using printable characters.
+ Copyright (C) 2004-2006, 2009-2011 Free Software Foundation, Inc.
+ Adapted from Simon Josefsson's base64 code by Gijs van Tulder.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef BASE32_H
+# define BASE32_H
+
+/* Get size_t. */
+# include <stddef.h>
+
+/* Get bool. */
+# include <stdbool.h>
+
+/* This uses that the expression (n+(k-1))/k means the smallest
+ integer >= n/k, i.e., the ceiling of n/k. */
+# define BASE32_LENGTH(inlen) ((((inlen) + 4) / 5) * 8)
+
+struct base32_decode_context
+{
+ unsigned int i;
+ char buf[8];
+};
+
+extern bool isbase32 (char ch);
+
+extern void base32_encode (const char *restrict in, size_t inlen,
+ char *restrict out, size_t outlen);
+
+extern size_t base32_encode_alloc (const char *in, size_t inlen, char **out);
+
+extern void base32_decode_ctx_init (struct base32_decode_context *ctx);
+
+extern bool base32_decode_ctx (struct base32_decode_context *ctx,
+ const char *restrict in, size_t inlen,
+ char *restrict out, size_t *outlen);
+
+extern bool base32_decode_alloc_ctx (struct base32_decode_context *ctx,
+ const char *in, size_t inlen,
+ char **out, size_t *outlen);
+
+#define base32_decode(in, inlen, out, outlen) \
+ base32_decode_ctx (NULL, in, inlen, out, outlen)
+
+#define base32_decode_alloc(in, inlen, out, outlen) \
+ base32_decode_alloc_ctx (NULL, in, inlen, out, outlen)
+
+#endif /* BASE32_H */
char buf[4];
};
-extern bool isbase64 (char ch);
+extern bool isbase64 (char ch) _GL_ATTRIBUTE_CONST;
extern void base64_encode (const char *restrict in, size_t inlen,
char *restrict out, size_t outlen);
In the public domain.
By David MacKenzie <djm@gnu.ai.mit.edu>. */
+#include <config.h>
+
#include <stddef.h>
void
rpl_bind (int fd, const struct sockaddr *sockaddr, socklen_t len)
{
SOCKET sock = FD_TO_SOCKET (fd);
- int r = bind (sock, sockaddr, len);
- if (r < 0)
- set_winsock_errno ();
- return r;
+ if (sock == INVALID_SOCKET)
+ {
+ errno = EBADF;
+ return -1;
+ }
+ else
+ {
+ int r = bind (sock, sockaddr, len);
+ if (r < 0)
+ set_winsock_errno ();
+
+ return r;
+ }
}
if (c_isalpha (*s)) ...
*/
-extern bool c_isascii (int c); /* not locale dependent */
-
-extern bool c_isalnum (int c);
-extern bool c_isalpha (int c);
-extern bool c_isblank (int c);
-extern bool c_iscntrl (int c);
-extern bool c_isdigit (int c);
-extern bool c_islower (int c);
-extern bool c_isgraph (int c);
-extern bool c_isprint (int c);
-extern bool c_ispunct (int c);
-extern bool c_isspace (int c);
-extern bool c_isupper (int c);
-extern bool c_isxdigit (int c);
-
-extern int c_tolower (int c);
-extern int c_toupper (int c);
+extern bool c_isascii (int c) _GL_ATTRIBUTE_CONST; /* not locale dependent */
+
+extern bool c_isalnum (int c) _GL_ATTRIBUTE_CONST;
+extern bool c_isalpha (int c) _GL_ATTRIBUTE_CONST;
+extern bool c_isblank (int c) _GL_ATTRIBUTE_CONST;
+extern bool c_iscntrl (int c) _GL_ATTRIBUTE_CONST;
+extern bool c_isdigit (int c) _GL_ATTRIBUTE_CONST;
+extern bool c_islower (int c) _GL_ATTRIBUTE_CONST;
+extern bool c_isgraph (int c) _GL_ATTRIBUTE_CONST;
+extern bool c_isprint (int c) _GL_ATTRIBUTE_CONST;
+extern bool c_ispunct (int c) _GL_ATTRIBUTE_CONST;
+extern bool c_isspace (int c) _GL_ATTRIBUTE_CONST;
+extern bool c_isupper (int c) _GL_ATTRIBUTE_CONST;
+extern bool c_isxdigit (int c) _GL_ATTRIBUTE_CONST;
+
+extern int c_tolower (int c) _GL_ATTRIBUTE_CONST;
+extern int c_toupper (int c) _GL_ATTRIBUTE_CONST;
#if defined __GNUC__ && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ && !defined NO_C_CTYPE_MACROS
/* Compare strings S1 and S2, ignoring case, returning less than, equal to or
greater than zero if S1 is lexicographically less than, equal to or greater
than S2. */
-extern int c_strcasecmp (const char *s1, const char *s2);
+extern int c_strcasecmp (const char *s1, const char *s2) _GL_ATTRIBUTE_PURE;
/* Compare no more than N characters of strings S1 and S2, ignoring case,
returning less than, equal to or greater than zero if S1 is
lexicographically less than, equal to or greater than S2. */
-extern int c_strncasecmp (const char *s1, const char *s2, size_t n);
+extern int c_strncasecmp (const char *s1, const char *s2, size_t n)
+ _GL_ATTRIBUTE_PURE;
#ifdef __cplusplus
/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
-#include <config.h>
+#if ! defined USE_LONG_DOUBLE
+# include <config.h>
+#endif
/* Specification. */
#include <math.h>
/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
-#define USE_LONG_DOUBLE
-#include "ceil.c"
+#include <config.h>
+
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+/* Specification. */
+# include <math.h>
+
+long double
+ceill (long double x)
+{
+ return ceil (x);
+}
+
+#else
+
+# define USE_LONG_DOUBLE
+# include "ceil.c"
+
+#endif
}
/* Return a pointer to the first non-slash in S. */
-static inline char *
+static inline char * _GL_ATTRIBUTE_PURE
find_non_slash (char const *s)
{
size_t n_slash = strspn (s, "/");
/* Specification. */
#include <unistd.h>
+#include <errno.h>
+
#include "fd-hook.h"
+#include "msvc-inval.h"
+
+#undef close
+
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+static int
+close_nothrow (int fd)
+{
+ int result;
+
+ TRY_MSVC_INVAL
+ {
+ result = close (fd);
+ }
+ CATCH_MSVC_INVAL
+ {
+ result = -1;
+ errno = EBADF;
+ }
+ DONE_MSVC_INVAL;
+
+ return result;
+}
+#else
+# define close_nothrow close
+#endif
/* Override close() to call into other gnulib modules. */
int
rpl_close (int fd)
-#undef close
{
#if WINDOWS_SOCKETS
- int retval = execute_all_close_hooks (close, fd);
+ int retval = execute_all_close_hooks (close_nothrow, fd);
#else
- int retval = close (fd);
+ int retval = close_nothrow (fd);
#endif
#if REPLACE_FCHDIR
--- /dev/null
+/* Stop reading the entries of a directory.
+ Copyright (C) 2006-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <dirent.h>
+
+#if REPLACE_FCHDIR
+# include <unistd.h>
+#endif
+
+#if HAVE_CLOSEDIR
+
+/* Override closedir(), to keep track of the open file descriptors.
+ Needed because there is a function dirfd(). */
+
+#else
+
+# include <stdlib.h>
+
+# include "dirent-private.h"
+
+#endif
+
+int
+closedir (DIR *dirp)
+{
+# if REPLACE_FCHDIR
+ int fd = dirfd (dirp);
+# endif
+ int retval;
+
+#if HAVE_CLOSEDIR
+# undef closedir
+
+ retval = closedir (dirp);
+
+#else
+
+ if (dirp->current != INVALID_HANDLE_VALUE)
+ FindClose (dirp->current);
+ free (dirp);
+
+ retval = 0;
+
+#endif
+
+#if REPLACE_FCHDIR
+ if (retval >= 0)
+ _gl_unregister_fd (fd);
+#endif
+ return retval;
+}
rpl_connect (int fd, const struct sockaddr *sockaddr, socklen_t len)
{
SOCKET sock = FD_TO_SOCKET (fd);
- int r = connect (sock, sockaddr, len);
- if (r < 0)
- {
- /* EINPROGRESS is not returned by WinSock 2.0; for backwards
- compatibility, connect(2) uses EWOULDBLOCK. */
- if (WSAGetLastError () == WSAEWOULDBLOCK)
- WSASetLastError (WSAEINPROGRESS);
- set_winsock_errno ();
+ if (sock == INVALID_SOCKET)
+ {
+ errno = EBADF;
+ return -1;
+ }
+ else
+ {
+ int r = connect (sock, sockaddr, len);
+ if (r < 0)
+ {
+ /* EINPROGRESS is not returned by WinSock 2.0; for backwards
+ compatibility, connect(2) uses EWOULDBLOCK. */
+ if (WSAGetLastError () == WSAEWOULDBLOCK)
+ WSASetLastError (WSAEINPROGRESS);
+
+ set_winsock_errno ();
+ }
+
+ return r;
}
-
- return r;
}
#if USE_ACL && HAVE_ACL_GET_FILE
/* POSIX 1003.1e (draft 17 -- abandoned) specific version. */
/* Linux, FreeBSD, MacOS X, IRIX, Tru64 */
-# if MODE_INSIDE_ACL
+# if !HAVE_ACL_TYPE_EXTENDED
/* Linux, FreeBSD, IRIX, Tru64 */
acl_t acl;
else
acl_free (acl);
- if (mode & (S_ISUID | S_ISGID | S_ISVTX))
+ if (!MODE_INSIDE_ACL || (mode & (S_ISUID | S_ISGID | S_ISVTX)))
{
/* We did not call chmod so far, and either the mode and the ACL are
separate or special bits are to be set which don't fit into ACLs. */
}
return 0;
-# else /* !MODE_INSIDE_ACL */
+# else /* HAVE_ACL_TYPE_EXTENDED */
/* MacOS X */
-# if !HAVE_ACL_TYPE_EXTENDED
-# error Must have ACL_TYPE_EXTENDED
-# endif
-
/* On MacOS X, acl_get_file (name, ACL_TYPE_ACCESS)
and acl_get_file (name, ACL_TYPE_DEFAULT)
always return NULL / EINVAL. You have to use
#elif USE_ACL && defined GETACL /* Solaris, Cygwin, not HP-UX */
-# if defined ACL_NO_TRIVIAL
- /* Solaris 10 (newer version), which has additional API declared in
- <sys/acl.h> (acl_t) and implemented in libsec (acl_set, acl_trivial,
- acl_fromtext, ...). */
-
- int ret;
- acl_t *aclp = NULL;
- ret = (source_desc < 0
- ? acl_get (src_name, ACL_NO_TRIVIAL, &aclp)
- : facl_get (source_desc, ACL_NO_TRIVIAL, &aclp));
- if (ret != 0 && errno != ENOSYS)
- return -2;
-
- ret = qset_acl (dst_name, dest_desc, mode);
- if (ret != 0)
- return -1;
-
- if (aclp)
- {
- ret = (dest_desc < 0
- ? acl_set (dst_name, aclp)
- : facl_set (dest_desc, aclp));
- if (ret != 0)
- {
- int saved_errno = errno;
-
- acl_free (aclp);
- errno = saved_errno;
- return -1;
- }
- acl_free (aclp);
- }
-
- return 0;
-
-# else /* Solaris, Cygwin, general case */
-
/* Solaris 2.5 through Solaris 10, Cygwin, and contemporaneous versions
of Unixware. The acl() call returns the access and default ACL both
at once. */
-# ifdef ACE_GETACL
+# ifdef ACE_GETACL
int ace_count;
ace_t *ace_entries;
-# endif
+# endif
int count;
aclent_t *entries;
int did_chmod;
int saved_errno;
int ret;
-# ifdef ACE_GETACL
+# ifdef ACE_GETACL
/* Solaris also has a different variant of ACLs, used in ZFS and NFSv4
file systems (whereas the other ones are used in UFS file systems).
There is an API
/* Huh? The number of ACL entries changed since the last call.
Repeat. */
}
-# endif
+# endif
for (;;)
{
}
/* Is there an ACL of either kind? */
-# ifdef ACE_GETACL
+# ifdef ACE_GETACL
if (ace_count == 0)
-# endif
+# endif
if (count == 0)
return qset_acl (dst_name, dest_desc, mode);
}
free (entries);
-# ifdef ACE_GETACL
+# ifdef ACE_GETACL
if (ace_count > 0)
{
ret = (dest_desc != -1
}
}
free (ace_entries);
-# endif
+# endif
if (MODE_INSIDE_ACL
&& did_chmod <= ((mode & (S_ISUID | S_ISGID | S_ISVTX)) ? 1 : 0))
}
return 0;
-# endif
-
#elif USE_ACL && HAVE_GETACL /* HP-UX */
int count;
--- /dev/null
+/* Copy sign into another 'double' number.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+double
+copysign (double x, double y)
+{
+ return (signbit (x) != signbit (y) ? - x : x);
+}
--- /dev/null
+/* Copy sign into another 'float' number.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+float
+copysignf (float x, float y)
+{
+ return (signbit (x) != signbit (y) ? - x : x);
+}
--- /dev/null
+/* Copy sign into another 'long double' number.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+long double
+copysignl (long double x, long double y)
+{
+ return copysign (x, y);
+}
+
+#else
+
+# if defined __hpux && !defined __GNUC__
+
+# include <float.h>
+
+/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0L. */
+static long double
+compute_minus_zerol (void)
+{
+ return -LDBL_MIN * LDBL_MIN;
+}
+# define minus_zerol compute_minus_zerol ()
+
+/* HP cc on HP-UX 11 has a bug: When x is a positive zero, - x comes out
+ as a positive zero, rather than as a minus zero. Work around it. */
+static long double
+unary_minus (long double x)
+{
+ if (x == 0.0L)
+ {
+ if (signbit (x))
+ return 0.0L;
+ else
+ return minus_zerol;
+ }
+ else
+ return - x;
+}
+
+# endif
+
+long double
+copysignl (long double x, long double y)
+{
+# if defined __hpux && !defined __GNUC__
+ return (signbit (x) != signbit (y) ? unary_minus (x) : x);
+# else
+ return (signbit (x) != signbit (y) ? - x : x);
+# endif
+}
+
+#endif
--- /dev/null
+/* Cosine function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+float
+cosf (float x)
+{
+ return (float) cos ((double) x);
+}
--- /dev/null
+/* Hyperbolic cosine function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+float
+coshf (float x)
+{
+ return (float) cosh ((double) x);
+}
/* Specification. */
#include <math.h>
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+long double
+cosl (long double x)
+{
+ return cos (x);
+}
+
+#else
+
/* sinl(x)
* Return sine function of x.
*
* TRIG(x) returns trig(x) nearly rounded
*/
-#include "trigl.h"
+# include "trigl.h"
long double
cosl (long double x)
}
}
+#endif
+
#if 0
int
main (void)
return -1;
/* Put I into the inode set. */
- return hash_insert0 (ino_set, (void const *) i, NULL);
+ return hash_insert_if_absent (ino_set, (void const *) i, NULL);
}
/* Look up the DEV,INO pair in the set DIS.
--- /dev/null
+/* Private details of the DIR type.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _DIRENT_PRIVATE_H
+#define _DIRENT_PRIVATE_H 1
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+
+struct gl_directory
+{
+ /* Status, or error code to produce in next readdir() call.
+ -2 means the end of the directory is already reached,
+ -1 means the entry was already filled by FindFirstFile,
+ 0 means the entry needs to be filled using FindNextFile.
+ A positive value is an error code. */
+ int status;
+ /* Handle, reading the directory, at current position. */
+ HANDLE current;
+ /* Found directory entry. */
+ WIN32_FIND_DATA entry;
+ /* Argument to pass to FindFirstFile. It consists of the absolutized
+ directory name, followed by a directory separator and the wildcards. */
+ char dir_name_mask[1];
+};
+
+#endif /* _DIRENT_PRIVATE_H */
@PRAGMA_COLUMNS@
/* The include_next requires a split double-inclusion guard. */
-#@INCLUDE_NEXT@ @NEXT_DIRENT_H@
+#if @HAVE_DIRENT_H@
+# @INCLUDE_NEXT@ @NEXT_DIRENT_H@
+#endif
#ifndef _@GUARD_PREFIX@_DIRENT_H
#define _@GUARD_PREFIX@_DIRENT_H
/* Get ino_t. Needed on some systems, including glibc 2.8. */
#include <sys/types.h>
+#if !@HAVE_DIRENT_H@
+/* Define types DIR and 'struct dirent'. */
+# if !GNULIB_defined_struct_dirent
+struct dirent
+{
+ char d_type;
+ char d_name[1];
+};
+/* Possible values for 'd_type'. */
+# define DT_UNKNOWN 0
+# define DT_FIFO 1 /* FIFO */
+# define DT_CHR 2 /* character device */
+# define DT_DIR 4 /* directory */
+# define DT_BLK 6 /* block device */
+# define DT_REG 8 /* regular file */
+# define DT_LNK 10 /* symbolic link */
+# define DT_SOCK 12 /* socket */
+# define DT_WHT 14 /* whiteout */
+typedef struct gl_directory DIR;
+# define GNULIB_defined_struct_dirent 1
+# endif
+#endif
+
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
/* The definition of _GL_ARG_NONNULL is copied here. */
/* Declare overridden functions. */
-#if @REPLACE_CLOSEDIR@
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-# define closedir rpl_closedir
+#if @GNULIB_OPENDIR@
+# if @REPLACE_OPENDIR@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef opendir
+# define opendir rpl_opendir
+# endif
+_GL_FUNCDECL_RPL (opendir, DIR *, (const char *dir_name) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (opendir, DIR *, (const char *dir_name));
+# else
+# if !@HAVE_OPENDIR@
+_GL_FUNCDECL_SYS (opendir, DIR *, (const char *dir_name) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (opendir, DIR *, (const char *dir_name));
+# endif
+_GL_CXXALIASWARN (opendir);
+#elif defined GNULIB_POSIXCHECK
+# undef opendir
+# if HAVE_RAW_DECL_OPENDIR
+_GL_WARN_ON_USE (opendir, "opendir is not portable - "
+ "use gnulib module opendir for portability");
+# endif
+#endif
+
+#if @GNULIB_READDIR@
+# if !@HAVE_READDIR@
+_GL_FUNCDECL_SYS (readdir, struct dirent *, (DIR *dirp) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (readdir, struct dirent *, (DIR *dirp));
+_GL_CXXALIASWARN (readdir);
+#elif defined GNULIB_POSIXCHECK
+# undef readdir
+# if HAVE_RAW_DECL_READDIR
+_GL_WARN_ON_USE (readdir, "readdir is not portable - "
+ "use gnulib module readdir for portability");
+# endif
+#endif
+
+#if @GNULIB_REWINDDIR@
+# if !@HAVE_REWINDDIR@
+_GL_FUNCDECL_SYS (rewinddir, void, (DIR *dirp) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (rewinddir, void, (DIR *dirp));
+_GL_CXXALIASWARN (rewinddir);
+#elif defined GNULIB_POSIXCHECK
+# undef rewinddir
+# if HAVE_RAW_DECL_REWINDDIR
+_GL_WARN_ON_USE (rewinddir, "rewinddir is not portable - "
+ "use gnulib module rewinddir for portability");
# endif
-_GL_FUNCDECL_RPL (closedir, int, (DIR *) _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (closedir, int, (DIR *));
-#else
-_GL_CXXALIAS_SYS (closedir, int, (DIR *));
#endif
+
+#if @GNULIB_CLOSEDIR@
+# if @REPLACE_CLOSEDIR@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef closedir
+# define closedir rpl_closedir
+# endif
+_GL_FUNCDECL_RPL (closedir, int, (DIR *dirp) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (closedir, int, (DIR *dirp));
+# else
+# if !@HAVE_CLOSEDIR@
+_GL_FUNCDECL_SYS (closedir, int, (DIR *dirp) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (closedir, int, (DIR *dirp));
+# endif
_GL_CXXALIASWARN (closedir);
+#elif defined GNULIB_POSIXCHECK
+# undef closedir
+# if HAVE_RAW_DECL_CLOSEDIR
+_GL_WARN_ON_USE (closedir, "closedir is not portable - "
+ "use gnulib module closedir for portability");
+# endif
+#endif
#if @GNULIB_DIRFD@
/* Return the file descriptor associated with the given directory stream,
# endif
#endif
-#if @REPLACE_OPENDIR@
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-# define opendir rpl_opendir
-# endif
-_GL_FUNCDECL_RPL (opendir, DIR *, (const char *) _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (opendir, DIR *, (const char *));
-#else
-_GL_CXXALIAS_SYS (opendir, DIR *, (const char *));
-#endif
-_GL_CXXALIASWARN (opendir);
-
#if @GNULIB_SCANDIR@
/* Scan the directory DIR, calling FILTER on each directory entry.
Entries for which FILTER returns nonzero are individually malloc'd,
# endif
char *mdir_name (char const *file);
-size_t base_len (char const *file);
-size_t dir_len (char const *file);
-char *last_component (char const *file);
+size_t base_len (char const *file) _GL_ATTRIBUTE_PURE;
+size_t dir_len (char const *file) _GL_ATTRIBUTE_PURE;
+char *last_component (char const *file) _GL_ATTRIBUTE_PURE;
bool strip_trailing_slashes (char *file);
--- /dev/null
+/* Duplicate an open file descriptor.
+
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <unistd.h>
+
+#include <errno.h>
+
+#include "msvc-inval.h"
+
+#undef dup
+
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+static inline int
+dup_nothrow (int fd)
+{
+ int result;
+
+ TRY_MSVC_INVAL
+ {
+ result = dup (fd);
+ }
+ CATCH_MSVC_INVAL
+ {
+ result = -1;
+ errno = EBADF;
+ }
+ DONE_MSVC_INVAL;
+
+ return result;
+}
+#else
+# define dup_nothrow dup
+#endif
+
+int
+rpl_dup (int fd)
+{
+ int result = dup_nothrow (fd);
+#if REPLACE_FCHDIR
+ if (result >= 0)
+ result = _gl_register_dup (fd, result);
+#endif
+ return result;
+}
#include <errno.h>
#include <fcntl.h>
-#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-/* Get declarations of the Win32 API functions. */
-# define WIN32_LEAN_AND_MEAN
-# include <windows.h>
-#endif
-
#if HAVE_DUP2
# undef dup2
-int
-rpl_dup2 (int fd, int desired_fd)
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+
+/* Get declarations of the Win32 API functions. */
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+
+# include "msvc-inval.h"
+
+/* Get _get_osfhandle. */
+# include "msvc-nothrow.h"
+
+static int
+ms_windows_dup2 (int fd, int desired_fd)
{
int result;
-# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+
/* If fd is closed, mingw hangs on dup2 (fd, fd). If fd is open,
dup2 (fd, fd) returns 0, but all further attempts to use fd in
future dup2 calls will hang. */
}
return fd;
}
+
/* Wine 1.0.1 return 0 when desired_fd is negative but not -1:
http://bugs.winehq.org/show_bug.cgi?id=21289 */
if (desired_fd < 0)
errno = EBADF;
return -1;
}
-# elif !defined __linux__
- /* On Haiku, dup2 (fd, fd) mistakenly clears FD_CLOEXEC. */
- if (fd == desired_fd)
- return fcntl (fd, F_GETFL) == -1 ? -1 : fd;
-# endif
- result = dup2 (fd, desired_fd);
-# ifdef __linux__
- /* Correct a Linux return value.
- <http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.30.y.git;a=commitdiff;h=2b79bc4f7ebbd5af3c8b867968f9f15602d5f802>
- */
- if (fd == desired_fd && result == (unsigned int) -EBADF)
+
+ TRY_MSVC_INVAL
+ {
+ result = dup2 (fd, desired_fd);
+ }
+ CATCH_MSVC_INVAL
{
errno = EBADF;
result = -1;
}
-# endif
+ DONE_MSVC_INVAL;
+
if (result == 0)
result = desired_fd;
- /* Correct a cygwin 1.5.x errno value. */
- else if (result == -1 && errno == EMFILE)
+
+ return result;
+}
+
+# define dup2 ms_windows_dup2
+
+# endif
+
+int
+rpl_dup2 (int fd, int desired_fd)
+{
+ int result;
+
+# ifdef F_GETFL
+ /* On Linux kernels 2.6.26-2.6.29, dup2 (fd, fd) returns -EBADF.
+ On Cygwin 1.5.x, dup2 (1, 1) returns 0.
+ On Haiku, dup2 (fd, fd) mistakenly clears FD_CLOEXEC. */
+ if (fd == desired_fd)
+ return fcntl (fd, F_GETFL) == -1 ? -1 : fd;
+# endif
+
+ result = dup2 (fd, desired_fd);
+
+ /* Correct an errno value on FreeBSD 6.1 and Cygwin 1.5.x. */
+ if (result == -1 && errno == EMFILE)
errno = EBADF;
# if REPLACE_FCHDIR
if (fd != desired_fd && result != -1)
/* On native Windows platforms, many macros are not defined. */
# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-/* POSIX says that EAGAIN and EWOULDBLOCK may have the same value. */
-# define EWOULDBLOCK EAGAIN
-
-/* Values >= 100 seem safe to use. */
-# define ETXTBSY 100
-# define GNULIB_defined_ETXTBSY 1
+/* These are the same values as defined by MSVC 10, for interoperability. */
+
+# ifndef ENOMSG
+# define ENOMSG 122
+# define GNULIB_defined_ENOMSG 1
+# endif
+
+# ifndef EIDRM
+# define EIDRM 111
+# define GNULIB_defined_EIDRM 1
+# endif
+
+# ifndef ENOLINK
+# define ENOLINK 121
+# define GNULIB_defined_ENOLINK 1
+# endif
+
+# ifndef EPROTO
+# define EPROTO 134
+# define GNULIB_defined_EPROTO 1
+# endif
+
+# ifndef EBADMSG
+# define EBADMSG 104
+# define GNULIB_defined_EBADMSG 1
+# endif
+
+# ifndef EOVERFLOW
+# define EOVERFLOW 132
+# define GNULIB_defined_EOVERFLOW 1
+# endif
+
+# ifndef ENOTSUP
+# define ENOTSUP 129
+# define GNULIB_defined_ENOTSUP 1
+# endif
+
+# ifndef ENETRESET
+# define ENETRESET 117
+# define GNULIB_defined_ENETRESET 1
+# endif
+
+# ifndef ECONNABORTED
+# define ECONNABORTED 106
+# define GNULIB_defined_ECONNABORTED 1
+# endif
+
+# ifndef ECANCELED
+# define ECANCELED 105
+# define GNULIB_defined_ECANCELED 1
+# endif
+
+# ifndef EINPROGRESS
+# define EINPROGRESS 112
+# define EALREADY 103
+# define ENOTSOCK 128
+# define EDESTADDRREQ 109
+# define EMSGSIZE 115
+# define EPROTOTYPE 136
+# define ENOPROTOOPT 123
+# define EPROTONOSUPPORT 135
+# define EOPNOTSUPP 130
+# define EAFNOSUPPORT 102
+# define EADDRINUSE 100
+# define EADDRNOTAVAIL 101
+# define ENETDOWN 116
+# define ENETUNREACH 118
+# define ECONNRESET 108
+# define ENOBUFS 119
+# define EISCONN 113
+# define ENOTCONN 126
+# define ETIMEDOUT 138
+# define ECONNREFUSED 107
+# define ELOOP 114
+# define EHOSTUNREACH 110
+# define EWOULDBLOCK 140
+# define ETXTBSY 139
+# define ENODATA 120 /* not required by POSIX */
+# define ENOSR 124 /* not required by POSIX */
+# define ENOSTR 125 /* not required by POSIX */
+# define ENOTRECOVERABLE 127 /* not required by POSIX */
+# define EOWNERDEAD 133 /* not required by POSIX */
+# define ETIME 137 /* not required by POSIX */
+# define EOTHER 131 /* not required by POSIX */
+# define GNULIB_defined_ESOCK 1
+# endif
/* These are intentionally the same values as the WSA* error numbers, defined
in <winsock2.h>. */
-# define EINPROGRESS 10036
-# define EALREADY 10037
-# define ENOTSOCK 10038
-# define EDESTADDRREQ 10039
-# define EMSGSIZE 10040
-# define EPROTOTYPE 10041
-# define ENOPROTOOPT 10042
-# define EPROTONOSUPPORT 10043
# define ESOCKTNOSUPPORT 10044 /* not required by POSIX */
-# define EOPNOTSUPP 10045
# define EPFNOSUPPORT 10046 /* not required by POSIX */
-# define EAFNOSUPPORT 10047
-# define EADDRINUSE 10048
-# define EADDRNOTAVAIL 10049
-# define ENETDOWN 10050
-# define ENETUNREACH 10051
-# define ENETRESET 10052
-# define ECONNABORTED 10053
-# define ECONNRESET 10054
-# define ENOBUFS 10055
-# define EISCONN 10056
-# define ENOTCONN 10057
# define ESHUTDOWN 10058 /* not required by POSIX */
# define ETOOMANYREFS 10059 /* not required by POSIX */
-# define ETIMEDOUT 10060
-# define ECONNREFUSED 10061
-# define ELOOP 10062
# define EHOSTDOWN 10064 /* not required by POSIX */
-# define EHOSTUNREACH 10065
# define EPROCLIM 10067 /* not required by POSIX */
# define EUSERS 10068 /* not required by POSIX */
# define EDQUOT 10069
# define ESTALE 10070
# define EREMOTE 10071 /* not required by POSIX */
-# define GNULIB_defined_ESOCK 1
+# define GNULIB_defined_EWINSOCK 1
# endif
/* Get declarations of the Win32 API functions. */
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
+/* Get _get_osfhandle. */
+# include "msvc-nothrow.h"
# endif
/* The gnulib override of fcntl is not needed in this file. */
int
euidaccess (const char *file, int mode)
{
-#if HAVE_FACCESSAT /* glibc */
+#if HAVE_FACCESSAT /* glibc, AIX 7, Solaris 11, Cygwin 1.7 */
return faccessat (AT_FDCWD, file, mode, AT_EACCESS);
#elif defined EFF_ONLY_OK /* IRIX, OSF/1, Interix */
return access (file, mode | EFF_ONLY_OK);
struct exclude;
-bool fnmatch_pattern_has_wildcards (const char *, int);
+bool fnmatch_pattern_has_wildcards (const char *, int) _GL_ATTRIBUTE_PURE;
struct exclude *new_exclude (void);
void free_exclude (struct exclude *);
--- /dev/null
+/* Exponential function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+float
+expf (float x)
+{
+ return (float) exp ((double) x);
+}
/* Specification. */
#include <math.h>
-#include <float.h>
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+long double
+expl (long double x)
+{
+ return exp (x);
+}
+
+#else
+
+# include <float.h>
static const long double C[] = {
/* Chebyshev polynom coeficients for (exp(x)-1)/x */
-#define P1 C[0]
-#define P2 C[1]
-#define P3 C[2]
-#define P4 C[3]
-#define P5 C[4]
-#define P6 C[5]
+# define P1 C[0]
+# define P2 C[1]
+# define P3 C[2]
+# define P4 C[3]
+# define P5 C[4]
+# define P6 C[5]
0.5L,
1.66666666666666666666666666666666683E-01L,
4.16666666666666666666654902320001674E-02L,
1.98412698413981650382436541785404286E-04L,
/* Smallest integer x for which e^x overflows. */
-#define himark C[6]
+# define himark C[6]
11356.523406294143949491931077970765L,
/* Largest integer x for which e^x underflows. */
-#define lomark C[7]
+# define lomark C[7]
-11433.4627433362978788372438434526231L,
/* very small number */
-#define TINY C[8]
+# define TINY C[8]
1.0e-4900L,
/* 2^16383 */
-#define TWO16383 C[9]
+# define TWO16383 C[9]
5.94865747678615882542879663314003565E+4931L};
long double
return TWO16383*x;
}
+#endif
+
#if 0
int
main (void)
--- /dev/null
+/* Absolute value.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+float
+fabsf (float x)
+{
+ return (float) fabs ((double) x);
+}
return NULL;
}
-#if REPLACE_OPEN_DIRECTORY
-/* Return stat information about FD in STATBUF. Needed when
- rpl_open() used a dummy file to work around an open() that can't
- normally visit directories. */
-# undef fstat
-int
-rpl_fstat (int fd, struct stat *statbuf)
-{
- if (0 <= fd && fd < dirs_allocated && dirs[fd].name != NULL)
- return stat (dirs[fd].name, statbuf);
- return fstat (fd, statbuf);
-}
-#endif
-
-/* Override opendir() and closedir(), to keep track of the open file
- descriptors. Needed because there is a function dirfd(). */
-
-int
-rpl_closedir (DIR *dp)
-#undef closedir
-{
- int fd = dirfd (dp);
- int retval = closedir (dp);
-
- if (retval >= 0)
- _gl_unregister_fd (fd);
- return retval;
-}
-
-DIR *
-rpl_opendir (const char *filename)
-#undef opendir
-{
- DIR *dp;
-
- dp = opendir (filename);
- if (dp != NULL)
- {
- int fd = dirfd (dp);
- if (0 <= fd && _gl_register_fd (fd, filename) != fd)
- {
- int saved_errno = errno;
- closedir (dp);
- errno = saved_errno;
- return NULL;
- }
- }
- return dp;
-}
-
-/* Override dup(), to keep track of open file descriptors. */
-
-int
-rpl_dup (int oldfd)
-#undef dup
-{
- int newfd = dup (oldfd);
-
- if (0 <= newfd)
- newfd = _gl_register_dup (oldfd, newfd);
- return newfd;
-}
-
/* Implement fchdir() in terms of chdir(). */
#include <unistd.h>
#include "freading.h"
+#include "msvc-inval.h"
+
+#undef fclose
+
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+static int
+fclose_nothrow (FILE *fp)
+{
+ int result;
+
+ TRY_MSVC_INVAL
+ {
+ result = fclose (fp);
+ }
+ CATCH_MSVC_INVAL
+ {
+ result = EOF;
+ errno = EBADF;
+ }
+ DONE_MSVC_INVAL;
+
+ return result;
+}
+#else
+# define fclose_nothrow fclose
+#endif
/* Override fclose() to call the overridden fflush() or close(). */
int
rpl_fclose (FILE *fp)
-#undef fclose
{
int saved_errno = 0;
int fd;
/* Don't change behavior on memstreams. */
fd = fileno (fp);
if (fd < 0)
- return fclose (fp);
+ return fclose_nothrow (fp);
/* We only need to flush the file if it is not reading or if it is
seekable. This only guarantees the file position of input files
if (close (fd) < 0 && saved_errno == 0)
saved_errno = errno;
- fclose (fp); /* will fail with errno = EBADF, if we did not lose a race */
+ fclose_nothrow (fp); /* will fail with errno = EBADF,
+ if we did not lose a race */
#else /* !WINDOWS_SOCKETS */
/* Call fclose() and invoke all hooks of the overridden close(). */
/* Note about multithread-safety: There is a race condition here as well.
Some other thread could open fd between our calls to fclose and
_gl_unregister_fd. */
- result = fclose (fp);
+ result = fclose_nothrow (fp);
if (result == 0)
_gl_unregister_fd (fd);
# else
/* No race condition here. */
- result = fclose (fp);
+ result = fclose_nothrow (fp);
# endif
#endif /* !WINDOWS_SOCKETS */
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
+/* Get _get_osfhandle. */
+# include "msvc-nothrow.h"
+
/* Upper bound on getdtablesize(). See lib/getdtablesize.c. */
# define OPEN_MAX_MAX 0x10000
--- /dev/null
+/* Emulate fdatasync on platforms that lack it.
+
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+#include <unistd.h>
+
+int
+fdatasync (int fd)
+{
+ /* This does more work than strictly necessary, but is the best we
+ can do portably. */
+ return fsync (fd);
+}
--- /dev/null
+/* Open a stream with a given file descriptor.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <stdio.h>
+
+#include <errno.h>
+
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+# include "msvc-inval.h"
+#endif
+
+#undef fdopen
+
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+static FILE *
+fdopen_nothrow (int fd, const char *mode)
+{
+ FILE *result;
+
+ TRY_MSVC_INVAL
+ {
+ result = fdopen (fd, mode);
+ }
+ CATCH_MSVC_INVAL
+ {
+ result = NULL;
+ }
+ DONE_MSVC_INVAL;
+
+ return result;
+}
+#else
+# define fdopen_nothrow fdopen
+#endif
+
+FILE *
+rpl_fdopen (int fd, const char *mode)
+{
+ int saved_errno = errno;
+ FILE *fp;
+
+ errno = 0;
+ fp = fdopen_nothrow (fd, mode);
+ if (fp == NULL)
+ {
+ if (errno == 0)
+ errno = EBADF;
+ }
+ else
+ errno = saved_errno;
+
+ return fp;
+}
/* Written by Eric Blake. */
+#include <config.h>
+
+/* Specification. */
#include <strings.h>
#include <limits.h>
#define FUNC ffsl
#define TYPE long int
+#define GCC_BUILTIN __builtin_ffsl
#include "ffsl.h"
/* This file is meant to be included by ffsl.c and ffsll.c, after
they have defined FUNC and TYPE. */
+#include <config.h>
+
+/* Specification. */
#include <string.h>
#include <limits.h>
int
FUNC (TYPE i)
{
- int result = 0;
+#if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) && defined GCC_BUILTIN
+ return GCC_BUILTIN (i);
+#else
unsigned TYPE j = i;
+ /* Split j into chunks, and look at one chunk after the other. */
+ enum { chunk_bits = CHAR_BIT * sizeof (unsigned int) };
+ /* The number of chunks is ceil (sizeof (TYPE) / sizeof (unsigned int))
+ = (sizeof (TYPE) - 1) / sizeof (unsigned int) + 1. */
+ enum { chunk_count = (sizeof (TYPE) - 1) / sizeof (unsigned int) + 1 };
- /* GCC has __builtin_ffs, but it is limited to int. */
- if (!i)
- return 0;
- while (1)
+ if (chunk_count > 1)
{
+ size_t k;
+
+ /* It is tempting to write if (!j) here, but if we do this,
+ Solaris 10/x86 "cc -O" miscompiles the code. */
+ if (!i)
+ return 0;
+ /* Unroll the first loop round. k = 0. */
if ((unsigned int) j)
- return result + ffs ((unsigned int) j);
- j >>= CHAR_BIT * sizeof (unsigned int);
- result += CHAR_BIT * sizeof (unsigned int);
+ return ffs ((unsigned int) j);
+ /* Generic loop. */
+ for (k = 1; k < chunk_count - 1; k++)
+ if ((unsigned int) (j >> (k * chunk_bits)) != 0)
+ return k * chunk_bits + ffs ((unsigned int) (j >> (k * chunk_bits)));
}
+ /* Last loop round. k = chunk_count - 1. */
+ return (chunk_count - 1) * chunk_bits
+ + ffs ((unsigned int) (j >> ((chunk_count - 1) * chunk_bits)));
+#endif
}
#define FUNC ffsll
#define TYPE long long int
+#define GCC_BUILTIN __builtin_ffsll
#include "ffsl.h"
#elif USE_ACL && HAVE_FACL && defined GETACL /* Solaris, Cygwin, not HP-UX */
-# if !defined ACL_NO_TRIVIAL /* Solaris <= 10, Cygwin */
-
/* Test an ACL retrieved with GETACL.
Return 1 if the given ACL, consisting of COUNT entries, is non-trivial.
Return 0 if it is trivial, i.e. equivalent to a simple stat() mode. */
return 0;
}
-# ifdef ACE_GETACL
+# ifdef ACE_GETACL
/* Test an ACL retrieved with ACE_GETACL.
Return 1 if the given ACL, consisting of COUNT entries, is non-trivial.
int old_convention = 0;
for (i = 0; i < count; i++)
- if (entries[i].a_flags & (ACE_OWNER | ACE_GROUP | ACE_OTHER))
+ if (entries[i].a_flags & (OLD_ACE_OWNER | OLD_ACE_GROUP | OLD_ACE_OTHER))
{
old_convention = 1;
break;
If ace->a_flags = ACE_OWNER, ace->a_who is the st_uid from stat().
If ace->a_flags = ACE_GROUP, ace->a_who is the st_gid from stat().
We don't need to check ace->a_who in these cases. */
- if (!(ace->a_type == ALLOW
- && (ace->a_flags == ACE_OWNER
- || ace->a_flags == ACE_GROUP
- || ace->a_flags == ACE_OTHER)))
+ if (!(ace->a_type == OLD_ALLOW
+ && (ace->a_flags == OLD_ACE_OWNER
+ || ace->a_flags == OLD_ACE_GROUP
+ || ace->a_flags == OLD_ACE_OTHER)))
return 1;
}
else
- /* Running on Solaris 10 (newer version) or Solaris 11. */
- for (i = 0; i < count; i++)
- {
- ace_t *ace = &entries[i];
+ {
+ /* Running on Solaris 10 (newer version) or Solaris 11. */
+ unsigned int access_masks[6] =
+ {
+ 0, /* owner@ deny */
+ 0, /* owner@ allow */
+ 0, /* group@ deny */
+ 0, /* group@ allow */
+ 0, /* everyone@ deny */
+ 0 /* everyone@ allow */
+ };
+
+ for (i = 0; i < count; i++)
+ {
+ ace_t *ace = &entries[i];
+ unsigned int index1;
+ unsigned int index2;
+
+ if (ace->a_type == NEW_ACE_ACCESS_ALLOWED_ACE_TYPE)
+ index1 = 1;
+ else if (ace->a_type == NEW_ACE_ACCESS_DENIED_ACE_TYPE)
+ index1 = 0;
+ else
+ return 1;
- if (!(ace->a_type == ACE_ACCESS_ALLOWED_ACE_TYPE
- && (ace->a_flags == NEW_ACE_OWNER
- || ace->a_flags
- == (NEW_ACE_GROUP | NEW_ACE_IDENTIFIER_GROUP)
- || ace->a_flags == ACE_EVERYONE)
- && (ace->a_access_mask
- & ~(NEW_ACE_READ_DATA | NEW_ACE_WRITE_DATA | NEW_ACE_EXECUTE))
- == 0))
- return 1;
- }
+ if (ace->a_flags == NEW_ACE_OWNER)
+ index2 = 0;
+ else if (ace->a_flags == (NEW_ACE_GROUP | NEW_ACE_IDENTIFIER_GROUP))
+ index2 = 2;
+ else if (ace->a_flags == NEW_ACE_EVERYONE)
+ index2 = 4;
+ else
+ return 1;
+
+ access_masks[index1 + index2] |= ace->a_access_mask;
+ }
+
+ /* The same bit shouldn't be both allowed and denied. */
+ if (access_masks[0] & access_masks[1])
+ return 1;
+ if (access_masks[2] & access_masks[3])
+ return 1;
+ if (access_masks[4] & access_masks[5])
+ return 1;
+
+ /* Check minimum masks. */
+ if ((NEW_ACE_WRITE_NAMED_ATTRS
+ | NEW_ACE_WRITE_ATTRIBUTES
+ | NEW_ACE_WRITE_ACL
+ | NEW_ACE_WRITE_OWNER)
+ & ~ access_masks[1])
+ return 1;
+ access_masks[1] &= ~(NEW_ACE_WRITE_NAMED_ATTRS
+ | NEW_ACE_WRITE_ATTRIBUTES
+ | NEW_ACE_WRITE_ACL
+ | NEW_ACE_WRITE_OWNER);
+ if ((NEW_ACE_WRITE_NAMED_ATTRS
+ | NEW_ACE_WRITE_ATTRIBUTES
+ | NEW_ACE_WRITE_ACL
+ | NEW_ACE_WRITE_OWNER)
+ & ~ access_masks[4])
+ return 1;
+ access_masks[4] &= ~(NEW_ACE_WRITE_NAMED_ATTRS
+ | NEW_ACE_WRITE_ATTRIBUTES
+ | NEW_ACE_WRITE_ACL
+ | NEW_ACE_WRITE_OWNER);
+ if ((NEW_ACE_READ_NAMED_ATTRS
+ | NEW_ACE_READ_ATTRIBUTES
+ | NEW_ACE_READ_ACL
+ | NEW_ACE_SYNCHRONIZE)
+ & ~ access_masks[5])
+ return 1;
+ access_masks[5] &= ~(NEW_ACE_READ_NAMED_ATTRS
+ | NEW_ACE_READ_ATTRIBUTES
+ | NEW_ACE_READ_ACL
+ | NEW_ACE_SYNCHRONIZE);
+
+ /* Check the allowed or denied bits. */
+ if ((access_masks[0] | access_masks[1])
+ != (NEW_ACE_READ_DATA
+ | NEW_ACE_WRITE_DATA | NEW_ACE_APPEND_DATA
+ | NEW_ACE_EXECUTE))
+ return 1;
+ if ((access_masks[2] | access_masks[3])
+ != (NEW_ACE_READ_DATA
+ | NEW_ACE_WRITE_DATA | NEW_ACE_APPEND_DATA
+ | NEW_ACE_EXECUTE))
+ return 1;
+ if ((access_masks[4] | access_masks[5])
+ != (NEW_ACE_READ_DATA
+ | NEW_ACE_WRITE_DATA | NEW_ACE_APPEND_DATA
+ | NEW_ACE_EXECUTE))
+ return 1;
+
+ /* Check that the NEW_ACE_WRITE_DATA and NEW_ACE_APPEND_DATA bits are
+ either both allowed or both denied. */
+ if (((access_masks[0] & NEW_ACE_WRITE_DATA) != 0)
+ != ((access_masks[0] & NEW_ACE_APPEND_DATA) != 0))
+ return 1;
+ if (((access_masks[2] & NEW_ACE_WRITE_DATA) != 0)
+ != ((access_masks[2] & NEW_ACE_APPEND_DATA) != 0))
+ return 1;
+ if (((access_masks[4] & NEW_ACE_WRITE_DATA) != 0)
+ != ((access_masks[4] & NEW_ACE_APPEND_DATA) != 0))
+ return 1;
+ }
return 0;
}
-# endif
-
# endif
#elif USE_ACL && HAVE_GETACL /* HP-UX */
/* Return 1 if NAME has a nontrivial access control list, 0 if NAME
only has no or a base access control list, and -1 (setting errno)
- on error. SB must be set to the stat buffer of FILE. */
+ on error. SB must be set to the stat buffer of NAME, obtained
+ through stat() or lstat(). */
int
file_has_acl (char const *name, struct stat const *sb)
/* Linux, FreeBSD, MacOS X, IRIX, Tru64 */
int ret;
- if (HAVE_ACL_EXTENDED_FILE || HAVE_ACL_EXTENDED_FILE_NOFOLLOW) /* Linux */
+ if (HAVE_ACL_EXTENDED_FILE) /* Linux */
{
-# if HAVE_ACL_EXTENDED_FILE_NOFOLLOW
- /* acl_extended_file_nofollow() uses lgetxattr() in order to prevent
- unnecessary mounts, but it returns the same result as we already
- know that NAME is not a symbolic link at this point (modulo the
- TOCTTOU race condition). */
- ret = acl_extended_file_nofollow (name);
-# else
/* On Linux, acl_extended_file is an optimized function: It only
makes two calls to getxattr(), one for ACL_TYPE_ACCESS, one for
ACL_TYPE_DEFAULT. */
ret = acl_extended_file (name);
-# endif
}
else /* FreeBSD, MacOS X, IRIX, Tru64 */
{
if (count == 0)
break;
- /* If there are more than 3 entries, there cannot be only the
- ACE_OWNER, ACE_GROUP, ACE_OTHER entries. */
- if (count > 3)
+ /* In the old (original Solaris 10) convention:
+ If there are more than 3 entries, there cannot be only the
+ ACE_OWNER, ACE_GROUP, ACE_OTHER entries.
+ In the newer Solaris 10 and Solaris 11 convention:
+ If there are more than 6 entries, there cannot be only the
+ ACE_OWNER, ACE_GROUP, ACE_EVERYONE entries, each once with
+ NEW_ACE_ACCESS_ALLOWED_ACE_TYPE and once with
+ NEW_ACE_ACCESS_DENIED_ACE_TYPE. */
+ if (count > 6)
return 1;
entries = (ace_t *) malloc (count * sizeof (ace_t));
type.u64 = ACL_ANY;
if (aclx_get (name, 0, &type, aclbuf, &aclsize, &mode) >= 0)
break;
+ if (errno == ENOSYS)
+ return 0;
if (errno != ENOSPC)
{
if (acl != aclbuf)
count = acl ((char *) name, ACL_CNT, NACLENTRIES, NULL);
if (count < 0)
- return -1;
+ {
+ if (errno == ENOSYS || errno == ENOTSUP)
+ break;
+ else
+ return -1;
+ }
if (count == 0)
return 0;
# include <sys/types.h>
# include <sys/stat.h>
-char const *file_type (struct stat const *);
+char const *file_type (struct stat const *) _GL_ATTRIBUTE_PURE;
#endif /* FILE_TYPE_H */
/* Return the longest suffix of F that is a relative file name.
If it has no such suffix, return the empty string. */
-static char const *
+static char const * _GL_ATTRIBUTE_PURE
longest_relative_suffix (char const *f)
{
for (f += FILE_SYSTEM_PREFIX_LEN (f); ISSLASH (*f); f++)
section on the `Version' control field. This version of the code
implements that from s5.6.12 of Debian Policy v3.8.0.1
http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version */
-static int
+static int _GL_ATTRIBUTE_PURE
verrevcmp (const char *s1, size_t s1_len, const char *s2, size_t s2_len)
{
size_t s1_pos = 0;
/* Specification. */
#include <float.h>
-#if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__
+#if (defined _ARCH_PPC || defined _POWER) && (defined _AIX || defined __linux__) && (LDBL_MANT_DIG == 106) && defined __GNUC__
const union gl_long_double_union gl_LDBL_MAX =
{ { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL } };
#elif defined __i386__
#endif
/* On AIX 7.1 with gcc 4.2, the values of LDBL_MIN_EXP, LDBL_MIN, LDBL_MAX are
- wrong. */
+ wrong.
+ On Linux/PowerPC with gcc 4.4, the value of LDBL_MAX is wrong. */
#if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__
# undef LDBL_MIN_EXP
# define LDBL_MIN_EXP DBL_MIN_EXP
# define LDBL_MIN_10_EXP DBL_MIN_10_EXP
# undef LDBL_MIN
# define LDBL_MIN 2.22507385850720138309023271733240406422e-308L /* DBL_MIN = 2^-1022 */
+#endif
+#if (defined _ARCH_PPC || defined _POWER) && (defined _AIX || defined __linux__) && (LDBL_MANT_DIG == 106) && defined __GNUC__
# undef LDBL_MAX
/* LDBL_MAX is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xFFFFFFFF }.
It is not easy to define:
# endif
#endif
+#if @REPLACE_ITOLD@
+/* Pull in a function that fixes the 'int' to 'long double' conversion
+ of glibc 2.7. */
+extern
+# ifdef __cplusplus
+"C"
+# endif
+void _Qp_itoq (long double *, int);
+static void (*_gl_float_fix_itold) (long double *, int) = _Qp_itoq;
+#endif
+
#endif /* _@GUARD_PREFIX@_FLOAT_H */
#endif /* _@GUARD_PREFIX@_FLOAT_H */
#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-/* _get_osfhandle */
-# include <io.h>
-
/* LockFileEx */
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
# include <errno.h>
+/* _get_osfhandle */
+# include "msvc-nothrow.h"
+
/* Determine the current size of a file. Because the other braindead
* APIs we'll call need lower/upper 32 bit pairs, keep the file size
* like that too.
/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
-#include <config.h>
+#if ! defined USE_LONG_DOUBLE
+# include <config.h>
+#endif
/* Specification. */
#include <math.h>
/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
-#define USE_LONG_DOUBLE
-#include "floor.c"
+#include <config.h>
+
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+/* Specification. */
+# include <math.h>
+
+long double
+floorl (long double x)
+{
+ return floor (x);
+}
+
+#else
+
+# define USE_LONG_DOUBLE
+# include "floor.c"
+
+#endif
--- /dev/null
+/* Fused multiply-add.
+ Copyright (C) 2007, 2009, 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2011. */
+
+#if ! defined USE_LONG_DOUBLE
+# include <config.h>
+#endif
+
+/* Specification. */
+#include <math.h>
+
+#include <stdbool.h>
+#include <stdlib.h>
+
+#if HAVE_FEGETROUND
+# include <fenv.h>
+#endif
+
+#include "float+.h"
+#include "integer_length.h"
+#include "verify.h"
+
+#ifdef USE_LONG_DOUBLE
+# define FUNC fmal
+# define DOUBLE long double
+# define FREXP frexpl
+# define LDEXP ldexpl
+# define MIN_EXP LDBL_MIN_EXP
+# define MANT_BIT LDBL_MANT_BIT
+# define L_(literal) literal##L
+#elif ! defined USE_FLOAT
+# define FUNC fma
+# define DOUBLE double
+# define FREXP frexp
+# define LDEXP ldexp
+# define MIN_EXP DBL_MIN_EXP
+# define MANT_BIT DBL_MANT_BIT
+# define L_(literal) literal
+#else /* defined USE_FLOAT */
+# define FUNC fmaf
+# define DOUBLE float
+# define FREXP frexpf
+# define LDEXP ldexpf
+# define MIN_EXP FLT_MIN_EXP
+# define MANT_BIT FLT_MANT_BIT
+# define L_(literal) literal##f
+#endif
+
+#undef MAX
+#define MAX(a,b) ((a) > (b) ? (a) : (b))
+
+#undef MIN
+#define MIN(a,b) ((a) < (b) ? (a) : (b))
+
+/* It is possible to write an implementation of fused multiply-add with
+ floating-point operations alone. See
+ Sylvie Boldo, Guillaume Melquiond:
+ Emulation of FMA and correctly-rounded sums: proved algorithms using
+ rounding to odd.
+ <http://www.lri.fr/~melquion/doc/08-tc.pdf>
+ But is it complicated.
+ Here we take the simpler (and probably slower) approach of doing
+ multi-precision arithmetic. */
+
+/* We use the naming conventions of GNU gmp, but vastly simpler (and slower)
+ algorithms. */
+
+typedef unsigned int mp_limb_t;
+#define GMP_LIMB_BITS 32
+verify (sizeof (mp_limb_t) * CHAR_BIT == GMP_LIMB_BITS);
+
+typedef unsigned long long mp_twolimb_t;
+#define GMP_TWOLIMB_BITS 64
+verify (sizeof (mp_twolimb_t) * CHAR_BIT == GMP_TWOLIMB_BITS);
+
+/* Number of limbs needed for a single DOUBLE. */
+#define NLIMBS1 ((MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS)
+
+/* Number of limbs needed for the accumulator. */
+#define NLIMBS3 (3 * NLIMBS1 + 1)
+
+/* Assuming 0.5 <= x < 1.0:
+ Convert the mantissa (x * 2^DBL_MANT_BIT) to a sequence of limbs. */
+static void
+decode (DOUBLE x, mp_limb_t limbs[NLIMBS1])
+{
+ /* I'm not sure whether it's safe to cast a 'double' value between
+ 2^31 and 2^32 to 'unsigned int', therefore play safe and cast only
+ 'double' values between 0 and 2^31 (to 'unsigned int' or 'int',
+ doesn't matter).
+ So, we split the MANT_BIT bits of x into a number of chunks of
+ at most 31 bits. */
+ enum { chunk_count = (MANT_BIT - 1) / 31 + 1 };
+ /* Variables used for storing the bits limb after limb. */
+ mp_limb_t *p = limbs + NLIMBS1 - 1;
+ mp_limb_t accu = 0;
+ unsigned int bits_needed = MANT_BIT - (NLIMBS1 - 1) * GMP_LIMB_BITS;
+ /* The bits bits_needed-1...0 need to be ORed into the accu.
+ 1 <= bits_needed <= GMP_LIMB_BITS. */
+ /* Unroll the first 4 loop rounds. */
+ if (chunk_count > 0)
+ {
+ /* Here we still have MANT_BIT-0*31 bits to extract from x. */
+ enum { chunk_bits = MIN (31, MANT_BIT - 0 * 31) }; /* > 0, <= 31 */
+ mp_limb_t d;
+ x *= (mp_limb_t) 1 << chunk_bits;
+ d = (int) x; /* 0 <= d < 2^chunk_bits. */
+ x -= d;
+ if (!(x >= L_(0.0) && x < L_(1.0)))
+ abort ();
+ if (bits_needed < chunk_bits)
+ {
+ /* store bits_needed bits */
+ accu |= d >> (chunk_bits - bits_needed);
+ *p = accu;
+ if (p == limbs)
+ goto done;
+ p--;
+ /* hold (chunk_bits - bits_needed) bits */
+ accu = d << (GMP_LIMB_BITS - (chunk_bits - bits_needed));
+ bits_needed = GMP_LIMB_BITS - (chunk_bits - bits_needed);
+ }
+ else
+ {
+ /* store chunk_bits bits */
+ accu |= d << (bits_needed - chunk_bits);
+ bits_needed -= chunk_bits;
+ if (bits_needed == 0)
+ {
+ *p = accu;
+ if (p == limbs)
+ goto done;
+ p--;
+ accu = 0;
+ bits_needed = GMP_LIMB_BITS;
+ }
+ }
+ }
+ if (chunk_count > 1)
+ {
+ /* Here we still have MANT_BIT-1*31 bits to extract from x. */
+ enum { chunk_bits = MIN (31, MAX (MANT_BIT - 1 * 31, 0)) }; /* > 0, <= 31 */
+ mp_limb_t d;
+ x *= (mp_limb_t) 1 << chunk_bits;
+ d = (int) x; /* 0 <= d < 2^chunk_bits. */
+ x -= d;
+ if (!(x >= L_(0.0) && x < L_(1.0)))
+ abort ();
+ if (bits_needed < chunk_bits)
+ {
+ /* store bits_needed bits */
+ accu |= d >> (chunk_bits - bits_needed);
+ *p = accu;
+ if (p == limbs)
+ goto done;
+ p--;
+ /* hold (chunk_bits - bits_needed) bits */
+ accu = d << (GMP_LIMB_BITS - (chunk_bits - bits_needed));
+ bits_needed = GMP_LIMB_BITS - (chunk_bits - bits_needed);
+ }
+ else
+ {
+ /* store chunk_bits bits */
+ accu |= d << (bits_needed - chunk_bits);
+ bits_needed -= chunk_bits;
+ if (bits_needed == 0)
+ {
+ *p = accu;
+ if (p == limbs)
+ goto done;
+ p--;
+ accu = 0;
+ bits_needed = GMP_LIMB_BITS;
+ }
+ }
+ }
+ if (chunk_count > 2)
+ {
+ /* Here we still have MANT_BIT-2*31 bits to extract from x. */
+ enum { chunk_bits = MIN (31, MAX (MANT_BIT - 2 * 31, 0)) }; /* > 0, <= 31 */
+ mp_limb_t d;
+ x *= (mp_limb_t) 1 << chunk_bits;
+ d = (int) x; /* 0 <= d < 2^chunk_bits. */
+ x -= d;
+ if (!(x >= L_(0.0) && x < L_(1.0)))
+ abort ();
+ if (bits_needed < chunk_bits)
+ {
+ /* store bits_needed bits */
+ accu |= d >> (chunk_bits - bits_needed);
+ *p = accu;
+ if (p == limbs)
+ goto done;
+ p--;
+ /* hold (chunk_bits - bits_needed) bits */
+ accu = d << (GMP_LIMB_BITS - (chunk_bits - bits_needed));
+ bits_needed = GMP_LIMB_BITS - (chunk_bits - bits_needed);
+ }
+ else
+ {
+ /* store chunk_bits bits */
+ accu |= d << (bits_needed - chunk_bits);
+ bits_needed -= chunk_bits;
+ if (bits_needed == 0)
+ {
+ *p = accu;
+ if (p == limbs)
+ goto done;
+ p--;
+ accu = 0;
+ bits_needed = GMP_LIMB_BITS;
+ }
+ }
+ }
+ if (chunk_count > 3)
+ {
+ /* Here we still have MANT_BIT-3*31 bits to extract from x. */
+ enum { chunk_bits = MIN (31, MAX (MANT_BIT - 3 * 31, 0)) }; /* > 0, <= 31 */
+ mp_limb_t d;
+ x *= (mp_limb_t) 1 << chunk_bits;
+ d = (int) x; /* 0 <= d < 2^chunk_bits. */
+ x -= d;
+ if (!(x >= L_(0.0) && x < L_(1.0)))
+ abort ();
+ if (bits_needed < chunk_bits)
+ {
+ /* store bits_needed bits */
+ accu |= d >> (chunk_bits - bits_needed);
+ *p = accu;
+ if (p == limbs)
+ goto done;
+ p--;
+ /* hold (chunk_bits - bits_needed) bits */
+ accu = d << (GMP_LIMB_BITS - (chunk_bits - bits_needed));
+ bits_needed = GMP_LIMB_BITS - (chunk_bits - bits_needed);
+ }
+ else
+ {
+ /* store chunk_bits bits */
+ accu |= d << (bits_needed - chunk_bits);
+ bits_needed -= chunk_bits;
+ if (bits_needed == 0)
+ {
+ *p = accu;
+ if (p == limbs)
+ goto done;
+ p--;
+ accu = 0;
+ bits_needed = GMP_LIMB_BITS;
+ }
+ }
+ }
+ if (chunk_count > 4)
+ {
+ /* Here we still have MANT_BIT-4*31 bits to extract from x. */
+ /* Generic loop. */
+ size_t k;
+ for (k = 4; k < chunk_count; k++)
+ {
+ size_t chunk_bits = MIN (31, MANT_BIT - k * 31); /* > 0, <= 31 */
+ mp_limb_t d;
+ x *= (mp_limb_t) 1 << chunk_bits;
+ d = (int) x; /* 0 <= d < 2^chunk_bits. */
+ x -= d;
+ if (!(x >= L_(0.0) && x < L_(1.0)))
+ abort ();
+ if (bits_needed < chunk_bits)
+ {
+ /* store bits_needed bits */
+ accu |= d >> (chunk_bits - bits_needed);
+ *p = accu;
+ if (p == limbs)
+ goto done;
+ p--;
+ /* hold (chunk_bits - bits_needed) bits */
+ accu = d << (GMP_LIMB_BITS - (chunk_bits - bits_needed));
+ bits_needed = GMP_LIMB_BITS - (chunk_bits - bits_needed);
+ }
+ else
+ {
+ /* store chunk_bits bits */
+ accu |= d << (bits_needed - chunk_bits);
+ bits_needed -= chunk_bits;
+ if (bits_needed == 0)
+ {
+ *p = accu;
+ if (p == limbs)
+ goto done;
+ p--;
+ accu = 0;
+ bits_needed = GMP_LIMB_BITS;
+ }
+ }
+ }
+ }
+ /* We shouldn't get here. */
+ abort ();
+
+ done: ;
+#ifndef USE_LONG_DOUBLE /* On FreeBSD 6.1/x86, 'long double' numbers sometimes
+ have excess precision. */
+ if (!(x == L_(0.0)))
+ abort ();
+#endif
+}
+
+/* Multiply two sequences of limbs. */
+static void
+multiply (mp_limb_t xlimbs[NLIMBS1], mp_limb_t ylimbs[NLIMBS1],
+ mp_limb_t prod_limbs[2 * NLIMBS1])
+{
+ size_t k, i, j;
+ enum { len1 = NLIMBS1 };
+ enum { len2 = NLIMBS1 };
+
+ for (k = len2; k > 0; )
+ prod_limbs[--k] = 0;
+ for (i = 0; i < len1; i++)
+ {
+ mp_limb_t digit1 = xlimbs[i];
+ mp_twolimb_t carry = 0;
+ for (j = 0; j < len2; j++)
+ {
+ mp_limb_t digit2 = ylimbs[j];
+ carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2;
+ carry += prod_limbs[i + j];
+ prod_limbs[i + j] = (mp_limb_t) carry;
+ carry = carry >> GMP_LIMB_BITS;
+ }
+ prod_limbs[i + len2] = (mp_limb_t) carry;
+ }
+}
+
+DOUBLE
+FUNC (DOUBLE x, DOUBLE y, DOUBLE z)
+{
+ if (isfinite (x) && isfinite (y))
+ {
+ if (isfinite (z))
+ {
+ /* x, y, z are all finite. */
+ if (x == L_(0.0) || y == L_(0.0))
+ return z;
+ if (z == L_(0.0))
+ return x * y;
+ /* x, y, z are all non-zero.
+ The result is x * y + z. */
+ {
+ int e; /* exponent of x * y + z */
+ int sign;
+ mp_limb_t sum[NLIMBS3];
+ size_t sum_len;
+
+ {
+ int xys; /* sign of x * y */
+ int zs; /* sign of z */
+ int xye; /* sum of exponents of x and y */
+ int ze; /* exponent of z */
+ mp_limb_t summand1[NLIMBS3];
+ size_t summand1_len;
+ mp_limb_t summand2[NLIMBS3];
+ size_t summand2_len;
+
+ {
+ mp_limb_t zlimbs[NLIMBS1];
+ mp_limb_t xylimbs[2 * NLIMBS1];
+
+ {
+ DOUBLE xn; /* normalized part of x */
+ DOUBLE yn; /* normalized part of y */
+ DOUBLE zn; /* normalized part of z */
+ int xe; /* exponent of x */
+ int ye; /* exponent of y */
+ mp_limb_t xlimbs[NLIMBS1];
+ mp_limb_t ylimbs[NLIMBS1];
+
+ xys = 0;
+ xn = x;
+ if (x < 0)
+ {
+ xys = 1;
+ xn = - x;
+ }
+ yn = y;
+ if (y < 0)
+ {
+ xys = 1 - xys;
+ yn = - y;
+ }
+
+ zs = 0;
+ zn = z;
+ if (z < 0)
+ {
+ zs = 1;
+ zn = - z;
+ }
+
+ /* xn, yn, zn are all positive.
+ The result is (-1)^xys * xn * yn + (-1)^zs * zn. */
+ xn = FREXP (xn, &xe);
+ yn = FREXP (yn, &ye);
+ zn = FREXP (zn, &ze);
+ xye = xe + ye;
+ /* xn, yn, zn are all < 1.0 and >= 0.5.
+ The result is
+ (-1)^xys * 2^xye * xn * yn + (-1)^zs * 2^ze * zn. */
+ if (xye < ze - MANT_BIT)
+ {
+ /* 2^xye * xn * yn < 2^xye <= 2^(ze-MANT_BIT-1) */
+ return z;
+ }
+ if (xye - 2 * MANT_BIT > ze)
+ {
+ /* 2^ze * zn < 2^ze <= 2^(xye-2*MANT_BIT-1).
+ We cannot simply do
+ return x * y;
+ because it would round differently: A round-to-even
+ in the multiplication can be a round-up or round-down
+ here, due to z. So replace z with a value that doesn't
+ require the use of long bignums but that rounds the
+ same way. */
+ zn = L_(0.5);
+ ze = xye - 2 * MANT_BIT - 1;
+ }
+ /* Convert mantissas of xn, yn, zn to limb sequences:
+ xlimbs = 2^MANT_BIT * xn
+ ylimbs = 2^MANT_BIT * yn
+ zlimbs = 2^MANT_BIT * zn */
+ decode (xn, xlimbs);
+ decode (yn, ylimbs);
+ decode (zn, zlimbs);
+ /* Multiply the mantissas of xn and yn:
+ xylimbs = xlimbs * ylimbs */
+ multiply (xlimbs, ylimbs, xylimbs);
+ }
+ /* The result is
+ (-1)^xys * 2^(xye-2*MANT_BIT) * xylimbs
+ + (-1)^zs * 2^(ze-MANT_BIT) * zlimbs.
+ Compute
+ e = min (xye-2*MANT_BIT, ze-MANT_BIT)
+ then
+ summand1 = 2^(xye-2*MANT_BIT-e) * xylimbs
+ summand2 = 2^(ze-MANT_BIT-e) * zlimbs */
+ e = MIN (xye - 2 * MANT_BIT, ze - MANT_BIT);
+ if (e == xye - 2 * MANT_BIT)
+ {
+ /* Simply copy the limbs of xylimbs. */
+ size_t i;
+ for (i = 0; i < 2 * NLIMBS1; i++)
+ summand1[i] = xylimbs[i];
+ summand1_len = 2 * NLIMBS1;
+ }
+ else
+ {
+ size_t ediff = xye - 2 * MANT_BIT - e;
+ /* Left shift the limbs of xylimbs by ediff bits. */
+ size_t ldiff = ediff / GMP_LIMB_BITS;
+ size_t shift = ediff % GMP_LIMB_BITS;
+ size_t i;
+ for (i = 0; i < ldiff; i++)
+ summand1[i] = 0;
+ if (shift > 0)
+ {
+ mp_limb_t carry = 0;
+ for (i = 0; i < 2 * NLIMBS1; i++)
+ {
+ summand1[ldiff + i] = (xylimbs[i] << shift) | carry;
+ carry = xylimbs[i] >> (GMP_LIMB_BITS - shift);
+ }
+ summand1[ldiff + 2 * NLIMBS1] = carry;
+ summand1_len = ldiff + 2 * NLIMBS1 + 1;
+ }
+ else
+ {
+ for (i = 0; i < 2 * NLIMBS1; i++)
+ summand1[ldiff + i] = xylimbs[i];
+ summand1_len = ldiff + 2 * NLIMBS1;
+ }
+ /* Estimation of needed array size:
+ ediff = (xye - 2 * MANT_BIT) - (ze - MANT_BIT) <= MANT_BIT + 1
+ therefore
+ summand1_len
+ = (ediff + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS + 2 * NLIMBS1
+ <= (MANT_BIT + GMP_LIMB_BITS) / GMP_LIMB_BITS + 2 * NLIMBS1
+ <= 3 * NLIMBS1 + 1
+ = NLIMBS3 */
+ if (!(summand1_len <= NLIMBS3))
+ abort ();
+ }
+ if (e == ze - MANT_BIT)
+ {
+ /* Simply copy the limbs of zlimbs. */
+ size_t i;
+ for (i = 0; i < NLIMBS1; i++)
+ summand2[i] = zlimbs[i];
+ summand2_len = NLIMBS1;
+ }
+ else
+ {
+ size_t ediff = ze - MANT_BIT - e;
+ /* Left shift the limbs of zlimbs by ediff bits. */
+ size_t ldiff = ediff / GMP_LIMB_BITS;
+ size_t shift = ediff % GMP_LIMB_BITS;
+ size_t i;
+ for (i = 0; i < ldiff; i++)
+ summand2[i] = 0;
+ if (shift > 0)
+ {
+ mp_limb_t carry = 0;
+ for (i = 0; i < NLIMBS1; i++)
+ {
+ summand2[ldiff + i] = (zlimbs[i] << shift) | carry;
+ carry = zlimbs[i] >> (GMP_LIMB_BITS - shift);
+ }
+ summand2[ldiff + NLIMBS1] = carry;
+ summand2_len = ldiff + NLIMBS1 + 1;
+ }
+ else
+ {
+ for (i = 0; i < NLIMBS1; i++)
+ summand2[ldiff + i] = zlimbs[i];
+ summand2_len = ldiff + NLIMBS1;
+ }
+ /* Estimation of needed array size:
+ ediff = (ze - MANT_BIT) - (xye - 2 * MANT_BIT) <= 2 * MANT_BIT
+ therefore
+ summand2_len
+ = (ediff + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS + NLIMBS1
+ <= (2 * MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS + NLIMBS1
+ <= 3 * NLIMBS1 + 1
+ = NLIMBS3 */
+ if (!(summand2_len <= NLIMBS3))
+ abort ();
+ }
+ }
+ /* The result is
+ (-1)^xys * 2^e * summand1 + (-1)^zs * 2^e * summand2. */
+ if (xys == zs)
+ {
+ /* Perform an addition. */
+ size_t i;
+ mp_limb_t carry;
+
+ sign = xys;
+ carry = 0;
+ for (i = 0; i < MIN (summand1_len, summand2_len); i++)
+ {
+ mp_limb_t digit1 = summand1[i];
+ mp_limb_t digit2 = summand2[i];
+ sum[i] = digit1 + digit2 + carry;
+ carry = (carry
+ ? digit1 >= (mp_limb_t)-1 - digit2
+ : digit1 > (mp_limb_t)-1 - digit2);
+ }
+ if (summand1_len > summand2_len)
+ for (; i < summand1_len; i++)
+ {
+ mp_limb_t digit1 = summand1[i];
+ sum[i] = carry + digit1;
+ carry = carry && digit1 == (mp_limb_t)-1;
+ }
+ else
+ for (; i < summand2_len; i++)
+ {
+ mp_limb_t digit2 = summand2[i];
+ sum[i] = carry + digit2;
+ carry = carry && digit2 == (mp_limb_t)-1;
+ }
+ if (carry)
+ sum[i++] = carry;
+ sum_len = i;
+ }
+ else
+ {
+ /* Perform a subtraction. */
+ /* Compare summand1 and summand2 by magnitude. */
+ while (summand1[summand1_len - 1] == 0)
+ summand1_len--;
+ while (summand2[summand2_len - 1] == 0)
+ summand2_len--;
+ if (summand1_len > summand2_len)
+ sign = xys;
+ else if (summand1_len < summand2_len)
+ sign = zs;
+ else
+ {
+ size_t i = summand1_len;
+ for (;;)
+ {
+ --i;
+ if (summand1[i] > summand2[i])
+ {
+ sign = xys;
+ break;
+ }
+ if (summand1[i] < summand2[i])
+ {
+ sign = zs;
+ break;
+ }
+ if (i == 0)
+ /* summand1 and summand2 are equal. */
+ return L_(0.0);
+ }
+ }
+ if (sign == xys)
+ {
+ /* Compute summand1 - summand2. */
+ size_t i;
+ mp_limb_t carry;
+
+ carry = 0;
+ for (i = 0; i < summand2_len; i++)
+ {
+ mp_limb_t digit1 = summand1[i];
+ mp_limb_t digit2 = summand2[i];
+ sum[i] = digit1 - digit2 - carry;
+ carry = (carry ? digit1 <= digit2 : digit1 < digit2);
+ }
+ for (; i < summand1_len; i++)
+ {
+ mp_limb_t digit1 = summand1[i];
+ sum[i] = digit1 - carry;
+ carry = carry && digit1 == 0;
+ }
+ if (carry)
+ abort ();
+ sum_len = summand1_len;
+ }
+ else
+ {
+ /* Compute summand2 - summand1. */
+ size_t i;
+ mp_limb_t carry;
+
+ carry = 0;
+ for (i = 0; i < summand1_len; i++)
+ {
+ mp_limb_t digit1 = summand1[i];
+ mp_limb_t digit2 = summand2[i];
+ sum[i] = digit2 - digit1 - carry;
+ carry = (carry ? digit2 <= digit1 : digit2 < digit1);
+ }
+ for (; i < summand2_len; i++)
+ {
+ mp_limb_t digit2 = summand2[i];
+ sum[i] = digit2 - carry;
+ carry = carry && digit2 == 0;
+ }
+ if (carry)
+ abort ();
+ sum_len = summand2_len;
+ }
+ }
+ }
+ /* The result is
+ (-1)^sign * 2^e * sum. */
+ /* Now perform the rounding to MANT_BIT mantissa bits. */
+ while (sum[sum_len - 1] == 0)
+ sum_len--;
+ /* Here we know that the most significant limb, sum[sum_len - 1], is
+ non-zero. */
+ {
+ /* How many bits the sum has. */
+ unsigned int sum_bits =
+ integer_length (sum[sum_len - 1]) + (sum_len - 1) * GMP_LIMB_BITS;
+ /* How many bits to keep when rounding. */
+ unsigned int keep_bits;
+ /* How many bits to round off. */
+ unsigned int roundoff_bits;
+ if (e + (int) sum_bits >= MIN_EXP)
+ /* 2^e * sum >= 2^(MIN_EXP-1).
+ result will be a normalized number. */
+ keep_bits = MANT_BIT;
+ else if (e + (int) sum_bits >= MIN_EXP - MANT_BIT)
+ /* 2^e * sum >= 2^(MIN_EXP-MANT_BIT-1).
+ result will be a denormalized number or rounded to zero. */
+ keep_bits = e + (int) sum_bits - (MIN_EXP + MANT_BIT);
+ else
+ /* 2^e * sum < 2^(MIN_EXP-MANT_BIT-1). Round to zero. */
+ return L_(0.0);
+ /* Note: 0 <= keep_bits <= MANT_BIT. */
+ if (sum_bits <= keep_bits)
+ {
+ /* Nothing to do. */
+ roundoff_bits = 0;
+ keep_bits = sum_bits;
+ }
+ else
+ {
+ int round_up;
+ roundoff_bits = sum_bits - keep_bits; /* > 0, <= sum_bits */
+ {
+#if HAVE_FEGETROUND && defined FE_TOWARDZERO
+ /* Cf. <http://pubs.opengroup.org/onlinepubs/9699919799/functions/fegetround.html> */
+ int rounding_mode = fegetround ();
+ if (rounding_mode == FE_TOWARDZERO)
+ round_up = 0;
+ else if (rounding_mode == FE_DOWNWARD)
+ round_up = sign;
+ else if (rounding_mode == FE_UPWARD)
+ round_up = !sign;
+#else
+ /* Cf. <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/float.h.html> */
+ int rounding_mode = FLT_ROUNDS;
+ if (rounding_mode == 0) /* toward zero */
+ round_up = 0;
+ else if (rounding_mode == 3) /* toward negative infinity */
+ round_up = sign;
+ else if (rounding_mode == 2) /* toward positive infinity */
+ round_up = !sign;
+#endif
+ else
+ {
+ /* Round to nearest. */
+ round_up = 0;
+ /* Test bit (roundoff_bits-1). */
+ if ((sum[(roundoff_bits - 1) / GMP_LIMB_BITS]
+ >> ((roundoff_bits - 1) % GMP_LIMB_BITS)) & 1)
+ {
+ /* Test bits roundoff_bits-1 .. 0. */
+ bool halfway =
+ ((sum[(roundoff_bits - 1) / GMP_LIMB_BITS]
+ & (((mp_limb_t) 1 << ((roundoff_bits - 1) % GMP_LIMB_BITS)) - 1))
+ == 0);
+ if (halfway)
+ {
+ int i;
+ for (i = (roundoff_bits - 1) / GMP_LIMB_BITS - 1; i >= 0; i--)
+ if (sum[i] != 0)
+ {
+ halfway = false;
+ break;
+ }
+ }
+ if (halfway)
+ /* Round to even. Test bit roundoff_bits. */
+ round_up = ((sum[roundoff_bits / GMP_LIMB_BITS]
+ >> (roundoff_bits % GMP_LIMB_BITS)) & 1);
+ else
+ /* Round up. */
+ round_up = 1;
+ }
+ }
+ }
+ /* Perform the rounding. */
+ {
+ size_t i = roundoff_bits / GMP_LIMB_BITS;
+ {
+ size_t j = i;
+ while (j > 0)
+ sum[--j] = 0;
+ }
+ if (round_up)
+ {
+ /* Round up. */
+ sum[i] =
+ (sum[i]
+ | (((mp_limb_t) 1 << (roundoff_bits % GMP_LIMB_BITS)) - 1))
+ + 1;
+ if (sum[i] == 0)
+ {
+ /* Propagate carry. */
+ while (i < sum_len - 1)
+ {
+ ++i;
+ sum[i] += 1;
+ if (sum[i] != 0)
+ break;
+ }
+ }
+ /* sum[i] is the most significant limb that was
+ incremented. */
+ if (i == sum_len - 1 && (sum[i] & (sum[i] - 1)) == 0)
+ {
+ /* Through the carry, one more bit is needed. */
+ if (sum[i] != 0)
+ sum_bits += 1;
+ else
+ {
+ /* Instead of requiring one more limb of memory,
+ perform a shift by one bit, and adjust the
+ exponent. */
+ sum[i] = (mp_limb_t) 1 << (GMP_LIMB_BITS - 1);
+ e += 1;
+ }
+ /* The bit sequence has the form 1000...000. */
+ keep_bits = 1;
+ }
+ }
+ else
+ {
+ /* Round down. */
+ sum[i] &= ((mp_limb_t) -1 << (roundoff_bits % GMP_LIMB_BITS));
+ if (i == sum_len - 1 && sum[i] == 0)
+ /* The entire sum has become zero. */
+ return L_(0.0);
+ }
+ }
+ }
+ /* The result is
+ (-1)^sign * 2^e * sum
+ and here we know that
+ 2^(sum_bits-1) <= sum < 2^sum_bits,
+ and sum is a multiple of 2^(sum_bits-keep_bits), where
+ 0 < keep_bits <= MANT_BIT and keep_bits <= sum_bits.
+ (If keep_bits was initially 0, the rounding either returned zero
+ or produced a bit sequence of the form 1000...000, setting
+ keep_bits to 1.) */
+ {
+ /* Split the keep_bits bits into chunks of at most 32 bits. */
+ unsigned int chunk_count = (keep_bits - 1) / GMP_LIMB_BITS + 1;
+ /* 1 <= chunk_count <= ceil (sum_bits / GMP_LIMB_BITS) = sum_len. */
+ static const DOUBLE chunk_multiplier = /* 2^-GMP_LIMB_BITS */
+ L_(1.0) / ((DOUBLE) (1 << (GMP_LIMB_BITS / 2))
+ * (DOUBLE) (1 << ((GMP_LIMB_BITS + 1) / 2)));
+ unsigned int shift = sum_bits % GMP_LIMB_BITS;
+ DOUBLE fsum;
+ if (MANT_BIT <= GMP_LIMB_BITS)
+ {
+ /* Since keep_bits <= MANT_BIT <= GMP_LIMB_BITS,
+ chunk_count is 1. No need for a loop. */
+ if (shift == 0)
+ fsum = (DOUBLE) sum[sum_len - 1];
+ else
+ fsum = (DOUBLE)
+ ((sum[sum_len - 1] << (GMP_LIMB_BITS - shift))
+ | (sum_len >= 2 ? sum[sum_len - 2] >> shift : 0));
+ }
+ else
+ {
+ int k;
+ k = chunk_count - 1;
+ if (shift == 0)
+ {
+ /* First loop round. */
+ fsum = (DOUBLE) sum[sum_len - k - 1];
+ /* General loop. */
+ while (--k >= 0)
+ {
+ fsum *= chunk_multiplier;
+ fsum += (DOUBLE) sum[sum_len - k - 1];
+ }
+ }
+ else
+ {
+ /* First loop round. */
+ fsum = (DOUBLE)
+ ((sum[sum_len - k - 1] << (GMP_LIMB_BITS - shift))
+ | (sum_len >= k + 2 ? sum[sum_len - k - 2] >> shift : 0));
+ /* General loop. */
+ while (--k >= 0)
+ {
+ fsum *= chunk_multiplier;
+ fsum += (DOUBLE)
+ ((sum[sum_len - k - 1] << (GMP_LIMB_BITS - shift))
+ | (sum[sum_len - k - 2] >> shift));
+ }
+ }
+ }
+ fsum = LDEXP (fsum, e + (int) sum_bits - GMP_LIMB_BITS);
+ return (sign ? - fsum : fsum);
+ }
+ }
+ }
+ }
+ else
+ return z;
+ }
+ else
+ return (x * y) + z;
+}
--- /dev/null
+/* Fused multiply-add.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2011. */
+
+#define USE_FLOAT
+#include "fma.c"
--- /dev/null
+/* Fused multiply-add.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2011. */
+
+#include <config.h>
+
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+/* Specification. */
+# include <math.h>
+
+long double
+fmal (long double x, long double y, long double z)
+{
+ return fma (x, y, z);
+}
+
+#else
+
+# define USE_LONG_DOUBLE
+# include "fma.c"
+
+#endif
--- /dev/null
+/* Remainder.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+float
+fmodf (float x, float y)
+{
+ return (float) fmod ((double) x, (double) y);
+}
# endif
# endif
# define MEMCHR(S, C, N) memchr (S, C, N)
-# define STRCOLL(S1, S2) strcoll (S1, S2)
# include "fnmatch_loop.c"
# endif
# endif
# define MEMCHR(S, C, N) wmemchr (S, C, N)
-# define STRCOLL(S1, S2) wcscoll (S1, S2)
# define WIDE_CHAR_VERSION 1
# undef IS_CHAR_CLASS
#undef END
#undef MEMPCPY
#undef MEMCHR
-#undef STRCOLL
#undef STRLEN
#undef STRCAT
#undef L_
}
/* Specification. */
-#include <stdio.h>
+/* Write "stdio.h" here, not <stdio.h>, otherwise OSF/1 5.1 DTK cc eliminates
+ this include because of the preliminary #include <stdio.h> above. */
+#include "stdio.h"
#include <errno.h>
#include <fcntl.h>
STREAM must not be wide-character oriented. */
-extern size_t freadahead (FILE *stream);
+extern size_t freadahead (FILE *stream) _GL_ATTRIBUTE_PURE;
#ifdef __cplusplus
}
}
/* Specification. */
-#include <stdio.h>
+/* Write "stdio.h" here, not <stdio.h>, otherwise OSF/1 5.1 DTK cc eliminates
+ this include because of the preliminary #include <stdio.h> above. */
+#include "stdio.h"
#include <string.h>
/* Written by Paolo Bonzini <bonzini@gnu.org>, 2003, and
Bruno Haible <bruno@clisp.org>, 2007. */
-#include <config.h>
+#if ! defined USE_LONG_DOUBLE
+# include <config.h>
+#endif
/* Specification. */
#include <math.h>
--- /dev/null
+/* Split a float into fraction and mantissa.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+float
+frexpf (float x, int *expptr)
+{
+ return (float) frexp ((double) x, expptr);
+}
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
-#define USE_LONG_DOUBLE
-#include "frexp.c"
+#include <config.h>
+
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+/* Specification. */
+# include <math.h>
+
+long double
+frexpl (long double x, int *expptr)
+{
+ return frexp (x, expptr);
+}
+
+#else
+
+# define USE_LONG_DOUBLE
+# include "frexp.c"
+
+#endif
--- /dev/null
+/* fstat() replacement.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* If the user's config.h happens to include <sys/stat.h>, let it include only
+ the system's <sys/stat.h> here, so that orig_fstat doesn't recurse to
+ rpl_fstat. */
+#define __need_system_sys_stat_h
+#include <config.h>
+
+/* Get the original definition of fstat. It might be defined as a macro. */
+#include <sys/types.h>
+#include <sys/stat.h>
+#undef __need_system_sys_stat_h
+
+static inline int
+orig_fstat (int fd, struct stat *buf)
+{
+ return fstat (fd, buf);
+}
+
+/* Specification. */
+/* Write "sys/stat.h" here, not <sys/stat.h>, otherwise OSF/1 5.1 DTK cc
+ eliminates this include because of the preliminary #include <sys/stat.h>
+ above. */
+#include "sys/stat.h"
+
+#include <errno.h>
+#include <unistd.h>
+
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+# include "msvc-inval.h"
+#endif
+
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+static inline int
+fstat_nothrow (int fd, struct stat *buf)
+{
+ int result;
+
+ TRY_MSVC_INVAL
+ {
+ result = orig_fstat (fd, buf);
+ }
+ CATCH_MSVC_INVAL
+ {
+ result = -1;
+ errno = EBADF;
+ }
+ DONE_MSVC_INVAL;
+
+ return result;
+}
+#else
+# define fstat_nothrow orig_fstat
+#endif
+
+int
+rpl_fstat (int fd, struct stat *buf)
+{
+#if REPLACE_FCHDIR && REPLACE_OPEN_DIRECTORY
+ /* Handle the case when rpl_open() used a dummy file descriptor to work
+ around an open() that can't normally visit directories. */
+ const char *name = _gl_directory_name (fd);
+ if (name != NULL)
+ return stat (name, buf);
+#endif
+
+ return fstat_nothrow (fd, buf);
+}
}
#endif
-#include <sys/stat.h>
+/* Write "sys/stat.h" here, not <sys/stat.h>, otherwise OSF/1 5.1 DTK cc
+ eliminates this include because of the preliminary #include <sys/stat.h>
+ above. */
+#include "sys/stat.h"
#include <errno.h>
#include <fcntl.h>
#include <string.h>
-#if HAVE_FSTATAT && !FSTATAT_ZERO_FLAG_BROKEN
+#if HAVE_FSTATAT && HAVE_WORKING_FSTATAT_ZERO_FLAG
# ifndef LSTAT_FOLLOWS_SLASHED_SYMLINK
# define LSTAT_FOLLOWS_SLASHED_SYMLINK 0
return result;
}
-#else /* !HAVE_FSTATAT || FSTATAT_ZERO_FLAG_BROKEN */
+#else /* ! (HAVE_FSTATAT && HAVE_WORKING_FSTATAT_ZERO_FLAG) */
/* On mingw, the gnulib <sys/stat.h> defines `stat' as a function-like
macro; but using it in AT_FUNC_F2 causes compilation failure
then give a diagnostic and exit nonzero.
Otherwise, this function works just like Solaris' fstatat. */
-# if FSTATAT_ZERO_FLAG_BROKEN
-# define AT_FUNC_NAME rpl_fstatat
-# else
-# define AT_FUNC_NAME fstatat
-# endif
+# define AT_FUNC_NAME fstatat
# define AT_FUNC_F1 lstat
# define AT_FUNC_F2 stat_func
# define AT_FUNC_USE_F1_COND AT_SYMLINK_NOFOLLOW
#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-/* _get_osfhandle */
-# include <io.h>
-
/* FlushFileBuffers */
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
# include <errno.h>
+/* Get _get_osfhandle. */
+# include "msvc-nothrow.h"
+
int
fsync (int fd)
{
-/* ftruncate emulations that work on some System V's.
+/* ftruncate emulations for native Windows.
This file is in the public domain. */
#include <config.h>
/* Specification. */
#include <unistd.h>
-#include <sys/types.h>
-#include <fcntl.h>
+#if HAVE_CHSIZE
-#ifdef F_CHSIZE
+# include <errno.h>
+# include <io.h>
-int
-ftruncate (int fd, off_t length)
-{
- return fcntl (fd, F_CHSIZE, length);
-}
-
-#else /* not F_CHSIZE */
-# ifdef F_FREESP
-
-/* By William Kucharski <kucharsk@netcom.com>. */
-
-# include <sys/stat.h>
-# include <errno.h>
-
-int
-ftruncate (int fd, off_t length)
+# if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+# include "msvc-inval.h"
+static inline int
+chsize_nothrow (int fd, long length)
{
- struct flock fl;
- struct stat filebuf;
-
- if (fstat (fd, &filebuf) < 0)
- return -1;
+ int result;
- if (filebuf.st_size < length)
+ TRY_MSVC_INVAL
{
- /* Extend file length. */
- if (lseek (fd, (length - 1), SEEK_SET) < 0)
- return -1;
-
- /* Write a "0" byte. */
- if (write (fd, "", 1) != 1)
- return -1;
+ result = chsize (fd, length);
}
- else
+ CATCH_MSVC_INVAL
{
-
- /* Truncate length. */
-
- fl.l_whence = 0;
- fl.l_len = 0;
- fl.l_start = length;
- fl.l_type = F_WRLCK; /* write lock on file space */
-
- /* This relies on the *undocumented* F_FREESP argument to fcntl,
- which truncates the file so that it ends at the position
- indicated by fl.l_start. Will minor miracles never cease? */
-
- if (fcntl (fd, F_FREESP, &fl) < 0)
- return -1;
+ result = -1;
+ errno = EBADF;
}
+ DONE_MSVC_INVAL;
- return 0;
+ return result;
}
-
-# else /* not F_CHSIZE nor F_FREESP */
-# if HAVE_CHSIZE /* native Windows, e.g. mingw */
+# define chsize chsize_nothrow
+# endif
int
ftruncate (int fd, off_t length)
return chsize (fd, length);
}
-# else /* not F_CHSIZE nor F_FREESP nor HAVE_CHSIZE */
-
-# include <errno.h>
-
-int
-ftruncate (int fd, off_t length)
-{
- errno = EIO;
- return -1;
-}
-
-# endif /* not HAVE_CHSIZE */
-# endif /* not F_FREESP */
-#endif /* not F_CHSIZE */
+#endif
#define ISSET(opt) (sp->fts_options & (opt))
#define SET(opt) (sp->fts_options |= (opt))
-/* FIXME: make this a function */
-#define RESTORE_INITIAL_CWD(sp) \
- (fd_ring_clear (&((sp)->fts_fd_ring)), \
- FCHDIR ((sp), (ISSET (FTS_CWDFD) ? AT_FDCWD : (sp)->fts_rfd)))
-
/* FIXME: FTS_NOCHDIR is now misnamed.
Call it FTS_USE_FULL_RELATIVE_FILE_NAMES instead. */
#define FCHDIR(sp, fd) \
sp->fts_cwd_fd = fd;
}
+/* Restore the initial, pre-traversal, "working directory".
+ In FTS_CWDFD mode, we merely call cwd_advance_fd, otherwise,
+ we may actually change the working directory.
+ Return 0 upon success. Upon failure, set errno and return nonzero. */
+static int
+restore_initial_cwd (FTS *sp)
+{
+ int fail = FCHDIR (sp, ISSET (FTS_CWDFD) ? AT_FDCWD : sp->fts_rfd);
+ fd_ring_clear (&(sp->fts_fd_ring));
+ return fail;
+}
+
/* Open the directory DIR if possible, and return a file
descriptor. Return -1 and set errno on failure. It doesn't matter
whether the file descriptor has read or write access. */
* root.
*/
if (p->fts_level == FTS_ROOTLEVEL) {
- if (RESTORE_INITIAL_CWD(sp)) {
+ if (restore_initial_cwd(sp)) {
SET(FTS_STOP);
return (NULL);
}
* one level, via "..".
*/
if (p->fts_level == FTS_ROOTLEVEL) {
- if (RESTORE_INITIAL_CWD(sp)) {
+ if (restore_initial_cwd(sp)) {
p->fts_errno = errno;
SET(FTS_STOP);
}
*/
if (!continue_readdir && descend && (type == BCHILD || !nitems) &&
(cur->fts_level == FTS_ROOTLEVEL
- ? RESTORE_INITIAL_CWD(sp)
+ ? restore_initial_cwd(sp)
: fts_safe_changedir(sp, cur->fts_parent, -1, ".."))) {
cur->fts_info = FTS_ERR;
SET(FTS_STOP);
}
static size_t
-internal_function
+internal_function _GL_ATTRIBUTE_PURE
fts_maxarglen (char * const *argv)
{
size_t len, max;
/* gc.h --- Header file for implementation agnostic crypto wrapper API.
- * Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008 Simon Josefsson
+ * Copyright (C) 2002-2005, 2007-2008, 2011 Free Software Foundation, Inc.
*
* This file is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published
#include <fcntl.h> /* For AT_FDCWD on Solaris 9. */
-/* If this host provides the openat function, then enable
- code below to make getcwd more efficient and robust. */
-#ifdef HAVE_OPENAT
+/* If this host provides the openat function or if we're using the
+ gnulib replacement function, then enable code below to make getcwd
+ more efficient and robust. */
+#if defined HAVE_OPENAT || defined GNULIB_OPENAT
# define HAVE_OPENAT_SUPPORT 1
#else
# define HAVE_OPENAT_SUPPORT 0
size_t allocated = size;
size_t used;
-#if HAVE_RAW_DECL_GETCWD
+#if HAVE_RAW_DECL_GETCWD && HAVE_MINIMALLY_WORKING_GETCWD
/* If AT_FDCWD is not defined, the algorithm below is O(N**2) and
this is much slower than the system getcwd (at least on
GNU/Linux). So trust the system getcwd's results unless they
Use the system getcwd even if we have openat support, since the
system getcwd works even when a parent is unreadable, while the
- openat-based approach does not. */
+ openat-based approach does not.
+
+ But on AIX 5.1..7.1, the system getcwd is not even minimally
+ working: If the current directory name is slightly longer than
+ PATH_MAX, it omits the first directory component and returns
+ this wrong result with errno = 0. */
# undef getcwd
dir = getcwd (buf, size);
#include <stdio.h>
+#include "msvc-inval.h"
+
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+static inline int
+_setmaxstdio_nothrow (int newmax)
+{
+ int result;
+
+ TRY_MSVC_INVAL
+ {
+ result = _setmaxstdio (newmax);
+ }
+ CATCH_MSVC_INVAL
+ {
+ result = -1;
+ }
+ DONE_MSVC_INVAL;
+
+ return result;
+}
+# define _setmaxstdio _setmaxstdio_nothrow
+#endif
+
/* Cache for the previous getdtablesize () result. */
static int dtablesize;
rpl_getpeername (int fd, struct sockaddr *addr, socklen_t *addrlen)
{
SOCKET sock = FD_TO_SOCKET (fd);
- int r = getpeername (sock, addr, addrlen);
- if (r < 0)
- set_winsock_errno ();
- return r;
+ if (sock == INVALID_SOCKET)
+ {
+ errno = EBADF;
+ return -1;
+ }
+ else
+ {
+ int r = getpeername (sock, addr, addrlen);
+ if (r < 0)
+ set_winsock_errno ();
+
+ return r;
+ }
}
rpl_getsockname (int fd, struct sockaddr *addr, socklen_t *addrlen)
{
SOCKET sock = FD_TO_SOCKET (fd);
- int r = getsockname (sock, addr, addrlen);
- if (r < 0)
- set_winsock_errno ();
- return r;
+ if (sock == INVALID_SOCKET)
+ {
+ errno = EBADF;
+ return -1;
+ }
+ else
+ {
+ int r = getsockname (sock, addr, addrlen);
+ if (r < 0)
+ set_winsock_errno ();
+
+ return r;
+ }
}
int
rpl_getsockopt (int fd, int level, int optname, void *optval, socklen_t *optlen)
{
- int r;
SOCKET sock = FD_TO_SOCKET (fd);
- if (level == SOL_SOCKET && (optname == SO_RCVTIMEO || optname == SO_SNDTIMEO))
+ if (sock == INVALID_SOCKET)
{
- int milliseconds;
- int milliseconds_len = sizeof (int);
- struct timeval tv;
- size_t n;
- r = getsockopt (sock, level, optname, (char *) &milliseconds,
- &milliseconds_len);
- tv.tv_sec = milliseconds / 1000;
- tv.tv_usec = (milliseconds - 1000 * tv.tv_sec) * 1000;
- n = sizeof (struct timeval);
- if (n > *optlen)
- n = *optlen;
- memcpy (optval, &tv, n);
- *optlen = n;
+ errno = EBADF;
+ return -1;
}
else
{
- r = getsockopt (sock, level, optname, optval, optlen);
- }
+ int r;
+
+ if (level == SOL_SOCKET
+ && (optname == SO_RCVTIMEO || optname == SO_SNDTIMEO))
+ {
+ int milliseconds;
+ int milliseconds_len = sizeof (int);
+ struct timeval tv;
+ size_t n;
- if (r < 0)
- set_winsock_errno ();
+ r = getsockopt (sock, level, optname, (char *) &milliseconds,
+ &milliseconds_len);
+ tv.tv_sec = milliseconds / 1000;
+ tv.tv_usec = (milliseconds - 1000 * tv.tv_sec) * 1000;
+ n = sizeof (struct timeval);
+ if (n > *optlen)
+ n = *optlen;
+ memcpy (optval, &tv, n);
+ *optlen = n;
+ }
+ else
+ {
+ r = getsockopt (sock, level, optname, optval, optlen);
+ }
- return r;
+ if (r < 0)
+ set_winsock_errno ();
+
+ return r;
+ }
}
#include <string.h>
#define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \
- (((__GNUC__ >= 3 || __GNUG__ >= 2) && !__STRICT_ANSI__) \
+ (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \
/* || __STDC_VERSION__ >= 199901L */ )
#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
# define __stat64(fname, buf) stat (fname, buf)
# define __fxstatat64(_, d, f, st, flag) fstatat (d, f, st, flag)
# define struct_stat64 struct stat
-# define __stat(fname, buf) stat (fname, buf)
# define __alloca alloca
# define __readdir readdir
-# define __readdir64 readdir64
# define __glob_pattern_p glob_pattern_p
#endif /* _LIBC */
#if USE_WIN32_THREADS
+# define WIN32_LEAN_AND_MEAN /* avoid including junk */
# include <windows.h>
# ifdef __cplusplus
#if USE_WIN32_THREADS
+# define WIN32_LEAN_AND_MEAN /* avoid including junk */
# include <windows.h>
# ifdef __cplusplus
#if USE_WIN32_THREADS
+# define WIN32_LEAN_AND_MEAN /* avoid including junk */
# include <windows.h>
# ifdef __cplusplus
#if USE_WIN32_THREADS
+# define WIN32_LEAN_AND_MEAN /* avoid including junk */
# include <windows.h>
/* ------------------------- gl_tls_key_t datatype ------------------------- */
#if USE_WIN32_THREADS
+# define WIN32_LEAN_AND_MEAN /* avoid including junk */
# include <windows.h>
# ifdef __cplusplus
#include <assert.h>
#include <errno.h>
+#include <fcntl.h>
#include <string.h>
#include <sys/wait.h>
#include <unistd.h>
int
grantpt (int fd)
{
+#if defined __OpenBSD__
+ /* On OpenBSD, master and slave of a pseudo-terminal are allocated together,
+ through an ioctl on /dev/ptm. There is no need for grantpt(). */
+ if (fcntl (fd, F_GETFD) < 0)
+ return -1;
+ return 0;
+#else
/* This function is most often called from a process without 'root'
credentials. Use the helper program. */
int retval = -1;
{
/* This is executed in the child process. */
-#if HAVE_SETRLIMIT && defined RLIMIT_CORE
+# if HAVE_SETRLIMIT && defined RLIMIT_CORE
/* Disable core dumps. */
struct rlimit rl = { 0, 0 };
__setrlimit (RLIMIT_CORE, &rl);
-#endif
+# endif
/* We pass the master pseudo terminal as file descriptor PTY_FILENO. */
if (fd != PTY_FILENO)
if (__dup2 (fd, PTY_FILENO) < 0)
_exit (FAIL_EBADF);
-#ifdef CLOSE_ALL_FDS
+# ifdef CLOSE_ALL_FDS
CLOSE_ALL_FDS ();
-#endif
+# endif
execle (_PATH_PT_CHOWN, strrchr (_PATH_PT_CHOWN, '/') + 1, NULL, NULL);
_exit (FAIL_EXEC);
cleanup:
return retval;
+#endif
}
and return the hash code modulo TABLESIZE.
The result is platform dependent: it depends on the size of the 'size_t'
type and on the signedness of the 'char' type. */
-extern size_t hash_pjw (void const *x, size_t tablesize);
+extern size_t hash_pjw (void const *x, size_t tablesize) _GL_ATTRIBUTE_PURE;
dev_t st_dev;
};
-extern size_t triple_hash (void const *x, size_t table_size);
-extern size_t triple_hash_no_name (void const *x, size_t table_size);
+extern size_t triple_hash (void const *x, size_t table_size) _GL_ATTRIBUTE_PURE;
+extern size_t triple_hash_no_name (void const *x, size_t table_size)
+ _GL_ATTRIBUTE_PURE;
extern bool triple_compare (void const *x, void const *y);
-extern bool triple_compare_ino_str (void const *x, void const *y);
+extern bool triple_compare_ino_str (void const *x, void const *y)
+ _GL_ATTRIBUTE_PURE;
extern void triple_free (void *x);
#endif
1.0). The growth threshold defaults to 0.8, and the growth factor
defaults to 1.414, meaning that the table will have doubled its size
every second time 80% of the buckets get used. */
-#define DEFAULT_GROWTH_THRESHOLD 0.8
-#define DEFAULT_GROWTH_FACTOR 1.414
+#define DEFAULT_GROWTH_THRESHOLD 0.8f
+#define DEFAULT_GROWTH_FACTOR 1.414f
/* If a deletion empties a bucket and causes the ratio of used buckets to
table size to become smaller than the shrink threshold (a number between
number greater than the shrink threshold but smaller than 1.0). The shrink
threshold and factor default to 0.0 and 1.0, meaning that the table never
shrinks. */
-#define DEFAULT_SHRINK_THRESHOLD 0.0
-#define DEFAULT_SHRINK_FACTOR 1.0
+#define DEFAULT_SHRINK_THRESHOLD 0.0f
+#define DEFAULT_SHRINK_FACTOR 1.0f
/* Use this to initialize or reset a TUNING structure to
some sensible values. */
/* Return true if CANDIDATE is a prime number. CANDIDATE should be an odd
number at least equal to 11. */
-static bool
+static bool _GL_ATTRIBUTE_CONST
is_prime (size_t candidate)
{
size_t divisor = 3;
/* Round a given CANDIDATE number up to the nearest prime, and return that
prime. Primes lower than 10 are merely skipped. */
-static size_t
+static size_t _GL_ATTRIBUTE_CONST
next_prime (size_t candidate)
{
/* Skip small primes. */
TUNING, or return 0 if there is no possible way to allocate that
many entries. */
-static size_t
+static size_t _GL_ATTRIBUTE_PURE
compute_bucket_size (size_t candidate, const Hash_tuning *tuning)
{
if (!tuning->is_n_buckets)
return false;
}
-/* Return -1 upon memory allocation failure.
+/* Insert ENTRY into hash TABLE if there is not already a matching entry.
+
+ Return -1 upon memory allocation failure.
Return 1 if insertion succeeded.
Return 0 if there is already a matching entry in the table,
and in that case, if MATCHED_ENT is non-NULL, set *MATCHED_ENT
hash_insert, the only way to distinguish those cases is to compare
the return value and ENTRY. That works only when you can have two
different ENTRY values that point to data that compares "equal". Thus,
- when the ENTRY value is a simple scalar, you must use hash_insert0.
- ENTRY must not be NULL. */
+ when the ENTRY value is a simple scalar, you must use
+ hash_insert_if_absent. ENTRY must not be NULL. */
int
-hash_insert0 (Hash_table *table, void const *entry, void const **matched_ent)
+hash_insert_if_absent (Hash_table *table, void const *entry,
+ void const **matched_ent)
{
void *data;
struct hash_entry *bucket;
return 1;
}
+/* hash_insert0 is the deprecated name for hash_insert_if_absent.
+ . */
+int
+hash_insert0 (Hash_table *table, void const *entry, void const **matched_ent)
+{
+ return hash_insert_if_absent (table, entry, matched_ent);
+}
+
/* If ENTRY matches an entry already in the hash table, return the pointer
to the entry from the table. Otherwise, insert ENTRY and return ENTRY.
Return NULL if the storage required for insertion cannot be allocated.
hash_insert (Hash_table *table, void const *entry)
{
void const *matched_ent;
- int err = hash_insert0 (table, entry, &matched_ent);
+ int err = hash_insert_if_absent (table, entry, &matched_ent);
return (err == -1
? NULL
: (void *) (err == 0 ? matched_ent : entry));
# define _GL_ATTRIBUTE_WUR /* empty */
# endif
+# ifndef _GL_ATTRIBUTE_DEPRECATED
+/* The __attribute__((__deprecated__)) feature
+ is available in gcc versions 3.1 and newer. */
+# if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 1)
+# define _GL_ATTRIBUTE_DEPRECATED /* empty */
+# else
+# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__))
+# endif
+# endif
+
typedef size_t (*Hash_hasher) (const void *, size_t);
typedef bool (*Hash_comparator) (const void *, const void *);
typedef void (*Hash_data_freer) (void *);
typedef struct hash_table Hash_table;
/* Information and lookup. */
-size_t hash_get_n_buckets (const Hash_table *);
-size_t hash_get_n_buckets_used (const Hash_table *);
-size_t hash_get_n_entries (const Hash_table *);
-size_t hash_get_max_bucket_length (const Hash_table *);
-bool hash_table_ok (const Hash_table *);
+size_t hash_get_n_buckets (const Hash_table *) _GL_ATTRIBUTE_PURE;
+size_t hash_get_n_buckets_used (const Hash_table *) _GL_ATTRIBUTE_PURE;
+size_t hash_get_n_entries (const Hash_table *) _GL_ATTRIBUTE_PURE;
+size_t hash_get_max_bucket_length (const Hash_table *) _GL_ATTRIBUTE_PURE;
+bool hash_table_ok (const Hash_table *) _GL_ATTRIBUTE_PURE;
void hash_print_statistics (const Hash_table *, FILE *);
void *hash_lookup (const Hash_table *, const void *);
/* Walking. */
-void *hash_get_first (const Hash_table *);
+void *hash_get_first (const Hash_table *) _GL_ATTRIBUTE_PURE;
void *hash_get_next (const Hash_table *, const void *);
size_t hash_get_entries (const Hash_table *, void **, size_t);
size_t hash_do_for_each (const Hash_table *, Hash_processor, void *);
/* Allocation and clean-up. */
-size_t hash_string (const char *, size_t);
+size_t hash_string (const char *, size_t) _GL_ATTRIBUTE_PURE;
void hash_reset_tuning (Hash_tuning *);
Hash_table *hash_initialize (size_t, const Hash_tuning *,
Hash_hasher, Hash_comparator,
/* Insertion and deletion. */
bool hash_rehash (Hash_table *, size_t) _GL_ATTRIBUTE_WUR;
void *hash_insert (Hash_table *, const void *) _GL_ATTRIBUTE_WUR;
-int hash_insert0 (Hash_table *table, const void *entry,
- const void **matched_ent);
+
+/* Deprecate this interface. It has been renamed to hash_insert_if_absent. */
+int hash_insert0 (Hash_table *table, /* FIXME: remove in 2013 */
+ const void *entry,
+ const void **matched_ent) _GL_ATTRIBUTE_DEPRECATED;
+int hash_insert_if_absent (Hash_table *table, const void *entry,
+ const void **matched_ent);
void *hash_delete (Hash_table *, const void *);
#endif
void i_ring_init (I_ring *ir, int ir_default_val);
int i_ring_push (I_ring *ir, int val);
int i_ring_pop (I_ring *ir);
-bool i_ring_empty (I_ring const *ir);
+bool i_ring_empty (I_ring const *ir) _GL_ATTRIBUTE_PURE;
/* Specification. */
#include <arpa/inet.h>
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
+#if HAVE_DECL_INET_NTOP
-#define NS_IN6ADDRSZ 16
-#define NS_INT16SZ 2
+# undef inet_ntop
+
+const char *
+rpl_inet_ntop (int af, const void *restrict src,
+ char *restrict dst, socklen_t cnt)
+{
+ return inet_ntop (af, src, dst, cnt);
+}
+
+#else
+
+# include <stdio.h>
+# include <string.h>
+# include <errno.h>
+
+# define NS_IN6ADDRSZ 16
+# define NS_INT16SZ 2
/*
* WARNING: Don't even consider trying to compile this on a system where
typedef int verify_int_size[4 <= sizeof (int) ? 1 : -1];
static const char *inet_ntop4 (const unsigned char *src, char *dst, socklen_t size);
-#if HAVE_IPV6
+# if HAVE_IPV6
static const char *inet_ntop6 (const unsigned char *src, char *dst, socklen_t size);
-#endif
+# endif
/* char *
{
switch (af)
{
-#if HAVE_IPV4
+# if HAVE_IPV4
case AF_INET:
return (inet_ntop4 (src, dst, cnt));
-#endif
+# endif
-#if HAVE_IPV6
+# if HAVE_IPV6
case AF_INET6:
return (inet_ntop6 (src, dst, cnt));
-#endif
+# endif
default:
errno = EAFNOSUPPORT;
return strcpy (dst, tmp);
}
-#if HAVE_IPV6
+# if HAVE_IPV6
/* const char *
* inet_ntop6(src, dst, size)
return strcpy (dst, tmp);
}
+# endif
+
#endif
/* Specification. */
#include <arpa/inet.h>
-#include <c-ctype.h>
-#include <string.h>
-#include <errno.h>
+#if HAVE_DECL_INET_PTON
-#define NS_INADDRSZ 4
-#define NS_IN6ADDRSZ 16
-#define NS_INT16SZ 2
+# undef inet_pton
+
+int
+rpl_inet_pton (int af, const char *restrict src, void *restrict dst)
+{
+ return inet_pton (af, src, dst);
+}
+
+#else
+
+# include <c-ctype.h>
+# include <string.h>
+# include <errno.h>
+
+# define NS_INADDRSZ 4
+# define NS_IN6ADDRSZ 16
+# define NS_INT16SZ 2
/*
* WARNING: Don't even consider trying to compile this on a system where
*/
static int inet_pton4 (const char *src, unsigned char *dst);
-#if HAVE_IPV6
+# if HAVE_IPV6
static int inet_pton6 (const char *src, unsigned char *dst);
-#endif
+# endif
/* int
* inet_pton(af, src, dst)
case AF_INET:
return (inet_pton4 (src, dst));
-#if HAVE_IPV6
+# if HAVE_IPV6
case AF_INET6:
return (inet_pton6 (src, dst));
-#endif
+# endif
default:
errno = EAFNOSUPPORT;
return (1);
}
-#if HAVE_IPV6
+# if HAVE_IPV6
/* int
* inet_pton6(src, dst)
memcpy (dst, tmp, NS_IN6ADDRSZ);
return (1);
}
+
+# endif
+
#endif
--- /dev/null
+/* integer_length - find most significant bit in an 'unsigned int'.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2011. */
+
+#include <config.h>
+
+/* Specification. */
+#include "integer_length.h"
+
+#include <limits.h>
+
+#include "float+.h"
+
+#define NBITS (sizeof (unsigned int) * CHAR_BIT)
+
+int
+integer_length (unsigned int x)
+{
+#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+ if (x == 0)
+ return 0;
+ else
+ return NBITS - __builtin_clz (x);
+#else
+# if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT
+ if (NBITS <= DBL_MANT_BIT)
+ {
+ /* Use 'double' operations.
+ Assumes an IEEE 754 'double' implementation. */
+# define DBL_EXP_MASK ((DBL_MAX_EXP - DBL_MIN_EXP) | 7)
+# define DBL_EXP_BIAS (DBL_EXP_MASK / 2 - 1)
+# define NWORDS \
+ ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+ typedef union { double value; unsigned int word[NWORDS]; }
+ memory_double;
+
+ if (x == 0)
+ return 0;
+ else
+ {
+ memory_double m;
+ unsigned int exponent;
+
+ if (1)
+ {
+ /* Use a single integer to floating-point conversion. */
+ m.value = x;
+ }
+ else
+ {
+ /* Use a single floating-point subtraction. */
+ /* 2^(DBL_MANT_DIG-1). */
+ static const double TWO_DBL_MANT_DIG =
+ /* Assume DBL_MANT_DIG <= 5 * 31.
+ Use the identity
+ n = floor(n/5) + floor((n+1)/5) + ... + floor((n+4)/5). */
+ (double) (1U << ((DBL_MANT_DIG - 1) / 5))
+ * (double) (1U << ((DBL_MANT_DIG - 1 + 1) / 5))
+ * (double) (1U << ((DBL_MANT_DIG - 1 + 2) / 5))
+ * (double) (1U << ((DBL_MANT_DIG - 1 + 3) / 5))
+ * (double) (1U << ((DBL_MANT_DIG - 1 + 4) / 5));
+
+ /* Construct 2^(DBL_MANT_DIG-1) + x by hand. */
+ m.word[DBL_EXPBIT0_WORD] =
+ (DBL_MANT_DIG + DBL_EXP_BIAS) << DBL_EXPBIT0_BIT;
+ m.word[1 - DBL_EXPBIT0_WORD] = x;
+
+ /* Subtract 2^(DBL_MANT_DIG-1). */
+ m.value = m.value - TWO_DBL_MANT_DIG;
+ }
+
+ exponent =
+ (m.word[DBL_EXPBIT0_WORD] >> DBL_EXPBIT0_BIT) & DBL_EXP_MASK;
+ return exponent - DBL_EXP_BIAS;
+ }
+ }
+ else
+# endif
+ if (NBITS == 32)
+ {
+ /* 6 comparisons. */
+ if (x != 0)
+ {
+ int result = 1;
+ if (x >= 0x10000)
+ {
+ x = x >> 16;
+ result += 16;
+ }
+ if (x >= 0x100)
+ {
+ x = x >> 8;
+ result += 8;
+ }
+ if (x >= 0x10)
+ {
+ x = x >> 4;
+ result += 4;
+ }
+ if (x >= 0x4)
+ {
+ x = x >> 2;
+ result += 2;
+ }
+ if (x >= 0x2)
+ {
+ x = x >> 1;
+ result += 1;
+ }
+ return result;
+ }
+ else
+ return 0;
+ }
+ else
+ {
+ /* Naive loop.
+ Works for any value of NBITS. */
+ int j;
+
+ for (j = NBITS - 1; j >= 0; j--)
+ if (x & (1U << j))
+ return j + 1;
+ return 0;
+ }
+#endif
+}
--- /dev/null
+/* integer_length - find most significant bit in an unsigned integer.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2011. */
+
+#ifndef _INTEGER_LENGTH_H
+#define _INTEGER_LENGTH_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* These functions return the minimum number of bits required to represent
+ the given unsigned integer.
+ For non-zero values, this is the position of the most significant bit
+ that is set, plus one. For zero, it is 0. */
+
+/* Returns the integer length of x.
+ The result is >= 0, <= sizeof (unsigned int) * CHAR_BIT. */
+extern int integer_length (unsigned int x);
+
+/* Returns the integer length of x.
+ The result is >= 0, <= sizeof (unsigned long) * CHAR_BIT. */
+extern int integer_length_l (unsigned long x);
+
+#if HAVE_UNSIGNED_LONG_LONG_INT
+/* Returns the integer length of x.
+ The result is >= 0, <= sizeof (unsigned long long) * CHAR_BIT. */
+extern int integer_length_ll (unsigned long long x);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _INTEGER_LENGTH_H */
--- /dev/null
+/* integer_length_l - find most significant bit in an 'unsigned long'.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2011. */
+
+#include <config.h>
+
+/* Specification. */
+#include "integer_length.h"
+
+#include <limits.h>
+#include <stddef.h>
+
+#undef MIN
+#define MIN(a,b) ((a) < (b) ? (a) : (b))
+
+#ifdef USE_LONG_LONG
+# define FUNC integer_length_ll
+# define TYPE unsigned long long
+# define GCC_BUILTIN __builtin_clzll
+#else
+# define FUNC integer_length_l
+# define TYPE unsigned long
+# define GCC_BUILTIN __builtin_clzl
+#endif
+
+#define NBITS (sizeof (TYPE) * CHAR_BIT)
+
+/* Modify shift count to be in bounds, even in dead code, otherwise GCC
+ emits warnings "right shift count >= width of type". */
+#define MSC(i) MIN (i, NBITS - 1)
+
+int
+FUNC (TYPE x)
+{
+#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+ if (x == 0)
+ return 0;
+ else
+ return NBITS - GCC_BUILTIN (x);
+#else
+ /* Split x into chunks, and look at one chunk after the other. */
+ if (sizeof (TYPE) > 2 * sizeof (unsigned int))
+ {
+ /* Generic loop. */
+ size_t i;
+
+ for (i = (sizeof (TYPE) - 1) / sizeof (unsigned int); i >= 2; i--)
+ {
+ unsigned int y = x >> (i * sizeof (unsigned int) * CHAR_BIT);
+ if (y != 0)
+ return i * sizeof (unsigned int) * CHAR_BIT + integer_length (y);
+ }
+ }
+
+ /* Unrolled the last 2 loop rounds. */
+ /* i = 1 */
+ if (sizeof (TYPE) > 1 * sizeof (unsigned int))
+ {
+ unsigned int y = x >> MSC (1 * sizeof (unsigned int) * CHAR_BIT);
+ if (y != 0)
+ return 1 * sizeof (unsigned int) * CHAR_BIT + integer_length (y);
+ }
+
+ /* i = 0 */
+ return integer_length ((unsigned int) x);
+#endif
+}
--- /dev/null
+/* integer_length_ll - find most significant bit in an 'unsigned long long'.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2011. */
+
+#define USE_LONG_LONG
+#include "integer_length_l.c"
#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
/* Windows platforms. */
-/* Get _get_osfhandle. */
-# include <io.h>
-
/* Get GetFileType. */
# include <windows.h>
+/* Get _get_osfhandle. */
+# include "msvc-nothrow.h"
+
int
isapipe (int fd)
{
/* Specification. */
#ifdef USE_LONG_DOUBLE
/* Specification found in math.h or isnanl-nolibm.h. */
-extern int rpl_isnanl (long double x);
+extern int rpl_isnanl (long double x) _GL_ATTRIBUTE_CONST;
#elif ! defined USE_FLOAT
/* Specification found in math.h or isnand-nolibm.h. */
extern int rpl_isnand (double x);
FUNC (DOUBLE x)
{
#ifdef KNOWN_EXPBIT0_LOCATION
-# if defined USE_LONG_DOUBLE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+# if defined USE_LONG_DOUBLE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
/* Special CPU dependent code is needed to treat bit patterns outside the
IEEE 754 specification (such as Pseudo-NaNs, Pseudo-Infinities,
Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals) as NaNs.
# else
/* Be careful to not do any floating-point operation on x, such as x == x,
because x may be a signaling NaN. */
-# if defined __TINYC__ || defined __SUNPRO_C || defined __DECC \
- || (defined __sgi && !defined __GNUC__) || defined __ICC
- /* The Sun C 5.0, Intel ICC 10.0, and Compaq (ex-DEC) 6.4 compilers don't
- recognize the initializers as constant expressions. The latter compiler
- also fails when constant-folding 0.0 / 0.0 even when constant-folding is
- not required. The SGI MIPSpro C compiler complains about "floating-point
- operation result is out of range". */
+# if defined __SUNPRO_C || defined __ICC || defined _MSC_VER \
+ || defined __DECC || defined __TINYC__ \
+ || (defined __sgi && !defined __GNUC__)
+ /* The Sun C 5.0, Intel ICC 10.0, Microsoft Visual C/C++ 9.0, Compaq (ex-DEC)
+ 6.4, and TinyCC compilers don't recognize the initializers as constant
+ expressions. The Compaq compiler also fails when constant-folding
+ 0.0 / 0.0 even when constant-folding is not required. The Microsoft
+ Visual C/C++ compiler also fails when constant-folding 1.0 / 0.0 even
+ when constant-folding is not required. The SGI MIPSpro C compiler
+ complains about "floating-point operation result is out of range". */
static DOUBLE zero = L_(0.0);
memory_double nan;
- DOUBLE plus_inf = L_(1.0) / L_(0.0);
- DOUBLE minus_inf = -L_(1.0) / L_(0.0);
+ DOUBLE plus_inf = L_(1.0) / zero;
+ DOUBLE minus_inf = -L_(1.0) / zero;
nan.value = zero / zero;
# else
static memory_double nan = { L_(0.0) / L_(0.0) };
the signaling NaNs, handle only the quiet NaNs. */
if (x == x)
{
-# if defined USE_LONG_DOUBLE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+# if defined USE_LONG_DOUBLE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
/* Detect any special bit patterns that pass ==; see comment above. */
memory_double m1;
memory_double m2;
--- /dev/null
+/* Replacement for 'int' to 'long double' conversion routine.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2011.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <float.h>
+
+void
+_Qp_itoq (long double *result, int a)
+{
+ /* Convert from 'int' to 'double', then from 'double' to 'long double'. */
+ *result = (double) a;
+}
--- /dev/null
+/* Multiply a 'float' by a power of 2.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+/* Avoid some warnings from "gcc -Wshadow".
+ This file doesn't use the exp() function. */
+#undef exp
+#define exp exponent
+
+float
+ldexpf (float x, int exp)
+{
+ return (float) ldexp ((double) x, exp);
+}
/* Specification. */
#include <math.h>
-#include <float.h>
-#include "fpucw.h"
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+long double
+ldexpl (long double x, int exp)
+{
+ return ldexp (x, exp);
+}
+
+#else
+
+# include <float.h>
+# include "fpucw.h"
long double
ldexpl (long double x, int exp)
return x;
}
+#endif
+
#if 0
int
main (void)
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
-#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
rpl_listen (int fd, int backlog)
{
SOCKET sock = FD_TO_SOCKET (fd);
- int r = listen (sock, backlog);
- if (r < 0)
- set_winsock_errno ();
- return r;
+ if (sock == INVALID_SOCKET)
+ {
+ errno = EBADF;
+ return -1;
+ }
+ else
+ {
+ int r = listen (sock, backlog);
+ if (r < 0)
+ set_winsock_errno ();
+
+ return r;
+ }
}
--- /dev/null
+/* Base 10 logarithmic function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+float
+log10f (float x)
+{
+ return (float) log10 ((double) x);
+}
--- /dev/null
+/* Natural logarithmic function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+float
+logf (float x)
+{
+ return (float) log ((double) x);
+}
/* Specification. */
#include <math.h>
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+long double
+logl (long double x)
+{
+ return log (x);
+}
+
+#else
+
/* logll.c
*
* Natural logarithm for 128-bit long double precision.
-2.7902661731604211834685052867305795169688E-4L,
-1.2335696813916860754951146082826952093496E-4L,
-3.0677461025892873184042490943581654591817E-5L,
-#define ZERO logtbl[38]
+# define ZERO logtbl[38]
0.0000000000000000000000000000000000000000E0L,
-3.0359557945051052537099938863236321874198E-5L,
-1.2081346403474584914595395755316412213151E-4L,
y += e * ln2a;
return y;
}
+
+#endif
/* Windows platforms. */
/* Get GetFileType. */
# include <windows.h>
+/* Get _get_osfhandle. */
+# include "msvc-nothrow.h"
#else
# include <sys/stat.h>
#endif
}
/* Specification. */
-# include <sys/stat.h>
+/* Write "sys/stat.h" here, not <sys/stat.h>, otherwise OSF/1 5.1 DTK cc
+ eliminates this include because of the preliminary #include <sys/stat.h>
+ above. */
+# include "sys/stat.h"
# include <string.h>
# include <errno.h>
/* The definition of _GL_WARN_ON_USE is copied here. */
+#ifdef __cplusplus
+/* Helper macros to define type-generic function FUNC as overloaded functions,
+ rather than as macros like in C. POSIX declares these with an argument of
+ real-floating (that is, one of float, double, or long double). */
+# define _GL_MATH_CXX_REAL_FLOATING_DECL_1(func) \
+static inline int \
+_gl_cxx_ ## func ## f (float f) \
+{ \
+ return func (f); \
+} \
+static inline int \
+_gl_cxx_ ## func ## d (double d) \
+{ \
+ return func (d); \
+} \
+static inline int \
+_gl_cxx_ ## func ## l (long double l) \
+{ \
+ return func (l); \
+}
+# define _GL_MATH_CXX_REAL_FLOATING_DECL_2(func) \
+inline int \
+func (float f) \
+{ \
+ return _gl_cxx_ ## func ## f (f); \
+} \
+inline int \
+func (double d) \
+{ \
+ return _gl_cxx_ ## func ## d (d); \
+} \
+inline int \
+func (long double l) \
+{ \
+ return _gl_cxx_ ## func ## l (l); \
+}
+#endif
+
/* Helper macros to define a portability warning for the
classification macro FUNC called with VALUE. POSIX declares the
classification macros with an argument of real-floating (that is,
: rpl_ ## func ## l (value))
+#if @REPLACE_ITOLD@
+/* Pull in a function that fixes the 'int' to 'long double' conversion
+ of glibc 2.7. */
+_GL_EXTERN_C void _Qp_itoq (long double *, int);
+static void (*_gl_math_fix_itold) (long double *, int) = _Qp_itoq;
+#endif
+
+
/* POSIX allows platforms that don't support NAN. But all major
machines in the past 15 years have supported something close to
IEEE NaN, so we define this unconditionally. We also must define
#if !defined NAN || @REPLACE_NAN@
# if !GNULIB_defined_NAN
# undef NAN
- /* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0. */
-# ifdef __DECC
+ /* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler
+ choke on the expression 0.0 / 0.0. */
+# if defined __DECC || defined _MSC_VER
static float
_NaN ()
{
#endif
-/* Write x as
- x = mantissa * 2^exp
- where
- If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
- If x is zero: mantissa = x, exp = 0.
- If x is infinite or NaN: mantissa = x, exp unspecified.
- Store exp in *EXPPTR and return mantissa. */
-#if @GNULIB_FREXP@
-# if @REPLACE_FREXP@
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-# define frexp rpl_frexp
-# endif
-_GL_FUNCDECL_RPL (frexp, double, (double x, int *expptr) _GL_ARG_NONNULL ((2)));
-_GL_CXXALIAS_RPL (frexp, double, (double x, int *expptr));
-# else
-_GL_CXXALIAS_SYS (frexp, double, (double x, int *expptr));
+#if @GNULIB_ACOSF@
+# if !@HAVE_ACOSF@
+# undef acosf
+_GL_FUNCDECL_SYS (acosf, float, (float x));
# endif
-_GL_CXXALIASWARN (frexp);
+_GL_CXXALIAS_SYS (acosf, float, (float x));
+_GL_CXXALIASWARN (acosf);
#elif defined GNULIB_POSIXCHECK
-# undef frexp
-/* Assume frexp is always declared. */
-_GL_WARN_ON_USE (frexp, "frexp is unportable - "
- "use gnulib module frexp for portability");
-#endif
-
-
-#if @GNULIB_LOGB@
-# if !@HAVE_DECL_LOGB@
-_GL_EXTERN_C double logb (double x);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef logb
-# if HAVE_RAW_DECL_LOGB
-_GL_WARN_ON_USE (logb, "logb is unportable - "
- "use gnulib module logb for portability");
+# undef acosf
+# if HAVE_RAW_DECL_ACOSF
+_GL_WARN_ON_USE (acosf, "acosf is unportable - "
+ "use gnulib module acosf for portability");
# endif
#endif
-
#if @GNULIB_ACOSL@
# if !@HAVE_ACOSL@ || !@HAVE_DECL_ACOSL@
_GL_FUNCDECL_SYS (acosl, long double, (long double x));
#endif
+#if @GNULIB_ASINF@
+# if !@HAVE_ASINF@
+# undef asinf
+_GL_FUNCDECL_SYS (asinf, float, (float x));
+# endif
+_GL_CXXALIAS_SYS (asinf, float, (float x));
+_GL_CXXALIASWARN (asinf);
+#elif defined GNULIB_POSIXCHECK
+# undef asinf
+# if HAVE_RAW_DECL_ASINF
+_GL_WARN_ON_USE (asinf, "asinf is unportable - "
+ "use gnulib module asinf for portability");
+# endif
+#endif
+
#if @GNULIB_ASINL@
# if !@HAVE_ASINL@ || !@HAVE_DECL_ASINL@
_GL_FUNCDECL_SYS (asinl, long double, (long double x));
#endif
+#if @GNULIB_ATANF@
+# if !@HAVE_ATANF@
+# undef atanf
+_GL_FUNCDECL_SYS (atanf, float, (float x));
+# endif
+_GL_CXXALIAS_SYS (atanf, float, (float x));
+_GL_CXXALIASWARN (atanf);
+#elif defined GNULIB_POSIXCHECK
+# undef atanf
+# if HAVE_RAW_DECL_ATANF
+_GL_WARN_ON_USE (atanf, "atanf is unportable - "
+ "use gnulib module atanf for portability");
+# endif
+#endif
+
#if @GNULIB_ATANL@
# if !@HAVE_ATANL@ || !@HAVE_DECL_ATANL@
_GL_FUNCDECL_SYS (atanl, long double, (long double x));
#endif
+#if @GNULIB_ATAN2F@
+# if !@HAVE_ATAN2F@
+# undef atan2f
+_GL_FUNCDECL_SYS (atan2f, float, (float y, float x));
+# endif
+_GL_CXXALIAS_SYS (atan2f, float, (float y, float x));
+_GL_CXXALIASWARN (atan2f);
+#elif defined GNULIB_POSIXCHECK
+# undef atan2f
+# if HAVE_RAW_DECL_ATAN2F
+_GL_WARN_ON_USE (atan2f, "atan2f is unportable - "
+ "use gnulib module atan2f for portability");
+# endif
+#endif
+
+
#if @GNULIB_CEILF@
# if @REPLACE_CEILF@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef ceilf
# define ceilf rpl_ceilf
# endif
_GL_FUNCDECL_RPL (ceilf, float, (float x));
#if @GNULIB_CEILL@
# if @REPLACE_CEILL@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef ceill
# define ceill rpl_ceill
# endif
_GL_FUNCDECL_RPL (ceill, long double, (long double x));
#endif
+#if @GNULIB_COPYSIGNF@
+# if !@HAVE_COPYSIGNF@
+_GL_FUNCDECL_SYS (copysignf, float, (float x, float y));
+# endif
+_GL_CXXALIAS_SYS (copysignf, float, (float x, float y));
+_GL_CXXALIASWARN (copysignf);
+#elif defined GNULIB_POSIXCHECK
+# undef copysignf
+# if HAVE_RAW_DECL_COPYSIGNF
+_GL_WARN_ON_USE (copysignf, "copysignf is unportable - "
+ "use gnulib module copysignf for portability");
+# endif
+#endif
+
+#if @GNULIB_COPYSIGN@
+# if !@HAVE_COPYSIGN@
+_GL_FUNCDECL_SYS (copysign, double, (double x, double y));
+# endif
+_GL_CXXALIAS_SYS (copysign, double, (double x, double y));
+_GL_CXXALIASWARN (copysign);
+#elif defined GNULIB_POSIXCHECK
+# undef copysign
+# if HAVE_RAW_DECL_COPYSIGN
+_GL_WARN_ON_USE (copysign, "copysign is unportable - "
+ "use gnulib module copysign for portability");
+# endif
+#endif
+
+#if @GNULIB_COPYSIGNL@
+# if !@HAVE_COPYSIGNL@
+_GL_FUNCDECL_SYS (copysignl, long double, (long double x, long double y));
+# endif
+_GL_CXXALIAS_SYS (copysignl, long double, (long double x, long double y));
+_GL_CXXALIASWARN (copysignl);
+#elif defined GNULIB_POSIXCHECK
+# undef copysignl
+# if HAVE_RAW_DECL_COPYSIGNL
+_GL_WARN_ON_USE (copysign, "copysignl is unportable - "
+ "use gnulib module copysignl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_COSF@
+# if !@HAVE_COSF@
+# undef cosf
+_GL_FUNCDECL_SYS (cosf, float, (float x));
+# endif
+_GL_CXXALIAS_SYS (cosf, float, (float x));
+_GL_CXXALIASWARN (cosf);
+#elif defined GNULIB_POSIXCHECK
+# undef cosf
+# if HAVE_RAW_DECL_COSF
+_GL_WARN_ON_USE (cosf, "cosf is unportable - "
+ "use gnulib module cosf for portability");
+# endif
+#endif
+
#if @GNULIB_COSL@
# if !@HAVE_COSL@ || !@HAVE_DECL_COSL@
_GL_FUNCDECL_SYS (cosl, long double, (long double x));
#endif
+#if @GNULIB_COSHF@
+# if !@HAVE_COSHF@
+# undef coshf
+_GL_FUNCDECL_SYS (coshf, float, (float x));
+# endif
+_GL_CXXALIAS_SYS (coshf, float, (float x));
+_GL_CXXALIASWARN (coshf);
+#elif defined GNULIB_POSIXCHECK
+# undef coshf
+# if HAVE_RAW_DECL_COSHF
+_GL_WARN_ON_USE (coshf, "coshf is unportable - "
+ "use gnulib module coshf for portability");
+# endif
+#endif
+
+
+#if @GNULIB_EXPF@
+# if !@HAVE_EXPF@
+# undef expf
+_GL_FUNCDECL_SYS (expf, float, (float x));
+# endif
+_GL_CXXALIAS_SYS (expf, float, (float x));
+_GL_CXXALIASWARN (expf);
+#elif defined GNULIB_POSIXCHECK
+# undef expf
+# if HAVE_RAW_DECL_EXPF
+_GL_WARN_ON_USE (expf, "expf is unportable - "
+ "use gnulib module expf for portability");
+# endif
+#endif
+
#if @GNULIB_EXPL@
# if !@HAVE_EXPL@ || !@HAVE_DECL_EXPL@
_GL_FUNCDECL_SYS (expl, long double, (long double x));
#endif
+#if @GNULIB_FABSF@
+# if !@HAVE_FABSF@
+# undef fabsf
+_GL_FUNCDECL_SYS (fabsf, float, (float x));
+# endif
+_GL_CXXALIAS_SYS (fabsf, float, (float x));
+_GL_CXXALIASWARN (fabsf);
+#elif defined GNULIB_POSIXCHECK
+# undef fabsf
+# if HAVE_RAW_DECL_FABSF
+_GL_WARN_ON_USE (fabsf, "fabsf is unportable - "
+ "use gnulib module fabsf for portability");
+# endif
+#endif
+
+
#if @GNULIB_FLOORF@
# if @REPLACE_FLOORF@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef floorf
# define floorf rpl_floorf
# endif
_GL_FUNCDECL_RPL (floorf, float, (float x));
#if @GNULIB_FLOORL@
# if @REPLACE_FLOORL@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef floorl
# define floorl rpl_floorl
# endif
_GL_FUNCDECL_RPL (floorl, long double, (long double x));
#endif
+#if @GNULIB_FMAF@
+# if @REPLACE_FMAF@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef fmaf
+# define fmaf rpl_fmaf
+# endif
+_GL_FUNCDECL_RPL (fmaf, float, (float x, float y, float z));
+_GL_CXXALIAS_RPL (fmaf, float, (float x, float y, float z));
+# else
+# if !@HAVE_FMAF@
+_GL_FUNCDECL_SYS (fmaf, float, (float x, float y, float z));
+# endif
+_GL_CXXALIAS_SYS (fmaf, float, (float x, float y, float z));
+# endif
+_GL_CXXALIASWARN (fmaf);
+#elif defined GNULIB_POSIXCHECK
+# undef fmaf
+# if HAVE_RAW_DECL_FMAF
+_GL_WARN_ON_USE (fmaf, "fmaf is unportable - "
+ "use gnulib module fmaf for portability");
+# endif
+#endif
+
+#if @GNULIB_FMA@
+# if @REPLACE_FMA@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef fma
+# define fma rpl_fma
+# endif
+_GL_FUNCDECL_RPL (fma, double, (double x, double y, double z));
+_GL_CXXALIAS_RPL (fma, double, (double x, double y, double z));
+# else
+# if !@HAVE_FMA@
+_GL_FUNCDECL_SYS (fma, double, (double x, double y, double z));
+# endif
+_GL_CXXALIAS_SYS (fma, double, (double x, double y, double z));
+# endif
+_GL_CXXALIASWARN (fma);
+#elif defined GNULIB_POSIXCHECK
+# undef fma
+# if HAVE_RAW_DECL_FMA
+_GL_WARN_ON_USE (fma, "fma is unportable - "
+ "use gnulib module fma for portability");
+# endif
+#endif
+
+#if @GNULIB_FMAL@
+# if @REPLACE_FMAL@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef fmal
+# define fmal rpl_fmal
+# endif
+_GL_FUNCDECL_RPL (fmal, long double,
+ (long double x, long double y, long double z));
+_GL_CXXALIAS_RPL (fmal, long double,
+ (long double x, long double y, long double z));
+# else
+# if !@HAVE_FMAL@
+_GL_FUNCDECL_SYS (fmal, long double,
+ (long double x, long double y, long double z));
+# endif
+_GL_CXXALIAS_SYS (fmal, long double,
+ (long double x, long double y, long double z));
+# endif
+_GL_CXXALIASWARN (fmal);
+#elif defined GNULIB_POSIXCHECK
+# undef fmal
+# if HAVE_RAW_DECL_FMAL
+_GL_WARN_ON_USE (fmal, "fmal is unportable - "
+ "use gnulib module fmal for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FMODF@
+# if !@HAVE_FMODF@
+# undef fmodf
+_GL_FUNCDECL_SYS (fmodf, float, (float x, float y));
+# endif
+_GL_CXXALIAS_SYS (fmodf, float, (float x, float y));
+_GL_CXXALIASWARN (fmodf);
+#elif defined GNULIB_POSIXCHECK
+# undef fmodf
+# if HAVE_RAW_DECL_FMODF
+_GL_WARN_ON_USE (fmodf, "fmodf is unportable - "
+ "use gnulib module fmodf for portability");
+# endif
+#endif
+
+
+/* Write x as
+ x = mantissa * 2^exp
+ where
+ If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
+ If x is zero: mantissa = x, exp = 0.
+ If x is infinite or NaN: mantissa = x, exp unspecified.
+ Store exp in *EXPPTR and return mantissa. */
+#if @GNULIB_FREXPF@
+# if @REPLACE_FREXPF@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef frexpf
+# define frexpf rpl_frexpf
+# endif
+_GL_FUNCDECL_RPL (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (frexpf, float, (float x, int *expptr));
+# else
+# if !@HAVE_FREXPF@
+# undef frexpf
+_GL_FUNCDECL_SYS (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (frexpf, float, (float x, int *expptr));
+# endif
+_GL_CXXALIASWARN (frexpf);
+#elif defined GNULIB_POSIXCHECK
+# undef frexpf
+# if HAVE_RAW_DECL_FREXPF
+_GL_WARN_ON_USE (frexpf, "frexpf is unportable - "
+ "use gnulib module frexpf for portability");
+# endif
+#endif
+
+/* Write x as
+ x = mantissa * 2^exp
+ where
+ If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
+ If x is zero: mantissa = x, exp = 0.
+ If x is infinite or NaN: mantissa = x, exp unspecified.
+ Store exp in *EXPPTR and return mantissa. */
+#if @GNULIB_FREXP@
+# if @REPLACE_FREXP@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define frexp rpl_frexp
+# endif
+_GL_FUNCDECL_RPL (frexp, double, (double x, int *expptr) _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (frexp, double, (double x, int *expptr));
+# else
+_GL_CXXALIAS_SYS (frexp, double, (double x, int *expptr));
+# endif
+_GL_CXXALIASWARN (frexp);
+#elif defined GNULIB_POSIXCHECK
+# undef frexp
+/* Assume frexp is always declared. */
+_GL_WARN_ON_USE (frexp, "frexp is unportable - "
+ "use gnulib module frexp for portability");
+#endif
+
/* Write x as
x = mantissa * 2^exp
where
Store exp in *EXPPTR and return mantissa. */
#if @GNULIB_FREXPL@ && @REPLACE_FREXPL@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef frexpl
# define frexpl rpl_frexpl
# endif
_GL_FUNCDECL_RPL (frexpl, long double,
/* Return x * 2^exp. */
+#if @GNULIB_LDEXPF@
+# if !@HAVE_LDEXPF@
+# undef ldexpf
+_GL_FUNCDECL_SYS (ldexpf, float, (float x, int exp));
+# endif
+_GL_CXXALIAS_SYS (ldexpf, float, (float x, int exp));
+_GL_CXXALIASWARN (ldexpf);
+#elif defined GNULIB_POSIXCHECK
+# undef ldexpf
+# if HAVE_RAW_DECL_LDEXPF
+_GL_WARN_ON_USE (ldexpf, "ldexpf is unportable - "
+ "use gnulib module ldexpf for portability");
+# endif
+#endif
+
+/* Return x * 2^exp. */
#if @GNULIB_LDEXPL@ && @REPLACE_LDEXPL@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef ldexpl
# define ldexpl rpl_ldexpl
# endif
_GL_FUNCDECL_RPL (ldexpl, long double, (long double x, int exp));
#endif
+#if @GNULIB_LOGB@
+# if !@HAVE_DECL_LOGB@
+_GL_EXTERN_C double logb (double x);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef logb
+# if HAVE_RAW_DECL_LOGB
+_GL_WARN_ON_USE (logb, "logb is unportable - "
+ "use gnulib module logb for portability");
+# endif
+#endif
+
+
+#if @GNULIB_LOGF@
+# if !@HAVE_LOGF@
+# undef logf
+_GL_FUNCDECL_SYS (logf, float, (float x));
+# endif
+_GL_CXXALIAS_SYS (logf, float, (float x));
+_GL_CXXALIASWARN (logf);
+#elif defined GNULIB_POSIXCHECK
+# undef logf
+# if HAVE_RAW_DECL_LOGF
+_GL_WARN_ON_USE (logf, "logf is unportable - "
+ "use gnulib module logf for portability");
+# endif
+#endif
+
#if @GNULIB_LOGL@
# if !@HAVE_LOGL@ || !@HAVE_DECL_LOGL@
_GL_FUNCDECL_SYS (logl, long double, (long double x));
#endif
+#if @GNULIB_LOG10F@
+# if !@HAVE_LOG10F@
+# undef log10f
+_GL_FUNCDECL_SYS (log10f, float, (float x));
+# endif
+_GL_CXXALIAS_SYS (log10f, float, (float x));
+_GL_CXXALIASWARN (log10f);
+#elif defined GNULIB_POSIXCHECK
+# undef log10f
+# if HAVE_RAW_DECL_LOG10F
+_GL_WARN_ON_USE (log10f, "log10f is unportable - "
+ "use gnulib module log10f for portability");
+# endif
+#endif
+
+
+#if @GNULIB_MODFF@
+# if !@HAVE_MODFF@
+# undef modff
+_GL_FUNCDECL_SYS (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (modff, float, (float x, float *iptr));
+_GL_CXXALIASWARN (modff);
+#elif defined GNULIB_POSIXCHECK
+# undef modff
+# if HAVE_RAW_DECL_MODFF
+_GL_WARN_ON_USE (modff, "modff is unportable - "
+ "use gnulib module modff for portability");
+# endif
+#endif
+
+
+#if @GNULIB_POWF@
+# if !@HAVE_POWF@
+# undef powf
+_GL_FUNCDECL_SYS (powf, float, (float x, float y));
+# endif
+_GL_CXXALIAS_SYS (powf, float, (float x, float y));
+_GL_CXXALIASWARN (powf);
+#elif defined GNULIB_POSIXCHECK
+# undef powf
+# if HAVE_RAW_DECL_POWF
+_GL_WARN_ON_USE (powf, "powf is unportable - "
+ "use gnulib module powf for portability");
+# endif
+#endif
+
+
+#if @GNULIB_RINTF@
+# if !@HAVE_RINTF@
+_GL_FUNCDECL_SYS (rintf, float, (float x));
+# endif
+_GL_CXXALIAS_SYS (rintf, float, (float x));
+_GL_CXXALIASWARN (rintf);
+#elif defined GNULIB_POSIXCHECK
+# undef rintf
+# if HAVE_RAW_DECL_RINTF
+_GL_WARN_ON_USE (rintf, "rintf is unportable - "
+ "use gnulib module rintf for portability");
+# endif
+#endif
+
+#if @GNULIB_RINT@
+# if !@HAVE_RINT@
+_GL_FUNCDECL_SYS (rint, double, (double x));
+# endif
+_GL_CXXALIAS_SYS (rint, double, (double x));
+_GL_CXXALIASWARN (rint);
+#elif defined GNULIB_POSIXCHECK
+# undef rint
+# if HAVE_RAW_DECL_RINT
+_GL_WARN_ON_USE (rint, "rint is unportable - "
+ "use gnulib module rint for portability");
+# endif
+#endif
+
+#if @GNULIB_RINTL@
+# if !@HAVE_RINTL@
+_GL_FUNCDECL_SYS (rintl, long double, (long double x));
+# endif
+_GL_CXXALIAS_SYS (rintl, long double, (long double x));
+_GL_CXXALIASWARN (rintl);
+#elif defined GNULIB_POSIXCHECK
+# undef rintl
+# if HAVE_RAW_DECL_RINTL
+_GL_WARN_ON_USE (rintl, "rintl is unportable - "
+ "use gnulib module rintl for portability");
+# endif
+#endif
+
+
#if @GNULIB_ROUNDF@
# if @REPLACE_ROUNDF@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
#endif
+#if @GNULIB_SINF@
+# if !@HAVE_SINF@
+# undef sinf
+_GL_FUNCDECL_SYS (sinf, float, (float x));
+# endif
+_GL_CXXALIAS_SYS (sinf, float, (float x));
+_GL_CXXALIASWARN (sinf);
+#elif defined GNULIB_POSIXCHECK
+# undef sinf
+# if HAVE_RAW_DECL_SINF
+_GL_WARN_ON_USE (sinf, "sinf is unportable - "
+ "use gnulib module sinf for portability");
+# endif
+#endif
+
#if @GNULIB_SINL@
# if !@HAVE_SINL@ || !@HAVE_DECL_SINL@
_GL_FUNCDECL_SYS (sinl, long double, (long double x));
#endif
+#if @GNULIB_SINHF@
+# if !@HAVE_SINHF@
+# undef sinhf
+_GL_FUNCDECL_SYS (sinhf, float, (float x));
+# endif
+_GL_CXXALIAS_SYS (sinhf, float, (float x));
+_GL_CXXALIASWARN (sinhf);
+#elif defined GNULIB_POSIXCHECK
+# undef sinhf
+# if HAVE_RAW_DECL_SINHF
+_GL_WARN_ON_USE (sinhf, "sinhf is unportable - "
+ "use gnulib module sinhf for portability");
+# endif
+#endif
+
+
+#if @GNULIB_SQRTF@
+# if !@HAVE_SQRTF@
+# undef sqrtf
+_GL_FUNCDECL_SYS (sqrtf, float, (float x));
+# endif
+_GL_CXXALIAS_SYS (sqrtf, float, (float x));
+_GL_CXXALIASWARN (sqrtf);
+#elif defined GNULIB_POSIXCHECK
+# undef sqrtf
+# if HAVE_RAW_DECL_SQRTF
+_GL_WARN_ON_USE (sqrtf, "sqrtf is unportable - "
+ "use gnulib module sqrtf for portability");
+# endif
+#endif
+
#if @GNULIB_SQRTL@
# if !@HAVE_SQRTL@ || !@HAVE_DECL_SQRTL@
_GL_FUNCDECL_SYS (sqrtl, long double, (long double x));
#endif
+#if @GNULIB_TANF@
+# if !@HAVE_TANF@
+# undef tanf
+_GL_FUNCDECL_SYS (tanf, float, (float x));
+# endif
+_GL_CXXALIAS_SYS (tanf, float, (float x));
+_GL_CXXALIASWARN (tanf);
+#elif defined GNULIB_POSIXCHECK
+# undef tanf
+# if HAVE_RAW_DECL_TANF
+_GL_WARN_ON_USE (tanf, "tanf is unportable - "
+ "use gnulib module tanf for portability");
+# endif
+#endif
+
#if @GNULIB_TANL@
# if !@HAVE_TANL@ || !@HAVE_DECL_TANL@
_GL_FUNCDECL_SYS (tanl, long double, (long double x));
#endif
+#if @GNULIB_TANHF@
+# if !@HAVE_TANHF@
+# undef tanhf
+_GL_FUNCDECL_SYS (tanhf, float, (float x));
+# endif
+_GL_CXXALIAS_SYS (tanhf, float, (float x));
+_GL_CXXALIASWARN (tanhf);
+#elif defined GNULIB_POSIXCHECK
+# undef tanhf
+# if HAVE_RAW_DECL_TANHF
+_GL_WARN_ON_USE (tanhf, "tanhf is unportable - "
+ "use gnulib module tanhf for portability");
+# endif
+#endif
+
+
#if @GNULIB_TRUNCF@
# if @REPLACE_TRUNCF@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
#endif
+/* Definitions of function-like macros come here, after the function
+ declarations. */
+
+
#if @GNULIB_ISFINITE@
# if @REPLACE_ISFINITE@
_GL_EXTERN_C int gl_isfinitef (float x);
sizeof (x) == sizeof (double) ? gl_isfinited (x) : \
gl_isfinitef (x))
# endif
+# ifdef __cplusplus
+# ifdef isfinite
+_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isfinite)
+# undef isfinite
+_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isfinite)
+# endif
+# endif
#elif defined GNULIB_POSIXCHECK
# if defined isfinite
_GL_WARN_REAL_FLOATING_DECL (isfinite);
sizeof (x) == sizeof (double) ? gl_isinfd (x) : \
gl_isinff (x))
# endif
+# ifdef __cplusplus
+# ifdef isinf
+_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isinf)
+# undef isinf
+_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isinf)
+# endif
+# endif
#elif defined GNULIB_POSIXCHECK
# if defined isinf
_GL_WARN_REAL_FLOATING_DECL (isinf);
/* Test whether X is a NaN. */
# undef isnanl
# define isnanl rpl_isnanl
-_GL_EXTERN_C int isnanl (long double x);
+_GL_EXTERN_C int isnanl (long double x) _GL_ATTRIBUTE_CONST;
# endif
#endif
# if @HAVE_ISNANL@ && __GNUC__ >= 4
# define gl_isnan_l(x) __builtin_isnanl ((long double)(x))
# else
-_GL_EXTERN_C int rpl_isnanl (long double x);
+_GL_EXTERN_C int rpl_isnanl (long double x) _GL_ATTRIBUTE_CONST;
# define gl_isnan_l(x) rpl_isnanl (x)
# endif
# undef isnan
sizeof (x) == sizeof (double) ? __builtin_isnan ((double)(x)) : \
__builtin_isnanf ((float)(x)))
# endif
+# ifdef __cplusplus
+# ifdef isnan
+_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isnan)
+# undef isnan
+_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan)
+# endif
+# else
/* Ensure isnan is a macro. */
-# ifndef isnan
-# define isnan isnan
+# ifndef isnan
+# define isnan isnan
+# endif
# endif
#elif defined GNULIB_POSIXCHECK
# if defined isnan
_GL_EXTERN_C int gl_signbitf (float arg);
_GL_EXTERN_C int gl_signbitd (double arg);
_GL_EXTERN_C int gl_signbitl (long double arg);
-# if __GNUC__ >= 2 && !__STRICT_ANSI__
+# if __GNUC__ >= 2 && !defined __STRICT_ANSI__
# define _GL_NUM_UINT_WORDS(type) \
((sizeof (type) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
# if defined FLT_SIGNBIT_WORD && defined FLT_SIGNBIT_BIT && !defined gl_signbitf
sizeof (x) == sizeof (double) ? gl_signbitd (x) : \
gl_signbitf (x))
# endif
+# ifdef __cplusplus
+# ifdef signbit
+_GL_MATH_CXX_REAL_FLOATING_DECL_1 (signbit)
+# undef signbit
+_GL_MATH_CXX_REAL_FLOATING_DECL_2 (signbit)
+# endif
+# endif
#elif defined GNULIB_POSIXCHECK
# if defined signbit
_GL_WARN_REAL_FLOATING_DECL (signbit);
#include "md4.h"
-#include <stddef.h>
-#include <stdlib.h>
+#include <stdalign.h>
+#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
if (len >= 64)
{
#if !_STRING_ARCH_unaligned
- /* To check alignment gcc has an appropriate operator. Other
- compilers don't. */
-# if __GNUC__ >= 2
-# define UNALIGNED_P(p) (((uintptr_t) p) % __alignof__ (uint32_t) != 0)
-# else
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
-# endif
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (uint32_t) != 0)
if (UNALIGNED_P (buffer))
while (len > 64)
{
#include "md5.h"
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
if (len >= 64)
{
#if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (uint32_t) != 0)
if (UNALIGNED_P (buffer))
while (len > 64)
{
#include <stddef.h>
-int memcasecmp (const void *vs1, const void *vs2, size_t n);
+int memcasecmp (const void *vs1, const void *vs2, size_t n) _GL_ATTRIBUTE_PURE;
char) that occurs within N bytes of the memory region S. If
neither byte appears, return NULL. */
-extern void *memchr2 (void const *s, int c1, int c2, size_t n);
+extern void *memchr2 (void const *s, int c1, int c2, size_t n)
+ _GL_ATTRIBUTE_PURE;
#ifdef __cplusplus
}
This function's result is locale independent, unlike memcoll()'s.
Return a negative number if S1 < S2, a positive number if S1 > S2, or
0 if S1 and S2 have the same contents. */
-extern int memcmp2 (const char *s1, size_t n1, const char *s2, size_t n2);
+extern int memcmp2 (const char *s1, size_t n1, const char *s2, size_t n2)
+ _GL_ATTRIBUTE_PURE;
#ifdef __cplusplus
along with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+#include <config.h>
+
#include <stddef.h>
void *
--- /dev/null
+/* Get signed integer and fractional parts of a floating-point number.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+float
+modff (float x, float *iptr)
+{
+ double i;
+ double frac = modf ((double) x, &i);
+ *iptr = (float) i;
+ return (float) frac;
+}
--- /dev/null
+/* Invalid parameter handler for MSVC runtime libraries.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Specification. */
+#include "msvc-inval.h"
+
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER \
+ && !(MSVC_INVALID_PARAMETER_HANDLING == SANE_LIBRARY_HANDLING)
+
+/* Get _invalid_parameter_handler type and _set_invalid_parameter_handler
+ declaration. */
+# include <stdlib.h>
+
+# if MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING
+
+static void cdecl
+gl_msvc_invalid_parameter_handler (const wchar_t *expression,
+ const wchar_t *function,
+ const wchar_t *file,
+ unsigned int line,
+ uintptr_t dummy)
+{
+}
+
+# else
+
+/* Get declarations of the Win32 API functions. */
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+
+# if defined _MSC_VER
+
+static void cdecl
+gl_msvc_invalid_parameter_handler (const wchar_t *expression,
+ const wchar_t *function,
+ const wchar_t *file,
+ unsigned int line,
+ uintptr_t dummy)
+{
+ RaiseException (STATUS_GNULIB_INVALID_PARAMETER, 0, 0, NULL);
+}
+
+# else
+
+/* An index to thread-local storage. */
+static DWORD tls_index;
+static int tls_initialized /* = 0 */;
+
+/* Used as a fallback only. */
+static struct gl_msvc_inval_per_thread not_per_thread;
+
+struct gl_msvc_inval_per_thread *
+gl_msvc_inval_current (void)
+{
+ if (!tls_initialized)
+ {
+ tls_index = TlsAlloc ();
+ tls_initialized = 1;
+ }
+ if (tls_index == TLS_OUT_OF_INDEXES)
+ /* TlsAlloc had failed. */
+ return ¬_per_thread;
+ else
+ {
+ struct gl_msvc_inval_per_thread *pointer =
+ (struct gl_msvc_inval_per_thread *) TlsGetValue (tls_index);
+ if (pointer == NULL)
+ {
+ /* First call. Allocate a new 'struct gl_msvc_inval_per_thread'. */
+ pointer =
+ (struct gl_msvc_inval_per_thread *)
+ malloc (sizeof (struct gl_msvc_inval_per_thread));
+ if (pointer == NULL)
+ /* Could not allocate memory. Use the global storage. */
+ pointer = ¬_per_thread;
+ TlsSetValue (tls_index, pointer);
+ }
+ return pointer;
+ }
+}
+
+static void cdecl
+gl_msvc_invalid_parameter_handler (const wchar_t *expression,
+ const wchar_t *function,
+ const wchar_t *file,
+ unsigned int line,
+ uintptr_t dummy)
+{
+ struct gl_msvc_inval_per_thread *current = gl_msvc_inval_current ();
+ if (current->restart_valid)
+ longjmp (current->restart, 1);
+ else
+ /* An invalid parameter notification from outside the gnulib code.
+ Give the caller a chance to intervene. */
+ RaiseException (STATUS_GNULIB_INVALID_PARAMETER, 0, 0, NULL);
+}
+
+# endif
+
+# endif
+
+static int gl_msvc_inval_initialized /* = 0 */;
+
+void
+gl_msvc_inval_ensure_handler (void)
+{
+ if (gl_msvc_inval_initialized == 0)
+ {
+ _set_invalid_parameter_handler (gl_msvc_invalid_parameter_handler);
+ gl_msvc_inval_initialized = 1;
+ }
+}
+
+#endif
--- /dev/null
+/* Invalid parameter handler for MSVC runtime libraries.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _MSVC_INVAL_H
+#define _MSVC_INVAL_H
+
+/* With MSVC runtime libraries with the "invalid parameter handler" concept,
+ functions like fprintf(), dup2(), or close() crash when the caller passes
+ an invalid argument. But POSIX wants error codes (such as EINVAL or EBADF)
+ instead.
+ This file defines macros that turn such an invalid parameter notification
+ into a non-local exit. An error code can then be produced at the target
+ of this exit. You can thus write code like
+
+ TRY_MSVC_INVAL
+ {
+ <Code that can trigger an invalid parameter notification
+ but does not do 'return', 'break', 'continue', nor 'goto'.>
+ }
+ CATCH_MSVC_INVAL
+ {
+ <Code that handles an invalid parameter notification
+ but does not do 'return', 'break', 'continue', nor 'goto'.>
+ }
+ DONE_MSVC_INVAL;
+
+ This entire block expands to a single statement.
+
+ The handling of invalid parameters can be done in three ways:
+
+ * The default way, which is reasonable for programs (not libraries):
+ AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [DEFAULT_HANDLING])
+
+ * The way for libraries that make "hairy" calls (like close(-1), or
+ fclose(fp) where fileno(fp) is closed, or simply getdtablesize()):
+ AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [HAIRY_LIBRARY_HANDLING])
+
+ * The way for libraries that make no "hairy" calls:
+ AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [SANE_LIBRARY_HANDLING])
+ */
+
+#define DEFAULT_HANDLING 0
+#define HAIRY_LIBRARY_HANDLING 1
+#define SANE_LIBRARY_HANDLING 2
+
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER \
+ && !(MSVC_INVALID_PARAMETER_HANDLING == SANE_LIBRARY_HANDLING)
+/* A native Windows platform with the "invalid parameter handler" concept,
+ and either DEFAULT_HANDLING or HAIRY_LIBRARY_HANDLING. */
+
+# if MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING
+/* Default handling. */
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+/* Ensure that the invalid parameter handler in installed that just returns.
+ Because we assume no other part of the program installs a different
+ invalid parameter handler, this solution is multithread-safe. */
+extern void gl_msvc_inval_ensure_handler (void);
+
+# ifdef __cplusplus
+}
+# endif
+
+# define TRY_MSVC_INVAL \
+ do \
+ { \
+ gl_msvc_inval_ensure_handler (); \
+ if (1)
+# define CATCH_MSVC_INVAL \
+ else
+# define DONE_MSVC_INVAL \
+ } \
+ while (0)
+
+# else
+/* Handling for hairy libraries. */
+
+# include <excpt.h>
+
+/* Gnulib can define its own status codes, as described in the page
+ "Raising Software Exceptions" on microsoft.com
+ <http://msdn.microsoft.com/en-us/library/het71c37.aspx>.
+ Our status codes are composed of
+ - 0xE0000000, mandatory for all user-defined status codes,
+ - 0x474E550, a API identifier ("GNU"),
+ - 0, 1, 2, ..., used to distinguish different status codes from the
+ same API. */
+# define STATUS_GNULIB_INVALID_PARAMETER (0xE0000000 + 0x474E550 + 0)
+
+# if defined _MSC_VER
+/* A compiler that supports __try/__except, as described in the page
+ "try-except statement" on microsoft.com
+ <http://msdn.microsoft.com/en-us/library/s58ftw19.aspx>.
+ With __try/__except, we can use the multithread-safe exception handling. */
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+/* Ensure that the invalid parameter handler in installed that raises a
+ software exception with code STATUS_GNULIB_INVALID_PARAMETER.
+ Because we assume no other part of the program installs a different
+ invalid parameter handler, this solution is multithread-safe. */
+extern void gl_msvc_inval_ensure_handler (void);
+
+# ifdef __cplusplus
+}
+# endif
+
+# define TRY_MSVC_INVAL \
+ do \
+ { \
+ gl_msvc_inval_ensure_handler (); \
+ __try
+# define CATCH_MSVC_INVAL \
+ __except (GetExceptionCode () == STATUS_GNULIB_INVALID_PARAMETER \
+ ? EXCEPTION_EXECUTE_HANDLER \
+ : EXCEPTION_CONTINUE_SEARCH)
+# define DONE_MSVC_INVAL \
+ } \
+ while (0)
+
+# else
+/* Any compiler.
+ We can only use setjmp/longjmp. */
+
+# include <setjmp.h>
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+struct gl_msvc_inval_per_thread
+{
+ /* The restart that will resume execution at the code between
+ CATCH_MSVC_INVAL and DONE_MSVC_INVAL. It is enabled only between
+ TRY_MSVC_INVAL and CATCH_MSVC_INVAL. */
+ jmp_buf restart;
+
+ /* Tells whether the contents of restart is valid. */
+ int restart_valid;
+};
+
+/* Ensure that the invalid parameter handler in installed that passes
+ control to the gl_msvc_inval_restart if it is valid, or raises a
+ software exception with code STATUS_GNULIB_INVALID_PARAMETER otherwise.
+ Because we assume no other part of the program installs a different
+ invalid parameter handler, this solution is multithread-safe. */
+extern void gl_msvc_inval_ensure_handler (void);
+
+/* Return a pointer to the per-thread data for the current thread. */
+extern struct gl_msvc_inval_per_thread *gl_msvc_inval_current (void);
+
+# ifdef __cplusplus
+}
+# endif
+
+# define TRY_MSVC_INVAL \
+ do \
+ { \
+ struct gl_msvc_inval_per_thread *msvc_inval_current; \
+ gl_msvc_inval_ensure_handler (); \
+ msvc_inval_current = gl_msvc_inval_current (); \
+ /* First, initialize gl_msvc_inval_restart. */ \
+ if (setjmp (msvc_inval_current->restart) == 0) \
+ { \
+ /* Then, mark it as valid. */ \
+ msvc_inval_current->restart_valid = 1;
+# define CATCH_MSVC_INVAL \
+ /* Execution completed. \
+ Mark gl_msvc_inval_restart as invalid. */ \
+ msvc_inval_current->restart_valid = 0; \
+ } \
+ else \
+ { \
+ /* Execution triggered an invalid parameter notification. \
+ Mark gl_msvc_inval_restart as invalid. */ \
+ msvc_inval_current->restart_valid = 0;
+# define DONE_MSVC_INVAL \
+ } \
+ } \
+ while (0)
+
+# endif
+
+# endif
+
+#else
+/* A platform that does not need to the invalid parameter handler,
+ or when SANE_LIBRARY_HANDLING is desired. */
+
+/* The braces here avoid GCC warnings like
+ "warning: suggest explicit braces to avoid ambiguous `else'". */
+# define TRY_MSVC_INVAL \
+ do \
+ { \
+ if (1)
+# define CATCH_MSVC_INVAL \
+ else
+# define DONE_MSVC_INVAL \
+ } \
+ while (0)
+
+#endif
+
+#endif /* _MSVC_INVAL_H */
--- /dev/null
+/* Wrappers that don't throw invalid parameter notifications
+ with MSVC runtime libraries.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Specification. */
+#include "msvc-nothrow.h"
+
+/* Get declarations of the Win32 API functions. */
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+
+#include "msvc-inval.h"
+
+#undef _get_osfhandle
+
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+intptr_t
+_gl_nothrow_get_osfhandle (int fd)
+{
+ intptr_t result;
+
+ TRY_MSVC_INVAL
+ {
+ result = _get_osfhandle (fd);
+ }
+ CATCH_MSVC_INVAL
+ {
+ result = (intptr_t) INVALID_HANDLE_VALUE;
+ }
+ DONE_MSVC_INVAL;
+
+ return result;
+}
+#endif
--- /dev/null
+/* Wrappers that don't throw invalid parameter notifications
+ with MSVC runtime libraries.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _MSVC_NOTHROW_H
+#define _MSVC_NOTHROW_H
+
+/* With MSVC runtime libraries with the "invalid parameter handler" concept,
+ functions like fprintf(), dup2(), or close() crash when the caller passes
+ an invalid argument. But POSIX wants error codes (such as EINVAL or EBADF)
+ instead.
+ This file defines wrappers that turn such an invalid parameter notification
+ into an error code. */
+
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+
+/* Get original declaration of _get_osfhandle. */
+# include <io.h>
+
+# if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+
+/* Override _get_osfhandle. */
+extern intptr_t _gl_nothrow_get_osfhandle (int fd);
+# define _get_osfhandle _gl_nothrow_get_osfhandle
+
+# endif
+
+#endif
+
+#endif /* _MSVC_NOTHROW_H */
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
+# include "msvc-nothrow.h"
+
int
get_nonblocking_flag (int desc)
{
abort gracefully or use longjump - but shouldn't return. This
variable by default points to the internal function
`print_and_abort'. */
-static void print_and_abort (void);
+static _Noreturn void print_and_abort (void);
void (*obstack_alloc_failed_handler) (void) = print_and_abort;
/* Exit value used when `print_and_abort' is used. */
}
/* Specification. */
-#include <fcntl.h>
+/* Write "fcntl.h" here, not <fcntl.h>, otherwise OSF/1 5.1 DTK cc eliminates
+ this include because of the preliminary #include <fcntl.h> above. */
+#include "fcntl.h"
#include <errno.h>
#include <stdarg.h>
}
#endif
+/* Write "fcntl.h" here, not <fcntl.h>, otherwise OSF/1 5.1 DTK cc eliminates
+ this include because of the preliminary #include <fcntl.h> above. */
+#include "fcntl.h"
+
#include "openat.h"
#include <stdarg.h>
+#include <stdbool.h>
#include <stddef.h>
#include <string.h>
#include <sys/stat.h>
-
-#include "dosname.h" /* solely for definition of IS_ABSOLUTE_FILE_NAME */
-#include "openat-priv.h"
-#include "save-cwd.h"
+#include <errno.h>
#if HAVE_OPENAT
#else /* !HAVE_OPENAT */
+# include "dosname.h" /* solely for definition of IS_ABSOLUTE_FILE_NAME */
+# include "openat-priv.h"
+# include "save-cwd.h"
+
/* Replacement for Solaris' openat function.
<http://www.google.com/search?q=openat+site:docs.sun.com>
First, try to simulate it via open ("/proc/self/fd/FD/FILE").
#ifndef _GL_HEADER_OPENAT
#define _GL_HEADER_OPENAT
-/* Write "fcntl.h" here, not <fcntl.h>, otherwise OSF/1 5.1 DTK cc miscompiles
- openat.c because that file has a preliminary #include <fcntl.h>. */
-#include "fcntl.h"
+#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
-#include <dirent.h>
#include <unistd.h>
#include <stdbool.h>
/* Using these function names makes application code
slightly more readable than it would be with
fchownat (..., 0) or fchownat (..., AT_SYMLINK_NOFOLLOW). */
+
+#if GNULIB_FCHOWNAT
+
static inline int
chownat (int fd, char const *file, uid_t owner, gid_t group)
{
return fchownat (fd, file, owner, group, AT_SYMLINK_NOFOLLOW);
}
+#endif
+
+#if GNULIB_FCHMODAT
+
static inline int
chmodat (int fd, char const *file, mode_t mode)
{
return fchmodat (fd, file, mode, AT_SYMLINK_NOFOLLOW);
}
+#endif
+
+#if GNULIB_FSTATAT
+
static inline int
statat (int fd, char const *name, struct stat *st)
{
return fstatat (fd, name, st, AT_SYMLINK_NOFOLLOW);
}
+#endif
+
/* For now, there are no wrappers named laccessat or leuidaccessat,
since gnulib doesn't support faccessat(,AT_SYMLINK_NOFOLLOW) and
since access rights on symlinks are of limited utility. Likewise,
--- /dev/null
+/* Start reading the entries of a directory.
+ Copyright (C) 2006-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <dirent.h>
+
+#include <errno.h>
+#include <stddef.h>
+
+#if HAVE_OPENDIR
+
+/* Override opendir(), to keep track of the open file descriptors.
+ Needed because there is a function dirfd(). */
+
+#else
+
+# include <stdlib.h>
+
+# include "dirent-private.h"
+# include "filename.h"
+
+#endif
+
+#if REPLACE_FCHDIR
+# include <unistd.h>
+#endif
+
+DIR *
+opendir (const char *dir_name)
+{
+#if HAVE_OPENDIR
+# undef opendir
+ DIR *dirp;
+
+ dirp = opendir (dir_name);
+ if (dirp == NULL)
+ return NULL;
+
+#else
+
+ char dir_name_mask[MAX_PATH + 1 + 1 + 1];
+ int status;
+ HANDLE current;
+ WIN32_FIND_DATA entry;
+ struct gl_directory *dirp;
+
+ if (dir_name[0] == '\0')
+ {
+ errno = ENOENT;
+ return NULL;
+ }
+
+ /* Make the dir_name absolute, so that we continue reading the same
+ directory if the current directory changed between this opendir()
+ call and a subsequent rewinddir() call. */
+ if (!GetFullPathName (dir_name, MAX_PATH, dir_name_mask, NULL))
+ {
+ errno = EINVAL;
+ return NULL;
+ }
+
+ /* Append the mask.
+ "*" and "*.*" appear to be equivalent. */
+ {
+ char *p;
+
+ p = dir_name_mask + strlen (dir_name_mask);
+ if (p > dir_name_mask && !ISSLASH (p[-1]))
+ *p++ = '\\';
+ *p++ = '*';
+ *p = '\0';
+ }
+
+ /* Start searching the directory. */
+ status = -1;
+ current = FindFirstFile (dir_name_mask, &entry);
+ if (current == INVALID_HANDLE_VALUE)
+ {
+ switch (GetLastError ())
+ {
+ case ERROR_FILE_NOT_FOUND:
+ status = -2;
+ break;
+ case ERROR_PATH_NOT_FOUND:
+ errno = ENOENT;
+ return NULL;
+ case ERROR_DIRECTORY:
+ errno = ENOTDIR;
+ return NULL;
+ case ERROR_ACCESS_DENIED:
+ errno = EACCES;
+ return NULL;
+ default:
+ errno = EIO;
+ return NULL;
+ }
+ }
+
+ /* Allocate the result. */
+ dirp =
+ (struct gl_directory *)
+ malloc (offsetof (struct gl_directory, dir_name_mask[0])
+ + strlen (dir_name_mask) + 1);
+ if (dirp == NULL)
+ {
+ if (current != INVALID_HANDLE_VALUE)
+ FindClose (current);
+ errno = ENOMEM;
+ return NULL;
+ }
+ dirp->status = status;
+ dirp->current = current;
+ if (status == -1)
+ memcpy (&dirp->entry, &entry, sizeof (WIN32_FIND_DATA));
+ strcpy (dirp->dir_name_mask, dir_name_mask);
+
+#endif
+
+#if REPLACE_FCHDIR
+ {
+ int fd = dirfd (dirp);
+ if (0 <= fd && _gl_register_fd (fd, dir_name) != fd)
+ {
+ int saved_errno = errno;
+ closedir (dirp);
+ errno = saved_errno;
+ return NULL;
+ }
+ }
+#endif
+
+ return dirp;
+}
(struct winsize *) winp);
}
-#else /* AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 10, mingw */
+#elif (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__ /* mingw */
+
+# include <errno.h>
+
+int
+openpty (int *amaster _GL_UNUSED, int *aslave _GL_UNUSED,
+ char *name _GL_UNUSED,
+ struct termios const *termp _GL_UNUSED,
+ struct winsize const *winp _GL_UNUSED)
+{
+ /* Mingw lacks pseudo-terminals altogether. */
+ errno = ENOSYS;
+ return -1;
+}
+
+#else /* AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 10 */
# include <fcntl.h>
+# include <stdlib.h>
# include <string.h>
# include <sys/ioctl.h>
# include <termios.h>
# else /* AIX 5.1, HP-UX 11, Solaris 10, mingw */
-# if HAVE_POSIX_OPENPT /* Solaris 10 */
-
+ /* This call uses the 'posix_openpt' module. */
master = posix_openpt (O_RDWR | O_NOCTTY);
if (master < 0)
return -1;
-# else /* AIX 5.1, HP-UX 11, Solaris 9, mingw */
-
-# ifdef _AIX /* AIX */
-
- master = open ("/dev/ptc", O_RDWR | O_NOCTTY);
- if (master < 0)
- return -1;
-
-# else /* HP-UX 11, Solaris 9, mingw */
-
- /* HP-UX, Solaris have /dev/ptmx.
- HP-UX also has /dev/ptym/clone, but this should not be needed.
- Linux also has /dev/ptmx, but Linux already has openpty().
- MacOS X also has /dev/ptmx, but MacOS X already has openpty().
- OSF/1 also has /dev/ptmx and /dev/ptmx_bsd, but OSF/1 already has
- openpty(). */
- master = open ("/dev/ptmx", O_RDWR | O_NOCTTY);
- if (master < 0)
- return -1;
-
-# endif
-
-# endif
-
- /* If all this does not work, we could try to open, one by one:
- - On MacOS X: /dev/pty[p-w][0-9a-f]
- - On *BSD: /dev/pty[p-sP-S][0-9a-v]
- - On AIX: /dev/ptyp[0-9a-f]
- - On HP-UX: /dev/pty[p-r][0-9a-f]
- - On OSF/1: /dev/pty[p-q][0-9a-f]
- - On Solaris: /dev/pty[p-r][0-9a-f]
- */
# endif
/* This call does not require a dependency to the 'grantpt' module,
pagealign_alloc (size_t size)
{
void *ret;
+ /* We prefer the mmap() approach over the posix_memalign() or malloc()
+ based approaches, since the latter often waste an entire memory page
+ per call. */
#if HAVE_MMAP
# ifdef HAVE_MAP_ANONYMOUS
const int fd = -1;
%parse-param { parser_control *pc }
%lex-param { parser_control *pc }
-/* This grammar has 20 shift/reduce conflicts. */
-%expect 20
+/* This grammar has 31 shift/reduce conflicts. */
+%expect 31
%union
{
relative_time rel;
}
-%token tAGO tDST
+%token <intval> tAGO
+%token tDST
%token tYEAR_UNIT tMONTH_UNIT tHOUR_UNIT tMINUTE_UNIT tSEC_UNIT
%token <intval> tDAY_UNIT tDAY_SHIFT
%token <textintval> tSNUMBER tUNUMBER
%token <timespec> tSDECIMAL_NUMBER tUDECIMAL_NUMBER
-%type <intval> o_colon_minutes o_merid
+%type <intval> o_colon_minutes
%type <timespec> seconds signed_seconds unsigned_seconds
%type <rel> relunit relunit_snumber dayshift
;
item:
- time
+ datetime
+ { pc->times_seen++; pc->dates_seen++; }
+ | time
{ pc->times_seen++; }
| local_zone
{ pc->local_zones_seen++; }
| hybrid
;
+datetime:
+ iso_8601_datetime
+ ;
+
+iso_8601_datetime:
+ iso_8601_date 'T' iso_8601_time
+ ;
+
time:
tUNUMBER tMERIDIAN
{
set_hhmmss (pc, $1.value, 0, 0, 0);
pc->meridian = $2;
}
- | tUNUMBER ':' tUNUMBER o_merid
+ | tUNUMBER ':' tUNUMBER tMERIDIAN
{
set_hhmmss (pc, $1.value, $3.value, 0, 0);
pc->meridian = $4;
}
- | tUNUMBER ':' tUNUMBER tSNUMBER o_colon_minutes
+ | tUNUMBER ':' tUNUMBER ':' unsigned_seconds tMERIDIAN
{
- set_hhmmss (pc, $1.value, $3.value, 0, 0);
+ set_hhmmss (pc, $1.value, $3.value, $5.tv_sec, $5.tv_nsec);
+ pc->meridian = $6;
+ }
+ | iso_8601_time
+ ;
+
+iso_8601_time:
+ tUNUMBER zone_offset
+ {
+ set_hhmmss (pc, $1.value, 0, 0, 0);
pc->meridian = MER24;
- pc->zones_seen++;
- pc->time_zone = time_zone_hhmm (pc, $4, $5);
}
- | tUNUMBER ':' tUNUMBER ':' unsigned_seconds o_merid
+ | tUNUMBER ':' tUNUMBER o_zone_offset
{
- set_hhmmss (pc, $1.value, $3.value, $5.tv_sec, $5.tv_nsec);
- pc->meridian = $6;
+ set_hhmmss (pc, $1.value, $3.value, 0, 0);
+ pc->meridian = MER24;
}
- | tUNUMBER ':' tUNUMBER ':' unsigned_seconds tSNUMBER o_colon_minutes
+ | tUNUMBER ':' tUNUMBER ':' unsigned_seconds o_zone_offset
{
set_hhmmss (pc, $1.value, $3.value, $5.tv_sec, $5.tv_nsec);
pc->meridian = MER24;
+ }
+ ;
+
+o_zone_offset:
+ /* empty */
+ | zone_offset
+ ;
+
+zone_offset:
+ tSNUMBER o_colon_minutes
+ {
pc->zones_seen++;
- pc->time_zone = time_zone_hhmm (pc, $6, $7);
+ pc->time_zone = time_zone_hhmm (pc, $1, $2);
}
;
}
;
+/* Note 'T' is a special case, as it is used as the separator in ISO
+ 8601 date and time of day representation. */
zone:
tZONE
{ pc->time_zone = $1; }
+ | 'T'
+ { pc->time_zone = HOUR(7); }
| tZONE relunit_snumber
{ pc->time_zone = $1;
apply_relative_time (pc, $2, 1); }
+ | 'T' relunit_snumber
+ { pc->time_zone = HOUR(7);
+ apply_relative_time (pc, $2, 1); }
| tZONE tSNUMBER o_colon_minutes
{ pc->time_zone = $1 + time_zone_hhmm (pc, $2, $3); }
| tDAYZONE
pc->year = $5;
}
}
- | tUNUMBER tSNUMBER tSNUMBER
- {
- /* ISO 8601 format. YYYY-MM-DD. */
- pc->year = $1;
- pc->month = -$2.value;
- pc->day = -$3.value;
- }
| tUNUMBER tMONTH tSNUMBER
{
/* e.g. 17-JUN-1992. */
pc->month = $2;
pc->year = $3;
}
+ | iso_8601_date
+ ;
+
+iso_8601_date:
+ tUNUMBER tSNUMBER tSNUMBER
+ {
+ /* ISO 8601 format. YYYY-MM-DD. */
+ pc->year = $1;
+ pc->month = -$2.value;
+ pc->day = -$3.value;
+ }
;
rel:
relunit tAGO
- { apply_relative_time (pc, $1, -1); }
+ { apply_relative_time (pc, $1, $2); }
| relunit
{ apply_relative_time (pc, $1, 1); }
| dayshift
{ $$ = $2.value; }
;
-o_merid:
- /* empty */
- { $$ = MER24; }
- | tMERIDIAN
- { $$ = $1; }
- ;
-
%%
static table const meridian_table[] =
{ "TENTH", tORDINAL, 10 },
{ "ELEVENTH", tORDINAL, 11 },
{ "TWELFTH", tORDINAL, 12 },
- { "AGO", tAGO, 1 },
+ { "AGO", tAGO, -1 },
+ { "HENCE", tAGO, 1 },
{ NULL, 0, 0 }
};
{ NULL, 0, 0 }
};
-/* Military time zone table. */
+/* Military time zone table.
+
+ Note 'T' is a special case, as it is used as the separator in ISO
+ 8601 date and time of day representation. */
static table const military_table[] =
{
{ "A", tZONE, -HOUR ( 1) },
{ "Q", tZONE, HOUR ( 4) },
{ "R", tZONE, HOUR ( 5) },
{ "S", tZONE, HOUR ( 6) },
- { "T", tZONE, HOUR ( 7) },
+ { "T", 'T', 0 },
{ "U", tZONE, HOUR ( 8) },
{ "V", tZONE, HOUR ( 9) },
{ "W", tZONE, HOUR (10) },
return year;
}
-static table const *
+static table const * _GL_ATTRIBUTE_PURE
lookup_zone (parser_control const *pc, char const *name)
{
table const *tp;
# define PATH_MAX 1024
# endif
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+/* The page "Naming Files, Paths, and Namespaces" on msdn.microsoft.com,
+ section "Maximum Path Length Limitation",
+ <http://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx#maxpath>
+ explains that the maximum size of a filename, including the terminating
+ NUL byte, is 260 = 3 + 256 + 1.
+ This is the same value as
+ - FILENAME_MAX in <stdio.h>,
+ - _MAX_PATH in <stdlib.h>,
+ - MAX_PATH in <windef.h>.
+ Undefine the original value, because mingw's <limits.h> gets it wrong. */
+# undef PATH_MAX
+# define PATH_MAX 260
+# endif
+
#endif /* _PATHMAX_H */
--- /dev/null
+/* Close a stream to a sub-process.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <stdio.h>
+
+/* Native Woe32 API. */
+
+int
+pclose (FILE *stream)
+{
+ return _pclose (stream);
+}
goto fail;
}
# else
- verify (O_NONBLOCK == 0);
+ {
+ verify (O_NONBLOCK == 0);
+ }
# endif
return 0;
# include <io.h>
# include <stdio.h>
# include <conio.h>
+# include "msvc-nothrow.h"
#else
# include <sys/time.h>
# include <sys/socket.h>
/* Specification. */
#include <stdio.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <unistd.h>
+#if HAVE_POPEN
-#undef popen
+# include <errno.h>
+# include <fcntl.h>
+# include <stdlib.h>
+# include <unistd.h>
+
+# undef popen
FILE *
rpl_popen (const char *filename, const char *mode)
errno = saved_errno;
return result;
}
+
+#else
+/* Native Woe32 API. */
+
+# include <string.h>
+
+FILE *
+popen (const char *filename, const char *mode)
+{
+ /* Use binary mode by default. */
+ if (strcmp (mode, "r") == 0)
+ mode = "rb";
+ else if (strcmp (mode, "w") == 0)
+ mode = "wb";
+
+ return _popen (filename, mode);
+}
+
+#endif
--- /dev/null
+/* Open the master side of a pseudo-terminal.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <stdlib.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#if defined __OpenBSD__
+# include <sys/ioctl.h>
+# include <sys/tty.h>
+#endif
+
+/* posix_openpt() is already provided on
+ glibc >= 2.2.1 (but is a stub on GNU/Hurd),
+ MacOS X >= 10.4,
+ FreeBSD >= 5.1 (lived in src/lib/libc/stdlib/grantpt.c before 8.0),
+ NetBSD >= 3.0,
+ AIX >= 5.2, HP-UX >= 11.31, Solaris >= 10, Cygwin >= 1.7.
+ Thus, this replacement function is compiled on
+ MacOS X 10.3, OpenBSD 4.9, Minix 3.1.8,
+ AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 9,
+ Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
+ Among these:
+ - AIX has /dev/ptc.
+ - HP-UX 10..11, IRIX 6.5, OSF/1 5.1, Solaris 2.6..9, Cygwin 1.5
+ have /dev/ptmx.
+ - HP-UX 10..11 also has /dev/ptym/clone, but this should not be needed.
+ - OpenBSD 4.9 has /dev/ptm and the PTMGET ioctl.
+ - Minix 3.1.8 have a list of pseudo-terminal devices in /dev.
+ - On native Windows, there are no ttys at all. */
+
+int
+posix_openpt (int flags)
+{
+ int master;
+
+#ifdef _AIX /* AIX */
+
+ master = open ("/dev/ptc", flags);
+
+#elif (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__ /* mingw */
+
+ /* Mingw lacks pseudo-terminals altogether. */
+ master = -1;
+ errno = ENOSYS;
+
+#elif defined __OpenBSD__
+
+ /* On OpenBSD, master and slave of a pseudo-terminal are allocated together,
+ by opening /dev/ptm and applying the PTMGET ioctl to it. */
+ int fd;
+ struct ptmget data;
+
+ fd = open (PATH_PTMDEV, O_RDWR);
+ if (fd >= 0)
+ {
+ if (ioctl (fd, PTMGET, &data) >= 0)
+ {
+ master = data.cfd;
+ close (data.sfd);
+ close (fd);
+ }
+ else
+ {
+ int saved_errno = errno;
+ close (fd);
+ errno = saved_errno;
+ master = -1;
+ }
+ }
+ else
+ master = -1;
+
+#else /* MacOS X, Minix, HP-UX, IRIX, OSF/1, Solaris 9, Cygwin 1.5 */
+
+ /* Most systems that lack posix_openpt() have /dev/ptmx. */
+ master = open ("/dev/ptmx", flags);
+
+ /* If all this does not work, we could try to open, one by one:
+ - On MacOS X: /dev/pty[p-w][0-9a-f]
+ - On *BSD: /dev/pty[p-sP-S][0-9a-v]
+ - On Minix: /dev/pty[p-q][0-9a-f]
+ - On AIX: /dev/ptyp[0-9a-f]
+ - On HP-UX: /dev/pty[p-r][0-9a-f]
+ - On OSF/1: /dev/pty[p-q][0-9a-f]
+ - On Solaris: /dev/pty[p-r][0-9a-f]
+ */
+
+#endif
+
+ return master;
+}
--- /dev/null
+/* Power function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+float
+powf (float x, float y)
+{
+ return (float) pow ((double) x, (double) y);
+}
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
-#include <config.h>
+#if ! defined USE_LONG_DOUBLE
+# include <config.h>
+#endif
/* Specification. */
#ifdef USE_LONG_DOUBLE
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
-#define USE_LONG_DOUBLE
-#include "printf-frexp.c"
+#include <config.h>
+
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+/* Specification. */
+# include "printf-frexpl.h"
+
+# include "printf-frexp.h"
+
+long double
+printf_frexpl (long double x, int *expptr)
+{
+ return printf_frexp (x, expptr);
+}
+
+#else
+
+# define USE_LONG_DOUBLE
+# include "printf-frexp.c"
+
+#endif
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
+/* Without this pragma, gcc 4.7.0 20111124 mistakenly suggests that
+ the proper_name function might be candidate for attribute 'const' */
+#if (__GNUC__ == 4 && 6 <= __GNUC_MINOR__) || 4 < __GNUC__
+# pragma GCC diagnostic ignored "-Wsuggest-attribute=const"
+#endif
+
#include <config.h>
/* Specification. */
#endif
/* Return the localization of NAME. NAME is written in ASCII. */
-extern const char * proper_name (const char *name);
+extern const char * proper_name (const char *name) /* NOT attribute const */;
/* Return the localization of a name whose original writing is not ASCII.
NAME_UTF8 is the real name, written in UTF-8 with octal or hexadecimal
#include <stdlib.h>
-#include <errno.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-#ifdef _LIBC
-# include <paths.h>
-#else
-# ifndef _PATH_TTY
-# define _PATH_TTY "/dev/tty"
-# endif
-# ifndef _PATH_DEV
-# define _PATH_DEV "/dev/"
-# endif
-
-# define __set_errno(e) errno = (e)
-# define __isatty isatty
-# define __stat stat
-# define __ttyname_r ttyname_r
-
-static int __ptsname_r (int fd, char *buf, size_t buflen);
-#endif
-
-
/* Static buffer for `ptsname'. */
static char buffer[64];
char *
ptsname (int fd)
{
- return __ptsname_r (fd, buffer, sizeof (buffer)) != 0 ? NULL : buffer;
-}
-
-
-/* Store at most BUFLEN characters of the pathname of the slave pseudo
- terminal associated with the master FD is open on in BUF.
- Return 0 on success, otherwise an error number. */
-static int
-__ptsname_r (int fd, char *buf, size_t buflen)
-{
- int save_errno = errno;
- int err;
- struct stat st;
-
- if (buf == NULL)
- {
- __set_errno (EINVAL);
- return EINVAL;
- }
-
- if (!__isatty (fd))
- /* We rely on isatty to set errno properly (i.e. EBADF or ENOTTY). */
- return errno;
-
- if (buflen < strlen (_PATH_TTY) + 3)
- {
- __set_errno (ERANGE);
- return ERANGE;
- }
-
- err = __ttyname_r (fd, buf, buflen);
- if (err != 0)
- {
- __set_errno (err);
- return errno;
- }
-
- buf[sizeof (_PATH_DEV) - 1] = 't';
-
- if (__stat (buf, &st) < 0)
- return errno;
-
- __set_errno (save_errno);
- return 0;
+ return ptsname_r (fd, buffer, sizeof (buffer)) != 0 ? NULL : buffer;
}
--- /dev/null
+/* Determine name of the slave side of a pseudo-terminal.
+ Copyright (C) 1998, 2002, 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <stdlib.h>
+
+#include <errno.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#ifdef _LIBC
+# include <paths.h>
+#else
+# ifndef _PATH_TTY
+# define _PATH_TTY "/dev/tty"
+# endif
+# ifndef _PATH_DEV
+# define _PATH_DEV "/dev/"
+# endif
+
+# define __set_errno(e) errno = (e)
+# define __isatty isatty
+# define __stat stat
+# define __ttyname_r ttyname_r
+# define __ptsname_r ptsname_r
+
+#endif
+
+
+/* Store at most BUFLEN characters of the pathname of the slave pseudo
+ terminal associated with the master FD is open on in BUF.
+ Return 0 on success, otherwise an error number. */
+int
+__ptsname_r (int fd, char *buf, size_t buflen)
+{
+ int save_errno = errno;
+ int err;
+ struct stat st;
+
+ if (buf == NULL)
+ {
+ __set_errno (EINVAL);
+ return EINVAL;
+ }
+
+ if (!__isatty (fd))
+ /* We rely on isatty to set errno properly (i.e. EBADF or ENOTTY). */
+ return errno;
+
+ if (buflen < strlen (_PATH_TTY) + 3)
+ {
+ __set_errno (ERANGE);
+ return ERANGE;
+ }
+
+ err = __ttyname_r (fd, buf, buflen);
+ if (err != 0)
+ {
+ __set_errno (err);
+ return errno;
+ }
+
+ buf[sizeof (_PATH_DEV) - 1] = 't';
+
+ if (__stat (buf, &st) < 0)
+ return errno;
+
+ __set_errno (save_errno);
+ return 0;
+}
/* Get 'struct termios' and 'struct winsize'. */
#include <termios.h>
+#if defined _AIX
+# include <sys/ioctl.h>
+#endif
+/* Mingw lacks 'struct termios' and 'struct winsize', but a forward
+ declaration of an opaque type is sufficient to allow compilation of
+ a stub openpty(). */
+struct termios;
+struct winsize;
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
#include <string.h>
#include <unistd.h>
-#if HAVE_GNU_LD
-# define environ __environ
-#else
+#if _LIBC
+# if HAVE_GNU_LD
+# define environ __environ
+# else
extern char **environ;
+# endif
#endif
#if _LIBC
/* Written by Paul Eggert <eggert@twinsun.com> */
+/* Without this pragma, gcc 4.7.0 20111124 mistakenly suggests that
+ the quoting_options_from_style function might be candidate for
+ attribute 'pure' */
+#if (__GNUC__ == 4 && 6 <= __GNUC_MINOR__) || 4 < __GNUC__
+# pragma GCC diagnostic ignored "-Wsuggest-attribute=pure"
+#endif
+
#include <config.h>
#include "quotearg.h"
}
/* Return quoting options for STYLE, with no extra quoting. */
-static struct quoting_options
+static struct quoting_options /* NOT PURE!! */
quoting_options_from_style (enum quoting_style style)
{
struct quoting_options o = { 0 };
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
-/* written by Jim Meyering */
+/* written by Jim Meyering and Bruno Haible */
#include <config.h>
-#include <sys/types.h>
+/* Specification. */
#include <signal.h>
-#include <unistd.h>
+
+#if HAVE_RAISE
+/* Native Windows platform. */
+
+# include <errno.h>
+
+# include "msvc-inval.h"
+
+# undef raise
+
+# if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+static inline int
+raise_nothrow (int sig)
+{
+ int result;
+
+ TRY_MSVC_INVAL
+ {
+ result = raise (sig);
+ }
+ CATCH_MSVC_INVAL
+ {
+ result = -1;
+ errno = EINVAL;
+ }
+ DONE_MSVC_INVAL;
+
+ return result;
+}
+# else
+# define raise_nothrow raise
+# endif
+
+#else
+/* An old Unix platform. */
+
+# include <unistd.h>
+
+# define rpl_raise raise
+
+#endif
int
-raise (int sig)
+rpl_raise (int sig)
{
+#if GNULIB_defined_signal_blocking && GNULIB_defined_SIGPIPE
+ if (sig == SIGPIPE)
+ return _gl_raise_SIGPIPE ();
+#endif
+
+#if HAVE_RAISE
+ return raise_nothrow (sig);
+#else
return kill (getpid (), sig);
+#endif
}
/* Specification. */
#include <unistd.h>
-/* Replace this function only if module 'nonblocking' is requested. */
-#if GNULIB_NONBLOCKING
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+# include <errno.h>
+# include <io.h>
-# include <errno.h>
-# include <io.h>
+# define WIN32_LEAN_AND_MEAN /* avoid including junk */
+# include <windows.h>
-# define WIN32_LEAN_AND_MEAN /* avoid including junk */
-# include <windows.h>
+# include "msvc-inval.h"
+# include "msvc-nothrow.h"
+
+# undef read
+
+# if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+static inline ssize_t
+read_nothrow (int fd, void *buf, size_t count)
+{
+ ssize_t result;
+
+ TRY_MSVC_INVAL
+ {
+ result = read (fd, buf, count);
+ }
+ CATCH_MSVC_INVAL
+ {
+ result = -1;
+ errno = EBADF;
+ }
+ DONE_MSVC_INVAL;
+
+ return result;
+}
+# else
+# define read_nothrow read
+# endif
ssize_t
rpl_read (int fd, void *buf, size_t count)
-#undef read
{
- ssize_t ret = read (fd, buf, count);
+ ssize_t ret = read_nothrow (fd, buf, count);
+# if GNULIB_NONBLOCKING
if (ret < 0
&& GetLastError () == ERROR_NO_DATA)
{
errno = EAGAIN;
}
}
+# endif
+
return ret;
}
-# endif
#endif
--- /dev/null
+/* Read the next entry of a directory.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <dirent.h>
+
+#include <errno.h>
+#include <stddef.h>
+
+#include "dirent-private.h"
+
+struct dirent *
+readdir (DIR *dirp)
+{
+ char type;
+ struct dirent *result;
+
+ /* There is no need to add code to produce entries for "." and "..".
+ According to the POSIX:2008 section "4.12 Pathname Resolution"
+ <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html>
+ "." and ".." are syntactic entities.
+ POSIX also says:
+ "If entries for dot or dot-dot exist, one entry shall be returned
+ for dot and one entry shall be returned for dot-dot; otherwise,
+ they shall not be returned." */
+
+ switch (dirp->status)
+ {
+ case -2:
+ /* End of directory already reached. */
+ return NULL;
+ case -1:
+ break;
+ case 0:
+ if (!FindNextFile (dirp->current, &dirp->entry))
+ {
+ switch (GetLastError ())
+ {
+ case ERROR_NO_MORE_FILES:
+ dirp->status = -2;
+ return NULL;
+ default:
+ errno = EIO;
+ return NULL;
+ }
+ }
+ break;
+ default:
+ errno = dirp->status;
+ return NULL;
+ }
+
+ dirp->status = 0;
+
+ if (dirp->entry.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
+ type = DT_DIR;
+ else if (dirp->entry.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)
+ type = DT_LNK;
+ else if ((dirp->entry.dwFileAttributes
+ & ~(FILE_ATTRIBUTE_READONLY
+ | FILE_ATTRIBUTE_HIDDEN
+ | FILE_ATTRIBUTE_SYSTEM
+ | FILE_ATTRIBUTE_ARCHIVE
+ | FILE_ATTRIBUTE_NORMAL
+ | FILE_ATTRIBUTE_TEMPORARY
+ | FILE_ATTRIBUTE_SPARSE_FILE
+ | FILE_ATTRIBUTE_COMPRESSED
+ | FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
+ | FILE_ATTRIBUTE_ENCRYPTED)) == 0)
+ /* Devices like COM1, LPT1, NUL would also have the attributes 0x20 but
+ they cannot occur here. */
+ type = DT_REG;
+ else
+ type = DT_UNKNOWN;
+
+ /* Reuse the memory of dirp->entry for the result. */
+ result =
+ (struct dirent *)
+ ((char *) dirp->entry.cFileName - offsetof (struct dirent, d_name[0]));
+ result->d_type = type;
+
+ return result;
+}
rpl_recv (int fd, void *buf, size_t len, int flags)
{
SOCKET sock = FD_TO_SOCKET (fd);
- int r = recv (sock, buf, len, flags);
- if (r < 0)
- set_winsock_errno ();
- return r;
+ if (sock == INVALID_SOCKET)
+ {
+ errno = EBADF;
+ return -1;
+ }
+ else
+ {
+ int r = recv (sock, buf, len, flags);
+ if (r < 0)
+ set_winsock_errno ();
+
+ return r;
+ }
}
rpl_recvfrom (int fd, void *buf, size_t len, int flags, struct sockaddr *from,
socklen_t *fromlen)
{
- int frombufsize = (from != NULL ? *fromlen : 0);
SOCKET sock = FD_TO_SOCKET (fd);
- int r = recvfrom (sock, buf, len, flags, from, fromlen);
- if (r < 0)
- set_winsock_errno ();
-
- /* Winsock recvfrom() only returns a valid 'from' when the socket is
- connectionless. POSIX gives a valid 'from' for all types of sockets. */
- else if (from != NULL && *fromlen == frombufsize)
- rpl_getpeername (fd, from, fromlen);
-
- return r;
+ if (sock == INVALID_SOCKET)
+ {
+ errno = EBADF;
+ return -1;
+ }
+ else
+ {
+ int frombufsize = (from != NULL ? *fromlen : 0);
+ int r = recvfrom (sock, buf, len, flags, from, fromlen);
+
+ if (r < 0)
+ set_winsock_errno ();
+
+ /* Winsock recvfrom() only returns a valid 'from' when the socket is
+ connectionless. POSIX gives a valid 'from' for all types of
+ sockets. */
+ else if (from != NULL && *fromlen == frombufsize)
+ rpl_getpeername (fd, from, fromlen);
+
+ return r;
+ }
}
#ifndef _Restrict_arr_
# if ((199901L <= __STDC_VERSION__ \
|| ((3 < __GNUC__ || (3 == __GNUC__ && 1 <= __GNUC_MINOR__)) \
- && !__STRICT_ANSI__)) \
+ && !defined __STRICT_ANSI__)) \
&& !defined __GNUG__)
# define _Restrict_arr_ _Restrict_
# else
Idx idx; /* for BACK_REF */
re_context_type ctx_type; /* for ANCHOR */
} opr;
-#if __GNUC__ >= 2 && !__STRICT_ANSI__
+#if __GNUC__ >= 2 && !defined __STRICT_ANSI__
re_token_type_t type : 8;
#else
re_token_type_t type;
# endif /* _LIBC */
{
/* match with range expression? */
-#if __GNUC__ >= 2 && ! (__STDC_VERSION__ < 199901L && __STRICT_ANSI__)
+#if __GNUC__ >= 2 && ! (__STDC_VERSION__ < 199901L && defined __STRICT_ANSI__)
wchar_t cmp_buf[] = {L'\0', L'\0', wc, L'\0', L'\0', L'\0'};
#else
wchar_t cmp_buf[] = {L'\0', L'\0', L'\0', L'\0', L'\0', L'\0'};
# define FILE_SYSTEM_PREFIX_LEN(P) 0
#endif
+/* Whether to enable the more costly support for relocatable libraries.
+ It allows libraries to be have been installed with a different original
+ prefix than the program. But it is quite costly, especially on Cygwin
+ platforms, see below. Therefore we enable it by default only on native
+ Win32 platforms. */
+#ifndef ENABLE_COSTLY_RELOCATABLE
+# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+# define ENABLE_COSTLY_RELOCATABLE 1
+# else
+# define ENABLE_COSTLY_RELOCATABLE 0
+# endif
+#endif
+
/* Original installation prefix. */
static char *orig_prefix;
static size_t orig_prefix_len;
#endif
}
-#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR)
+#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE)
/* Convenience function:
Computes the current installation prefix, based on the original
#endif /* !IN_LIBRARY || PIC */
-#if defined PIC && defined INSTALLDIR
+#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE
/* Full pathname of shared library, or NULL. */
static char *shared_library_fullname;
#if (defined __linux__ && (__GLIBC__ >= 2 || defined __UCLIBC__)) || defined __CYGWIN__
/* Linux has /proc/self/maps. glibc 2 and uClibc have the getline()
function.
- Cygwin >= 1.5 has /proc/self/maps and the getline() function too. */
+ Cygwin >= 1.5 has /proc/self/maps and the getline() function too.
+ But it is costly: ca. 0.3 ms on Linux, 3 ms on Cygwin 1.5, and 5 ms on
+ Cygwin 1.7. */
FILE *fp;
/* Open the current process' maps file. It describes one VMA per line. */
const char *
relocate (const char *pathname)
{
-#if defined PIC && defined INSTALLDIR
+#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE
static int initialized;
/* Initialization code for a shared library. */
--- /dev/null
+/* Restart reading the entries of a directory from the beginning.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <dirent.h>
+
+#include <errno.h>
+
+#include "dirent-private.h"
+
+void
+rewinddir (DIR *dirp)
+{
+ /* Like in closedir(). */
+ if (dirp->current != INVALID_HANDLE_VALUE)
+ FindClose (dirp->current);
+
+ /* Like in opendir(). */
+ dirp->status = -1;
+ dirp->current = FindFirstFile (dirp->dir_name_mask, &dirp->entry);
+ if (dirp->current == INVALID_HANDLE_VALUE)
+ {
+ switch (GetLastError ())
+ {
+ case ERROR_FILE_NOT_FOUND:
+ dirp->status = -2;
+ break;
+ default:
+ /* Save the error code for the next readdir() call. */
+ dirp->status = ENOENT;
+ break;
+ }
+ }
+}
--- /dev/null
+/* Round according to the current rounding mode.
+ Copyright (C) 2007, 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#if ! defined USE_LONG_DOUBLE
+# include <config.h>
+#endif
+
+/* Specification. */
+#include <math.h>
+
+#include <float.h>
+#include <stdlib.h>
+
+#undef MIN
+
+#ifdef USE_LONG_DOUBLE
+# define RINT rintl
+# define DOUBLE long double
+# define MANT_DIG LDBL_MANT_DIG
+# define MIN LDBL_MIN
+# define L_(literal) literal##L
+#elif ! defined USE_FLOAT
+# define RINT rint
+# define DOUBLE double
+# define MANT_DIG DBL_MANT_DIG
+# define MIN DBL_MIN
+# define L_(literal) literal
+#else /* defined USE_FLOAT */
+# define RINT rintf
+# define DOUBLE float
+# define MANT_DIG FLT_MANT_DIG
+# define MIN FLT_MIN
+# define L_(literal) literal##f
+#endif
+
+/* -0.0. See minus-zero.h. */
+#if defined __hpux || defined __sgi || defined __ICC
+# define MINUS_ZERO (-MIN * MIN)
+#else
+# define MINUS_ZERO L_(-0.0)
+#endif
+
+DOUBLE
+RINT (DOUBLE x)
+{
+ /* 2^(MANT_DIG-1). */
+ static const DOUBLE TWO_MANT_DIG =
+ /* Assume MANT_DIG <= 5 * 31.
+ Use the identity
+ n = floor(n/5) + floor((n+1)/5) + ... + floor((n+4)/5). */
+ (DOUBLE) (1U << ((MANT_DIG - 1) / 5))
+ * (DOUBLE) (1U << ((MANT_DIG - 1 + 1) / 5))
+ * (DOUBLE) (1U << ((MANT_DIG - 1 + 2) / 5))
+ * (DOUBLE) (1U << ((MANT_DIG - 1 + 3) / 5))
+ * (DOUBLE) (1U << ((MANT_DIG - 1 + 4) / 5));
+
+ /* The use of 'volatile' guarantees that excess precision bits are dropped at
+ each addition step and before the following comparison at the caller's
+ site. It is necessary on x86 systems where double-floats are not IEEE
+ compliant by default, to avoid that the results become platform and
+ compiler option dependent. 'volatile' is a portable alternative to gcc's
+ -ffloat-store option. */
+ volatile DOUBLE z = x;
+
+ /* Consider the current rounding mode, cf.
+ <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/float.h.html>.
+ This implementation supports only rounds-to-nearest. */
+ if (FLT_ROUNDS != 1)
+ abort ();
+
+ if (z > L_(0.0))
+ {
+ /* Avoid rounding error for x = 0.5 - 2^(-MANT_DIG-1). */
+ if (z < L_(0.5))
+ z = L_(0.0);
+ /* Avoid rounding errors for values near 2^k, where k >= MANT_DIG-1. */
+ else if (z < TWO_MANT_DIG)
+ {
+ /* Round to the next integer. */
+ z += TWO_MANT_DIG;
+ z -= TWO_MANT_DIG;
+ }
+ }
+ else if (z < L_(0.0))
+ {
+ /* Avoid rounding error for x = -(0.5 - 2^(-MANT_DIG-1)). */
+ if (z > - L_(0.5))
+ z = MINUS_ZERO;
+ /* Avoid rounding errors for values near -2^k, where k >= MANT_DIG-1. */
+ else if (z > -TWO_MANT_DIG)
+ {
+ /* Round to the next integer. */
+ z -= TWO_MANT_DIG;
+ z += TWO_MANT_DIG;
+ }
+ }
+ return z;
+}
--- /dev/null
+/* Round according to the current rounding mode.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define USE_FLOAT
+#include "rint.c"
--- /dev/null
+/* Round according to the current rounding mode.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+/* Specification. */
+# include <math.h>
+
+long double
+rintl (long double x)
+{
+ return rint (x);
+}
+
+#else
+
+# define USE_LONG_DOUBLE
+# include "rint.c"
+
+#endif
/* Written by Ben Pfaff <blp@gnu.org>, 2007.
Based heavily on code by Bruno Haible. */
-#include <config.h>
+#if ! defined USE_LONG_DOUBLE
+# include <config.h>
+#endif
/* Specification. */
#include <math.h>
with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
-#define USE_LONG_DOUBLE
-#include "round.c"
+#include <config.h>
+
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+/* Specification. */
+# include <math.h>
+
+long double
+roundl (long double x)
+{
+ return round (x);
+}
+
+#else
+
+# define USE_LONG_DOUBLE
+# include "round.c"
+
+#endif
#ifndef _@GUARD_PREFIX@_SCHED_H
#define _@GUARD_PREFIX@_SCHED_H
+/* Get pid_t.
+ This is needed on glibc 2.11 (see
+ glibc bug <http://sourceware.org/bugzilla/show_bug.cgi?id=13198>)
+ and MacOS X 10.5. */
+#include <sys/types.h>
+
#if !@HAVE_STRUCT_SCHED_PARAM@
# if !GNULIB_defined_struct_sched_param
/* Native Win32. */
#include <sys/types.h>
-#include <stdbool.h>
#include <errno.h>
#include <limits.h>
#include <conio.h>
#include <time.h>
+#include "msvc-nothrow.h"
+
struct bitset {
unsigned char in[FD_SETSIZE / CHAR_BIT];
unsigned char out[FD_SETSIZE / CHAR_BIT];
rpl_send (int fd, const void *buf, size_t len, int flags)
{
SOCKET sock = FD_TO_SOCKET (fd);
- int r = send (sock, buf, len, flags);
- if (r < 0)
- set_winsock_errno ();
- return r;
+ if (sock == INVALID_SOCKET)
+ {
+ errno = EBADF;
+ return -1;
+ }
+ else
+ {
+ int r = send (sock, buf, len, flags);
+ if (r < 0)
+ set_winsock_errno ();
+
+ return r;
+ }
}
const struct sockaddr *to, socklen_t tolen)
{
SOCKET sock = FD_TO_SOCKET (fd);
- int r = sendto (sock, buf, len, flags, to, tolen);
- if (r < 0)
- set_winsock_errno ();
- return r;
+ if (sock == INVALID_SOCKET)
+ {
+ errno = EBADF;
+ return -1;
+ }
+ else
+ {
+ int r = sendto (sock, buf, len, flags, to, tolen);
+ if (r < 0)
+ set_winsock_errno ();
+
+ return r;
+ }
}
# if HAVE_ACL_GET_FILE
/* POSIX 1003.1e draft 17 (abandoned) specific version. */
/* Linux, FreeBSD, MacOS X, IRIX, Tru64 */
-# if MODE_INSIDE_ACL
+# if !HAVE_ACL_TYPE_EXTENDED
/* Linux, FreeBSD, IRIX, Tru64 */
/* We must also have acl_from_text and acl_delete_def_file.
if (S_ISDIR (mode) && acl_delete_def_file (name))
return -1;
- if (mode & (S_ISUID | S_ISGID | S_ISVTX))
+ if (!MODE_INSIDE_ACL || (mode & (S_ISUID | S_ISGID | S_ISVTX)))
{
- /* We did not call chmod so far, so the special bits have not yet
- been set. */
+ /* We did not call chmod so far, and either the mode and the ACL are
+ separate or special bits are to be set which don't fit into ACLs. */
return chmod_or_fchmod (name, desc, mode);
}
return 0;
-# else /* !MODE_INSIDE_ACL */
+# else /* HAVE_ACL_TYPE_EXTENDED */
/* MacOS X */
-# if !HAVE_ACL_TYPE_EXTENDED
-# error Must have ACL_TYPE_EXTENDED
-# endif
-
/* On MacOS X, acl_get_file (name, ACL_TYPE_ACCESS)
and acl_get_file (name, ACL_TYPE_DEFAULT)
always return NULL / EINVAL. You have to use
# elif HAVE_FACL && defined GETACLCNT /* Solaris, Cygwin, not HP-UX */
-# if defined ACL_NO_TRIVIAL
- /* Solaris 10 (newer version), which has additional API declared in
- <sys/acl.h> (acl_t) and implemented in libsec (acl_set, acl_trivial,
- acl_fromtext, ...). */
+ int done_setacl = 0;
- acl_t *aclp;
- char acl_text[] = "user::---,group::---,mask:---,other:---";
- int ret;
- int saved_errno;
-
- if (mode & S_IRUSR) acl_text[ 6] = 'r';
- if (mode & S_IWUSR) acl_text[ 7] = 'w';
- if (mode & S_IXUSR) acl_text[ 8] = 'x';
- if (mode & S_IRGRP) acl_text[17] = acl_text[26] = 'r';
- if (mode & S_IWGRP) acl_text[18] = acl_text[27] = 'w';
- if (mode & S_IXGRP) acl_text[19] = acl_text[28] = 'x';
- if (mode & S_IROTH) acl_text[36] = 'r';
- if (mode & S_IWOTH) acl_text[37] = 'w';
- if (mode & S_IXOTH) acl_text[38] = 'x';
-
- if (acl_fromtext (acl_text, &aclp) != 0)
- {
- errno = ENOMEM;
- return -1;
- }
-
- ret = (desc < 0 ? acl_set (name, aclp) : facl_set (desc, aclp));
- saved_errno = errno;
- acl_free (aclp);
- if (ret < 0)
- {
- if (saved_errno == ENOSYS || saved_errno == EOPNOTSUPP)
- return chmod_or_fchmod (name, desc, mode);
- errno = saved_errno;
- return -1;
- }
-
- if (mode & (S_ISUID | S_ISGID | S_ISVTX))
- {
- /* We did not call chmod so far, so the special bits have not yet
- been set. */
- return chmod_or_fchmod (name, desc, mode);
- }
- return 0;
-
-# else /* Solaris, Cygwin, general case */
-
-# ifdef ACE_GETACL
+# ifdef ACE_GETACL
/* Solaris also has a different variant of ACLs, used in ZFS and NFSv4
file systems (whereas the other ones are used in UFS file systems). */
convention = 0;
for (i = 0; i < count; i++)
- if (entries[i].a_flags & (ACE_OWNER | ACE_GROUP | ACE_OTHER))
+ if (entries[i].a_flags & (OLD_ACE_OWNER | OLD_ACE_GROUP | OLD_ACE_OTHER))
{
convention = 1;
break;
if (convention >= 0)
{
- ace_t entries[3];
+ ace_t entries[6];
+ int count;
int ret;
if (convention)
{
/* Running on Solaris 10. */
- entries[0].a_type = ALLOW;
- entries[0].a_flags = ACE_OWNER;
+ entries[0].a_type = OLD_ALLOW;
+ entries[0].a_flags = OLD_ACE_OWNER;
entries[0].a_who = 0; /* irrelevant */
entries[0].a_access_mask = (mode >> 6) & 7;
- entries[1].a_type = ALLOW;
- entries[1].a_flags = ACE_GROUP;
+ entries[1].a_type = OLD_ALLOW;
+ entries[1].a_flags = OLD_ACE_GROUP;
entries[1].a_who = 0; /* irrelevant */
entries[1].a_access_mask = (mode >> 3) & 7;
- entries[2].a_type = ALLOW;
- entries[2].a_flags = ACE_OTHER;
+ entries[2].a_type = OLD_ALLOW;
+ entries[2].a_flags = OLD_ACE_OTHER;
entries[2].a_who = 0;
entries[2].a_access_mask = mode & 7;
+ count = 3;
}
else
{
- /* Running on Solaris 10 (newer version) or Solaris 11. */
- entries[0].a_type = ACE_ACCESS_ALLOWED_ACE_TYPE;
+ /* Running on Solaris 10 (newer version) or Solaris 11.
+ The details here were found through "/bin/ls -lvd somefiles". */
+ entries[0].a_type = NEW_ACE_ACCESS_DENIED_ACE_TYPE;
entries[0].a_flags = NEW_ACE_OWNER;
entries[0].a_who = 0; /* irrelevant */
- entries[0].a_access_mask =
- (mode & 0400 ? NEW_ACE_READ_DATA : 0)
- | (mode & 0200 ? NEW_ACE_WRITE_DATA : 0)
- | (mode & 0100 ? NEW_ACE_EXECUTE : 0);
- entries[1].a_type = ACE_ACCESS_ALLOWED_ACE_TYPE;
- entries[1].a_flags = NEW_ACE_GROUP | NEW_ACE_IDENTIFIER_GROUP;
+ entries[0].a_access_mask = 0;
+ entries[1].a_type = NEW_ACE_ACCESS_ALLOWED_ACE_TYPE;
+ entries[1].a_flags = NEW_ACE_OWNER;
entries[1].a_who = 0; /* irrelevant */
- entries[1].a_access_mask =
- (mode & 0040 ? NEW_ACE_READ_DATA : 0)
- | (mode & 0020 ? NEW_ACE_WRITE_DATA : 0)
- | (mode & 0010 ? NEW_ACE_EXECUTE : 0);
- entries[2].a_type = ACE_ACCESS_ALLOWED_ACE_TYPE;
- entries[2].a_flags = ACE_EVERYONE;
- entries[2].a_who = 0;
- entries[2].a_access_mask =
- (mode & 0004 ? NEW_ACE_READ_DATA : 0)
- | (mode & 0002 ? NEW_ACE_WRITE_DATA : 0)
- | (mode & 0001 ? NEW_ACE_EXECUTE : 0);
+ entries[1].a_access_mask = NEW_ACE_WRITE_NAMED_ATTRS
+ | NEW_ACE_WRITE_ATTRIBUTES
+ | NEW_ACE_WRITE_ACL
+ | NEW_ACE_WRITE_OWNER;
+ if (mode & 0400)
+ entries[1].a_access_mask |= NEW_ACE_READ_DATA;
+ else
+ entries[0].a_access_mask |= NEW_ACE_READ_DATA;
+ if (mode & 0200)
+ entries[1].a_access_mask |= NEW_ACE_WRITE_DATA | NEW_ACE_APPEND_DATA;
+ else
+ entries[0].a_access_mask |= NEW_ACE_WRITE_DATA | NEW_ACE_APPEND_DATA;
+ if (mode & 0100)
+ entries[1].a_access_mask |= NEW_ACE_EXECUTE;
+ else
+ entries[0].a_access_mask |= NEW_ACE_EXECUTE;
+ entries[2].a_type = NEW_ACE_ACCESS_DENIED_ACE_TYPE;
+ entries[2].a_flags = NEW_ACE_GROUP | NEW_ACE_IDENTIFIER_GROUP;
+ entries[2].a_who = 0; /* irrelevant */
+ entries[2].a_access_mask = 0;
+ entries[3].a_type = NEW_ACE_ACCESS_ALLOWED_ACE_TYPE;
+ entries[3].a_flags = NEW_ACE_GROUP | NEW_ACE_IDENTIFIER_GROUP;
+ entries[3].a_who = 0; /* irrelevant */
+ entries[3].a_access_mask = 0;
+ if (mode & 0040)
+ entries[3].a_access_mask |= NEW_ACE_READ_DATA;
+ else
+ entries[2].a_access_mask |= NEW_ACE_READ_DATA;
+ if (mode & 0020)
+ entries[3].a_access_mask |= NEW_ACE_WRITE_DATA | NEW_ACE_APPEND_DATA;
+ else
+ entries[2].a_access_mask |= NEW_ACE_WRITE_DATA | NEW_ACE_APPEND_DATA;
+ if (mode & 0010)
+ entries[3].a_access_mask |= NEW_ACE_EXECUTE;
+ else
+ entries[2].a_access_mask |= NEW_ACE_EXECUTE;
+ entries[4].a_type = NEW_ACE_ACCESS_DENIED_ACE_TYPE;
+ entries[4].a_flags = NEW_ACE_EVERYONE;
+ entries[4].a_who = 0;
+ entries[4].a_access_mask = NEW_ACE_WRITE_NAMED_ATTRS
+ | NEW_ACE_WRITE_ATTRIBUTES
+ | NEW_ACE_WRITE_ACL
+ | NEW_ACE_WRITE_OWNER;
+ entries[5].a_type = NEW_ACE_ACCESS_ALLOWED_ACE_TYPE;
+ entries[5].a_flags = NEW_ACE_EVERYONE;
+ entries[5].a_who = 0;
+ entries[5].a_access_mask = NEW_ACE_READ_NAMED_ATTRS
+ | NEW_ACE_READ_ATTRIBUTES
+ | NEW_ACE_READ_ACL
+ | NEW_ACE_SYNCHRONIZE;
+ if (mode & 0004)
+ entries[5].a_access_mask |= NEW_ACE_READ_DATA;
+ else
+ entries[4].a_access_mask |= NEW_ACE_READ_DATA;
+ if (mode & 0002)
+ entries[5].a_access_mask |= NEW_ACE_WRITE_DATA | NEW_ACE_APPEND_DATA;
+ else
+ entries[4].a_access_mask |= NEW_ACE_WRITE_DATA | NEW_ACE_APPEND_DATA;
+ if (mode & 0001)
+ entries[5].a_access_mask |= NEW_ACE_EXECUTE;
+ else
+ entries[4].a_access_mask |= NEW_ACE_EXECUTE;
+ count = 6;
}
if (desc != -1)
- ret = facl (desc, ACE_SETACL,
- sizeof (entries) / sizeof (ace_t), entries);
+ ret = facl (desc, ACE_SETACL, count, entries);
else
- ret = acl (name, ACE_SETACL,
- sizeof (entries) / sizeof (ace_t), entries);
+ ret = acl (name, ACE_SETACL, count, entries);
if (ret < 0 && errno != EINVAL && errno != ENOTSUP)
{
if (errno == ENOSYS)
return chmod_or_fchmod (name, desc, mode);
return -1;
}
+ if (ret == 0)
+ done_setacl = 1;
}
-# endif
+# endif
- {
- aclent_t entries[3];
- int ret;
-
- entries[0].a_type = USER_OBJ;
- entries[0].a_id = 0; /* irrelevant */
- entries[0].a_perm = (mode >> 6) & 7;
- entries[1].a_type = GROUP_OBJ;
- entries[1].a_id = 0; /* irrelevant */
- entries[1].a_perm = (mode >> 3) & 7;
- entries[2].a_type = OTHER_OBJ;
- entries[2].a_id = 0;
- entries[2].a_perm = mode & 7;
+ if (!done_setacl)
+ {
+ aclent_t entries[3];
+ int ret;
- if (desc != -1)
- ret = facl (desc, SETACL, sizeof (entries) / sizeof (aclent_t), entries);
- else
- ret = acl (name, SETACL, sizeof (entries) / sizeof (aclent_t), entries);
- if (ret < 0)
- {
- if (errno == ENOSYS || errno == EOPNOTSUPP)
- return chmod_or_fchmod (name, desc, mode);
- return -1;
- }
- }
+ entries[0].a_type = USER_OBJ;
+ entries[0].a_id = 0; /* irrelevant */
+ entries[0].a_perm = (mode >> 6) & 7;
+ entries[1].a_type = GROUP_OBJ;
+ entries[1].a_id = 0; /* irrelevant */
+ entries[1].a_perm = (mode >> 3) & 7;
+ entries[2].a_type = OTHER_OBJ;
+ entries[2].a_id = 0;
+ entries[2].a_perm = mode & 7;
+
+ if (desc != -1)
+ ret = facl (desc, SETACL,
+ sizeof (entries) / sizeof (aclent_t), entries);
+ else
+ ret = acl (name, SETACL,
+ sizeof (entries) / sizeof (aclent_t), entries);
+ if (ret < 0)
+ {
+ if (errno == ENOSYS || errno == EOPNOTSUPP)
+ return chmod_or_fchmod (name, desc, mode);
+ return -1;
+ }
+ }
if (!MODE_INSIDE_ACL || (mode & (S_ISUID | S_ISGID | S_ISVTX)))
{
}
return 0;
-# endif
-
# elif HAVE_GETACL /* HP-UX */
struct stat statbuf;
int
rpl_setsockopt (int fd, int level, int optname, const void *optval, socklen_t optlen)
{
- int r;
SOCKET sock = FD_TO_SOCKET (fd);
+ int r;
- if (level == SOL_SOCKET && (optname == SO_RCVTIMEO || optname == SO_SNDTIMEO))
+ if (sock == INVALID_SOCKET)
{
- const struct timeval *tv = optval;
- int milliseconds = tv->tv_sec * 1000 + tv->tv_usec / 1000;
- optval = &milliseconds;
- r = setsockopt (sock, level, optname, optval, sizeof (int));
+ errno = EBADF;
+ return -1;
}
else
{
- r = setsockopt (sock, level, optname, optval, optlen);
- }
+ if (level == SOL_SOCKET
+ && (optname == SO_RCVTIMEO || optname == SO_SNDTIMEO))
+ {
+ const struct timeval *tv = optval;
+ int milliseconds = tv->tv_sec * 1000 + tv->tv_usec / 1000;
+ optval = &milliseconds;
+ r = setsockopt (sock, level, optname, optval, sizeof (int));
+ }
+ else
+ {
+ r = setsockopt (sock, level, optname, optval, optlen);
+ }
- if (r < 0)
- set_winsock_errno ();
+ if (r < 0)
+ set_winsock_errno ();
- return r;
+ return r;
+ }
}
#include "sha1.h"
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
#include <stdlib.h>
#include <string.h>
if (len >= 64)
{
#if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (uint32_t) != 0)
if (UNALIGNED_P (buffer))
while (len > 64)
{
#include "sha256.h"
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
#include <stdlib.h>
#include <string.h>
if (len >= 64)
{
#if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (uint32_t) != 0)
if (UNALIGNED_P (buffer))
while (len > 64)
{
#include "sha512.h"
-#include <stddef.h>
+#include <stdalign.h>
+#include <stdint.h>
#include <stdlib.h>
#include <string.h>
if (len >= 128)
{
#if !_STRING_ARCH_unaligned
-# define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (u64) != 0)
+# define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (u64) != 0)
if (UNALIGNED_P (buffer))
while (len > 128)
{
rpl_shutdown (int fd, int how)
{
SOCKET sock = FD_TO_SOCKET (fd);
- int r = shutdown (sock, how);
- if (r < 0)
- set_winsock_errno ();
- return r;
+ if (sock == INVALID_SOCKET)
+ {
+ errno = EBADF;
+ return -1;
+ }
+ else
+ {
+ int r = shutdown (sock, how);
+ if (r < 0)
+ set_winsock_errno ();
+
+ return r;
+ }
}
#endif
+#if @GNULIB_RAISE@
+# if @REPLACE_RAISE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef raise
+# define raise rpl_raise
+# endif
+_GL_FUNCDECL_RPL (raise, int, (int sig));
+_GL_CXXALIAS_RPL (raise, int, (int sig));
+# else
+# if !@HAVE_RAISE@
+_GL_FUNCDECL_SYS (raise, int, (int sig));
+# endif
+_GL_CXXALIAS_SYS (raise, int, (int sig));
+# endif
+_GL_CXXALIASWARN (raise);
+#elif defined GNULIB_POSIXCHECK
+# undef raise
+/* Assume raise is always declared. */
+_GL_WARN_ON_USE (raise, "raise can crash on native Windows - "
+ "use gnulib module raise for portability");
+#endif
+
+
#if @GNULIB_SIGPROCMASK@
# if !@HAVE_POSIX_SIGNALBLOCKING@
+# ifndef GNULIB_defined_signal_blocking
+# define GNULIB_defined_signal_blocking 1
+# endif
+
/* Maximum signal number + 1. */
# ifndef NSIG
# define NSIG 32
# endif
_GL_CXXALIASWARN (signal);
-/* Raise signal SIG. */
# if !@HAVE_POSIX_SIGNALBLOCKING@ && GNULIB_defined_SIGPIPE
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-# undef raise
-# define raise rpl_raise
-# endif
-_GL_FUNCDECL_RPL (raise, int, (int sig));
-_GL_CXXALIAS_RPL (raise, int, (int sig));
-# else
-_GL_CXXALIAS_SYS (raise, int, (int sig));
+/* Raise signal SIGPIPE. */
+_GL_EXTERN_C int _gl_raise_SIGPIPE (void);
# endif
-_GL_CXXALIASWARN (raise);
#elif defined GNULIB_POSIXCHECK
# undef sigaddset
#include <stdint.h>
#include <stdlib.h>
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+# include "msvc-inval.h"
+#endif
+
/* We assume that a platform without POSIX signal blocking functions
also does not have the POSIX sigaction() function, only the
signal() function. We also assume signal() has SysV semantics,
typedef void (*handler_t) (int);
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+static inline handler_t
+signal_nothrow (int sig, handler_t handler)
+{
+ handler_t result;
+
+ TRY_MSVC_INVAL
+ {
+ result = signal (sig, handler);
+ }
+ CATCH_MSVC_INVAL
+ {
+ result = SIG_ERR;
+ errno = EINVAL;
+ }
+ DONE_MSVC_INVAL;
+
+ return result;
+}
+# define signal signal_nothrow
+#endif
+
/* Handling of gnulib defined signals. */
#if GNULIB_defined_SIGPIPE
return signal (sig, handler);
}
}
+# undef signal
# define signal ext_signal
#endif
}
#if GNULIB_defined_SIGPIPE
-/* Raise the signal SIG. */
+/* Raise the signal SIGPIPE. */
int
-rpl_raise (int sig)
-# undef raise
+_gl_raise_SIGPIPE (void)
{
- switch (sig)
+ if (blocked_set & (1U << SIGPIPE))
+ pending_array[SIGPIPE] = 1;
+ else
{
- case SIGPIPE:
- if (blocked_set & (1U << sig))
- pending_array[sig] = 1;
- else
- {
- handler_t handler = SIGPIPE_handler;
- if (handler == SIG_DFL)
- exit (128 + SIGPIPE);
- else if (handler != SIG_IGN)
- (*handler) (sig);
- }
- return 0;
- default: /* System defined signal */
- return raise (sig);
+ handler_t handler = SIGPIPE_handler;
+ if (handler == SIG_DFL)
+ exit (128 + SIGPIPE);
+ else if (handler != SIG_IGN)
+ (*handler) (SIGPIPE);
}
+ return 0;
}
#endif
--- /dev/null
+/* Sine function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+float
+sinf (float x)
+{
+ return (float) sin ((double) x);
+}
--- /dev/null
+/* Hyperbolic sine function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+float
+sinhf (float x)
+{
+ return (float) sinh ((double) x);
+}
/* Specification. */
#include <math.h>
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+long double
+sinl (long double x)
+{
+ return sin (x);
+}
+
+#else
+
/* sinl(x)
* Return sine function of x.
*
* TRIG(x) returns trig(x) nearly rounded
*/
-#include "trigl.h"
+# include "trigl.h"
long double
sinl (long double x)
}
}
+#endif
+
#if 0
int
main (void)
# include <sys/socket.h>
# include "fd-hook.h"
+# include "msvc-nothrow.h"
/* Get set_winsock_errno, FD_TO_SOCKET etc. */
# include "w32sock.h"
#define SOCKETS_2_1 0x201
#define SOCKETS_2_2 0x202
-int gl_sockets_startup (int version);
-int gl_sockets_cleanup (void);
+int gl_sockets_startup (int version)
+#if !WINDOWS_SOCKETS
+ _GL_ATTRIBUTE_CONST
+#endif
+ ;
+
+int gl_sockets_cleanup (void)
+#if !WINDOWS_SOCKETS
+ _GL_ATTRIBUTE_CONST
+#endif
+ ;
/* This function is useful it you create a socket using gnulib's
Winsock wrappers but needs to pass on the socket handle to some
#include <sys/socket.h>
+#include "msvc-nothrow.h"
+
static inline SOCKET
gl_fd_to_handle (int fd)
{
#ifndef _Restrict_arr_
# if ((199901L <= __STDC_VERSION__ \
|| ((3 < __GNUC__ || (3 == __GNUC__ && 1 <= __GNUC_MINOR__)) \
- && !__STRICT_ANSI__)) \
+ && !defined __STRICT_ANSI__)) \
&& !defined __GNUG__)
# define _Restrict_arr_ _Restrict_
# else
--- /dev/null
+/* Square root.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+float
+sqrtf (float x)
+{
+ return (float) sqrt ((double) x);
+}
/* Specification. */
#include <math.h>
-#include <float.h>
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+long double
+sqrtl (long double x)
+{
+ return sqrt (x);
+}
+
+#else
+
+# include <float.h>
/* A simple Newton-Raphson method. */
long double
return y;
}
+
+#endif
}
/* Specification. */
-#include <sys/stat.h>
+/* Write "sys/stat.h" here, not <sys/stat.h>, otherwise OSF/1 5.1 DTK cc
+ eliminates this include because of the preliminary #include <sys/stat.h>
+ above. */
+#include "sys/stat.h"
#include <errno.h>
#include <limits.h>
#include "dosname.h"
#include "verify.h"
+#if REPLACE_FUNC_STAT_DIR
+# include "pathmax.h"
+ /* The only known systems where REPLACE_FUNC_STAT_DIR is needed also
+ have a constant PATH_MAX. */
+# ifndef PATH_MAX
+# error "Please port this replacement to your platform"
+# endif
+#endif
+
/* Store information about NAME into ST. Work around bugs with
trailing slashes. Mingw has other bugs (such as st_ino always
being 0 on success) which this wrapper does not work around. But
}
#endif /* REPLACE_FUNC_STAT_FILE */
#if REPLACE_FUNC_STAT_DIR
- /* The only known systems where REPLACE_FUNC_STAT_DIR is needed also
- have a constant PATH_MAX. */
-# ifndef PATH_MAX
-# error "Please port this replacement to your platform"
-# endif
if (result == -1 && errno == ENOENT)
{
--- /dev/null
+/* A substitute for ISO C 1x <stdalign.h>.
+
+ Copyright 2011 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert and Bruno Haible. */
+
+#ifndef _GL_STDALIGN_H
+#define _GL_STDALIGN_H
+
+/* ISO C1X <stdalign.h> for platforms that lack it.
+
+ References:
+ ISO C1X <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf>
+ sections 6.5.3.4, 6.7.5, 7.15.
+ C++0X <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf>
+ section 18.10. */
+
+/* alignof (TYPE), also known as _Alignof (TYPE), yields the alignment
+ requirement of a structure member (i.e., slot or field) that is of
+ type TYPE, as an integer constant expression.
+
+ This differs from GCC's __alignof__ operator, which can yield a
+ better-performing alignment for an object of that type. For
+ example, on x86 with GCC, __alignof__ (double) and __alignof__
+ (long long) are 8, whereas alignof (double) and alignof (long long)
+ are 4 unless the option '-malign-double' is used.
+
+ The result cannot be used as a value for an 'enum' constant, if you
+ want to be portable to HP-UX 10.20 cc and AIX 3.2.5 xlc. */
+#include <stddef.h>
+#if defined __cplusplus
+ template <class __t> struct __alignof_helper { char __a; __t __b; };
+# define _Alignof(type) offsetof (__alignof_helper<type>, __b)
+#else
+# define _Alignof(type) offsetof (struct { char __a; type __b; }, __b)
+#endif
+#define alignof _Alignof
+#define __alignof_is_defined 1
+
+/* alignas (A), also known as _Alignas (A), aligns a variable or type
+ to the alignment A, where A is an integer constant expression. For
+ example:
+
+ int alignas (8) foo;
+ struct s { int a; int alignas (8) bar; };
+
+ aligns the address of FOO and the offset of BAR to be multiples of 8.
+
+ A should be a power of two that is at least the type's alignment
+ and at most the implementation's alignment limit. This limit is
+ 2**28 on typical GNUish hosts, and 2**13 on MSVC. To be portable
+ to MSVC through at least version 10.0, A should be an integer
+ constant, as MSVC does not support expressions such as 1 << 3.
+ To be portable to Sun C 5.11, do not align auto variables to
+ anything stricter than their default alignment.
+
+ The following draft C1X requirements are not supported here:
+
+ - If A is zero, alignas has no effect.
+ - alignas can be used multiple times; the strictest one wins.
+ - alignas (TYPE) is equivalent to alignas (alignof (TYPE)).
+
+ */
+
+#if __GNUC__ || __IBMC__ || __IBMCPP__ || 0x5110 <= __SUNPRO_C
+# define _Alignas(a) __attribute__ ((__aligned__ (a)))
+#elif 1300 <= _MSC_VER
+# define _Alignas(a) __declspec (align (a))
+#endif
+#ifdef _Alignas
+# define alignas _Alignas
+# define __alignas_is_defined 1
+#endif
+
+#endif /* _GL_STDALIGN_H */
# define WIN32_LEAN_AND_MEAN /* avoid including junk */
# include <windows.h>
+# include "msvc-nothrow.h"
+
# define CALL_WITH_ERRNO_FIX(RETTYPE, EXPRESSION, FAILED) \
if (ferror (stream)) \
return (EXPRESSION); \
# define WIN32_LEAN_AND_MEAN /* avoid including junk */
# include <windows.h>
+# include "msvc-nothrow.h"
+
# if GNULIB_NONBLOCKING
# define CLEAR_ERRNO \
errno = 0;
"use gnulib module fclose for portable POSIX compliance");
#endif
+#if @GNULIB_FDOPEN@
+# if @REPLACE_FDOPEN@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef fdopen
+# define fdopen rpl_fdopen
+# endif
+_GL_FUNCDECL_RPL (fdopen, FILE *, (int fd, const char *mode)
+ _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (fdopen, FILE *, (int fd, const char *mode));
+# else
+_GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode));
+# endif
+_GL_CXXALIASWARN (fdopen);
+#elif defined GNULIB_POSIXCHECK
+# undef fdopen
+/* Assume fdopen is always declared. */
+_GL_WARN_ON_USE (fdopen, "fdopen on Win32 platforms is not POSIX compatible - "
+ "use gnulib module fdopen for portability");
+#endif
+
#if @GNULIB_FFLUSH@
/* Flush all pending data on STREAM according to POSIX rules. Both
output and seekable input streams are supported.
_GL_CXXALIASWARN (obstack_vprintf);
#endif
+#if @GNULIB_PCLOSE@
+# if !@HAVE_PCLOSE@
+_GL_FUNCDECL_SYS (pclose, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pclose, int, (FILE *stream));
+_GL_CXXALIASWARN (pclose);
+#elif defined GNULIB_POSIXCHECK
+# undef pclose
+# if HAVE_RAW_DECL_PCLOSE
+_GL_WARN_ON_USE (pclose, "popen is unportable - "
+ "use gnulib module pclose for more portability");
+# endif
+#endif
+
#if @GNULIB_PERROR@
/* Print a message to standard error, describing the value of ERRNO,
(if STRING is not NULL and not empty) prefixed with STRING and ": ",
_GL_ARG_NONNULL ((1, 2)));
_GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode));
# else
+# if !@HAVE_POPEN@
+_GL_FUNCDECL_SYS (popen, FILE *, (const char *cmd, const char *mode)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
_GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode));
# endif
_GL_CXXALIASWARN (popen);
#elif defined GNULIB_POSIXCHECK
# undef grantpt
# if HAVE_RAW_DECL_GRANTPT
-_GL_WARN_ON_USE (ptsname, "grantpt is not portable - "
+_GL_WARN_ON_USE (grantpt, "grantpt is not portable - "
"use gnulib module grantpt for portability");
# endif
#endif
# endif
#endif
+#if @GNULIB_POSIX_OPENPT@
+/* Return an FD open to the master side of a pseudo-terminal. Flags should
+ include O_RDWR, and may also include O_NOCTTY. */
+# if !@HAVE_POSIX_OPENPT@
+_GL_FUNCDECL_SYS (posix_openpt, int, (int flags));
+# endif
+_GL_CXXALIAS_SYS (posix_openpt, int, (int flags));
+_GL_CXXALIASWARN (posix_openpt);
+#elif defined GNULIB_POSIXCHECK
+# undef posix_openpt
+# if HAVE_RAW_DECL_POSIX_OPENPT
+_GL_WARN_ON_USE (posix_openpt, "posix_openpt is not portable - "
+ "use gnulib module posix_openpt for portability");
+# endif
+#endif
+
#if @GNULIB_PTSNAME@
/* Return the pathname of the pseudo-terminal slave associated with
the master FD is open on, or NULL on errors. */
# endif
#endif
+#if @GNULIB_PTSNAME_R@
+/* Set the pathname of the pseudo-terminal slave associated with
+ the master FD is open on and return 0, or set errno and return
+ non-zero on errors. */
+# if @REPLACE_PTSNAME_R@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef ptsname_r
+# define ptsname_r rpl_ptsname_r
+# endif
+_GL_FUNCDECL_RPL (ptsname_r, int, (int fd, char *buf, size_t len));
+_GL_CXXALIAS_RPL (ptsname_r, int, (int fd, char *buf, size_t len));
+# else
+# if !@HAVE_PTSNAME_R@
+_GL_FUNCDECL_SYS (ptsname_r, int, (int fd, char *buf, size_t len));
+# endif
+_GL_CXXALIAS_SYS (ptsname_r, int, (int fd, char *buf, size_t len));
+# endif
+_GL_CXXALIASWARN (ptsname_r);
+#elif defined GNULIB_POSIXCHECK
+# undef ptsname_r
+# if HAVE_RAW_DECL_PTSNAME_R
+_GL_WARN_ON_USE (ptsname_r, "ptsname_r is not portable - "
+ "use gnulib module ptsname_r for portability");
+# endif
+#endif
+
#if @GNULIB_PUTENV@
# if @REPLACE_PUTENV@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
#include <errno.h>
-#if GNULIB_defined_ESOCK /* native Windows platforms */
+#if GNULIB_defined_EWINSOCK /* native Windows platforms */
# if HAVE_WINSOCK2_H
# include <winsock2.h>
# endif
return "Success";
#endif
-#if GNULIB_defined_ETXTBSY
- case ETXTBSY:
- return "Text file busy";
-#endif
-
-#if GNULIB_defined_ESOCK /* native Windows platforms */
- /* EWOULDBLOCK is the same as EAGAIN. */
+#if GNULIB_defined_ESOCK /* native Windows platforms with older <errno.h> */
case EINPROGRESS:
return "Operation now in progress";
case EALREADY:
return "Protocol not available";
case EPROTONOSUPPORT:
return "Protocol not supported";
- case ESOCKTNOSUPPORT:
- return "Socket type not supported";
case EOPNOTSUPP:
return "Operation not supported";
- case EPFNOSUPPORT:
- return "Protocol family not supported";
case EAFNOSUPPORT:
return "Address family not supported by protocol";
case EADDRINUSE:
return "Network is down";
case ENETUNREACH:
return "Network is unreachable";
- case ENETRESET:
- return "Network dropped connection on reset";
- case ECONNABORTED:
- return "Software caused connection abort";
case ECONNRESET:
return "Connection reset by peer";
case ENOBUFS:
return "Transport endpoint is already connected";
case ENOTCONN:
return "Transport endpoint is not connected";
- case ESHUTDOWN:
- return "Cannot send after transport endpoint shutdown";
- case ETOOMANYREFS:
- return "Too many references: cannot splice";
case ETIMEDOUT:
return "Connection timed out";
case ECONNREFUSED:
return "Connection refused";
case ELOOP:
return "Too many levels of symbolic links";
- case EHOSTDOWN:
- return "Host is down";
case EHOSTUNREACH:
return "No route to host";
+ case EWOULDBLOCK:
+ return "Operation would block";
+ case ETXTBSY:
+ return "Text file busy";
+ case ENODATA:
+ return "No data available";
+ case ENOSR:
+ return "Out of streams resources";
+ case ENOSTR:
+ return "Device not a stream";
+ case ENOTRECOVERABLE:
+ return "State not recoverable";
+ case EOWNERDEAD:
+ return "Owner died";
+ case ETIME:
+ return "Timer expired";
+ case EOTHER:
+ return "Other error";
+#endif
+#if GNULIB_defined_EWINSOCK /* native Windows platforms */
+ case ESOCKTNOSUPPORT:
+ return "Socket type not supported";
+ case EPFNOSUPPORT:
+ return "Protocol family not supported";
+ case ESHUTDOWN:
+ return "Cannot send after transport endpoint shutdown";
+ case ETOOMANYREFS:
+ return "Too many references: cannot splice";
+ case EHOSTDOWN:
+ return "Host is down";
case EPROCLIM:
return "Too many processes";
case EUSERS:
/* WSAEINVAL maps to EINVAL */
/* WSAEMFILE maps to EMFILE */
/* WSAEWOULDBLOCK maps to EWOULDBLOCK */
- /* WSAEINPROGRESS is EINPROGRESS */
- /* WSAEALREADY is EALREADY */
- /* WSAENOTSOCK is ENOTSOCK */
- /* WSAEDESTADDRREQ is EDESTADDRREQ */
- /* WSAEMSGSIZE is EMSGSIZE */
- /* WSAEPROTOTYPE is EPROTOTYPE */
- /* WSAENOPROTOOPT is ENOPROTOOPT */
- /* WSAEPROTONOSUPPORT is EPROTONOSUPPORT */
+ /* WSAEINPROGRESS maps to EINPROGRESS */
+ /* WSAEALREADY maps to EALREADY */
+ /* WSAENOTSOCK maps to ENOTSOCK */
+ /* WSAEDESTADDRREQ maps to EDESTADDRREQ */
+ /* WSAEMSGSIZE maps to EMSGSIZE */
+ /* WSAEPROTOTYPE maps to EPROTOTYPE */
+ /* WSAENOPROTOOPT maps to ENOPROTOOPT */
+ /* WSAEPROTONOSUPPORT maps to EPROTONOSUPPORT */
/* WSAESOCKTNOSUPPORT is ESOCKTNOSUPPORT */
- /* WSAEOPNOTSUPP is EOPNOTSUPP */
+ /* WSAEOPNOTSUPP maps to EOPNOTSUPP */
/* WSAEPFNOSUPPORT is EPFNOSUPPORT */
- /* WSAEAFNOSUPPORT is EAFNOSUPPORT */
- /* WSAEADDRINUSE is EADDRINUSE */
- /* WSAEADDRNOTAVAIL is EADDRNOTAVAIL */
- /* WSAENETDOWN is ENETDOWN */
- /* WSAENETUNREACH is ENETUNREACH */
- /* WSAENETRESET is ENETRESET */
- /* WSAECONNABORTED is ECONNABORTED */
- /* WSAECONNRESET is ECONNRESET */
- /* WSAENOBUFS is ENOBUFS */
- /* WSAEISCONN is EISCONN */
- /* WSAENOTCONN is ENOTCONN */
+ /* WSAEAFNOSUPPORT maps to EAFNOSUPPORT */
+ /* WSAEADDRINUSE maps to EADDRINUSE */
+ /* WSAEADDRNOTAVAIL maps to EADDRNOTAVAIL */
+ /* WSAENETDOWN maps to ENETDOWN */
+ /* WSAENETUNREACH maps to ENETUNREACH */
+ /* WSAENETRESET maps to ENETRESET */
+ /* WSAECONNABORTED maps to ECONNABORTED */
+ /* WSAECONNRESET maps to ECONNRESET */
+ /* WSAENOBUFS maps to ENOBUFS */
+ /* WSAEISCONN maps to EISCONN */
+ /* WSAENOTCONN maps to ENOTCONN */
/* WSAESHUTDOWN is ESHUTDOWN */
/* WSAETOOMANYREFS is ETOOMANYREFS */
- /* WSAETIMEDOUT is ETIMEDOUT */
- /* WSAECONNREFUSED is ECONNREFUSED */
- /* WSAELOOP is ELOOP */
+ /* WSAETIMEDOUT maps to ETIMEDOUT */
+ /* WSAECONNREFUSED maps to ECONNREFUSED */
+ /* WSAELOOP maps to ELOOP */
/* WSAENAMETOOLONG maps to ENAMETOOLONG */
/* WSAEHOSTDOWN is EHOSTDOWN */
- /* WSAEHOSTUNREACH is EHOSTUNREACH */
+ /* WSAEHOSTUNREACH maps to EHOSTUNREACH */
/* WSAENOTEMPTY maps to ENOTEMPTY */
/* WSAEPROCLIM is EPROCLIM */
/* WSAEUSERS is EUSERS */
/* If ERRNUM maps to an errno value defined by gnulib, return a string
describing the error. Otherwise return NULL. */
# if REPLACE_STRERROR_0 \
- || GNULIB_defined_ETXTBSY \
|| GNULIB_defined_ESOCK \
+ || GNULIB_defined_EWINSOCK \
|| GNULIB_defined_ENOMSG \
|| GNULIB_defined_EIDRM \
|| GNULIB_defined_ENOLINK \
#endif
+/* On MSVC, there is no snprintf() function, just a _snprintf().
+ It is of lower quality, but sufficient for the simple use here.
+ We only have to make sure to NUL terminate the result (_snprintf
+ does not NUL terminate, like strncpy). */
+#if !HAVE_SNPRINTF
+static int
+local_snprintf (char *buf, size_t buflen, const char *format, ...)
+{
+ va_list args;
+ int result;
+
+ va_start (args, format);
+ result = _vsnprintf (buf, buflen, format, args);
+ va_end (args);
+ if (buflen > 0 && (result < 0 || result >= buflen))
+ buf[buflen - 1] = '\0';
+ return result;
+}
+# define snprintf local_snprintf
+#endif
+
/* Copy as much of MSG into BUF as possible, without corrupting errno.
Return 0 if MSG fit in BUFLEN, otherwise return ERANGE. */
static int
#endif
/* The include_next requires a split double-inclusion guard. */
-#@INCLUDE_NEXT@ @NEXT_STRINGS_H@
+#if @HAVE_STRINGS_H@
+# @INCLUDE_NEXT@ @NEXT_STRINGS_H@
+#endif
#ifndef _@GUARD_PREFIX@_STRINGS_H
#define _@GUARD_PREFIX@_STRINGS_H
+#if ! @HAVE_DECL_STRNCASECMP@
+/* Get size_t. */
+# include <stddef.h>
+#endif
+
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
/* Find the length of STRING + 1, but scan at most MAXLEN bytes.
If no '\0' terminator is found in that many characters, return MAXLEN. */
/* This is the same as strnlen (string, maxlen - 1) + 1. */
-extern size_t strnlen1 (const char *string, size_t maxlen);
+extern size_t strnlen1 (const char *string, size_t maxlen)
+ _GL_ATTRIBUTE_PURE;
#ifdef __cplusplus
# include <config.h>
#endif
+/* Specification. */
+#include <string.h>
+
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
-#include <string.h>
#ifdef _LIBC
# include <libintl.h>
#else /* !_LIBC */
/* NetBSD declares sys_siglist in unistd.h. */
-# include <unistd.h>
+# if HAVE_UNISTD_H
+# include <unistd.h>
+# endif
# define INTUSE(x) (x)
# include <string.h>
# endif
/* On native Windows platforms:
- Get the 'fd_set' type. */
-# if @HAVE_WINSOCK2_H@ && !defined _GL_INCLUDING_WINSOCK2_H
-# define _GL_INCLUDING_WINSOCK2_H
-# include <winsock2.h>
-# undef _GL_INCLUDING_WINSOCK2_H
+ Get the 'fd_set' type.
+ Get the close() declaration before we override it. */
+# if @HAVE_WINSOCK2_H@
+# if !defined _GL_INCLUDING_WINSOCK2_H
+# define _GL_INCLUDING_WINSOCK2_H
+# include <winsock2.h>
+# undef _GL_INCLUDING_WINSOCK2_H
+# endif
+# include <io.h>
# endif
#endif
# endif
# endif
#else
-# include <alignof.h>
+# include <stdalign.h>
/* Code taken from glibc sysdeps/unix/sysv/linux/bits/socket.h on
2009-05-08, licensed under LGPLv2.1+, plus portability fixes. */
# define __ss_aligntype unsigned long int
/* The definition of _GL_WARN_ON_USE is copied here. */
/* Before doing "#define mkdir rpl_mkdir" below, we need to include all
- headers that may declare mkdir(). */
+ headers that may declare mkdir(). Native Windows platforms declare mkdir
+ in <io.h> and/or <direct.h>, not in <unistd.h>. */
#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
# include <io.h> /* mingw32, mingw64 */
-# include <direct.h> /* mingw64 */
+# include <direct.h> /* mingw64, MSVC 9 */
+#endif
+
+#ifndef S_IFIFO
+# ifdef _S_IFIFO
+# define S_IFIFO _S_IFIFO
+# endif
#endif
#ifndef S_IFMT
#endif
-#if @REPLACE_FSTAT@
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-# define fstat rpl_fstat
-# endif
+#if @GNULIB_FSTAT@
+# if @REPLACE_FSTAT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef fstat
+# define fstat rpl_fstat
+# endif
_GL_FUNCDECL_RPL (fstat, int, (int fd, struct stat *buf) _GL_ARG_NONNULL ((2)));
_GL_CXXALIAS_RPL (fstat, int, (int fd, struct stat *buf));
-#else
+# else
_GL_CXXALIAS_SYS (fstat, int, (int fd, struct stat *buf));
-#endif
+# endif
_GL_CXXALIASWARN (fstat);
+#elif defined GNULIB_POSIXCHECK
+# undef fstat
+# if HAVE_RAW_DECL_FSTAT
+_GL_WARN_ON_USE (fstat, "fstat has portability problems - "
+ "use gnulib module fstat for portability");
+# endif
+#endif
#if @GNULIB_FSTATAT@
# include <time.h>
# endif
+/* On native Windows with MSVC:
+ Get the 'struct timeval' type. */
+# if defined _MSC_VER && @HAVE_WINSOCK2_H@ && !defined _GL_INCLUDING_WINSOCK2_H
+# define _GL_INCLUDING_WINSOCK2_H
+# include <winsock2.h>
+# undef _GL_INCLUDING_WINSOCK2_H
+# endif
+
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
/* The definition of _GL_ARG_NONNULL is copied here. */
# endif
# endif
+/* Hide some function declarations from <winsock2.h>. */
+
+# if defined _MSC_VER && @HAVE_WINSOCK2_H@
+# if !defined _@GUARD_PREFIX@_UNISTD_H
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef close
+# define close close_used_without_including_unistd_h
+# else
+ _GL_WARN_ON_USE (close,
+ "close() used without including <unistd.h>");
+# endif
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef gethostname
+# define gethostname gethostname_used_without_including_unistd_h
+# else
+ _GL_WARN_ON_USE (gethostname,
+ "gethostname() used without including <unistd.h>");
+# endif
+# endif
+# if !defined _@GUARD_PREFIX@_SYS_SOCKET_H
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef socket
+# define socket socket_used_without_including_sys_socket_h
+# undef connect
+# define connect connect_used_without_including_sys_socket_h
+# undef accept
+# define accept accept_used_without_including_sys_socket_h
+# undef bind
+# define bind bind_used_without_including_sys_socket_h
+# undef getpeername
+# define getpeername getpeername_used_without_including_sys_socket_h
+# undef getsockname
+# define getsockname getsockname_used_without_including_sys_socket_h
+# undef getsockopt
+# define getsockopt getsockopt_used_without_including_sys_socket_h
+# undef listen
+# define listen listen_used_without_including_sys_socket_h
+# undef recv
+# define recv recv_used_without_including_sys_socket_h
+# undef send
+# define send send_used_without_including_sys_socket_h
+# undef recvfrom
+# define recvfrom recvfrom_used_without_including_sys_socket_h
+# undef sendto
+# define sendto sendto_used_without_including_sys_socket_h
+# undef setsockopt
+# define setsockopt setsockopt_used_without_including_sys_socket_h
+# undef shutdown
+# define shutdown shutdown_used_without_including_sys_socket_h
+# else
+ _GL_WARN_ON_USE (socket,
+ "socket() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (connect,
+ "connect() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (accept,
+ "accept() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (bind,
+ "bind() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (getpeername,
+ "getpeername() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (getsockname,
+ "getsockname() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (getsockopt,
+ "getsockopt() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (listen,
+ "listen() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (recv,
+ "recv() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (send,
+ "send() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (recvfrom,
+ "recvfrom() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (sendto,
+ "sendto() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (setsockopt,
+ "setsockopt() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (shutdown,
+ "shutdown() used without including <sys/socket.h>");
+# endif
+# endif
+# if !defined _@GUARD_PREFIX@_SYS_SELECT_H
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef select
+# define select select_used_without_including_sys_select_h
+# else
+ _GL_WARN_ON_USE (select,
+ "select() used without including <sys/select.h>");
+# endif
+# endif
+# endif
+
#endif /* _@GUARD_PREFIX@_SYS_TIME_H */
--- /dev/null
+/* Provide a more complete sys/types.h.
+
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+#ifndef _@GUARD_PREFIX@_SYS_TYPES_H
+
+/* The include_next requires a split double-inclusion guard. */
+#@INCLUDE_NEXT@ @NEXT_SYS_TYPES_H@
+
+#ifndef _@GUARD_PREFIX@_SYS_TYPES_H
+#define _@GUARD_PREFIX@_SYS_TYPES_H
+
+/* MSVC 9 defines size_t in <stddef.h>, not in <sys/types.h>. */
+/* But avoid namespace pollution on glibc systems. */
+#if ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) \
+ && ! defined __GLIBC__
+# include <stddef.h>
+#endif
+
+#endif /* _@GUARD_PREFIX@_SYS_TYPES_H */
+#endif /* _@GUARD_PREFIX@_SYS_TYPES_H */
#if !@HAVE_SYS_UIO_H@
/* A platform that lacks <sys/uio.h>. */
-/* Get 'ssize_t'. */
+/* Get 'size_t' and 'ssize_t'. */
# include <sys/types.h>
# ifdef __cplusplus
--- /dev/null
+/* Tangent function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+float
+tanf (float x)
+{
+ return (float) tan ((double) x);
+}
--- /dev/null
+/* Hyperbolic tangent function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+float
+tanhf (float x)
+{
+ return (float) tanh ((double) x);
+}
/* Specification. */
#include <math.h>
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+long double
+tanl (long double x)
+{
+ return tan (x);
+}
+
+#else
+
/* tanl(x)
* Return tangent function of x.
*
* TRIG(x) returns trig(x) nearly rounded
*/
-#include "trigl.h"
+# include "trigl.h"
/*
* ====================================================
}
}
+#endif
+
#if 0
int
main (void)
# define __gettimeofday gettimeofday
# define __mkdir mkdir
# define __open open
-# define __open64 open
# define __lxstat64(version, file, buf) lstat (file, buf)
-# define __xstat64(version, file, buf) stat (file, buf)
#endif
#if ! (HAVE___SECURE_GETENV || _LIBC)
/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
-#include <config.h>
+#if ! defined USE_LONG_DOUBLE
+# include <config.h>
+#endif
/* Specification. */
#include <math.h>
/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
-#define USE_LONG_DOUBLE
-#include "trunc.c"
+#include <config.h>
+
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+/* Specification. */
+# include <math.h>
+
+long double
+truncl (long double x)
+{
+ return trunc (x);
+}
+
+#else
+
+# define USE_LONG_DOUBLE
+# include "trunc.c"
+
+#endif
#endif
/* mingw fails to declare _exit in <unistd.h>. */
-/* mingw, BeOS, Haiku declare environ in <stdlib.h>, not in <unistd.h>. */
+/* mingw, MSVC, BeOS, Haiku declare environ in <stdlib.h>, not in
+ <unistd.h>. */
/* Solaris declares getcwd not only in <unistd.h> but also in <stdlib.h>. */
/* But avoid namespace pollution on glibc systems. */
#ifndef __GLIBC__
# include <stdlib.h>
#endif
-/* mingw declares getcwd in <io.h>, not in <unistd.h>. */
-#if ((@GNULIB_GETCWD@ || defined GNULIB_POSIXCHECK) \
+/* Native Windows platforms declare chdir, getcwd, rmdir in
+ <io.h> and/or <direct.h>, not in <unistd.h>. */
+#if ((@GNULIB_CHDIR@ || @GNULIB_GETCWD@ || @GNULIB_RMDIR@ \
+ || defined GNULIB_POSIXCHECK) \
&& ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
# include <io.h> /* mingw32, mingw64 */
-# include <direct.h> /* mingw64 */
+# include <direct.h> /* mingw64, MSVC 9 */
#endif
/* AIX and OSF/1 5.1 declare getdomainname in <netdb.h>, not in <unistd.h>.
# include <netdb.h>
#endif
+/* MSVC defines off_t in <sys/types.h>. */
+#if !@HAVE_UNISTD_H@
+/* Get off_t. */
+# include <sys/types.h>
+#endif
+
#if (@GNULIB_READ@ || @GNULIB_WRITE@ \
|| @GNULIB_READLINK@ || @GNULIB_READLINKAT@ \
|| @GNULIB_PREAD@ || @GNULIB_PWRITE@ || defined GNULIB_POSIXCHECK)
#endif
+#if @GNULIB_CHDIR@
+_GL_CXXALIAS_SYS (chdir, int, (const char *file) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIASWARN (chdir);
+#elif defined GNULIB_POSIXCHECK
+# undef chdir
+# if HAVE_RAW_DECL_CHDIR
+_GL_WARN_ON_USE (chown, "chdir is not always in <unistd.h> - "
+ "use gnulib module chdir for portability");
+# endif
+#endif
+
+
#if @GNULIB_CHOWN@
/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
to GID (if GID is not -1). Follow symbolic links.
Return 0 if successful, otherwise -1 and errno set.
- See the POSIX:2001 specification
- <http://www.opengroup.org/susv3xsh/chown.html>. */
+ See the POSIX:2008 specification
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/chown.html. */
# if @REPLACE_CHOWN@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef chown
#endif
-#if @REPLACE_DUP@
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-# define dup rpl_dup
-# endif
+#if @GNULIB_DUP@
+# if @REPLACE_DUP@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define dup rpl_dup
+# endif
_GL_FUNCDECL_RPL (dup, int, (int oldfd));
_GL_CXXALIAS_RPL (dup, int, (int oldfd));
-#else
+# else
_GL_CXXALIAS_SYS (dup, int, (int oldfd));
-#endif
+# endif
_GL_CXXALIASWARN (dup);
+#elif defined GNULIB_POSIXCHECK
+# undef dup
+# if HAVE_RAW_DECL_DUP
+_GL_WARN_ON_USE (dup, "dup is unportable - "
+ "use gnulib module dup for portability");
+# endif
+#endif
#if @GNULIB_DUP2@
/* Copy the file descriptor OLDFD into file descriptor NEWFD. Do nothing if
NEWFD = OLDFD, otherwise close NEWFD first if it is open.
Return newfd if successful, otherwise -1 and errno set.
- See the POSIX:2001 specification
- <http://www.opengroup.org/susv3xsh/dup2.html>. */
+ See the POSIX:2008 specification
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/dup2.html>. */
# if @REPLACE_DUP2@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# define dup2 rpl_dup2
/* Change the process' current working directory to the directory on which
the given file descriptor is open.
Return 0 if successful, otherwise -1 and errno set.
- See the POSIX:2001 specification
- <http://www.opengroup.org/susv3xsh/fchdir.html>. */
+ See the POSIX:2008 specification
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/fchdir.html>. */
# if ! @HAVE_FCHDIR@
_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/));
#endif
-#if @GNULIB_FSYNC@
+#if @GNULIB_FDATASYNC@
/* Synchronize changes to a file.
Return 0 if successful, otherwise -1 and errno set.
- See POSIX:2001 specification
- <http://www.opengroup.org/susv3xsh/fsync.html>. */
+ See POSIX:2008 specification
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/fdatasync.html>. */
+# if !@HAVE_FDATASYNC@ || !@HAVE_DECL_FDATASYNC@
+_GL_FUNCDECL_SYS (fdatasync, int, (int fd));
+# endif
+_GL_CXXALIAS_SYS (fdatasync, int, (int fd));
+_GL_CXXALIASWARN (fdatasync);
+#elif defined GNULIB_POSIXCHECK
+# undef fdatasync
+# if HAVE_RAW_DECL_FDATASYNC
+_GL_WARN_ON_USE (fdatasync, "fdatasync is unportable - "
+ "use gnulib module fdatasync for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FSYNC@
+/* Synchronize changes, including metadata, to a file.
+ Return 0 if successful, otherwise -1 and errno set.
+ See POSIX:2008 specification
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html>. */
# if !@HAVE_FSYNC@
_GL_FUNCDECL_SYS (fsync, int, (int fd));
# endif
#if @GNULIB_FTRUNCATE@
/* Change the size of the file to which FD is opened to become equal to LENGTH.
Return 0 if successful, otherwise -1 and errno set.
- See the POSIX:2001 specification
- <http://www.opengroup.org/susv3xsh/ftruncate.html>. */
+ See the POSIX:2008 specification
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/ftruncate.html>. */
# if !@HAVE_FTRUNCATE@
_GL_FUNCDECL_SYS (ftruncate, int, (int fd, off_t length));
# endif
of BUF.
Return BUF if successful, or NULL if the directory couldn't be determined
or SIZE was too small.
- See the POSIX:2001 specification
- <http://www.opengroup.org/susv3xsh/getcwd.html>.
+ See the POSIX:2008 specification
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/getcwd.html>.
Additionally, the gnulib module 'getcwd' guarantees the following GNU
extension: If BUF is NULL, an array is allocated with 'malloc'; the array
is SIZE bytes long, unless SIZE == 0, in which case it is as big as
/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
to GID (if GID is not -1). Do not follow symbolic links.
Return 0 if successful, otherwise -1 and errno set.
- See the POSIX:2001 specification
- <http://www.opengroup.org/susv3xsh/lchown.html>. */
+ See the POSIX:2008 specification
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/lchown.html>. */
# if @REPLACE_LCHOWN@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef lchown
#if @GNULIB_LINK@
/* Create a new hard link for an existing file.
Return 0 if successful, otherwise -1 and errno set.
- See POSIX:2001 specification
- <http://www.opengroup.org/susv3xsh/link.html>. */
+ See POSIX:2008 specification
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/link.html>. */
# if @REPLACE_LINK@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# define link rpl_link
#if @GNULIB_LSEEK@
/* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END.
Return the new offset if successful, otherwise -1 and errno set.
- See the POSIX:2001 specification
- <http://www.opengroup.org/susv3xsh/lseek.html>. */
+ See the POSIX:2008 specification
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/lseek.html>. */
# if @REPLACE_LSEEK@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# define lseek rpl_lseek
#if @GNULIB_PREAD@
/* Read at most BUFSIZE bytes from FD into BUF, starting at OFFSET.
Return the number of bytes placed into BUF if successful, otherwise
- set errno and return -1. 0 indicates EOF. See the POSIX:2001
- specification <http://www.opengroup.org/susv3xsh/pread.html>. */
+ set errno and return -1. 0 indicates EOF.
+ See the POSIX:2008 specification
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/pread.html>. */
# if @REPLACE_PREAD@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef pread
/* Write at most BUFSIZE bytes from BUF into FD, starting at OFFSET.
Return the number of bytes written if successful, otherwise
set errno and return -1. 0 indicates nothing written. See the
- POSIX:2001 specification
- <http://www.opengroup.org/susv3xsh/pwrite.html>. */
+ POSIX:2008 specification
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/pwrite.html>. */
# if @REPLACE_PWRITE@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef pwrite
#if @GNULIB_READ@
/* Read up to COUNT bytes from file descriptor FD into the buffer starting
- at BUF. See the POSIX:2001 specification
- <http://www.opengroup.org/susv3xsh/read.html>. */
-# if @REPLACE_READ@ && @GNULIB_UNISTD_H_NONBLOCKING@
+ at BUF. See the POSIX:2008 specification
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html>. */
+# if @REPLACE_READ@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef read
# define read rpl_read
/* Read the contents of the symbolic link FILE and place the first BUFSIZE
bytes of it into BUF. Return the number of bytes placed into BUF if
successful, otherwise -1 and errno set.
- See the POSIX:2001 specification
- <http://www.opengroup.org/susv3xsh/readlink.html>. */
+ See the POSIX:2008 specification
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/readlink.html>. */
# if @REPLACE_READLINK@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# define readlink rpl_readlink
#if @GNULIB_SLEEP@
/* Pause the execution of the current thread for N seconds.
Returns the number of seconds left to sleep.
- See the POSIX:2001 specification
- <http://www.opengroup.org/susv3xsh/sleep.html>. */
+ See the POSIX:2008 specification
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/sleep.html>. */
# if @REPLACE_SLEEP@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef sleep
/* Pause the execution of the current thread for N microseconds.
Returns 0 on completion, or -1 on range error.
See the POSIX:2001 specification
- <http://www.opengroup.org/susv3xsh/sleep.html>. */
+ <http://www.opengroup.org/susv3xsh/usleep.html>. */
# if @REPLACE_USLEEP@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef usleep
#if @GNULIB_WRITE@
/* Write up to COUNT bytes starting at BUF to file descriptor FD.
- See the POSIX:2001 specification
- <http://www.opengroup.org/susv3xsh/write.html>. */
-# if @REPLACE_WRITE@ && (@GNULIB_UNISTD_H_NONBLOCKING@ || @GNULIB_UNISTD_H_SIGPIPE@)
+ See the POSIX:2008 specification
+ <http://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html>. */
+# if @REPLACE_WRITE@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef write
# define write rpl_write
/* Determine number of column positions required for UC. */
extern int
- uc_width (ucs4_t uc, const char *encoding);
+ uc_width (ucs4_t uc, const char *encoding)
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+ __attribute__ ((__pure__))
+#endif
+ ;
/* Determine number of column positions required for first N units
(or fewer if S ends before this) in S. */
#include <stdlib.h>
+#include <fcntl.h>
#include <unistd.h>
int
#else
/* Assume that the slave side of a pseudo-terminal is already unlocked
by default. */
+ if (fcntl (fd, F_GETFD) < 0)
+ return -1;
return 0;
#endif
}
if (adjustment_needed < 0)
return -1;
- /* Require that at least one of FD or FILE are valid. Works around
+ /* Require that at least one of FD or FILE are potentially valid, to avoid
a Linux bug where futimens (AT_FDCWD, NULL) changes "." rather
than failing. */
- if (!file)
+ if (fd < 0 && !file)
{
- if (fd < 0)
- {
- errno = EBADF;
- return -1;
- }
- if (dup2 (fd, fd) != fd)
- return -1;
+ errno = EBADF;
+ return -1;
}
/* Some Linux-based NFS clients are buggy, and mishandle time stamps
ts[1] = times[1];
times = ts;
}
+# ifdef __hppa__
+ /* Linux kernel 2.6.22.19 on hppa does not reject invalid tv_nsec
+ values. */
+ else if (times
+ && ((times[0].tv_nsec != UTIME_NOW
+ && (times[0].tv_nsec < 0
+ || times[0].tv_nsec >= 1000000000))
+ || (times[1].tv_nsec != UTIME_NOW
+ && (times[1].tv_nsec < 0
+ || times[1].tv_nsec >= 1000000000))))
+ {
+ errno = EINVAL;
+ return -1;
+ }
+# endif
# endif /* __linux__ */
result = utimensat (fd, file, times, flag);
/* Linux kernel 2.6.25 has a bug where it returns EINVAL for
size_t s;
{
mp_limb_t msd = b_ptr[b_len - 1]; /* = b[n-1], > 0 */
- s = 31;
- if (msd >= 0x10000)
- {
- msd = msd >> 16;
- s -= 16;
- }
- if (msd >= 0x100)
- {
- msd = msd >> 8;
- s -= 8;
- }
- if (msd >= 0x10)
- {
- msd = msd >> 4;
- s -= 4;
- }
- if (msd >= 0x4)
+ /* Determine s = GMP_LIMB_BITS - integer_length (msd).
+ Code copied from gnulib's integer_length.c. */
+# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+ s = __builtin_clz (msd);
+# else
+# if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT
+ if (GMP_LIMB_BITS <= DBL_MANT_BIT)
{
- msd = msd >> 2;
- s -= 2;
+ /* Use 'double' operations.
+ Assumes an IEEE 754 'double' implementation. */
+# define DBL_EXP_MASK ((DBL_MAX_EXP - DBL_MIN_EXP) | 7)
+# define DBL_EXP_BIAS (DBL_EXP_MASK / 2 - 1)
+# define NWORDS \
+ ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+ union { double value; unsigned int word[NWORDS]; } m;
+
+ /* Use a single integer to floating-point conversion. */
+ m.value = msd;
+
+ s = GMP_LIMB_BITS
+ - (((m.word[DBL_EXPBIT0_WORD] >> DBL_EXPBIT0_BIT) & DBL_EXP_MASK)
+ - DBL_EXP_BIAS);
}
- if (msd >= 0x2)
+ else
+# undef NWORDS
+# endif
{
- msd = msd >> 1;
- s -= 1;
+ s = 31;
+ if (msd >= 0x10000)
+ {
+ msd = msd >> 16;
+ s -= 16;
+ }
+ if (msd >= 0x100)
+ {
+ msd = msd >> 8;
+ s -= 8;
+ }
+ if (msd >= 0x10)
+ {
+ msd = msd >> 4;
+ s -= 4;
+ }
+ if (msd >= 0x4)
+ {
+ msd = msd >> 2;
+ s -= 2;
+ }
+ if (msd >= 0x2)
+ {
+ msd = msd >> 1;
+ s -= 1;
+ }
}
+# endif
}
/* 0 <= s < GMP_LIMB_BITS.
Copy b, shifting it left by s bits. */
y = frexpl (x, &exp);
if (!(y >= 0.0L && y < 1.0L))
abort ();
- /* x = 2^exp * y = 2^(exp - LDBL_MANT_BIT) * (y * LDBL_MANT_BIT), and the
+ /* x = 2^exp * y = 2^(exp - LDBL_MANT_BIT) * (y * 2^LDBL_MANT_BIT), and the
latter is an integer. */
- /* Convert the mantissa (y * LDBL_MANT_BIT) to a sequence of limbs.
+ /* Convert the mantissa (y * 2^LDBL_MANT_BIT) to a sequence of limbs.
I'm not sure whether it's safe to cast a 'long double' value between
2^31 and 2^32 to 'unsigned int', therefore play safe and cast only
'long double' values between 0 and 2^16 (to 'unsigned int' or 'int',
y = frexp (x, &exp);
if (!(y >= 0.0 && y < 1.0))
abort ();
- /* x = 2^exp * y = 2^(exp - DBL_MANT_BIT) * (y * DBL_MANT_BIT), and the
+ /* x = 2^exp * y = 2^(exp - DBL_MANT_BIT) * (y * 2^DBL_MANT_BIT), and the
latter is an integer. */
- /* Convert the mantissa (y * DBL_MANT_BIT) to a sequence of limbs.
+ /* Convert the mantissa (y * 2^DBL_MANT_BIT) to a sequence of limbs.
I'm not sure whether it's safe to cast a 'double' value between
2^31 and 2^32 to 'unsigned int', therefore play safe and cast only
'double' values between 0 and 2^16 (to 'unsigned int' or 'int',
/* Get O_RDWR and O_BINARY. */
#include <fcntl.h>
-/* Get _get_osfhandle() and _open_osfhandle(). */
+/* Get _open_osfhandle(). */
#include <io.h>
+/* Get _get_osfhandle(). */
+#include "msvc-nothrow.h"
+
#define FD_TO_SOCKET(fd) ((SOCKET) _get_osfhandle ((fd)))
#define SOCKET_TO_FD(fh) (_open_osfhandle ((long) (fh), O_RDWR | O_BINARY))
case WSA_INVALID_PARAMETER:
errno = EINVAL;
break;
- case WSAEWOULDBLOCK:
- errno = EWOULDBLOCK;
- break;
case WSAENAMETOOLONG:
errno = ENAMETOOLONG;
break;
case WSAENOTEMPTY:
errno = ENOTEMPTY;
break;
+ case WSAEWOULDBLOCK:
+ errno = EWOULDBLOCK;
+ break;
+ case WSAEINPROGRESS:
+ errno = EINPROGRESS;
+ break;
+ case WSAEALREADY:
+ errno = EALREADY;
+ break;
+ case WSAENOTSOCK:
+ errno = ENOTSOCK;
+ break;
+ case WSAEDESTADDRREQ:
+ errno = EDESTADDRREQ;
+ break;
+ case WSAEMSGSIZE:
+ errno = EMSGSIZE;
+ break;
+ case WSAEPROTOTYPE:
+ errno = EPROTOTYPE;
+ break;
+ case WSAENOPROTOOPT:
+ errno = ENOPROTOOPT;
+ break;
+ case WSAEPROTONOSUPPORT:
+ errno = EPROTONOSUPPORT;
+ break;
+ case WSAEOPNOTSUPP:
+ errno = EOPNOTSUPP;
+ break;
+ case WSAEAFNOSUPPORT:
+ errno = EAFNOSUPPORT;
+ break;
+ case WSAEADDRINUSE:
+ errno = EADDRINUSE;
+ break;
+ case WSAEADDRNOTAVAIL:
+ errno = EADDRNOTAVAIL;
+ break;
+ case WSAENETDOWN:
+ errno = ENETDOWN;
+ break;
+ case WSAENETUNREACH:
+ errno = ENETUNREACH;
+ break;
+ case WSAENETRESET:
+ errno = ENETRESET;
+ break;
+ case WSAECONNABORTED:
+ errno = ECONNABORTED;
+ break;
+ case WSAECONNRESET:
+ errno = ECONNRESET;
+ break;
+ case WSAENOBUFS:
+ errno = ENOBUFS;
+ break;
+ case WSAEISCONN:
+ errno = EISCONN;
+ break;
+ case WSAENOTCONN:
+ errno = ENOTCONN;
+ break;
+ case WSAETIMEDOUT:
+ errno = ETIMEDOUT;
+ break;
+ case WSAECONNREFUSED:
+ errno = ECONNREFUSED;
+ break;
+ case WSAELOOP:
+ errno = ELOOP;
+ break;
+ case WSAEHOSTUNREACH:
+ errno = EHOSTUNREACH;
+ break;
default:
errno = (err > 10000 && err < 10025) ? err - 10000 : err;
break;
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
-/* Get _get_osfhandle() and _open_osfhandle(). */
+/* Get _open_osfhandle(). */
#include <io.h>
#include <stdbool.h>
#include <unistd.h>
#include <errno.h>
+/* Get _get_osfhandle(). */
+#include "msvc-nothrow.h"
+
#include "cloexec.h"
#include "xalloc.h"
# define WEOF -1
# endif
#else
+/* MSVC defines wint_t as 'unsigned short' in <crtdefs.h>.
+ This is too small: ISO C 99 section 7.24.1.(2) says that wint_t must be
+ "unchanged by default argument promotions". Override it. */
+# if defined _MSC_VER
+# if !GNULIB_defined_wint_t
+# include <crtdefs.h>
+typedef unsigned int rpl_wint_t;
+# undef wint_t
+# define wint_t rpl_wint_t
+# define GNULIB_defined_wint_t 1
+# endif
+# endif
# ifndef WEOF
# define WEOF ((wint_t) -1)
# endif
# define WEOF -1
# endif
#else
+/* MSVC defines wint_t as 'unsigned short' in <crtdefs.h>.
+ This is too small: ISO C 99 section 7.24.1.(2) says that wint_t must be
+ "unchanged by default argument promotions". Override it. */
+# if defined _MSC_VER
+# if !GNULIB_defined_wint_t
+# include <crtdefs.h>
+typedef unsigned int rpl_wint_t;
+# undef wint_t
+# define wint_t rpl_wint_t
+# define GNULIB_defined_wint_t 1
+# endif
+# endif
# ifndef WEOF
# define WEOF ((wint_t) -1)
# endif
/* Specification. */
#include <unistd.h>
-/* Replace this function only if module 'nonblocking' or module 'sigpipe' is
- requested. */
-#if GNULIB_NONBLOCKING || GNULIB_SIGPIPE
-
/* On native Windows platforms, SIGPIPE does not exist. When write() is
called on a pipe with no readers, WriteFile() fails with error
GetLastError() = ERROR_NO_DATA, and write() in consequence fails with
error EINVAL. */
-# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+
+# include <errno.h>
+# include <signal.h>
+# include <io.h>
+
+# define WIN32_LEAN_AND_MEAN /* avoid including junk */
+# include <windows.h>
+
+# include "msvc-inval.h"
+# include "msvc-nothrow.h"
-# include <errno.h>
-# include <signal.h>
-# include <io.h>
+# undef write
+
+# if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+static inline ssize_t
+write_nothrow (int fd, const void *buf, size_t count)
+{
+ ssize_t result;
+
+ TRY_MSVC_INVAL
+ {
+ result = write (fd, buf, count);
+ }
+ CATCH_MSVC_INVAL
+ {
+ result = -1;
+ errno = EBADF;
+ }
+ DONE_MSVC_INVAL;
-# define WIN32_LEAN_AND_MEAN /* avoid including junk */
-# include <windows.h>
+ return result;
+}
+# else
+# define write_nothrow write
+# endif
ssize_t
rpl_write (int fd, const void *buf, size_t count)
-#undef write
{
for (;;)
{
- ssize_t ret = write (fd, buf, count);
+ ssize_t ret = write_nothrow (fd, buf, count);
if (ret < 0)
{
-# if GNULIB_NONBLOCKING
+# if GNULIB_NONBLOCKING
if (errno == ENOSPC)
{
HANDLE h = (HANDLE) _get_osfhandle (fd);
}
}
else
-# endif
+# endif
{
-# if GNULIB_SIGPIPE
+# if GNULIB_SIGPIPE
if (GetLastError () == ERROR_NO_DATA
&& GetFileType ((HANDLE) _get_osfhandle (fd))
== FILE_TYPE_PIPE)
EINVAL to EPIPE. */
errno = EPIPE;
}
-# endif
+# endif
}
}
return ret;
}
}
-# endif
#endif
#include "intprops.h"
+/* xstrtoll.c and xstrtoull.c, which include this file, require that
+ ULLONG_MAX, LLONG_MAX, LLONG_MIN are defined, but <limits.h> does not
+ define them on all platforms. */
+#ifndef ULLONG_MAX
+# define ULLONG_MAX TYPE_MAXIMUM (unsigned long long)
+#endif
+#ifndef LLONG_MAX
+# define LLONG_MAX TYPE_MAXIMUM (long long int)
+#endif
+#ifndef LLONG_MIN
+# define LLONG_MIN TYPE_MINIMUM (long long int)
+#endif
+
static strtol_error
bkm_scale (__strtol_t *x, int scale_factor)
{
-# absolute-header.m4 serial 13
+# absolute-header.m4 serial 16
dnl Copyright (C) 2006-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
# - it is silent.
AC_DEFUN([gl_ABSOLUTE_HEADER_ONE],
[
+ AC_REQUIRE([AC_CANONICAL_HOST])
AC_LANG_CONFTEST([AC_LANG_SOURCE([[#include <]]m4_dquote([$1])[[>]])])
dnl AIX "xlc -E" and "cc -E" omit #line directives for header files
dnl that contain only a #include of other header files and no
aix*) gl_absname_cpp="$ac_cpp -C" ;;
*) gl_absname_cpp="$ac_cpp" ;;
esac
+changequote(,)
+ case "$host_os" in
+ mingw*)
+ dnl For the sake of native Windows compilers (excluding gcc),
+ dnl treat backslash as a directory separator, like /.
+ dnl Actually, these compilers use a double-backslash as
+ dnl directory separator, inside the
+ dnl # line "filename"
+ dnl directives.
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ dnl A sed expression that turns a string into a basic regular
+ dnl expression, for use within "/.../".
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+ gl_header_literal_regex=`echo '$1' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+ s|^/[^/]|//&|
+ p
+ q
+ }'
+changequote([,])
dnl eval is necessary to expand gl_absname_cpp.
dnl Ultrix and Pyramid sh refuse to redirect output of eval,
dnl so use subshell.
AS_VAR_SET([gl_cv_absolute_]AS_TR_SH([[$1]]),
[`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
-sed -n '\#/$1#{
- s#.*"\(.*/$1\)".*#\1#
- s#^/[^/]#//&#
- p
- q
-}'`])
+ sed -n "$gl_absolute_header_sed"`])
])
AC_CHECK_FUNCS(
[acl_get_file acl_get_fd acl_set_file acl_set_fd \
acl_free acl_from_mode acl_from_text \
- acl_delete_def_file acl_extended_file acl_extended_file_nofollow \
+ acl_delete_def_file acl_extended_file \
acl_delete_fd_np acl_delete_file_np \
acl_copy_ext_native acl_create_entry_np \
acl_to_short_text acl_free_text])
--- /dev/null
+# acos.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_ACOS],
+[
+ dnl Determine ACOS_LIBM.
+ gl_COMMON_DOUBLE_MATHFUNC([acos])
+])
--- /dev/null
+# acosf.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_ACOSF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_ACOS])
+
+ dnl Test whether acosf() exists. Assume that acosf(), if it exists, is
+ dnl defined in the same library as acos().
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $ACOS_LIBM"
+ AC_CHECK_FUNCS([acosf])
+ LIBS="$save_LIBS"
+ if test $ac_cv_func_acosf = yes; then
+ ACOSF_LIBM="$ACOS_LIBM"
+ else
+ HAVE_ACOSF=0
+ ACOSF_LIBM="$ACOS_LIBM"
+ fi
+ AC_SUBST([ACOSF_LIBM])
+])
-# acosl.m4 serial 4
+# acosl.m4 serial 6
dnl Copyright (C) 2010-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_ACOSL],
[
AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+
dnl Persuade glibc <math.h> to declare acosl().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|| test $gl_cv_func_acosl_in_libm = yes; then
dnl Also check whether it's declared.
dnl MacOS X 10.3 has acosl() in libc but doesn't declare it in <math.h>.
- AC_CHECK_DECL([acosl], , [HAVE_DECL_ACOSL=0], [#include <math.h>])
+ AC_CHECK_DECL([acosl], , [HAVE_DECL_ACOSL=0], [[#include <math.h>]])
else
HAVE_DECL_ACOSL=0
HAVE_ACOSL=0
dnl Find libraries needed to link lib/acosl.c.
- AC_REQUIRE([gl_FUNC_ASINL])
- AC_REQUIRE([gl_FUNC_SQRTL])
- dnl Append $ASINL_LIBM to ACOSL_LIBM, avoiding gratuitous duplicates.
- case " $ACOSL_LIBM " in
- *" $ASINL_LIBM "*) ;;
- *) ACOSL_LIBM="$ACOSL_LIBM $ASINL_LIBM" ;;
- esac
- dnl Append $SQRTL_LIBM to ACOSL_LIBM, avoiding gratuitous duplicates.
- case " $ACOSL_LIBM " in
- *" $SQRTL_LIBM "*) ;;
- *) ACOSL_LIBM="$ACOSL_LIBM $SQRTL_LIBM" ;;
- esac
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
+ AC_REQUIRE([gl_FUNC_ACOS])
+ ACOSL_LIBM="$ACOS_LIBM"
+ else
+ AC_REQUIRE([gl_FUNC_ASINL])
+ AC_REQUIRE([gl_FUNC_SQRTL])
+ dnl Append $ASINL_LIBM to ACOSL_LIBM, avoiding gratuitous duplicates.
+ case " $ACOSL_LIBM " in
+ *" $ASINL_LIBM "*) ;;
+ *) ACOSL_LIBM="$ACOSL_LIBM $ASINL_LIBM" ;;
+ esac
+ dnl Append $SQRTL_LIBM to ACOSL_LIBM, avoiding gratuitous duplicates.
+ case " $ACOSL_LIBM " in
+ *" $SQRTL_LIBM "*) ;;
+ *) ACOSL_LIBM="$ACOSL_LIBM $SQRTL_LIBM" ;;
+ esac
+ fi
fi
AC_SUBST([ACOSL_LIBM])
])
-# ansi-c++.m4 serial 8
+# ansi-c++.m4 serial 9
dnl Copyright (C) 2002-2003, 2005, 2010-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_LANG_POP([C++])
AC_MSG_RESULT([$gl_cv_prog_ansicxx_works])
if test $gl_cv_prog_ansicxx_works = no; then
- CXX=:
+ CXX=no
else
dnl Test for namespaces.
dnl We don't bother supporting pre-ANSI-C++ compilers.
AC_LANG_POP([C++])
AC_MSG_RESULT([$gl_cv_prog_ansicxx_namespaces])
if test $gl_cv_prog_ansicxx_namespaces = no; then
- CXX=:
+ CXX=no
fi
fi
fi
-# argp.m4 serial 12
+# argp.m4 serial 13
dnl Copyright (C) 2003-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
[Define if program_invocation_name is declared])],
[AC_DEFINE([GNULIB_PROGRAM_INVOCATION_NAME], [1],
[Define to 1 to add extern declaration of program_invocation_name to argp.h])],
- [#include <errno.h>])
+ [[#include <errno.h>]])
AC_CHECK_DECL([program_invocation_short_name],
[AC_DEFINE([HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME], [1],
[Define if program_invocation_short_name is declared])],
[AC_DEFINE([GNULIB_PROGRAM_INVOCATION_SHORT_NAME], [1],
[Define to 1 to add extern declaration of program_invocation_short_name to argp.h])],
- [#include <errno.h>])
+ [[#include <errno.h>]])
# Check if program_invocation_name and program_invocation_short_name
# are defined elsewhere. It is improbable that only one of them will
-# arpa_inet_h.m4 serial 12
+# arpa_inet_h.m4 serial 13
dnl Copyright (C) 2006, 2008-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl Assume proper GNU behavior unless another module says otherwise.
HAVE_DECL_INET_NTOP=1; AC_SUBST([HAVE_DECL_INET_NTOP])
HAVE_DECL_INET_PTON=1; AC_SUBST([HAVE_DECL_INET_PTON])
+ REPLACE_INET_NTOP=0; AC_SUBST([REPLACE_INET_NTOP])
+ REPLACE_INET_PTON=0; AC_SUBST([REPLACE_INET_PTON])
])
--- /dev/null
+# asin.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_ASIN],
+[
+ dnl Determine ASIN_LIBM.
+ gl_COMMON_DOUBLE_MATHFUNC([asin])
+])
--- /dev/null
+# asinf.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_ASINF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_ASIN])
+
+ dnl Test whether asinf() exists. Assume that asinf(), if it exists, is
+ dnl defined in the same library as asin().
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $ASIN_LIBM"
+ AC_CHECK_FUNCS([asinf])
+ LIBS="$save_LIBS"
+ if test $ac_cv_func_asinf = yes; then
+ ASINF_LIBM="$ASIN_LIBM"
+ else
+ HAVE_ASINF=0
+ ASINF_LIBM="$ASIN_LIBM"
+ fi
+ AC_SUBST([ASINF_LIBM])
+])
-# asinl.m4 serial 4
+# asinl.m4 serial 6
dnl Copyright (C) 2010-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_ASINL],
[
AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+
dnl Persuade glibc <math.h> to declare asinl().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|| test $gl_cv_func_asinl_in_libm = yes; then
dnl Also check whether it's declared.
dnl MacOS X 10.3 has asinl() in libc but doesn't declare it in <math.h>.
- AC_CHECK_DECL([asinl], , [HAVE_DECL_ASINL=0], [#include <math.h>])
+ AC_CHECK_DECL([asinl], , [HAVE_DECL_ASINL=0], [[#include <math.h>]])
else
HAVE_DECL_ASINL=0
HAVE_ASINL=0
dnl Find libraries needed to link lib/asinl.c.
- AC_REQUIRE([gl_FUNC_SQRTL])
- dnl Append $SQRTL_LIBM to ASINL_LIBM, avoiding gratuitous duplicates.
- case " $ASINL_LIBM " in
- *" $SQRTL_LIBM "*) ;;
- *) ASINL_LIBM="$ASINL_LIBM $SQRTL_LIBM" ;;
- esac
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
+ AC_REQUIRE([gl_FUNC_ASIN])
+ ASINL_LIBM="$ASIN_LIBM"
+ else
+ AC_REQUIRE([gl_FUNC_SQRTL])
+ dnl Append $SQRTL_LIBM to ASINL_LIBM, avoiding gratuitous duplicates.
+ case " $ASINL_LIBM " in
+ *" $SQRTL_LIBM "*) ;;
+ *) ASINL_LIBM="$ASINL_LIBM $SQRTL_LIBM" ;;
+ esac
+ fi
fi
AC_SUBST([ASINL_LIBM])
])
-# asm-underscore.m4 serial 1
+# asm-underscore.m4 serial 2
dnl Copyright (C) 2010-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl We don't use GCC's __USER_LABEL_PREFIX__ here, because
dnl 1. It works only for GCC.
dnl 2. It is incorrectly defined on some platforms, in some GCC versions.
+ AC_REQUIRE([gl_C_ASM])
AC_CACHE_CHECK(
[whether C symbols are prefixed with underscore at the linker level],
[gl_cv_prog_as_underscore],
int foo(void) { return 0; }
EOF
# Look for the assembly language name in the .s file.
- AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c) >/dev/null 2>&1
- if grep _foo conftest.s >/dev/null ; then
+ AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1
+ if grep _foo conftest.$gl_asmext >/dev/null ; then
gl_cv_prog_as_underscore=yes
else
gl_cv_prog_as_underscore=no
ASM_SYMBOL_PREFIX='"'${USER_LABEL_PREFIX}'"'
AC_SUBST([ASM_SYMBOL_PREFIX])
])
+
+# gl_C_ASM
+# Determines how to produce an assembly language file from C source code.
+# Sets the variables:
+# gl_asmext - the extension of assembly language output,
+# gl_c_asm_opt - the C compiler option that produces assembly language output.
+
+AC_DEFUN([gl_C_ASM],
+[
+ AC_EGREP_CPP([MicrosoftCompiler],
+ [
+#ifdef _MSC_VER
+MicrosoftCompiler
+#endif
+ ],
+ [gl_asmext='asm'
+ gl_c_asm_opt='-c -Fa'
+ ],
+ [gl_asmext='s'
+ gl_c_asm_opt='-S'
+ ])
+])
--- /dev/null
+# atan.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_ATAN],
+[
+ dnl Determine ATAN_LIBM.
+ gl_COMMON_DOUBLE_MATHFUNC([atan])
+])
--- /dev/null
+# atan2.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_ATAN2],
+[
+ dnl Determine ATAN2_LIBM.
+ gl_COMMON_DOUBLE_MATHFUNC([atan2])
+])
--- /dev/null
+# atan2f.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_ATAN2F],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_ATAN2])
+
+ dnl Test whether atan2f() exists. Assume that atan2f(), if it exists, is
+ dnl defined in the same library as atan2().
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $ATAN2_LIBM"
+ AC_CHECK_FUNCS([atan2f])
+ LIBS="$save_LIBS"
+ if test $ac_cv_func_atan2f = yes; then
+ ATAN2F_LIBM="$ATAN2_LIBM"
+ else
+ HAVE_ATAN2F=0
+ ATAN2F_LIBM="$ATAN2_LIBM"
+ fi
+ AC_SUBST([ATAN2F_LIBM])
+])
--- /dev/null
+# atanf.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_ATANF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_ATAN])
+
+ dnl Test whether atanf() exists. Assume that atanf(), if it exists, is
+ dnl defined in the same library as atan().
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $ATAN_LIBM"
+ AC_CHECK_FUNCS([atanf])
+ LIBS="$save_LIBS"
+ if test $ac_cv_func_atanf = yes; then
+ ATANF_LIBM="$ATAN_LIBM"
+ else
+ HAVE_ATANF=0
+ ATANF_LIBM="$ATAN_LIBM"
+ fi
+ AC_SUBST([ATANF_LIBM])
+])
-# atanl.m4 serial 4
+# atanl.m4 serial 6
dnl Copyright (C) 2010-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_ATANL],
[
AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+
dnl Persuade glibc <math.h> to declare atanl().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|| test $gl_cv_func_atanl_in_libm = yes; then
dnl Also check whether it's declared.
dnl MacOS X 10.3 has atanl() in libc but doesn't declare it in <math.h>.
- AC_CHECK_DECL([atanl], , [HAVE_DECL_ATANL=0], [#include <math.h>])
+ AC_CHECK_DECL([atanl], , [HAVE_DECL_ATANL=0], [[#include <math.h>]])
else
HAVE_DECL_ATANL=0
HAVE_ATANL=0
dnl Find libraries needed to link lib/atanl.c.
- AC_REQUIRE([gl_FUNC_ISNANL])
- dnl Append $ISNANL_LIBM to ATANL_LIBM, avoiding gratuitous duplicates.
- case " $ATANL_LIBM " in
- *" $ISNANL_LIBM "*) ;;
- *) ATANL_LIBM="$ATANL_LIBM $ISNANL_LIBM" ;;
- esac
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
+ AC_REQUIRE([gl_FUNC_ATAN])
+ ATANL_LIBM="$ATAN_LIBM"
+ else
+ AC_REQUIRE([gl_FUNC_ISNANL])
+ dnl Append $ISNANL_LIBM to ATANL_LIBM, avoiding gratuitous duplicates.
+ case " $ATANL_LIBM " in
+ *" $ISNANL_LIBM "*) ;;
+ *) ATANL_LIBM="$ATANL_LIBM $ISNANL_LIBM" ;;
+ esac
+ fi
fi
AC_SUBST([ATANL_LIBM])
])
--- /dev/null
+# base32.m4 serial 3
+dnl Copyright (C) 2004, 2006, 2009-2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_BASE32],
+[
+ gl_PREREQ_BASE32
+])
+
+# Prerequisites of lib/base32.c.
+AC_DEFUN([gl_PREREQ_BASE32], [
+ AC_REQUIRE([AC_C_INLINE])
+ AC_REQUIRE([AC_C_RESTRICT])
+])
# Written by Paul Eggert.
-# serial 13
+# serial 14
AC_DEFUN([AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC],
[
AC_REQUIRE([AC_FUNC_ALLOCA])
AC_CHECK_FUNCS_ONCE([sigaltstack])
- AC_CHECK_DECLS([sigaltstack], , , [#include <signal.h>])
+ AC_CHECK_DECLS([sigaltstack], , , [[#include <signal.h>]])
AC_CHECK_HEADERS_ONCE([unistd.h ucontext.h])
-# ceilf.m4 serial 11
+# ceilf.m4 serial 12
dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl Persuade glibc <math.h> to declare ceilf().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
dnl Test whether ceilf() is declared.
- AC_CHECK_DECLS([ceilf], , , [#include <math.h>])
+ AC_CHECK_DECLS([ceilf], , , [[#include <math.h>]])
if test "$ac_cv_have_decl_ceilf" = yes; then
dnl Test whether ceilf() can be used without libm.
gl_FUNC_CEILF_LIBS
-# ceill.m4 serial 10
+# ceill.m4 serial 12
dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
[
m4_divert_text([DEFAULTS], [gl_ceill_required=plain])
AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+
dnl Persuade glibc <math.h> to declare ceill().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
dnl Test whether ceill() is declared.
- AC_CHECK_DECLS([ceill], , , [#include <math.h>])
+ AC_CHECK_DECLS([ceill], , , [[#include <math.h>]])
if test "$ac_cv_have_decl_ceill" = yes; then
dnl Test whether ceill() can be used without libm.
gl_FUNC_CEILL_LIBS
HAVE_DECL_CEILL=0
fi
if test $HAVE_DECL_CEILL = 0 || test $REPLACE_CEILL = 1; then
- dnl No libraries are needed to link lib/ceill.c.
- CEILL_LIBM=
+ dnl Find libraries needed to link lib/ceill.c.
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
+ AC_REQUIRE([gl_FUNC_CEIL])
+ CEILL_LIBM="$CEIL_LIBM"
+ else
+ CEILL_LIBM=
+ fi
fi
AC_SUBST([CEILL_LIBM])
])
-#serial 12
+#serial 14
# Use Gnulib's robust chdir function.
# It can handle arbitrarily long directory names, which means
AC_DEFUN([gl_FUNC_CHDIR_LONG],
[
+ AC_REQUIRE([gl_PATHMAX_SNIPPET_PREREQ])
AC_CACHE_CHECK([whether this system has an arbitrary file name length limit],
gl_cv_have_arbitrary_file_name_length_limit,
[AC_EGREP_CPP([have_arbitrary_file_name_length_limit],
- [#include <unistd.h>
-#include <limits.h>
-#if defined PATH_MAX || defined MAXPATHLEN
+ gl_PATHMAX_SNIPPET[
+#ifdef PATH_MAX
have_arbitrary_file_name_length_limit
#endif],
gl_cv_have_arbitrary_file_name_length_limit=yes,
-# close.m4 serial 7
+# close.m4 serial 8
dnl Copyright (C) 2008-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_CLOSE],
[
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ AC_REQUIRE([gl_MSVC_INVAL])
+ if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+ REPLACE_CLOSE=1
+ fi
m4_ifdef([gl_PREREQ_SYS_H_WINSOCK2], [
gl_PREREQ_SYS_H_WINSOCK2
if test $UNISTD_H_HAVE_WINSOCK2_H = 1; then
--- /dev/null
+# closedir.m4 serial 2
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_CLOSEDIR],
+[
+ AC_REQUIRE([gl_DIRENT_H_DEFAULTS])
+
+ AC_CHECK_FUNCS([closedir])
+ if test $ac_cv_func_closedir = no; then
+ HAVE_CLOSEDIR=0
+ fi
+ dnl Replace closedir() for supporting the gnulib-defined fchdir() function,
+ dnl to keep fchdir's bookkeeping up-to-date.
+ m4_ifdef([gl_FUNC_FCHDIR], [
+ gl_TEST_FCHDIR
+ if test $HAVE_FCHDIR = 0; then
+ if test $HAVE_CLOSEDIR = 1; then
+ REPLACE_CLOSEDIR=1
+ fi
+ fi
+ ])
+])
--- /dev/null
+# copysign.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_COPYSIGN],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+
+ dnl Determine COPYSIGN_LIBM.
+ gl_MATHFUNC([copysign], [double], [(double, double)])
+ if test $gl_cv_func_copysign_no_libm = no \
+ && test $gl_cv_func_copysign_in_libm = no; then
+ HAVE_COPYSIGN=0
+ COPYSIGN_LIBM=
+ fi
+ AC_SUBST([COPYSIGN_LIBM])
+])
--- /dev/null
+# copysignf.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_COPYSIGNF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+
+ dnl Determine COPYSIGNF_LIBM.
+ gl_MATHFUNC([copysignf], [float], [(float, float)])
+ if test $gl_cv_func_copysignf_no_libm = no \
+ && test $gl_cv_func_copysignf_in_libm = no; then
+ HAVE_COPYSIGNF=0
+ COPYSIGNF_LIBM=
+ fi
+ AC_SUBST([COPYSIGNF_LIBM])
+])
--- /dev/null
+# copysignl.m4 serial 2
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_COPYSIGNL],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+
+ dnl Determine COPYSIGNL_LIBM.
+ gl_MATHFUNC([copysignl], [long double], [(long double, long double)])
+ if test $gl_cv_func_copysignl_no_libm = no \
+ && test $gl_cv_func_copysignl_in_libm = no; then
+ HAVE_COPYSIGNL=0
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
+ AC_REQUIRE([gl_FUNC_COPYSIGN])
+ COPYSIGNL_LIBM="$COPYSIGN_LIBM"
+ else
+ COPYSIGNL_LIBM=
+ fi
+ fi
+ AC_SUBST([COPYSIGNL_LIBM])
+])
--- /dev/null
+# cos.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_COS],
+[
+ dnl Determine COS_LIBM.
+ gl_COMMON_DOUBLE_MATHFUNC([cos])
+])
--- /dev/null
+# cosf.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_COSF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_COS])
+
+ dnl Test whether cosf() exists. Assume that cosf(), if it exists, is
+ dnl defined in the same library as cos().
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $COS_LIBM"
+ AC_CHECK_FUNCS([cosf])
+ LIBS="$save_LIBS"
+ if test $ac_cv_func_cosf = yes; then
+ COSF_LIBM="$COS_LIBM"
+ else
+ HAVE_COSF=0
+ COSF_LIBM="$COS_LIBM"
+ fi
+ AC_SUBST([COSF_LIBM])
+])
--- /dev/null
+# cosh.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_COSH],
+[
+ dnl Determine COSH_LIBM.
+ gl_COMMON_DOUBLE_MATHFUNC([cosh])
+])
--- /dev/null
+# coshf.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_COSHF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_COSH])
+
+ dnl Test whether coshf() exists. Assume that coshf(), if it exists, is
+ dnl defined in the same library as cosh().
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $COSH_LIBM"
+ AC_CHECK_FUNCS([coshf])
+ LIBS="$save_LIBS"
+ if test $ac_cv_func_coshf = yes; then
+ COSHF_LIBM="$COSH_LIBM"
+ else
+ HAVE_COSHF=0
+ COSHF_LIBM="$COSH_LIBM"
+ fi
+ AC_SUBST([COSHF_LIBM])
+])
-# cosl.m4 serial 4
+# cosl.m4 serial 6
dnl Copyright (C) 2010-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_COSL],
[
AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+
dnl Persuade glibc <math.h> to declare cosl().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|| test $gl_cv_func_cosl_in_libm = yes; then
dnl Also check whether it's declared.
dnl MacOS X 10.3 has cosl() in libc but doesn't declare it in <math.h>.
- AC_CHECK_DECL([cosl], , [HAVE_DECL_COSL=0], [#include <math.h>])
+ AC_CHECK_DECL([cosl], , [HAVE_DECL_COSL=0], [[#include <math.h>]])
else
HAVE_DECL_COSL=0
HAVE_COSL=0
dnl Find libraries needed to link lib/cosl.c, lib/sincosl.c, lib/trigl.c.
- AC_REQUIRE([gl_FUNC_ISNANL])
- AC_REQUIRE([gl_FUNC_FLOOR])
- AC_REQUIRE([gl_FUNC_FLOORL])
- dnl Append $ISNANL_LIBM to COSL_LIBM, avoiding gratuitous duplicates.
- case " $COSL_LIBM " in
- *" $ISNANL_LIBM "*) ;;
- *) COSL_LIBM="$COSL_LIBM $ISNANL_LIBM" ;;
- esac
- dnl Append $FLOOR_LIBM to COSL_LIBM, avoiding gratuitous duplicates.
- case " $COSL_LIBM " in
- *" $FLOOR_LIBM "*) ;;
- *) COSL_LIBM="$COSL_LIBM $FLOOR_LIBM" ;;
- esac
- dnl Append $FLOORL_LIBM to COSL_LIBM, avoiding gratuitous duplicates.
- case " $COSL_LIBM " in
- *" $FLOORL_LIBM "*) ;;
- *) COSL_LIBM="$COSL_LIBM $FLOORL_LIBM" ;;
- esac
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
+ AC_REQUIRE([gl_FUNC_COS])
+ COSL_LIBM="$COS_LIBM"
+ else
+ AC_REQUIRE([gl_FUNC_ISNANL])
+ AC_REQUIRE([gl_FUNC_FLOOR])
+ AC_REQUIRE([gl_FUNC_FLOORL])
+ dnl Append $ISNANL_LIBM to COSL_LIBM, avoiding gratuitous duplicates.
+ case " $COSL_LIBM " in
+ *" $ISNANL_LIBM "*) ;;
+ *) COSL_LIBM="$COSL_LIBM $ISNANL_LIBM" ;;
+ esac
+ dnl Append $FLOOR_LIBM to COSL_LIBM, avoiding gratuitous duplicates.
+ case " $COSL_LIBM " in
+ *" $FLOOR_LIBM "*) ;;
+ *) COSL_LIBM="$COSL_LIBM $FLOOR_LIBM" ;;
+ esac
+ dnl Append $FLOORL_LIBM to COSL_LIBM, avoiding gratuitous duplicates.
+ case " $COSL_LIBM " in
+ *" $FLOORL_LIBM "*) ;;
+ *) COSL_LIBM="$COSL_LIBM $FLOORL_LIBM" ;;
+ esac
+ fi
fi
AC_SUBST([COSL_LIBM])
])
-# dirent_h.m4 serial 14
+# dirent_h.m4 serial 16
dnl Copyright (C) 2008-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl <dirent.h> is always overridden, because of GNULIB_POSIXCHECK.
gl_CHECK_NEXT_HEADERS([dirent.h])
+ if test $ac_cv_header_dirent_h = yes; then
+ HAVE_DIRENT_H=1
+ else
+ HAVE_DIRENT_H=0
+ fi
+ AC_SUBST([HAVE_DIRENT_H])
dnl Check for declarations of anything we want to poison if the
dnl corresponding gnulib module is not in use.
gl_WARN_ON_USE_PREPARE([[#include <dirent.h>
- ]], [alphasort dirfd fdopendir scandir])
+ ]], [alphasort closedir dirfd fdopendir opendir readdir rewinddir scandir])
])
AC_DEFUN([gl_DIRENT_MODULE_INDICATOR],
AC_DEFUN([gl_DIRENT_H_DEFAULTS],
[
AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) dnl for REPLACE_FCHDIR
+ GNULIB_OPENDIR=0; AC_SUBST([GNULIB_OPENDIR])
+ GNULIB_READDIR=0; AC_SUBST([GNULIB_READDIR])
+ GNULIB_REWINDDIR=0; AC_SUBST([GNULIB_REWINDDIR])
+ GNULIB_CLOSEDIR=0; AC_SUBST([GNULIB_CLOSEDIR])
GNULIB_DIRFD=0; AC_SUBST([GNULIB_DIRFD])
GNULIB_FDOPENDIR=0; AC_SUBST([GNULIB_FDOPENDIR])
GNULIB_SCANDIR=0; AC_SUBST([GNULIB_SCANDIR])
GNULIB_ALPHASORT=0; AC_SUBST([GNULIB_ALPHASORT])
dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_OPENDIR=1; AC_SUBST([HAVE_OPENDIR])
+ HAVE_READDIR=1; AC_SUBST([HAVE_READDIR])
+ HAVE_REWINDDIR=1; AC_SUBST([HAVE_REWINDDIR])
+ HAVE_CLOSEDIR=1; AC_SUBST([HAVE_CLOSEDIR])
HAVE_DECL_DIRFD=1; AC_SUBST([HAVE_DECL_DIRFD])
HAVE_DECL_FDOPENDIR=1;AC_SUBST([HAVE_DECL_FDOPENDIR])
HAVE_FDOPENDIR=1; AC_SUBST([HAVE_FDOPENDIR])
HAVE_SCANDIR=1; AC_SUBST([HAVE_SCANDIR])
HAVE_ALPHASORT=1; AC_SUBST([HAVE_ALPHASORT])
+ REPLACE_OPENDIR=0; AC_SUBST([REPLACE_OPENDIR])
REPLACE_CLOSEDIR=0; AC_SUBST([REPLACE_CLOSEDIR])
REPLACE_DIRFD=0; AC_SUBST([REPLACE_DIRFD])
REPLACE_FDOPENDIR=0; AC_SUBST([REPLACE_FDOPENDIR])
- REPLACE_OPENDIR=0; AC_SUBST([REPLACE_OPENDIR])
])
-# serial 21 -*- Autoconf -*-
+# serial 22 -*- Autoconf -*-
dnl Find out how to get the file descriptor associated with an open DIR*.
AC_CHECK_FUNCS([dirfd])
AC_CHECK_DECLS([dirfd], , ,
- [#include <sys/types.h>
- #include <dirent.h>])
+ [[#include <sys/types.h>
+ #include <dirent.h>]])
if test $ac_cv_have_decl_dirfd = no; then
HAVE_DECL_DIRFD=0
fi
--- /dev/null
+# dup.m4 serial 2
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_DUP],
+[
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ AC_REQUIRE([gl_MSVC_INVAL])
+ if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+ REPLACE_DUP=1
+ fi
+ dnl Replace dup() for supporting the gnulib-defined fchdir() function,
+ dnl to keep fchdir's bookkeeping up-to-date.
+ m4_ifdef([gl_FUNC_FCHDIR], [
+ gl_TEST_FCHDIR
+ if test $HAVE_FCHDIR = 0; then
+ REPLACE_DUP=1
+ fi
+ ])
+])
+
+# Prerequisites of lib/dup.c.
+AC_DEFUN([gl_PREREQ_DUP], [
+ AC_REQUIRE([AC_C_INLINE])
+])
-#serial 14
+#serial 17
dnl Copyright (C) 2002, 2005, 2007, 2009-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
m4_ifdef([gl_FUNC_FCHDIR], [
gl_TEST_FCHDIR
if test $HAVE_FCHDIR = 0; then
- REPLACE_DUP2=1
+ if test $HAVE_DUP2 = 1; then
+ REPLACE_DUP2=1
+ fi
fi
])
])
+
+# Prerequisites of lib/dup2.c.
+AC_DEFUN([gl_PREREQ_DUP2], [])
-# dup3.m4 serial 3
+# dup3.m4 serial 4
dnl Copyright (C) 2009-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl m4_ifdef([gl_FUNC_FCHDIR], [
dnl gl_TEST_FCHDIR
dnl if test $HAVE_FCHDIR = 0; then
-dnl REPLACE_DUP3=1
+dnl if test $HAVE_DUP3 = 1; then
+dnl REPLACE_DUP3=1
+dnl fi
dnl fi
dnl ])
])
-# environ.m4 serial 5
+# environ.m4 serial 6
dnl Copyright (C) 2001-2004, 2006-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
dnl Persuade glibc <unistd.h> to declare environ.
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
- gt_CHECK_VAR_DECL([#include <unistd.h>], environ)
+
+ AC_CHECK_HEADERS_ONCE([unistd.h])
+ gt_CHECK_VAR_DECL(
+ [#if HAVE_UNISTD_H
+ #include <unistd.h>
+ #endif
+ /* mingw, BeOS, Haiku declare environ in <stdlib.h>, not in <unistd.h>. */
+ #include <stdlib.h>
+ ],
+ [environ])
if test $gt_cv_var_environ_declaration != yes; then
HAVE_DECL_ENVIRON=0
fi
-# euidaccess.m4 serial 13
+# euidaccess.m4 serial 14
dnl Copyright (C) 2002-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_CHECK_DECLS_ONCE([setregid])
AC_REQUIRE([AC_FUNC_GETGROUPS])
- # Solaris 9 needs -lgen to get the eaccess function.
+ # Solaris 9 and 10 need -lgen to get the eaccess function.
# Save and restore LIBS so -lgen isn't added to it. Otherwise, *all*
# programs in the package would end up linked with that potentially-shared
# library, inducing unnecessary run-time overhead.
--- /dev/null
+# exp.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_EXP],
+[
+ dnl Determine EXP_LIBM.
+ gl_COMMON_DOUBLE_MATHFUNC([exp])
+])
--- /dev/null
+# expf.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_EXPF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_EXP])
+
+ dnl Test whether expf() exists. Assume that expf(), if it exists, is
+ dnl defined in the same library as exp().
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $EXP_LIBM"
+ AC_CHECK_FUNCS([expf])
+ LIBS="$save_LIBS"
+ if test $ac_cv_func_expf = yes; then
+ EXPF_LIBM="$EXP_LIBM"
+ else
+ HAVE_EXPF=0
+ EXPF_LIBM="$EXP_LIBM"
+ fi
+ AC_SUBST([EXPF_LIBM])
+])
-# expl.m4 serial 3
+# expl.m4 serial 5
dnl Copyright (C) 2010-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_EXPL],
[
AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+
dnl Persuade glibc <math.h> to declare expl().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|| test $gl_cv_func_expl_in_libm = yes; then
dnl Also check whether it's declared.
dnl MacOS X 10.3 has expl() in libc but doesn't declare it in <math.h>.
- AC_CHECK_DECL([expl], , [HAVE_DECL_EXPL=0], [#include <math.h>])
+ AC_CHECK_DECL([expl], , [HAVE_DECL_EXPL=0], [[#include <math.h>]])
else
HAVE_DECL_EXPL=0
HAVE_EXPL=0
dnl Find libraries needed to link lib/expl.c.
- AC_REQUIRE([gl_FUNC_FLOORL])
- EXPL_LIBM="$FLOORL_LIBM"
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
+ AC_REQUIRE([gl_FUNC_EXP])
+ EXPL_LIBM="$EXP_LIBM"
+ else
+ AC_REQUIRE([gl_FUNC_FLOORL])
+ EXPL_LIBM="$FLOORL_LIBM"
+ fi
fi
AC_SUBST([EXPL_LIBM])
])
--- /dev/null
+# fabs.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FABS],
+[
+ dnl Determine FABS_LIBM.
+ gl_MATHFUNC([fabs], [double], [(double)])
+])
--- /dev/null
+# fabsf.m4 serial 2
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FABSF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_FABS])
+
+ dnl Test whether fabsf() exists. We cannot assume that fabsf(), if it
+ dnl exists, is defined in the same library as fabs(). This is not the case
+ dnl on FreeBSD, NetBSD, OpenBSD.
+ gl_MATHFUNC([fabsf], [float], [(float)])
+ if test $gl_cv_func_fabsf_no_libm = no \
+ && test $gl_cv_func_fabsf_in_libm = no; then
+ HAVE_FABSF=0
+ FABSF_LIBM="$FABS_LIBM"
+ fi
+ AC_SUBST([FABSF_LIBM])
+])
-# serial 3
+# serial 5
# See if we need to provide faccessat replacement.
dnl Copyright (C) 2009-2011 Free Software Foundation, Inc.
AC_DEFUN([gl_FUNC_FACCESSAT],
[
- AC_REQUIRE([gl_FUNC_OPENAT])
- AC_REQUIRE([gl_FUNC_EUIDACCESS])
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+
+ dnl Persuade glibc <unistd.h> to declare faccessat().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
- AC_CHECK_FUNCS_ONCE([access])
+
AC_CHECK_FUNCS_ONCE([faccessat])
if test $ac_cv_func_faccessat = no; then
HAVE_FACCESSAT=0
- AC_LIBOBJ([faccessat])
fi
])
+
+# Prerequisites of lib/faccessat.m4.
+AC_DEFUN([gl_PREREQ_FACCESSAT],
+[
+ AC_CHECK_FUNCS_ONCE([access])
+])
-# fchdir.m4 serial 17
+# fchdir.m4 serial 20
dnl Copyright (C) 2006-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
[
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
AC_REQUIRE([gl_DIRENT_H_DEFAULTS])
- AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
AC_CHECK_DECLS_ONCE([fchdir])
if test $ac_cv_have_decl_fchdir = no; then
dnl We must also replace anything that can manipulate a directory fd,
dnl to keep our bookkeeping up-to-date. We don't have to replace
dnl fstatat, since no platform has fstatat but lacks fchdir.
- REPLACE_OPENDIR=1
- REPLACE_CLOSEDIR=1
- REPLACE_DUP=1
AC_CACHE_CHECK([whether open can visit directories],
[gl_cv_func_open_directory_works],
[AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <fcntl.h>
if test "$gl_cv_func_open_directory_works" != yes; then
AC_DEFINE([REPLACE_OPEN_DIRECTORY], [1], [Define to 1 if open() should
work around the inability to open a directory.])
- REPLACE_FSTAT=1
fi
fi
])
--- /dev/null
+# fchmodat.m4 serial 1
+dnl Copyright (C) 2004-2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Written by Jim Meyering.
+
+AC_DEFUN([gl_FUNC_FCHMODAT],
+[
+ AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_CHECK_FUNCS_ONCE([fchmodat lchmod])
+ if test $ac_cv_func_fchmodat != yes; then
+ HAVE_FCHMODAT=0
+ fi
+])
--- /dev/null
+# fchownat.m4 serial 1
+dnl Copyright (C) 2004-2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Written by Jim Meyering.
+
+# If we have the fchownat function, and it has the bug (in glibc-2.4)
+# that it dereferences symlinks even with AT_SYMLINK_NOFOLLOW, then
+# use the replacement function.
+# Also if the fchownat function, like chown, has the trailing slash bug,
+# use the replacement function.
+# Also use the replacement function if fchownat is simply not available.
+AC_DEFUN([gl_FUNC_FCHOWNAT],
+[
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_REQUIRE([gl_FUNC_CHOWN])
+ AC_CHECK_FUNC([fchownat],
+ [gl_FUNC_FCHOWNAT_DEREF_BUG(
+ [REPLACE_FCHOWNAT=1
+ AC_DEFINE([FCHOWNAT_NOFOLLOW_BUG], [1],
+ [Define to 1 if your platform has fchownat, but it cannot
+ perform lchown tasks.])
+ ])
+ gl_FUNC_FCHOWNAT_EMPTY_FILENAME_BUG(
+ [REPLACE_FCHOWNAT=1
+ AC_DEFINE([FCHOWNAT_EMPTY_FILENAME_BUG], [1],
+ [Define to 1 if your platform has fchownat, but it does
+ not reject an empty file name.])
+ ])
+ if test $REPLACE_CHOWN = 1; then
+ REPLACE_FCHOWNAT=1
+ fi],
+ [HAVE_FCHOWNAT=0])
+])
+
+# gl_FUNC_FCHOWNAT_DEREF_BUG([ACTION-IF-BUGGY[, ACTION-IF-NOT_BUGGY]])
+AC_DEFUN([gl_FUNC_FCHOWNAT_DEREF_BUG],
+[
+ dnl Persuade glibc's <unistd.h> to declare fchownat().
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
+ AC_CACHE_CHECK([whether fchownat works with AT_SYMLINK_NOFOLLOW],
+ gl_cv_func_fchownat_nofollow_works,
+ [
+ gl_dangle=conftest.dangle
+ # Remove any remnants of a previous test.
+ rm -f $gl_dangle
+ # Arrange for deletion of the temporary file this test creates.
+ ac_clean_files="$ac_clean_files $gl_dangle"
+ ln -s conftest.no-such $gl_dangle
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE(
+ [[
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <sys/types.h>
+int
+main ()
+{
+ return (fchownat (AT_FDCWD, "$gl_dangle", -1, getgid (),
+ AT_SYMLINK_NOFOLLOW) != 0
+ && errno == ENOENT);
+}
+ ]])],
+ [gl_cv_func_fchownat_nofollow_works=yes],
+ [gl_cv_func_fchownat_nofollow_works=no],
+ [gl_cv_func_fchownat_nofollow_works=no],
+ )
+ ])
+ AS_IF([test $gl_cv_func_fchownat_nofollow_works = no], [$1], [$2])
+])
+
+# gl_FUNC_FCHOWNAT_EMPTY_FILENAME_BUG([ACTION-IF-BUGGY[, ACTION-IF-NOT_BUGGY]])
+AC_DEFUN([gl_FUNC_FCHOWNAT_EMPTY_FILENAME_BUG],
+[
+ dnl Persuade glibc's <unistd.h> to declare fchownat().
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
+ AC_CACHE_CHECK([whether fchownat works with an empty file name],
+ [gl_cv_func_fchownat_empty_filename_works],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <unistd.h>
+ #include <fcntl.h>
+ ]],
+ [[int fd;
+ int ret;
+ if (mkdir ("conftestdir", 0700) < 0)
+ return 2;
+ fd = open ("conftestdir", O_RDONLY);
+ if (fd < 0)
+ return 3;
+ ret = fchownat (fd, "", -1, -1, 0);
+ close (fd);
+ rmdir ("conftestdir");
+ return ret == 0;
+ ]])],
+ [gl_cv_func_fchownat_empty_filename_works=yes],
+ [gl_cv_func_fchownat_empty_filename_works=no],
+ [gl_cv_func_fchownat_empty_filename_works="guessing no"])
+ ])
+ AS_IF([test "$gl_cv_func_fchownat_empty_filename_works" != yes], [$1], [$2])
+])
-# fcntl-o.m4 serial 3
+# fcntl-o.m4 serial 4
dnl Copyright (C) 2006, 2009-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
[AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
[AC_REQUIRE([AC_GNU_SOURCE])])
+
+ AC_CHECK_HEADERS_ONCE([unistd.h])
+ AC_CHECK_FUNCS_ONCE([symlink])
AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h],
[AC_RUN_IFELSE(
[AC_LANG_PROGRAM(
[[#include <sys/types.h>
#include <sys/stat.h>
- #include <unistd.h>
+ #if HAVE_UNISTD_H
+ # include <unistd.h>
+ #else /* on Windows with MSVC */
+ # include <io.h>
+ # include <stdlib.h>
+ # defined sleep(n) _sleep ((n) * 1000)
+ #endif
#include <fcntl.h>
#ifndef O_NOATIME
#define O_NOATIME 0
]],
[[
int result = !constants;
+ #if HAVE_SYMLINK
{
static char const sym[] = "conftest.sym";
if (symlink (".", sym) != 0)
}
unlink (sym);
}
+ #endif
{
static char const file[] = "confdefs.h";
int fd = open (file, O_RDONLY | O_NOATIME);
-# serial 13
+# serial 15
# Configure fcntl.h.
dnl Copyright (C) 2006-2007, 2009-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
AC_REQUIRE([gl_FCNTL_O_FLAGS])
gl_NEXT_HEADERS([fcntl.h])
+ dnl Ensure the type pid_t gets defined.
+ AC_REQUIRE([AC_TYPE_PID_T])
+
+ dnl Ensure the type mode_t gets defined.
+ AC_REQUIRE([AC_TYPE_MODE_T])
+
dnl Check for declarations of anything we want to poison if the
dnl corresponding gnulib module is not in use, if it is not common
dnl enough to be declared everywhere.
--- /dev/null
+# fdatasync.m4 serial 3
+dnl Copyright (C) 2008-2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FDATASYNC],
+[
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+
+ dnl Using AC_CHECK_FUNCS_ONCE would break our subsequent AC_SEARCH_LIBS
+ AC_CHECK_DECLS_ONCE([fdatasync])
+ LIB_FDATASYNC=
+ AC_SUBST([LIB_FDATASYNC])
+
+ if test $ac_cv_have_decl_fdatasync = no; then
+ HAVE_DECL_FDATASYNC=0
+ dnl MacOS X 10.7 has fdatasync but does not declare it.
+ AC_CHECK_FUNCS([fdatasync])
+ if test $ac_cv_func_fdatasync = no; then
+ HAVE_FDATASYNC=0
+ fi
+ else
+ dnl Solaris <= 2.6 has fdatasync() in libposix4.
+ dnl Solaris 7..10 has it in librt.
+ gl_saved_libs=$LIBS
+ AC_SEARCH_LIBS([fdatasync], [rt posix4],
+ [test "$ac_cv_search_fdatasync" = "none required" ||
+ LIB_FDATASYNC=$ac_cv_search_fdatasync])
+ LIBS=$gl_saved_libs
+ fi
+])
--- /dev/null
+# fdopen.m4 serial 2
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FDOPEN],
+[
+ AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_REQUIRE([gl_MSVC_INVAL])
+ if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+ REPLACE_FDOPEN=1
+ else
+ dnl Test whether fdopen() sets errno when it fails due to a bad fd argument.
+ AC_CACHE_CHECK([whether fdopen sets errno], [gl_cv_func_fdopen_works],
+ [
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <stdio.h>
+#include <errno.h>
+int
+main (void)
+{
+ FILE *fp;
+ errno = 0;
+ fp = fdopen (-1, "r");
+ if (fp != NULL)
+ return 1;
+ if (errno == 0)
+ return 2;
+ return 0;
+}]])],
+ [gl_cv_func_fdopen_works=yes],
+ [gl_cv_func_fdopen_works=no],
+ [case "$host_os" in
+ mingw*) gl_cv_func_fdopen_works="guessing no" ;;
+ *) gl_cv_func_fdopen_works="guessing yes" ;;
+ esac
+ ])
+ ])
+ case "$gl_cv_func_fdopen_works" in
+ *no) REPLACE_FDOPEN=1 ;;
+ esac
+ fi
+])
+
+dnl Prerequisites of lib/fdopen.c.
+AC_DEFUN([gl_PREREQ_FDOPEN], [])
-# serial 8
+# serial 9
# See if we need to provide fdopendir.
dnl Copyright (C) 2009-2011 Free Software Foundation, Inc.
AC_DEFUN([gl_FUNC_FDOPENDIR],
[
+ AC_REQUIRE([gl_DIRENT_H_DEFAULTS])
+
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
dnl FreeBSD 7.3 has the function, but failed to declare it.
AC_CHECK_DECLS([fdopendir], [], [HAVE_DECL_FDOPENDIR=0], [[
#include <dirent.h>
--- /dev/null
+# fegetround.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FEGETROUND],
+[
+ dnl Determine FEGETROUND_LIBM.
+ gl_MATHFUNC([fegetround], [int], [(void)], [#include <fenv.h>])
+ if test $gl_cv_func_fegetround_no_libm = no \
+ && test $gl_cv_func_fegetround_in_libm = no; then
+ HAVE_FEGETROUND=0
+ else
+ HAVE_FEGETROUND=1
+ AC_DEFINE([HAVE_FEGETROUND], [1],
+ [Define to 1 if you have the 'fegetround' function.])
+ fi
+ AC_SUBST([FEGETROUND_LIBM])
+])
-# fflush.m4 serial 12
+# fflush.m4 serial 13
# Copyright (C) 2007-2011 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
AC_DEFUN([gl_FUNC_FFLUSH_STDIN],
[
+ AC_CHECK_HEADERS_ONCE([unistd.h])
AC_CACHE_CHECK([whether fflush works on input streams],
[gl_cv_func_fflush_stdin],
[echo hello world > conftest.txt
AC_RUN_IFELSE([AC_LANG_PROGRAM(
[[
#include <stdio.h>
-#include <unistd.h>
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#else /* on Windows with MSVC */
+# include <io.h>
+#endif
]], [[FILE *f = fopen ("conftest.txt", "r");
char buffer[10];
int fd;
-# float_h.m4 serial 7
+# float_h.m4 serial 9
dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
;;
esac
;;
+ linux*)
+ case "$host_cpu" in
+ powerpc*)
+ FLOAT_H=float.h
+ ;;
+ esac
+ ;;
esac
case "$host_os" in
- aix* | freebsd*)
+ aix* | freebsd* | linux*)
if test -n "$FLOAT_H"; then
REPLACE_FLOAT_LDBL=1
fi
;;
esac
+
+ dnl Test against glibc-2.7 Linux/SPARC64 bug.
+ REPLACE_ITOLD=0
+ AC_CACHE_CHECK([whether conversion from 'int' to 'long double' works],
+ [gl_cv_func_itold_works],
+ [
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+int i = -1;
+volatile long double ld;
+int main ()
+{
+ ld += i * 1.0L;
+ if (ld > 0)
+ return 1;
+ return 0;
+}]])],
+ [gl_cv_func_itold_works=yes],
+ [gl_cv_func_itold_works=no],
+ [case "$host" in
+ sparc*-*-linux*)
+ AC_EGREP_CPP([yes],
+ [#if defined __LP64__ || defined __arch64__
+ yes
+ #endif],
+ [gl_cv_func_itold_works="guessing no"],
+ [gl_cv_func_itold_works="guessing yes"])
+ ;;
+ *) gl_cv_func_itold_works="guessing yes" ;;
+ esac
+ ])
+ ])
+ case "$gl_cv_func_itold_works" in
+ *no)
+ REPLACE_ITOLD=1
+ dnl We add the workaround to <float.h> but also to <math.h>,
+ dnl to increase the chances that the fix function gets pulled in.
+ FLOAT_H=float.h
+ ;;
+ esac
+
if test -n "$FLOAT_H"; then
gl_NEXT_HEADERS([float.h])
fi
AC_SUBST([FLOAT_H])
AM_CONDITIONAL([GL_GENERATE_FLOAT_H], [test -n "$FLOAT_H"])
+ AC_SUBST([REPLACE_ITOLD])
])
-# floorf.m4 serial 10
+# floorf.m4 serial 11
dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl Persuade glibc <math.h> to declare floorf().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
dnl Test whether floorf() is declared.
- AC_CHECK_DECLS([floorf], , , [#include <math.h>])
+ AC_CHECK_DECLS([floorf], , , [[#include <math.h>]])
if test "$ac_cv_have_decl_floorf" = yes; then
dnl Test whether floorf() can be used without libm.
gl_FUNC_FLOORF_LIBS
-# floorl.m4 serial 8
+# floorl.m4 serial 10
dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_FLOORL],
[
AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+
dnl Persuade glibc <math.h> to declare floorl().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
dnl Test whether floorl() is declared.
- AC_CHECK_DECLS([floorl], , , [#include <math.h>])
+ AC_CHECK_DECLS([floorl], , , [[#include <math.h>]])
if test "$ac_cv_have_decl_floorl" = yes; then
dnl Test whether floorl() can be used without libm.
gl_FUNC_FLOORL_LIBS
HAVE_DECL_FLOORL=0
fi
if test $HAVE_DECL_FLOORL = 0 || test $REPLACE_FLOORL = 1; then
- dnl No libraries are needed to link lib/floorl.c.
- FLOORL_LIBM=
+ dnl Find libraries needed to link lib/floorl.c.
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
+ AC_REQUIRE([gl_FUNC_FLOOR])
+ FLOORL_LIBM="$FLOOR_LIBM"
+ else
+ FLOORL_LIBM=
+ fi
fi
AC_SUBST([FLOORL_LIBM])
])
--- /dev/null
+# fma.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FMA],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+
+ dnl Determine FMA_LIBM.
+ gl_MATHFUNC([fma], [double], [(double, double, double)])
+ if test $gl_cv_func_fma_no_libm = yes \
+ || test $gl_cv_func_fma_in_libm = yes; then
+ gl_FUNC_FMA_WORKS
+ case "$gl_cv_func_fma_works" in
+ *no) REPLACE_FMA=1 ;;
+ esac
+ else
+ HAVE_FMA=0
+ fi
+ if test $HAVE_FMA = 0 || test $REPLACE_FMA = 1; then
+ dnl Find libraries needed to link lib/fmal.c.
+ AC_REQUIRE([gl_FUNC_FREXP])
+ AC_REQUIRE([gl_FUNC_LDEXP])
+ AC_REQUIRE([gl_FUNC_FEGETROUND])
+ FMA_LIBM=
+ dnl Append $FREXP_LIBM to FMA_LIBM, avoiding gratuitous duplicates.
+ case " $FMA_LIBM " in
+ *" $FREXP_LIBM "*) ;;
+ *) FMA_LIBM="$FMA_LIBM $FREXP_LIBM" ;;
+ esac
+ dnl Append $LDEXP_LIBM to FMA_LIBM, avoiding gratuitous duplicates.
+ case " $FMA_LIBM " in
+ *" $LDEXP_LIBM "*) ;;
+ *) FMA_LIBM="$FMA_LIBM $LDEXP_LIBM" ;;
+ esac
+ dnl Append $FEGETROUND_LIBM to FMA_LIBM, avoiding gratuitous duplicates.
+ case " $FMA_LIBM " in
+ *" $FEGETROUND_LIBM "*) ;;
+ *) FMA_LIBM="$FMA_LIBM $FEGETROUND_LIBM" ;;
+ esac
+ fi
+ AC_SUBST([FMA_LIBM])
+])
+
+dnl Test whether fma() has any of the 7 known bugs of glibc 2.11.3 on x86_64.
+AC_DEFUN([gl_FUNC_FMA_WORKS],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_REQUIRE([gl_FUNC_LDEXP])
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $FMA_LIBM $LDEXP_LIBM"
+ AC_CACHE_CHECK([whether fma works], [gl_cv_func_fma_works],
+ [
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <float.h>
+#include <math.h>
+double p0 = 0.0;
+int main()
+{
+ int failed_tests = 0;
+ /* These tests fail with glibc 2.11.3 on x86_64. */
+ {
+ volatile double x = 1.5; /* 3 * 2^-1 */
+ volatile double y = x;
+ volatile double z = ldexp (1.0, DBL_MANT_DIG + 1); /* 2^54 */
+ /* x * y + z with infinite precision: 2^54 + 9 * 2^-2.
+ Lies between (2^52 + 0) * 2^2 and (2^52 + 1) * 2^2
+ and is closer to (2^52 + 1) * 2^2, therefore the rounding
+ must round up and produce (2^52 + 1) * 2^2. */
+ volatile double expected = z + 4.0;
+ volatile double result = fma (x, y, z);
+ if (result != expected)
+ failed_tests |= 1;
+ }
+ {
+ volatile double x = 1.25; /* 2^0 + 2^-2 */
+ volatile double y = - x;
+ volatile double z = ldexp (1.0, DBL_MANT_DIG + 1); /* 2^54 */
+ /* x * y + z with infinite precision: 2^54 - 2^0 - 2^-1 - 2^-4.
+ Lies between (2^53 - 1) * 2^1 and 2^53 * 2^1
+ and is closer to (2^53 - 1) * 2^1, therefore the rounding
+ must round down and produce (2^53 - 1) * 2^1. */
+ volatile double expected = (ldexp (1.0, DBL_MANT_DIG) - 1.0) * 2.0;
+ volatile double result = fma (x, y, z);
+ if (result != expected)
+ failed_tests |= 2;
+ }
+ {
+ volatile double x = 1.0 + ldexp (1.0, 1 - DBL_MANT_DIG); /* 2^0 + 2^-52 */
+ volatile double y = x;
+ volatile double z = 4.0; /* 2^2 */
+ /* x * y + z with infinite precision: 2^2 + 2^0 + 2^-51 + 2^-104.
+ Lies between (2^52 + 2^50) * 2^-50 and (2^52 + 2^50 + 1) * 2^-50
+ and is closer to (2^52 + 2^50 + 1) * 2^-50, therefore the rounding
+ must round up and produce (2^52 + 2^50 + 1) * 2^-50. */
+ volatile double expected = 4.0 + 1.0 + ldexp (1.0, 3 - DBL_MANT_DIG);
+ volatile double result = fma (x, y, z);
+ if (result != expected)
+ failed_tests |= 4;
+ }
+ {
+ volatile double x = 1.0 + ldexp (1.0, 1 - DBL_MANT_DIG); /* 2^0 + 2^-52 */
+ volatile double y = - x;
+ volatile double z = 8.0; /* 2^3 */
+ /* x * y + z with infinite precision: 2^2 + 2^1 + 2^0 - 2^-51 - 2^-104.
+ Lies between (2^52 + 2^51 + 2^50 - 1) * 2^-50 and
+ (2^52 + 2^51 + 2^50) * 2^-50 and is closer to
+ (2^52 + 2^51 + 2^50 - 1) * 2^-50, therefore the rounding
+ must round down and produce (2^52 + 2^51 + 2^50 - 1) * 2^-50. */
+ volatile double expected = 7.0 - ldexp (1.0, 3 - DBL_MANT_DIG);
+ volatile double result = fma (x, y, z);
+ if (result != expected)
+ failed_tests |= 8;
+ }
+ {
+ volatile double x = 1.25; /* 2^0 + 2^-2 */
+ volatile double y = - 0.75; /* - 2^0 + 2^-2 */
+ volatile double z = ldexp (1.0, DBL_MANT_DIG); /* 2^53 */
+ /* x * y + z with infinite precision: 2^53 - 2^0 + 2^-4.
+ Lies between (2^53 - 2^0) and 2^53 and is closer to (2^53 - 2^0),
+ therefore the rounding must round down and produce (2^53 - 2^0). */
+ volatile double expected = ldexp (1.0, DBL_MANT_DIG) - 1.0;
+ volatile double result = fma (x, y, z);
+ if (result != expected)
+ failed_tests |= 16;
+ }
+ if ((DBL_MANT_DIG % 2) == 1)
+ {
+ volatile double x = 1.0 + ldexp (1.0, - (DBL_MANT_DIG + 1) / 2); /* 2^0 + 2^-27 */
+ volatile double y = 1.0 - ldexp (1.0, - (DBL_MANT_DIG + 1) / 2); /* 2^0 - 2^-27 */
+ volatile double z = - ldexp (1.0, DBL_MIN_EXP - DBL_MANT_DIG); /* - 2^-1074 */
+ /* x * y + z with infinite precision: 2^0 - 2^-54 - 2^-1074.
+ Lies between (2^53 - 1) * 2^-53 and 2^53 * 2^-53 and is closer to
+ (2^53 - 1) * 2^-53, therefore the rounding must round down and
+ produce (2^53 - 1) * 2^-53. */
+ volatile double expected = 1.0 - ldexp (1.0, - DBL_MANT_DIG);
+ volatile double result = fma (x, y, z);
+ if (result != expected)
+ failed_tests |= 32;
+ }
+ {
+ double minus_inf = -1.0 / p0;
+ volatile double x = ldexp (1.0, DBL_MAX_EXP - 1);
+ volatile double y = ldexp (1.0, DBL_MAX_EXP - 1);
+ volatile double z = minus_inf;
+ volatile double result = fma (x, y, z);
+ if (!(result == minus_inf))
+ failed_tests |= 64;
+ }
+ return failed_tests;
+}]])],
+ [gl_cv_func_fma_works=yes],
+ [gl_cv_func_fma_works=no],
+ [dnl Guess no, even on glibc systems.
+ gl_cv_func_fma_works="guessing no"
+ ])
+ ])
+ LIBS="$save_LIBS"
+])
+
+# Prerequisites of lib/fma.c.
+AC_DEFUN([gl_PREREQ_FMA], [:])
--- /dev/null
+# fmaf.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FMAF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+
+ dnl Determine FMAF_LIBM.
+ gl_MATHFUNC([fmaf], [float], [(float, float, float)])
+ if test $gl_cv_func_fmaf_no_libm = yes \
+ || test $gl_cv_func_fmaf_in_libm = yes; then
+ gl_FUNC_FMAF_WORKS
+ case "$gl_cv_func_fmaf_works" in
+ *no) REPLACE_FMAF=1 ;;
+ esac
+ else
+ HAVE_FMAF=0
+ fi
+ if test $HAVE_FMAF = 0 || test $REPLACE_FMAF = 1; then
+ dnl Find libraries needed to link lib/fmaf.c.
+ AC_REQUIRE([gl_FUNC_FREXPF])
+ AC_REQUIRE([gl_FUNC_LDEXPF])
+ AC_REQUIRE([gl_FUNC_FEGETROUND])
+ FMAF_LIBM=
+ dnl Append $FREXPF_LIBM to FMAF_LIBM, avoiding gratuitous duplicates.
+ case " $FMAF_LIBM " in
+ *" $FREXPF_LIBM "*) ;;
+ *) FMAF_LIBM="$FMAF_LIBM $FREXPF_LIBM" ;;
+ esac
+ dnl Append $LDEXPF_LIBM to FMAF_LIBM, avoiding gratuitous duplicates.
+ case " $FMAF_LIBM " in
+ *" $LDEXPF_LIBM "*) ;;
+ *) FMAF_LIBM="$FMAF_LIBM $LDEXPF_LIBM" ;;
+ esac
+ dnl Append $FEGETROUND_LIBM to FMAF_LIBM, avoiding gratuitous duplicates.
+ case " $FMAF_LIBM " in
+ *" $FEGETROUND_LIBM "*) ;;
+ *) FMAF_LIBM="$FMAF_LIBM $FEGETROUND_LIBM" ;;
+ esac
+ fi
+ AC_SUBST([FMAF_LIBM])
+])
+
+dnl Test whether fmaf() has any of the 7 known bugs of glibc 2.11.3 on x86_64.
+AC_DEFUN([gl_FUNC_FMAF_WORKS],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_REQUIRE([gl_FUNC_LDEXPF])
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $FMAF_LIBM $LDEXPF_LIBM"
+ AC_CACHE_CHECK([whether fmaf works], [gl_cv_func_fmaf_works],
+ [
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <float.h>
+#include <math.h>
+float p0 = 0.0f;
+int main()
+{
+ int failed_tests = 0;
+ /* These tests fail with glibc 2.11.3 on x86_64. */
+ {
+ volatile float x = 1.5f; /* 3 * 2^-1 */
+ volatile float y = x;
+ volatile float z = ldexpf (1.0f, FLT_MANT_DIG + 1); /* 2^25 */
+ /* x * y + z with infinite precision: 2^25 + 9 * 2^-2.
+ Lies between (2^23 + 0) * 2^2 and (2^23 + 1) * 2^2
+ and is closer to (2^23 + 1) * 2^2, therefore the rounding
+ must round up and produce (2^23 + 1) * 2^2. */
+ volatile float expected = z + 4.0f;
+ volatile float result = fmaf (x, y, z);
+ if (result != expected)
+ failed_tests |= 1;
+ }
+ {
+ volatile float x = 1.25f; /* 2^0 + 2^-2 */
+ volatile float y = - x;
+ volatile float z = ldexpf (1.0f, FLT_MANT_DIG + 1); /* 2^25 */
+ /* x * y + z with infinite precision: 2^25 - 2^0 - 2^-1 - 2^-4.
+ Lies between (2^24 - 1) * 2^1 and 2^24 * 2^1
+ and is closer to (2^24 - 1) * 2^1, therefore the rounding
+ must round down and produce (2^24 - 1) * 2^1. */
+ volatile float expected = (ldexpf (1.0f, FLT_MANT_DIG) - 1.0f) * 2.0f;
+ volatile float result = fmaf (x, y, z);
+ if (result != expected)
+ failed_tests |= 2;
+ }
+ {
+ volatile float x = 1.0f + ldexpf (1.0f, 1 - FLT_MANT_DIG); /* 2^0 + 2^-23 */
+ volatile float y = x;
+ volatile float z = 4.0f; /* 2^2 */
+ /* x * y + z with infinite precision: 2^2 + 2^0 + 2^-22 + 2^-46.
+ Lies between (2^23 + 2^21) * 2^-21 and (2^23 + 2^21 + 1) * 2^-21
+ and is closer to (2^23 + 2^21 + 1) * 2^-21, therefore the rounding
+ must round up and produce (2^23 + 2^21 + 1) * 2^-21. */
+ volatile float expected = 4.0f + 1.0f + ldexpf (1.0f, 3 - FLT_MANT_DIG);
+ volatile float result = fmaf (x, y, z);
+ if (result != expected)
+ failed_tests |= 4;
+ }
+ {
+ volatile float x = 1.0f + ldexpf (1.0f, 1 - FLT_MANT_DIG); /* 2^0 + 2^-23 */
+ volatile float y = - x;
+ volatile float z = 8.0f; /* 2^3 */
+ /* x * y + z with infinite precision: 2^2 + 2^1 + 2^0 - 2^-22 - 2^-46.
+ Lies between (2^23 + 2^22 + 2^21 - 1) * 2^-21 and
+ (2^23 + 2^22 + 2^21) * 2^-21 and is closer to
+ (2^23 + 2^22 + 2^21 - 1) * 2^-21, therefore the rounding
+ must round down and produce (2^23 + 2^22 + 2^21 - 1) * 2^-21. */
+ volatile float expected = 7.0f - ldexpf (1.0f, 3 - FLT_MANT_DIG);
+ volatile float result = fmaf (x, y, z);
+ if (result != expected)
+ failed_tests |= 8;
+ }
+ {
+ volatile float x = 1.25f; /* 2^0 + 2^-2 */
+ volatile float y = - 0.75f; /* - 2^0 + 2^-2 */
+ volatile float z = ldexpf (1.0f, FLT_MANT_DIG); /* 2^24 */
+ /* x * y + z with infinite precision: 2^24 - 2^0 + 2^-4.
+ Lies between (2^24 - 2^0) and 2^24 and is closer to (2^24 - 2^0),
+ therefore the rounding must round down and produce (2^24 - 2^0). */
+ volatile float expected = ldexpf (1.0f, FLT_MANT_DIG) - 1.0f;
+ volatile float result = fmaf (x, y, z);
+ if (result != expected)
+ failed_tests |= 16;
+ }
+ if ((FLT_MANT_DIG % 2) == 0)
+ {
+ volatile float x = 1.0f + ldexpf (1.0f, - FLT_MANT_DIG / 2); /* 2^0 + 2^-12 */
+ volatile float y = x;
+ volatile float z = ldexpf (1.0f, FLT_MIN_EXP - FLT_MANT_DIG); /* 2^-149 */
+ /* x * y + z with infinite precision: 2^0 + 2^-11 + 2^-24 + 2^-149.
+ Lies between (2^23 + 2^12 + 0) * 2^-23 and (2^23 + 2^12 + 1) * 2^-23
+ and is closer to (2^23 + 2^12 + 1) * 2^-23, therefore the rounding
+ must round up and produce (2^23 + 2^12 + 1) * 2^-23. */
+ volatile float expected =
+ 1.0f + ldexpf (1.0f, 1 - FLT_MANT_DIG / 2) + ldexpf (1.0f, 1 - FLT_MANT_DIG);
+ volatile float result = fmaf (x, y, z);
+ if (result != expected)
+ failed_tests |= 32;
+ }
+ {
+ float minus_inf = -1.0f / p0;
+ volatile float x = ldexpf (1.0f, FLT_MAX_EXP - 1);
+ volatile float y = ldexpf (1.0f, FLT_MAX_EXP - 1);
+ volatile float z = minus_inf;
+ volatile float result = fmaf (x, y, z);
+ if (!(result == minus_inf))
+ failed_tests |= 64;
+ }
+ return failed_tests;
+}]])],
+ [gl_cv_func_fmaf_works=yes],
+ [gl_cv_func_fmaf_works=no],
+ [dnl Guess no, even on glibc systems.
+ gl_cv_func_fmaf_works="guessing no"
+ ])
+ ])
+ LIBS="$save_LIBS"
+])
+
+# Prerequisites of lib/fmaf.c.
+AC_DEFUN([gl_PREREQ_FMAF], [:])
--- /dev/null
+# fmal.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FMAL],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+
+ dnl Determine FMAL_LIBM.
+ gl_MATHFUNC([fmal], [long double], [(long double, long double, long double)])
+ if test $gl_cv_func_fmal_no_libm = yes \
+ || test $gl_cv_func_fmal_in_libm = yes; then
+ gl_FUNC_FMAL_WORKS
+ case "$gl_cv_func_fmal_works" in
+ *no) REPLACE_FMAL=1 ;;
+ esac
+ else
+ HAVE_FMAL=0
+ fi
+ if test $HAVE_FMAL = 0 || test $REPLACE_FMAL = 1; then
+ dnl Find libraries needed to link lib/fmal.c.
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
+ AC_REQUIRE([gl_FUNC_FMA])
+ FMAL_LIBM="$FMA_LIBM"
+ else
+ AC_REQUIRE([gl_FUNC_FREXPL])
+ AC_REQUIRE([gl_FUNC_LDEXPL])
+ AC_REQUIRE([gl_FUNC_FEGETROUND])
+ FMAL_LIBM=
+ dnl Append $FREXPL_LIBM to FMAL_LIBM, avoiding gratuitous duplicates.
+ case " $FMAL_LIBM " in
+ *" $FREXPL_LIBM "*) ;;
+ *) FMAL_LIBM="$FMAL_LIBM $FREXPL_LIBM" ;;
+ esac
+ dnl Append $LDEXPL_LIBM to FMAL_LIBM, avoiding gratuitous duplicates.
+ case " $FMAL_LIBM " in
+ *" $LDEXPL_LIBM "*) ;;
+ *) FMAL_LIBM="$FMAL_LIBM $LDEXPL_LIBM" ;;
+ esac
+ dnl Append $FEGETROUND_LIBM to FMAL_LIBM, avoiding gratuitous duplicates.
+ case " $FMAL_LIBM " in
+ *" $FEGETROUND_LIBM "*) ;;
+ *) FMAL_LIBM="$FMAL_LIBM $FEGETROUND_LIBM" ;;
+ esac
+ fi
+ fi
+ AC_SUBST([FMAL_LIBM])
+])
+
+dnl Test whether fmal() has any of the 15 known bugs of glibc 2.11.3 on x86_64.
+AC_DEFUN([gl_FUNC_FMAL_WORKS],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_REQUIRE([gl_FUNC_LDEXPL])
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $FMAL_LIBM $LDEXPL_LIBM"
+ AC_CACHE_CHECK([whether fmal works], [gl_cv_func_fmal_works],
+ [
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <float.h>
+#include <math.h>
+/* Override the values of <float.h>, like done in float.in.h. */
+#if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__)
+# undef LDBL_MANT_DIG
+# define LDBL_MANT_DIG 64
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP (-16381)
+# undef LDBL_MAX_EXP
+# define LDBL_MAX_EXP 16384
+#endif
+#if defined __i386__ && defined __FreeBSD__
+# undef LDBL_MANT_DIG
+# define LDBL_MANT_DIG 64
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP (-16381)
+# undef LDBL_MAX_EXP
+# define LDBL_MAX_EXP 16384
+#endif
+#if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP DBL_MIN_EXP
+#endif
+#if defined __sgi && (LDBL_MANT_DIG >= 106)
+# undef LDBL_MANT_DIG
+# define LDBL_MANT_DIG 106
+# if defined __GNUC__
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP DBL_MIN_EXP
+# endif
+#endif
+long double p0 = 0.0L;
+int main()
+{
+ int failed_tests = 0;
+ /* This test fails on glibc 2.11 powerpc. */
+ {
+ volatile long double x = 1.5L; /* 3 * 2^-1 */
+ volatile long double y = x;
+ volatile long double z = ldexpl (1.0L, LDBL_MANT_DIG + 1); /* 2^65 */
+ /* x * y + z with infinite precision: 2^65 + 9 * 2^-2.
+ Lies between (2^63 + 0) * 2^2 and (2^63 + 1) * 2^2
+ and is closer to (2^63 + 1) * 2^2, therefore the rounding
+ must round up and produce (2^63 + 1) * 2^2. */
+ volatile long double expected = z + 4.0L;
+ volatile long double result = fmal (x, y, z);
+ if (result != expected)
+ failed_tests |= 1;
+ }
+ /* This test fails on glibc 2.11 powerpc. */
+ {
+ volatile long double x = 1.25L; /* 2^0 + 2^-2 */
+ volatile long double y = - x;
+ volatile long double z = ldexpl (1.0L, LDBL_MANT_DIG + 1); /* 2^65 */
+ /* x * y + z with infinite precision: 2^65 - 2^0 - 2^-1 - 2^-4.
+ Lies between (2^64 - 1) * 2^1 and 2^64 * 2^1
+ and is closer to (2^64 - 1) * 2^1, therefore the rounding
+ must round down and produce (2^64 - 1) * 2^1. */
+ volatile long double expected = (ldexpl (1.0L, LDBL_MANT_DIG) - 1.0L) * 2.0L;
+ volatile long double result = fmal (x, y, z);
+ if (result != expected)
+ failed_tests |= 1;
+ }
+ /* This test fails on glibc 2.11 x86,x86_64,powerpc, glibc 2.7 hppa,sparc,
+ OSF/1 5.1, mingw. */
+ {
+ volatile long double x = 1.0L + ldexpl (1.0L, 1 - LDBL_MANT_DIG); /* 2^0 + 2^-63 */
+ volatile long double y = x;
+ volatile long double z = 4.0L; /* 2^2 */
+ /* x * y + z with infinite precision: 2^2 + 2^0 + 2^-62 + 2^-126.
+ Lies between (2^63 + 2^61) * 2^-61 and (2^63 + 2^61 + 1) * 2^-61
+ and is closer to (2^63 + 2^61 + 1) * 2^-61, therefore the rounding
+ must round up and produce (2^63 + 2^61 + 1) * 2^-61. */
+ volatile long double expected = 4.0L + 1.0L + ldexpl (1.0L, 3 - LDBL_MANT_DIG);
+ volatile long double result = fmal (x, y, z);
+ if (result != expected)
+ failed_tests |= 2;
+ }
+ /* This test fails on glibc 2.11 x86,x86_64,powerpc glibc 2.7 hppa,sparc,
+ OSF/1 5.1, mingw. */
+ {
+ volatile long double x = 1.0L + ldexpl (1.0L, 1 - LDBL_MANT_DIG); /* 2^0 + 2^-63 */
+ volatile long double y = - x;
+ volatile long double z = 8.0L; /* 2^3 */
+ /* x * y + z with infinite precision: 2^2 + 2^1 + 2^0 - 2^-62 - 2^-126.
+ Lies between (2^63 + 2^62 + 2^61 - 1) * 2^-61 and
+ (2^63 + 2^62 + 2^61) * 2^-61 and is closer to
+ (2^63 + 2^62 + 2^61 - 1) * 2^-61, therefore the rounding
+ must round down and produce (2^63 + 2^62 + 2^61 - 1) * 2^-61. */
+ volatile long double expected = 7.0L - ldexpl (1.0L, 3 - LDBL_MANT_DIG);
+ volatile long double result = fmal (x, y, z);
+ if (result != expected)
+ failed_tests |= 2;
+ }
+ /* This test fails on glibc 2.11 powerpc. */
+ {
+ volatile long double x = 1.25L; /* 2^0 + 2^-2 */
+ volatile long double y = - 0.75L; /* - 2^0 + 2^-2 */
+ volatile long double z = ldexpl (1.0L, LDBL_MANT_DIG); /* 2^64 */
+ /* x * y + z with infinite precision: 2^64 - 2^0 + 2^-4.
+ Lies between (2^64 - 2^0) and 2^64 and is closer to (2^64 - 2^0),
+ therefore the rounding must round down and produce (2^64 - 2^0). */
+ volatile long double expected = ldexpl (1.0L, LDBL_MANT_DIG) - 1.0L;
+ volatile long double result = fmal (x, y, z);
+ if (result != expected)
+ failed_tests |= 1;
+ }
+ if ((LDBL_MANT_DIG % 2) == 1)
+ {
+ /* These tests fail on glibc 2.7 hppa,sparc, OSF/1 5.1. */
+ {
+ volatile long double x = 1.0L + ldexpl (1.0L, - (LDBL_MANT_DIG + 1) / 2); /* 2^0 + 2^-27 */
+ volatile long double y = 1.0L - ldexpl (1.0L, - (LDBL_MANT_DIG + 1) / 2); /* 2^0 - 2^-27 */
+ volatile long double z = - ldexpl (1.0L, LDBL_MIN_EXP - LDBL_MANT_DIG); /* - 2^-1074 */
+ /* x * y + z with infinite precision: 2^0 - 2^-54 - 2^-1074.
+ Lies between (2^53 - 1) * 2^-53 and 2^53 * 2^-53 and is closer to
+ (2^53 - 1) * 2^-53, therefore the rounding must round down and
+ produce (2^53 - 1) * 2^-53. */
+ volatile long double expected = 1.0L - ldexpl (1.0L, - LDBL_MANT_DIG);
+ volatile long double result = fmal (x, y, z);
+ if (result != expected)
+ failed_tests |= 4;
+ }
+ {
+ volatile long double x = 1.0L + ldexpl (1.0L, - (LDBL_MANT_DIG + 1) / 2); /* 2^0 + 2^-57 */
+ volatile long double y = x;
+ volatile long double z = ldexpl (1.0L, - LDBL_MANT_DIG); /* 2^-113 */
+ /* x * y + z with infinite precision: 2^0 + 2^-56 + 2^-113 + 2^-114.
+ Lies between (2^112 + 2^56) * 2^-112 and (2^112 + 2^56 + 1) * 2^-112
+ and is closer to (2^112 + 2^56 + 1) * 2^-112, therefore the rounding
+ must round up and produce (2^112 + 2^56 + 1) * 2^-112. */
+ volatile long double expected =
+ 1.0L + ldexpl (1.0L, - (LDBL_MANT_DIG - 1) / 2) + ldexpl (1.0L, 1 - LDBL_MANT_DIG);
+ volatile long double result = fmal (x, y, z);
+ if (result != expected)
+ failed_tests |= 4;
+ }
+ }
+ else
+ {
+ /* These tests fail on glibc 2.11 x86,x86_64,powerpc, mingw. */
+ {
+ volatile long double x = 1.0L + ldexpl (1.0L, - LDBL_MANT_DIG / 2); /* 2^0 + 2^-32 */
+ volatile long double y = x;
+ volatile long double z = ldexpl (1.0L, LDBL_MIN_EXP - LDBL_MANT_DIG); /* 2^-16445 */
+ /* x * y + z with infinite precision: 2^0 + 2^-31 + 2^-64 + 2^-16445.
+ Lies between (2^63 + 2^32 + 0) * 2^-63 and (2^63 + 2^32 + 1) * 2^-63
+ and is closer to (2^63 + 2^32 + 1) * 2^-63, therefore the rounding
+ must round up and produce (2^63 + 2^32 + 1) * 2^-63. */
+ volatile long double expected =
+ 1.0L + ldexpl (1.0L, 1 - LDBL_MANT_DIG / 2) + ldexpl (1.0L, 1 - LDBL_MANT_DIG);
+ volatile long double result = fmal (x, y, z);
+ if (result != expected)
+ failed_tests |= 8;
+ }
+ {
+ volatile long double x = 1.0L + ldexpl (1.0L, - LDBL_MANT_DIG / 2); /* 2^0 + 2^-32 */
+ volatile long double y = x;
+ volatile long double z = ldexpl (1.0L, - LDBL_MANT_DIG); /* 2^-64 */
+ /* x * y + z with infinite precision: 2^0 + 2^-31 + 2^-63.
+ Rounding must return this value unchanged. */
+ volatile long double expected = 1.0L + ldexpl (1.0L, 1 - LDBL_MANT_DIG / 2) + ldexpl (1.0L, 1 - LDBL_MANT_DIG);
+ volatile long double result = fmal (x, y, z);
+ if (result != expected)
+ failed_tests |= 8;
+ }
+ {
+ volatile long double x = 1.0L + ldexpl (1.0L, - LDBL_MANT_DIG / 2); /* 2^0 + 2^-32 */
+ volatile long double y = x;
+ volatile long double z = ldexpl (1.0L, 1 - LDBL_MANT_DIG); /* 2^-63 */
+ /* x * y + z with infinite precision: 2^0 + 2^-31 + 2^-63 + 2^-64.
+ Lies between (2^63 + 2^32 + 1) * 2^-63 and (2^63 + 2^32 + 2) * 2^-63
+ and is at the same distance from each. According to the round-to-even
+ rule, the rounding must round up and produce (2^63 + 2^32 + 2) * 2^-63. */
+ volatile long double expected = 1.0L + ldexpl (1.0L, -31) + ldexpl (1.0L, -62);
+ volatile long double result = fmal (x, y, z);
+ if (result != expected)
+ failed_tests |= 8;
+ }
+ {
+ volatile long double x = 1.0L + ldexpl (1.0L, - LDBL_MANT_DIG / 2); /* 2^0 + 2^-32 */
+ volatile long double y = x;
+ volatile long double z = ldexpl (1.0L, LDBL_MANT_DIG / 2 + 1); /* 2^33 */
+ /* x * y + z with infinite precision: 2^33 + 2^0 + 2^-31 + 2^-64.
+ Lies between (2^63 + 2^30) * 2^-30 and (2^63 + 2^30 + 1) * 2^-30
+ and is closer to (2^63 + 2^30 + 1) * 2^-30, therefore the rounding
+ must round up and produce (2^63 + 2^30 + 1) * 2^-30. */
+ volatile long double expected = z + 1.0L + ldexp (1.0L, 2 - LDBL_MANT_DIG / 2);
+ volatile long double result = fmal (x, y, z);
+ if (result != expected)
+ failed_tests |= 8;
+ }
+ {
+ volatile long double x = 1.0L + ldexpl (1.0L, - LDBL_MANT_DIG / 2); /* 2^0 + 2^-32 */
+ volatile long double y = x;
+ volatile long double z = - ldexpl (1.0, 1 - LDBL_MANT_DIG); /* - 2^-63 */
+ /* x * y + z with infinite precision: 2^0 + 2^-31 - 2^-64.
+ Lies between (2^63 + 2^32 - 1) * 2^-63 and (2^63 + 2^32) * 2^-63
+ and is at the same distance from each. According to the round-to-even
+ rule, the rounding must round up and produce (2^63 + 2^32) * 2^-63. */
+ volatile long double expected = 1.0L + ldexpl (1.0L, 1 - LDBL_MANT_DIG / 2);
+ volatile long double result = fmal (x, y, z);
+ if (result != expected)
+ failed_tests |= 8;
+ }
+ {
+ volatile long double x = 1.0L + ldexpl (1.0L, - LDBL_MANT_DIG / 2); /* 2^0 + 2^-32 */
+ volatile long double y = x;
+ volatile long double z = - 1.0L; /* - 2^0 */
+ /* x * y + z with infinite precision: 2^-31 + 2^-64.
+ Rounding must return this value unchanged. */
+ volatile long double expected = ldexpl (1.0L, 1 - LDBL_MANT_DIG / 2) + ldexpl (1.0L, - LDBL_MANT_DIG);
+ volatile long double result = fmal (x, y, z);
+ if (result != expected)
+ failed_tests |= 8;
+ }
+ {
+ volatile long double x = 1.0L + ldexpl (1.0L, - LDBL_MANT_DIG / 2); /* 2^0 + 2^-32 */
+ volatile long double y = - x;
+ volatile long double z = 2.0L; /* 2^1 */
+ /* x * y + z with infinite precision: 2^0 - 2^31 - 2^-64.
+ Rounding must return this value unchanged. */
+ volatile long double expected = 1.0L - ldexpl (1.0L, 1 - LDBL_MANT_DIG / 2) - ldexpl (1.0L, - LDBL_MANT_DIG);
+ volatile long double result = fmal (x, y, z);
+ if (result != expected)
+ failed_tests |= 8;
+ }
+ {
+ volatile long double x = 1.0L + ldexpl (1.0L, - LDBL_MANT_DIG / 2); /* 2^0 + 2^-32 */
+ volatile long double y = - x;
+ volatile long double z = ldexpl (1.0L, LDBL_MANT_DIG / 2 + 2); /* 2^34 */
+ /* x * y + z with infinite precision: 2^34 - (2^0 + 2^-31 + 2^-64).
+ Lies between (2^64 - 2^30 - 1) * 2^-30 and (2^64 - 2^30) * 2^-30
+ and is closer to (2^64 - 2^30 - 1) * 2^-30, therefore the rounding
+ must round down and produce (2^64 - 2^30 - 1) * 2^-30. */
+ volatile long double expected = z - 1.0L - ldexpl (1.0L, 2 - LDBL_MANT_DIG / 2);
+ volatile long double result = fmal (x, y, z);
+ if (result != expected)
+ failed_tests |= 8;
+ }
+ {
+ volatile long double x = 1.0L + ldexpl (1.0L, - LDBL_MANT_DIG / 2 - 1); /* 2^0 + 2^-33 */
+ volatile long double y = 1.0L - ldexpl (1.0L, - LDBL_MANT_DIG / 2 - 1); /* 2^0 - 2^-33 */
+ volatile long double z = - ldexpl (1.0L, - LDBL_MANT_DIG - 1); /* 2^-65 */
+ /* x * y + z with infinite precision: 2^0 - 2^-65 - 2^-66.
+ Lies between (2^64 - 1) * 2^-64 and 2^64 * 2^-64 and is closer to
+ (2^64 - 1) * 2^-64, therefore the rounding must round down and
+ produce (2^64 - 1) * 2^-64. */
+ volatile long double expected = 1.0L - ldexpl (1.0L, - LDBL_MANT_DIG);
+ volatile long double result = fmal (x, y, z);
+ if (result != expected)
+ failed_tests |= 8;
+ }
+ {
+ volatile long double x = 1.0L + ldexpl (1.0L, - LDBL_MANT_DIG / 2 - 1); /* 2^0 + 2^-33 */
+ volatile long double y = 1.0L - ldexpl (1.0L, - LDBL_MANT_DIG / 2 - 1); /* 2^0 - 2^-33 */
+ volatile long double z = - 1.0L; /* 2^0 */
+ /* x * y + z with infinite precision: - 2^-66.
+ Rounding must return this value unchanged. */
+ volatile long double expected = - ldexpl (1.0L, - LDBL_MANT_DIG - 2);
+ volatile long double result = fmal (x, y, z);
+ if (result != expected)
+ failed_tests |= 8;
+ }
+ }
+ /* This test fails on glibc 2.11 x86,x86_64,powerpc, glibc 2.7 hppa,sparc,
+ FreeBSD 6.4 x86, mingw. */
+ {
+ long double minus_inf = -1.0L / p0;
+ volatile long double x = ldexpl (1.0L, LDBL_MAX_EXP - 1);
+ volatile long double y = ldexpl (1.0L, LDBL_MAX_EXP - 1);
+ volatile long double z = minus_inf;
+ volatile long double result = fmal (x, y, z);
+ if (!(result == minus_inf))
+ failed_tests |= 16;
+ }
+ /* This test fails on glibc 2.11 x86,x86_64,powerpc glibc 2.7 hppa,sparc,
+ MacOS X 10.5, FreeBSD 6.4 x86, OSF/1 5.1, mingw. */
+ {
+ volatile long double x = ldexpl (1.0L, LDBL_MAX_EXP - 1);
+ volatile long double y = 2.0L;
+ volatile long double z =
+ - ldexpl (ldexpl (1.0L, LDBL_MAX_EXP - 1) - ldexpl (1.0L, LDBL_MAX_EXP - LDBL_MANT_DIG - 1), 1);
+ volatile long double expected = ldexpl (1.0L, LDBL_MAX_EXP - LDBL_MANT_DIG);
+ volatile long double result = fmal (x, y, z);
+ if (result != expected)
+ failed_tests |= 32;
+ }
+ return failed_tests;
+}]])],
+ [gl_cv_func_fmal_works=yes],
+ [gl_cv_func_fmal_works=no],
+ [dnl Guess no, even on glibc systems.
+ gl_cv_func_fmal_works="guessing no"
+ ])
+ ])
+ LIBS="$save_LIBS"
+])
+
+# Prerequisites of lib/fmal.c.
+AC_DEFUN([gl_PREREQ_FMAL], [:])
--- /dev/null
+# fmod.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FMOD],
+[
+ dnl Determine FMOD_LIBM.
+ gl_COMMON_DOUBLE_MATHFUNC([fmod])
+])
--- /dev/null
+# fmodf.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FMODF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_FMOD])
+
+ dnl Test whether fmodf() exists. Assume that fmodf(), if it exists, is
+ dnl defined in the same library as fmod().
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $FMOD_LIBM"
+ AC_CHECK_FUNCS([fmodf])
+ LIBS="$save_LIBS"
+ if test $ac_cv_func_fmodf = yes; then
+ FMODF_LIBM="$FMOD_LIBM"
+ else
+ HAVE_FMODF=0
+ FMODF_LIBM="$FMOD_LIBM"
+ fi
+ AC_SUBST([FMODF_LIBM])
+])
-# Check for fnmatch - serial 7.
+# Check for fnmatch - serial 8.
# Copyright (C) 2000-2007, 2009-2011 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
[Define to a replacement function name for fnmatch().])
dnl Prerequisites of lib/fnmatch.c.
AC_REQUIRE([AC_TYPE_MBSTATE_T])
- AC_CHECK_DECLS([isblank], [], [], [#include <ctype.h>])
+ AC_CHECK_DECLS([isblank], [], [], [[#include <ctype.h>]])
AC_CHECK_FUNCS_ONCE([btowc isblank iswctype mbsrtowcs mempcpy wmemchr wmemcpy wmempcpy])
AC_CHECK_HEADERS_ONCE([wctype.h])
])
AC_DEFUN([gl_FUNC_FREE],
[
+ AC_REQUIRE([AC_CANONICAL_HOST])
AC_CACHE_CHECK([whether free (NULL) is known to work],
[gl_cv_func_free],
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[@%:@include <unistd.h>]],
- [[@%:@if _POSIX_VERSION < 199009L && \
- (defined unix || defined _unix || defined _unix_ \
- || defined __unix || defined __unix__)
- @%:@error "'free (NULL)' is not known to work"
- @%:@endif]])],
- [gl_cv_func_free=yes],
- [gl_cv_func_free=no])])
+ [case "$host_os" in
+ mingw*) gl_cv_func_free=yes ;;
+ *)
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[@%:@include <unistd.h>]],
+ [[@%:@if _POSIX_VERSION < 199009L && \
+ (defined unix || defined _unix || defined _unix_ \
+ || defined __unix || defined __unix__)
+ @%:@error "'free (NULL)' is not known to work"
+ @%:@endif]])],
+ [gl_cv_func_free=yes],
+ [gl_cv_func_free=no])
+ esac
+ ])
if test $gl_cv_func_free = no; then
AC_DEFINE([free], [rpl_free],
-# frexp.m4 serial 11
+# frexp.m4 serial 13
dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
[
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CHECK_FUNCS_ONCE([alarm])
AC_CACHE_CHECK([whether frexp works], [gl_cv_func_frexp_works],
[
AC_RUN_IFELSE(
#include <float.h>
#include <math.h>
#include <string.h>
+#if HAVE_ALARM
+# include <unistd.h>
+#endif
/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
ICC 10.0 has a bug when optimizing the expression -zero.
The expression -DBL_MIN * DBL_MIN does not work when cross-compiling
int i;
volatile double x;
double zero = 0.0;
+#if HAVE_ALARM
+ /* NeXTstep 3.3 frexp() runs into an endless loop when called on an infinite
+ number. Let the test fail in this case. */
+ alarm (5);
+#endif
/* Test on denormalized numbers. */
for (i = 1, x = 1.0; i >= DBL_MIN_EXP; i--, x *= 0.5)
;
result |= 1;
}
/* Test on infinite numbers. */
- x = 1.0 / 0.0;
+ x = 1.0 / zero;
{
int exp;
double y = frexp (x, &exp);
--- /dev/null
+# frexpf.m4 serial 3
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FREXPF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_FREXP])
+
+ dnl Test whether frexpf() exists. We cannot assume that frexpf(), if it
+ dnl exists, is defined in the same library as frexp(). This is not the case
+ dnl on NetBSD, OpenBSD.
+ gl_MATHFUNC([frexpf], [float], [(float, int *)])
+ if test $gl_cv_func_frexpf_no_libm = yes \
+ || test $gl_cv_func_frexpf_in_libm = yes; then
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $FREXPF_LIBM"
+ gl_FUNC_FREXPF_WORKS
+ LIBS="$save_LIBS"
+ case "$gl_cv_func_frexpf_works" in
+ *yes) ;;
+ *) REPLACE_FREXPF=1 ;;
+ esac
+ else
+ HAVE_FREXPF=0
+ fi
+ if test $HAVE_FREXPF = 0 || test $REPLACE_FREXPF = 1; then
+ FREXPF_LIBM="$FREXP_LIBM"
+ fi
+ AC_SUBST([FREXPF_LIBM])
+])
+
+dnl Test whether frexpf() works also on infinite numbers (this fails e.g. on
+dnl IRIX 6.5 and mingw) and on negative zero (this fails e.g. on mingw).
+AC_DEFUN([gl_FUNC_FREXPF_WORKS],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether frexpf works], [gl_cv_func_frexpf_works],
+ [
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <float.h>
+#include <math.h>
+#include <string.h>
+/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
+ ICC 10.0 has a bug when optimizing the expression -zero.
+ The expression -FLT_MIN * FLT_MIN does not work when cross-compiling
+ to PowerPC on MacOS X 10.5. */
+#if defined __hpux || defined __sgi || defined __ICC
+static float
+compute_minus_zero (void)
+{
+ return -FLT_MIN * FLT_MIN;
+}
+# define minus_zero compute_minus_zero ()
+#else
+float minus_zero = -0.0f;
+#endif
+int main()
+{
+ int result = 0;
+ volatile float x;
+ float zero = 0.0f;
+ /* Test on infinite numbers. */
+ x = 1.0f / zero;
+ {
+ int exp;
+ float y = frexpf (x, &exp);
+ if (y != x)
+ result |= 1;
+ }
+ /* Test on negative zero. */
+ x = minus_zero;
+ {
+ int exp;
+ float y = frexpf (x, &exp);
+ if (memcmp (&y, &x, sizeof x))
+ result |= 2;
+ }
+ return result;
+}]])],
+ [gl_cv_func_frexpf_works=yes],
+ [gl_cv_func_frexpf_works=no],
+ [case "$host_os" in
+ irix* | mingw*) gl_cv_func_frexpf_works="guessing no";;
+ *) gl_cv_func_frexpf_works="guessing yes";;
+ esac
+ ])
+ ])
+])
-# frexpl.m4 serial 16
+# frexpl.m4 serial 18
dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_FREXPL],
[
AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
dnl Check whether it's declared.
dnl MacOS X 10.3 has frexpl() in libc but doesn't declare it in <math.h>.
- AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [#include <math.h>])
+ AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [[#include <math.h>]])
FREXPL_LIBM=
if test $HAVE_DECL_FREXPL = 1; then
gl_CHECK_FREXPL_NO_LIBM
LIBS="$save_LIBS"
case "$gl_cv_func_frexpl_works" in
*yes) gl_func_frexpl=yes ;;
- *) gl_func_frexpl=no; REPLACE_FREXPL=1; FREXPL_LIBM= ;;
+ *) gl_func_frexpl=no; REPLACE_FREXPL=1 ;;
esac
else
gl_func_frexpl=no
[Define if the frexpl() function is available.])
fi
fi
+ if test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl = no; then
+ dnl Find libraries needed to link lib/frexpl.c.
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
+ AC_REQUIRE([gl_FUNC_FREXP])
+ FREXPL_LIBM="$FREXP_LIBM"
+ else
+ FREXPL_LIBM=
+ fi
+ fi
AC_SUBST([FREXPL_LIBM])
])
AC_DEFUN([gl_FUNC_FREXPL_NO_LIBM],
[
AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
dnl Check whether it's declared.
dnl MacOS X 10.3 has frexpl() in libc but doesn't declare it in <math.h>.
- AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [#include <math.h>])
+ AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [[#include <math.h>]])
if test $HAVE_DECL_FREXPL = 1; then
gl_CHECK_FREXPL_NO_LIBM
if test $gl_cv_func_frexpl_no_libm = yes; then
--- /dev/null
+# fstat.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FSTAT],
+[
+ AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
+ AC_REQUIRE([gl_MSVC_INVAL])
+ if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+ REPLACE_FSTAT=1
+ fi
+ dnl Replace fstat() for supporting the gnulib-defined open() on directories.
+ m4_ifdef([gl_FUNC_FCHDIR], [
+ gl_TEST_FCHDIR
+ if test $HAVE_FCHDIR = 0 \
+ && test "$gl_cv_func_open_directory_works" != yes; then
+ REPLACE_FSTAT=1
+ fi
+ ])
+])
+
+# Prerequisites of lib/fstat.c.
+AC_DEFUN([gl_PREREQ_FSTAT],
+[
+ AC_REQUIRE([AC_C_INLINE])
+])
--- /dev/null
+# fstatat.m4 serial 2
+dnl Copyright (C) 2004-2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Written by Jim Meyering.
+
+# If we have the fstatat function, and it has the bug (in AIX 7.1)
+# that it does not fill in st_size correctly, use the replacement function.
+AC_DEFUN([gl_FUNC_FSTATAT],
+[
+ AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CHECK_FUNCS_ONCE([fstatat])
+
+ if test $ac_cv_func_fstatat = no; then
+ HAVE_FSTATAT=0
+ else
+ dnl Test for an AIX 7.1 bug; see
+ dnl <http://lists.gnu.org/archive/html/bug-tar/2011-09/msg00015.html>.
+ AC_CACHE_CHECK([whether fstatat (..., 0) works],
+ [gl_cv_func_fstatat_zero_flag],
+ [AC_RUN_IFELSE(
+ [AC_LANG_SOURCE(
+ [[
+ #include <fcntl.h>
+ #include <sys/stat.h>
+ int
+ main (void)
+ {
+ struct stat a;
+ return fstatat (AT_FDCWD, ".", &a, 0) != 0;
+ }
+ ]])],
+ [gl_cv_func_fstatat_zero_flag=yes],
+ [gl_cv_func_fstatat_zero_flag=no],
+ [case "$host_os" in
+ aix*) gl_cv_func_fstatat_zero_flag="guessing no";;
+ *) gl_cv_func_fstatat_zero_flag="guessing yes";;
+ esac
+ ])
+ ])
+
+ case $gl_cv_func_fstatat_zero_flag+$gl_cv_func_lstat_dereferences_slashed_symlink in
+ *yes+yes) ;;
+ *) REPLACE_FSTATAT=1
+ case $gl_cv_func_fstatat_zero_flag in
+ *yes)
+ AC_DEFINE([HAVE_WORKING_FSTATAT_ZERO_FLAG], [1],
+ [Define to 1 if fstatat (..., 0) works.
+ For example, it does not work in AIX 7.1.])
+ ;;
+ esac
+ ;;
+ esac
+ fi
+])
-# serial 16
+# serial 18
-# See if we need to emulate a missing ftruncate function using fcntl or chsize.
+# See if we need to emulate a missing ftruncate function using chsize.
# Copyright (C) 2000-2001, 2003-2007, 2009-2011 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# FIXME: remove this macro, along with all uses of HAVE_FTRUNCATE in 2012,
-# if the check below provokes no more reports. So far, the only report
-# arose from a test build of this gnulib module, cross-compiling to mingw:
-# <http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/9203>
-# Now (in 2010), MSVC has been raised as a possible target:
-# <http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/21394/focus=21396>
-
AC_DEFUN([gl_FUNC_FTRUNCATE],
[
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
- AC_REQUIRE([AC_CANONICAL_HOST])
AC_CHECK_FUNCS_ONCE([ftruncate])
if test $ac_cv_func_ftruncate = no; then
HAVE_FTRUNCATE=0
- case "$host_os" in
- mingw*)
- # Yes, we know mingw lacks ftruncate.
- ;;
- *)
- # If someone lacks ftruncate, make configure fail, and request
- # a bug report to inform us about it.
- if test x"$SKIP_FTRUNCATE_CHECK" != xyes; then
- AC_MSG_FAILURE([Your system lacks the ftruncate function.
- Please report this, along with the output of "uname -a", to the
- bug-coreutils@gnu.org mailing list. To continue past this point,
- rerun configure with SKIP_FTRUNCATE_CHECK=yes.
- E.g., ./configure SKIP_FTRUNCATE_CHECK=yes])
- fi
- esac
fi
])
# Prerequisites of lib/ftruncate.c.
AC_DEFUN([gl_PREREQ_FTRUNCATE],
[
+ AC_REQUIRE([AC_C_INLINE])
AC_CHECK_FUNCS([chsize])
])
-# getaddrinfo.m4 serial 28
+# getaddrinfo.m4 serial 29
dnl Copyright (C) 2004-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_CHECK_HEADERS_ONCE([netinet/in.h])
- AC_CHECK_DECLS([getaddrinfo, freeaddrinfo, getnameinfo],,,[
+ AC_CHECK_DECLS([getaddrinfo, freeaddrinfo, getnameinfo],,,[[
/* sys/types.h is not needed according to POSIX, but the
sys/socket.h in i386-unknown-freebsd4.10 and
powerpc-apple-darwin5.5 required it. */
#ifdef HAVE_WS2TCPIP_H
#include <ws2tcpip.h>
#endif
-])
+]])
if test $ac_cv_have_decl_getaddrinfo = no; then
HAVE_DECL_GETADDRINFO=0
fi
-# serial 4
+# serial 7
# Determine whether getcwd aborts when the length of the working directory
# name is unusually large. Any length between 4k and 16k trigger the bug
# when using glibc-2.4.90-9 or older.
AC_DEFUN([gl_FUNC_GETCWD_ABORT_BUG],
[
AC_CHECK_DECLS_ONCE([getcwd])
+ AC_CHECK_HEADERS_ONCE([unistd.h])
+ AC_REQUIRE([gl_PATHMAX_SNIPPET_PREREQ])
AC_CHECK_FUNCS([getpagesize])
AC_CACHE_CHECK([whether getcwd aborts when 4k < cwd_length < 16k],
gl_cv_func_getcwd_abort_bug,
[AC_LANG_SOURCE(
[[
#include <stdlib.h>
-#include <unistd.h>
-#include <limits.h>
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#else /* on Windows with MSVC */
+# include <direct.h>
+#endif
#include <string.h>
#include <sys/stat.h>
+]gl_PATHMAX_SNIPPET[
+
/* Don't get link errors because mkdir is redefined to rpl_mkdir. */
#undef mkdir
results in a failed assertion. */
cwd = getcwd (NULL, 0);
if (cwd == NULL)
- fail = 4; /* getcwd failed. This is ok, and expected. */
+ fail = 4; /* getcwd failed: it refuses to return a string longer
+ than PATH_MAX. */
free (cwd);
/* Call rmdir first, in case the above chdir failed. */
}
]])],
[gl_cv_func_getcwd_abort_bug=no],
- dnl A "regular" nonzero return does not indicate this bug.
- dnl An abort will provoke an exit code of something like 134 (128 + 6).
- [test $? -gt 128 \
- && gl_cv_func_getcwd_abort_bug=yes \
- || gl_cv_func_getcwd_abort_bug=no],
+ [dnl An abort will provoke an exit code of something like 134 (128 + 6).
+ dnl An exit code of 4 can also occur (in OpenBSD 4.9, NetBSD 5.1 for
+ dnl example): getcwd (NULL, 0) fails rather than returning a string
+ dnl longer than PATH_MAX. This may be POSIX compliant (in some
+ dnl interpretations of POSIX). But gnulib's getcwd module wants to
+ dnl provide a non-NULL value in this case.
+ ret=$?
+ if test $ret -ge 128 || test $ret = 4; then
+ gl_cv_func_getcwd_abort_bug=yes
+ else
+ gl_cv_func_getcwd_abort_bug=no
+ fi],
[gl_cv_func_getcwd_abort_bug=yes])
])
AS_IF([test $gl_cv_func_getcwd_abort_bug = yes], [$1], [$2])
-# serial 16
+# serial 19
# Check for several getcwd bugs with long file names.
# If so, arrange to compile the wrapper function.
AC_DEFUN([gl_FUNC_GETCWD_PATH_MAX],
[
AC_CHECK_DECLS_ONCE([getcwd])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_CHECK_HEADERS_ONCE([unistd.h])
+ AC_REQUIRE([gl_PATHMAX_SNIPPET_PREREQ])
AC_CACHE_CHECK([whether getcwd handles long file names properly],
gl_cv_func_getcwd_path_max,
[# Arrange for deletion of the temporary directory this test creates.
[[
#include <errno.h>
#include <stdlib.h>
-#include <unistd.h>
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#else
+# include <direct.h>
+#endif
#include <string.h>
#include <limits.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
+]gl_PATHMAX_SNIPPET[
+
#ifndef AT_FDCWD
# define AT_FDCWD 0
#endif
fail = 11;
break;
}
- if (c || ! (errno == ERANGE || is_ENAMETOOLONG (errno)))
+ if (c)
+ {
+ fail = 31;
+ break;
+ }
+ if (! (errno == ERANGE || is_ENAMETOOLONG (errno)))
{
fail = 21;
break;
[gl_cv_func_getcwd_path_max=yes],
[case $? in
10|11|12) gl_cv_func_getcwd_path_max='no, but it is partly working';;
+ 31) gl_cv_func_getcwd_path_max='no, it has the AIX bug';;
*) gl_cv_func_getcwd_path_max=no;;
esac],
- [gl_cv_func_getcwd_path_max=no])
+ [case "$host_os" in
+ aix*) gl_cv_func_getcwd_path_max='no, it has the AIX bug';;
+ *) gl_cv_func_getcwd_path_max=no;;
+ esac])
])
- case $gl_cv_func_getcwd_path_max in
- no,*)
- AC_DEFINE([HAVE_PARTLY_WORKING_GETCWD], [1],
- [Define to 1 if getcwd works, except it sometimes fails when it shouldn't,
- setting errno to ERANGE, ENAMETOOLONG, or ENOENT.]);;
- esac
])
# with or without modifications, as long as this notice is preserved.
# Written by Paul Eggert.
-# serial 8
+# serial 11
AC_DEFUN([gl_FUNC_GETCWD_NULL],
[
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CHECK_HEADERS_ONCE([unistd.h])
AC_CACHE_CHECK([whether getcwd (NULL, 0) allocates memory for result],
[gl_cv_func_getcwd_null],
[AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-# include <unistd.h>
+# if HAVE_UNISTD_H
+# include <unistd.h>
+# else /* on Windows with MSVC */
+# include <direct.h>
+# endif
# ifndef getcwd
char *getcwd ();
# endif
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
gl_abort_bug=no
- case $gl_cv_func_getcwd_null,$host_os in
- *,mingw*)
- gl_cv_func_getcwd_path_max=yes;;
- yes,*)
- gl_FUNC_GETCWD_PATH_MAX
- gl_FUNC_GETCWD_ABORT_BUG([gl_abort_bug=yes]);;
+ case "$host_os" in
+ mingw*)
+ gl_cv_func_getcwd_path_max=yes
+ ;;
+ *)
+ gl_FUNC_GETCWD_PATH_MAX
+ case "$gl_cv_func_getcwd_null" in
+ *yes)
+ gl_FUNC_GETCWD_ABORT_BUG([gl_abort_bug=yes])
+ ;;
+ esac
+ ;;
esac
-
- case $gl_cv_func_getcwd_null,$gl_cv_func_getcwd_posix_signature$gl_cv_func_getcwd_path_max,$gl_abort_bug in
- *yes,yes,yes,no) ;;
- *)
- dnl Full replacement lib/getcwd.c, overrides LGPL replacement.
- REPLACE_GETCWD=1;;
+ dnl Define HAVE_MINIMALLY_WORKING_GETCWD and HAVE_PARTLY_WORKING_GETCWD
+ dnl if appropriate.
+ case "$gl_cv_func_getcwd_path_max" in
+ "no, it has the AIX bug") ;;
+ *)
+ AC_DEFINE([HAVE_MINIMALLY_WORKING_GETCWD], [1],
+ [Define to 1 if getcwd minimally works, that is, its result can be
+ trusted when it succeeds.])
+ ;;
esac
+ case "$gl_cv_func_getcwd_path_max" in
+ "no, but it is partly working")
+ AC_DEFINE([HAVE_PARTLY_WORKING_GETCWD], [1],
+ [Define to 1 if getcwd works, except it sometimes fails when it
+ shouldn't, setting errno to ERANGE, ENAMETOOLONG, or ENOENT.])
+ ;;
+ esac
+
+ if { case "$gl_cv_func_getcwd_null" in *yes) false;; *) true;; esac; } \
+ || test $gl_cv_func_getcwd_posix_signature != yes \
+ || test "$gl_cv_func_getcwd_path_max" != yes \
+ || test $gl_abort_bug = yes; then
+ REPLACE_GETCWD=1
+ fi
])
# Prerequisites of lib/getcwd.c, when full replacement is in effect.
-# getdomainname.m4 serial 8
+# getdomainname.m4 serial 9
dnl Copyright (C) 2002-2003, 2008-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl - It's int getdomainname(char *, int) on MacOS X, FreeBSD, AIX, IRIX,
dnl OSF/1.
AC_CHECK_DECLS([getdomainname], , ,
- [#include <sys/types.h>
- #ifdef HAVE_SYS_SOCKET_H
- #include <sys/socket.h>
- #endif
- #ifdef HAVE_NETDB_H
- #include <netdb.h>
- #endif
- #include <unistd.h>
- ])
+ [[#include <sys/types.h>
+ #ifdef HAVE_SYS_SOCKET_H
+ #include <sys/socket.h>
+ #endif
+ #ifdef HAVE_NETDB_H
+ #include <netdb.h>
+ #endif
+ #include <unistd.h>
+ ]])
AC_CACHE_CHECK([for getdomainname's second argument type],
[gl_cv_decl_getdomainname_argtype2],
[if test $ac_cv_have_decl_getdomainname; then
-# getdtablesize.m4 serial 2
+# getdtablesize.m4 serial 3
dnl Copyright (C) 2008-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
HAVE_GETDTABLESIZE=0
fi
])
+
+# Prerequisites of lib/getdtablesize.c.
+AC_DEFUN([gl_PREREQ_GETDTABLESIZE], [
+ AC_REQUIRE([AC_C_INLINE])
+])
-# gethrxtime.m4 serial 10
+# gethrxtime.m4 serial 11
dnl Copyright (C) 2005-2006, 2008-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_REQUIRE([gl_ARITHMETIC_HRTIME_T])
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
AC_REQUIRE([gl_XTIME])
- AC_CHECK_DECLS([gethrtime], [], [], [#include <time.h>])
+ AC_CHECK_DECLS([gethrtime], [], [], [[#include <time.h>]])
LIB_GETHRXTIME=
if test $ac_cv_have_decl_gethrtime = no \
|| test $gl_cv_arithmetic_hrtime_t = no; then
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-#serial 4
+#serial 5
# Autoconf defines AC_FUNC_GETLOADAVG, but that is obsolescent.
# New applications should use gl_GETLOADAVG instead.
HAVE_SYS_LOADAVG_H=0
fi
AC_CHECK_DECL([getloadavg], [], [HAVE_DECL_GETLOADAVG=0],
- [#if HAVE_SYS_LOADAVG_H
- # include <sys/loadavg.h>
- #endif
- #include <stdlib.h>])
+ [[#if HAVE_SYS_LOADAVG_H
+ # include <sys/loadavg.h>
+ #endif
+ #include <stdlib.h>]])
])# gl_GETLOADAVG
-# getopt.m4 serial 38
+# getopt.m4 serial 39
dnl Copyright (C) 2002-2006, 2008-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
if test $REPLACE_GETOPT = 1; then
dnl Arrange for getopt.h to be created.
gl_GETOPT_SUBSTITUTE_HEADER
- dnl Arrange for unistd.h to include getopt.h.
- GNULIB_UNISTD_H_GETOPT=1
fi
])
-# getpass.m4 serial 13
+# getpass.m4 serial 14
dnl Copyright (C) 2002-2003, 2005-2006, 2009-2011 Free Software Foundation,
dnl Inc.
dnl This file is free software; the Free Software Foundation
AC_CHECK_HEADERS_ONCE([stdio_ext.h termios.h])
AC_CHECK_FUNCS_ONCE([__fsetlocking tcgetattr tcsetattr])
AC_CHECK_DECLS([__fsetlocking],,,
- [#include <stdio.h>
- #if HAVE_STDIO_EXT_H
- #include <stdio_ext.h>
- #endif])
+ [[#include <stdio.h>
+ #if HAVE_STDIO_EXT_H
+ #include <stdio_ext.h>
+ #endif]])
AC_CHECK_DECLS_ONCE([fflush_unlocked])
AC_CHECK_DECLS_ONCE([flockfile])
AC_CHECK_DECLS_ONCE([fputs_unlocked])
-# gnulib-common.m4 serial 29
+# gnulib-common.m4 serial 31
dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
|| 0x5110 <= __SUNPRO_C)
# define _Noreturn __attribute__ ((__noreturn__))
-# elif 1200 <= _MSC_VER
+# elif defined _MSC_VER && 1200 <= _MSC_VER
# define _Noreturn __declspec (noreturn)
# else
# define _Noreturn
[m4_define([AS_VAR_IF],
[AS_IF([test x"AS_VAR_GET([$1])" = x""$2], [$3], [$4])])])
+# gl_PROG_CC_C99
+# Modifies the value of the shell variable CC in an attempt to make $CC
+# understand ISO C99 source code.
+# This is like AC_PROG_CC_C99, except that
+# - AC_PROG_CC_C99 did not exist in Autoconf versions < 2.60,
+# - AC_PROG_CC_C99 does not mix well with AC_PROG_CC_STDC
+# <http://lists.gnu.org/archive/html/bug-gnulib/2011-09/msg00367.html>,
+# but many more packages use AC_PROG_CC_STDC than AC_PROG_CC_C99
+# <http://lists.gnu.org/archive/html/bug-gnulib/2011-09/msg00441.html>.
+# Remaining problems:
+# - When AC_PROG_CC_STDC is invoked twice, it adds the C99 enabling options
+# to CC twice
+# <http://lists.gnu.org/archive/html/bug-gnulib/2011-09/msg00431.html>.
+# - AC_PROG_CC_STDC is likely to change when C1X is an ISO standard.
+AC_DEFUN([gl_PROG_CC_C99],
+[
+ dnl Change that version number to the minimum Autoconf version that supports
+ dnl mixing AC_PROG_CC_C99 calls with AC_PROG_CC_STDC calls.
+ m4_version_prereq([9.0],
+ [AC_REQUIRE([AC_PROG_CC_C99])],
+ [AC_REQUIRE([AC_PROG_CC_STDC])])
+])
+
# gl_PROG_AR_RANLIB
# Determines the values for AR, ARFLAGS, RANLIB that fit with the compiler.
+# The user can set the variables AR, ARFLAGS, RANLIB if he wants to override
+# the values.
AC_DEFUN([gl_PROG_AR_RANLIB],
[
dnl Minix 3 comes with two toolchains: The Amsterdam Compiler Kit compiler
dnl library formats. In particular, the GNU binutils programs ar, ranlib
dnl produce libraries that work only with gcc, not with cc.
AC_REQUIRE([AC_PROG_CC])
- AC_EGREP_CPP([Amsterdam],
+ AC_CACHE_CHECK([for Minix Amsterdam compiler], [gl_cv_c_amsterdam_compiler],
[
+ AC_EGREP_CPP([Amsterdam],
+ [
#ifdef __ACK__
Amsterdam
#endif
- ],
- [AR='cc -c.a'
- ARFLAGS='-o'
- RANLIB=':'
- ],
- [dnl Use the Automake-documented default values for AR and ARFLAGS.
- AR='ar'
- ARFLAGS='cru'
- dnl Use the ranlib program if it is available.
- AC_PROG_RANLIB
+ ],
+ [gl_cv_c_amsterdam_compiler=yes],
+ [gl_cv_c_amsterdam_compiler=no])
])
+ if test -z "$AR"; then
+ if test $gl_cv_c_amsterdam_compiler = yes; then
+ AR='cc -c.a'
+ if test -z "$ARFLAGS"; then
+ ARFLAGS='-o'
+ fi
+ else
+ dnl Use the Automake-documented default values for AR and ARFLAGS,
+ dnl but prefer ${host}-ar over ar (useful for cross-compiling).
+ AC_CHECK_TOOL([AR], [ar], [ar])
+ if test -z "$ARFLAGS"; then
+ ARFLAGS='cru'
+ fi
+ fi
+ else
+ if test -z "$ARFLAGS"; then
+ ARFLAGS='cru'
+ fi
+ fi
AC_SUBST([AR])
AC_SUBST([ARFLAGS])
+ if test -z "$RANLIB"; then
+ if test $gl_cv_c_amsterdam_compiler = yes; then
+ RANLIB=':'
+ else
+ dnl Use the ranlib program if it is available.
+ AC_PROG_RANLIB
+ fi
+ fi
+ AC_SUBST([RANLIB])
])
# AC_PROG_MKDIR_P
-# iconv.m4 serial 17 (gettext-0.18.2)
+# iconv.m4 serial 18 (gettext-0.18.2)
dnl Copyright (C) 2000-2002, 2007-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
#ifdef __cplusplus
"C"
#endif
-#if defined(__STDC__) || defined(__cplusplus)
+#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus)
size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
#else
size_t iconv();
-# include_next.m4 serial 20
+# include_next.m4 serial 23
dnl Copyright (C) 2006-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
aix*) gl_absname_cpp="$ac_cpp -C" ;;
*) gl_absname_cpp="$ac_cpp" ;;
esac
+changequote(,)
+ case "$host_os" in
+ mingw*)
+ dnl For the sake of native Windows compilers (excluding gcc),
+ dnl treat backslash as a directory separator, like /.
+ dnl Actually, these compilers use a double-backslash as
+ dnl directory separator, inside the
+ dnl # line "filename"
+ dnl directives.
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ dnl A sed expression that turns a string into a basic regular
+ dnl expression, for use within "/.../".
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+changequote([,])
+ gl_header_literal_regex=`echo ']m4_defn([gl_HEADER_NAME])[' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+changequote(,)dnl
+ s|^/[^/]|//&|
+changequote([,])dnl
+ p
+ q
+ }'
dnl eval is necessary to expand gl_absname_cpp.
dnl Ultrix and Pyramid sh refuse to redirect output of eval,
dnl so use subshell.
AS_VAR_SET(gl_next_header,
['"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
- sed -n '\#/]m4_defn([gl_HEADER_NAME])[#{
- s#.*"\(.*/]m4_defn([gl_HEADER_NAME])[\)".*#\1#
- s#^/[^/]#//&#
- p
- q
- }'`'"'])
+ sed -n "$gl_absolute_header_sed"`'"'])
m4_if([$2], [check],
[else
AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>'])
-# inet_ntop.m4 serial 15
+# inet_ntop.m4 serial 19
dnl Copyright (C) 2005-2006, 2008-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_INET_NTOP],
[
+ AC_REQUIRE([gl_ARPA_INET_H_DEFAULTS])
+
dnl Persuade Solaris <arpa/inet.h> to declare inet_ntop.
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_REQUIRE([AC_C_RESTRICT])
+
dnl Most platforms that provide inet_ntop define it in libc.
dnl Solaris 8..10 provide inet_ntop in libnsl instead.
+ dnl Solaris 2.6..7 provide inet_ntop in libresolv instead.
+ dnl Native Windows provides it in -lws2_32 instead, with a declaration in
+ dnl <ws2tcpip.h>, and it uses stdcall calling convention, not cdecl
+ dnl (hence we cannot use AC_CHECK_FUNCS, AC_SEARCH_LIBS to find it).
HAVE_INET_NTOP=1
- gl_save_LIBS=$LIBS
- AC_SEARCH_LIBS([inet_ntop], [nsl], [],
- [AC_CHECK_FUNCS([inet_ntop])
- if test $ac_cv_func_inet_ntop = no; then
- HAVE_INET_NTOP=0
- fi
- ])
- LIBS=$gl_save_LIBS
-
INET_NTOP_LIB=
- if test "$ac_cv_search_inet_ntop" != "no" &&
- test "$ac_cv_search_inet_ntop" != "none required"; then
- INET_NTOP_LIB="$ac_cv_search_inet_ntop"
- fi
- AC_SUBST([INET_NTOP_LIB])
+ gl_PREREQ_SYS_H_WINSOCK2
+ if test $HAVE_WINSOCK2_H = 1; then
+ AC_CHECK_DECLS([inet_ntop],,, [[#include <ws2tcpip.h>]])
+ if test $ac_cv_have_decl_inet_ntop = yes; then
+ dnl It needs to be overridden, because the stdcall calling convention
+ dnl is not compliant with POSIX.
+ REPLACE_INET_NTOP=1
+ INET_NTOP_LIB="-lws2_32"
+ else
+ HAVE_DECL_INET_NTOP=0
+ HAVE_INET_NTOP=0
+ fi
+ else
+ gl_save_LIBS=$LIBS
+ AC_SEARCH_LIBS([inet_ntop], [nsl resolv], [],
+ [AC_CHECK_FUNCS([inet_ntop])
+ if test $ac_cv_func_inet_ntop = no; then
+ HAVE_INET_NTOP=0
+ fi
+ ])
+ LIBS=$gl_save_LIBS
+
+ if test "$ac_cv_search_inet_ntop" != "no" \
+ && test "$ac_cv_search_inet_ntop" != "none required"; then
+ INET_NTOP_LIB="$ac_cv_search_inet_ntop"
+ fi
- AC_CHECK_HEADERS_ONCE([netdb.h])
- AC_CHECK_DECLS([inet_ntop],,,
- [#include <arpa/inet.h>
- #if HAVE_NETDB_H
- # include <netdb.h>
- #endif
- ])
- if test $ac_cv_have_decl_inet_ntop = no; then
- HAVE_DECL_INET_NTOP=0
- AC_REQUIRE([AC_C_RESTRICT])
+ AC_CHECK_HEADERS_ONCE([netdb.h])
+ AC_CHECK_DECLS([inet_ntop],,,
+ [[#include <arpa/inet.h>
+ #if HAVE_NETDB_H
+ # include <netdb.h>
+ #endif
+ ]])
+ if test $ac_cv_have_decl_inet_ntop = no; then
+ HAVE_DECL_INET_NTOP=0
+ fi
fi
+ AC_SUBST([INET_NTOP_LIB])
])
# Prerequisites of lib/inet_ntop.c.
-# inet_pton.m4 serial 13
+# inet_pton.m4 serial 17
dnl Copyright (C) 2006, 2008-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_INET_PTON],
[
+ AC_REQUIRE([gl_ARPA_INET_H_DEFAULTS])
+
dnl Persuade Solaris <arpa/inet.h> to declare inet_pton.
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_REQUIRE([AC_C_RESTRICT])
+
dnl Most platforms that provide inet_pton define it in libc.
dnl Solaris 8..10 provide inet_pton in libnsl instead.
+ dnl Solaris 2.6..7 provide inet_pton in libresolv instead.
+ dnl Native Windows provides it in -lws2_32 instead, with a declaration in
+ dnl <ws2tcpip.h>, and it uses stdcall calling convention, not cdecl
+ dnl (hence we cannot use AC_CHECK_FUNCS, AC_SEARCH_LIBS to find it).
HAVE_INET_PTON=1
- gl_save_LIBS=$LIBS
- AC_SEARCH_LIBS([inet_pton], [nsl], [],
- [AC_CHECK_FUNCS([inet_pton])
- if test $ac_cv_func_inet_pton = no; then
- HAVE_INET_PTON=0
- fi
- ])
- LIBS=$gl_save_LIBS
-
INET_PTON_LIB=
- if test "$ac_cv_search_inet_pton" != "no" &&
- test "$ac_cv_search_inet_pton" != "none required"; then
- INET_PTON_LIB="$ac_cv_search_inet_pton"
- fi
- AC_SUBST([INET_PTON_LIB])
+ gl_PREREQ_SYS_H_WINSOCK2
+ if test $HAVE_WINSOCK2_H = 1; then
+ AC_CHECK_DECLS([inet_pton],,, [[#include <ws2tcpip.h>]])
+ if test $ac_cv_have_decl_inet_pton = yes; then
+ dnl It needs to be overridden, because the stdcall calling convention
+ dnl is not compliant with POSIX.
+ REPLACE_INET_PTON=1
+ INET_PTON_LIB="-lws2_32"
+ else
+ HAVE_DECL_INET_PTON=0
+ HAVE_INET_PTON=0
+ fi
+ else
+ gl_save_LIBS=$LIBS
+ AC_SEARCH_LIBS([inet_pton], [nsl resolv], [],
+ [AC_CHECK_FUNCS([inet_pton])
+ if test $ac_cv_func_inet_pton = no; then
+ HAVE_INET_PTON=0
+ fi
+ ])
+ LIBS=$gl_save_LIBS
+
+ if test "$ac_cv_search_inet_pton" != "no" \
+ && test "$ac_cv_search_inet_pton" != "none required"; then
+ INET_PTON_LIB="$ac_cv_search_inet_pton"
+ fi
- AC_CHECK_HEADERS_ONCE([netdb.h])
- AC_CHECK_DECLS([inet_pton],,,
- [#include <arpa/inet.h>
- #if HAVE_NETDB_H
- # include <netdb.h>
- #endif
- ])
- if test $ac_cv_have_decl_inet_pton = no; then
- HAVE_DECL_INET_PTON=0
- AC_REQUIRE([AC_C_RESTRICT])
+ AC_CHECK_HEADERS_ONCE([netdb.h])
+ AC_CHECK_DECLS([inet_pton],,,
+ [[#include <arpa/inet.h>
+ #if HAVE_NETDB_H
+ # include <netdb.h>
+ #endif
+ ]])
+ if test $ac_cv_have_decl_inet_pton = no; then
+ HAVE_DECL_INET_PTON=0
+ fi
fi
+ AC_SUBST([INET_PTON_LIB])
])
# Prerequisites of lib/inet_pton.c.
-# isfinite.m4 serial 10
+# isfinite.m4 serial 13
dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_REQUIRE([gl_MATH_H_DEFAULTS])
dnl Persuade glibc <math.h> to declare isfinite.
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
- AC_CHECK_DECLS([isfinite], , , [#include <math.h>])
+ AC_CHECK_DECLS([isfinite], , , [[#include <math.h>]])
if test "$ac_cv_have_decl_isfinite" = yes; then
gl_CHECK_MATH_LIB([ISFINITE_LIBM],
[x = isfinite (x) + isfinite ((float) x);])
[
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([gl_BIGENDIAN])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
AC_CACHE_CHECK([whether isfinite(long double) works], [gl_cv_func_isfinitel_works],
[
result |= 1;
}
-#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
/* Representation of an 80-bit 'long double' as an initializer for a sequence
of 'unsigned int' words. */
# ifdef WORDS_BIGENDIAN
static memory_long_double x =
{ LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) };
if (isfinite (x.value))
- return |= 64;
+ result |= 64;
}
#endif
}]])], [gl_cv_func_isfinitel_works=yes], [gl_cv_func_isfinitel_works=no],
[case "$host_cpu" in
# Guess no on ia64, x86_64, i386.
- ia64 | x86_64 | i*86) gl_cv_func_isnanl_works="guessing no";;
- *) gl_cv_func_isnanl_works="guessing yes";;
+ ia64 | x86_64 | i*86) gl_cv_func_isfinitel_works="guessing no";;
+ *) gl_cv_func_isfinitel_works="guessing yes";;
esac
])
])
-# isinf.m4 serial 5
+# isinf.m4 serial 9
dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_REQUIRE([gl_MATH_H_DEFAULTS])
dnl Persuade glibc <math.h> to declare isinf.
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
- AC_CHECK_DECLS([isinf], , , [#include <math.h>])
+ AC_CHECK_DECLS([isinf], , ,
+ [[#include <math.h>
+ #ifndef isinf
+ #error "isinf must be a macro, not a function"
+ #endif
+ ]])
if test "$ac_cv_have_decl_isinf" = yes; then
gl_CHECK_MATH_LIB([ISINF_LIBM], [x = isinf (x) + isinf ((float) x);])
if test "$ISINF_LIBM" != missing; then
AC_SUBST([ISINF_LIBM])
])
-dnl Test whether isinf() correctly returns false for LDBL_MAX.
+dnl Test whether isinf() works:
+dnl 1) Whether it correctly returns false for LDBL_MAX.
+dnl 2) Whether on 'long double' recognizes all numbers which are neither
+dnl finite nor infinite. This test fails on OpenBSD/x86, but could also
+dnl fail e.g. on i686, x86_64, ia64, because of
+dnl - pseudo-denormals on x86_64,
+dnl - pseudo-zeroes, unnormalized numbers, and pseudo-denormals on i686,
+dnl - pseudo-NaN, pseudo-Infinity, pseudo-zeroes, unnormalized numbers, and
+dnl pseudo-denormals on ia64.
AC_DEFUN([gl_ISINFL_WORKS],
[
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([gl_BIGENDIAN])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
AC_CACHE_CHECK([whether isinf(long double) works], [gl_cv_func_isinfl_works],
[
- AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <float.h>
- #include <math.h>]],
- [[return !!isinf(LDBL_MAX);]])],
- [gl_cv_func_isinfl_works=yes],
- [gl_cv_func_isinfl_works=no],
- [gl_cv_func_isinfl_works="guessing no"])
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <float.h>
+#include <limits.h>
+#include <math.h>
+#define NWORDS \
+ ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { unsigned int word[NWORDS]; long double value; }
+ memory_long_double;
+/* On Irix 6.5, gcc 3.4.3 can't compute compile-time NaN, and needs the
+ runtime type conversion. */
+#ifdef __sgi
+static long double NaNl ()
+{
+ double zero = 0.0;
+ return zero / zero;
+}
+#else
+# define NaNl() (0.0L / 0.0L)
+#endif
+int main ()
+{
+ int result = 0;
+
+ if (isinf (LDBL_MAX))
+ result |= 1;
+
+ {
+ memory_long_double m;
+ unsigned int i;
+
+ /* The isinf macro should be immune against changes in the sign bit and
+ in the mantissa bits. The xor operation twiddles a bit that can only be
+ a sign bit or a mantissa bit (since the exponent never extends to
+ bit 31). */
+ m.value = NaNl ();
+ m.word[NWORDS / 2] ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
+ for (i = 0; i < NWORDS; i++)
+ m.word[i] |= 1;
+ if (isinf (m.value))
+ result |= 2;
+ }
+
+#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+/* Representation of an 80-bit 'long double' as an initializer for a sequence
+ of 'unsigned int' words. */
+# ifdef WORDS_BIGENDIAN
+# define LDBL80_WORDS(exponent,manthi,mantlo) \
+ { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \
+ ((unsigned int) (manthi) << 16) | (unsigned int) (mantlo) >> 16), \
+ (unsigned int) (mantlo) << 16 \
+ }
+# else
+# define LDBL80_WORDS(exponent,manthi,mantlo) \
+ { mantlo, manthi, exponent }
+# endif
+ { /* Quiet NaN. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
+ if (isinf (x.value))
+ result |= 2;
+ }
+ {
+ /* Signalling NaN. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
+ if (isinf (x.value))
+ result |= 2;
+ }
+ /* The isinf macro should recognize Pseudo-NaNs, Pseudo-Infinities,
+ Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals, as defined in
+ Intel IA-64 Architecture Software Developer's Manual, Volume 1:
+ Application Architecture.
+ Table 5-2 "Floating-Point Register Encodings"
+ Figure 5-6 "Memory to Floating-Point Register Data Translation"
+ */
+ { /* Pseudo-NaN. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
+ if (isinf (x.value))
+ result |= 4;
+ }
+ { /* Pseudo-Infinity. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) };
+ if (isinf (x.value))
+ result |= 8;
+ }
+ { /* Pseudo-Zero. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) };
+ if (isinf (x.value))
+ result |= 16;
+ }
+ { /* Unnormalized number. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) };
+ if (isinf (x.value))
+ result |= 32;
+ }
+ { /* Pseudo-Denormal. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) };
+ if (isinf (x.value))
+ result |= 64;
+ }
+#endif
+
+ return result;
+}]])], [gl_cv_func_isinfl_works=yes], [gl_cv_func_isinfl_works=no],
+ [
+ case "$host" in
+ # Guess no on OpenBSD ia64, x86_64, i386.
+ ia64-*-openbsd* | x86_64-*-openbsd* | i*86-*-openbsd*)
+ gl_cv_func_isinfl_works="guessing no";;
+ *)
+ gl_cv_func_isinfl_works="guessing yes";;
+ esac
+ ])
])
])
-# isnand.m4 serial 10
+# isnand.m4 serial 11
dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl Prerequisites of replacement isnand definition. It does not need -lm.
AC_DEFUN([gl_PREREQ_ISNAND],
[
- gl_DOUBLE_EXPONENT_LOCATION
+ AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION])
])
dnl Test whether isnand() can be used with libm.
-# isnanl.m4 serial 16
+# isnanl.m4 serial 17
dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_PREREQ_ISNANL],
[
gl_LONG_DOUBLE_EXPONENT_LOCATION
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
])
dnl Test whether isnanl() can be used without libm.
[
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([gl_BIGENDIAN])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
AC_CACHE_CHECK([whether isnanl works], [gl_cv_func_isnanl_works],
[
result |= 1;
}
-#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
/* Representation of an 80-bit 'long double' as an initializer for a sequence
of 'unsigned int' words. */
# ifdef WORDS_BIGENDIAN
incorrectly reject 9223372036854775807. */
@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1]];[]dnl
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1]];[]dnl
])
# http://www.unix-systems.org/version2/whatsnew/lfs20mar.html
AC_DEFUN([AC_SYS_LARGEFILE],
[AC_ARG_ENABLE(largefile,
- [ --disable-largefile omit support for large files])
+ [ --disable-largefile omit support for large files])
if test "$enable_largefile" != no; then
AC_CACHE_CHECK([for special C compiler options needed for large files],
if test "$GCC" != yes; then
ac_save_CC=$CC
while :; do
- # IRIX 6.2 and later do not support large files by default,
- # so use the C compiler's -n32 option if that helps.
- AC_LANG_CONFTEST([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_INCLUDES])])
- AC_COMPILE_IFELSE([], [break])
- CC="$CC -n32"
- AC_COMPILE_IFELSE([], [ac_cv_sys_largefile_CC=' -n32'; break])
- break
+ # IRIX 6.2 and later do not support large files by default,
+ # so use the C compiler's -n32 option if that helps.
+ AC_LANG_CONFTEST([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_INCLUDES])])
+ AC_COMPILE_IFELSE([], [break])
+ CC="$CC -n32"
+ AC_COMPILE_IFELSE([], [ac_cv_sys_largefile_CC=' -n32'; break])
+ break
done
CC=$ac_save_CC
rm -f conftest.$ac_ext
--- /dev/null
+# ldexpf.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_LDEXPF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_LDEXP])
+
+ dnl Test whether ldexpf() exists. We cannot assume that ldexpf(), if it
+ dnl exists, is defined in the same library as ldexp(). This is not the case
+ dnl on FreeBSD, NetBSD, OpenBSD.
+ gl_MATHFUNC([ldexpf], [float], [(float, int)])
+ if test $gl_cv_func_ldexpf_no_libm = no \
+ && test $gl_cv_func_ldexpf_in_libm = no; then
+ HAVE_LDEXPF=0
+ LDEXPF_LIBM="$LDEXP_LIBM"
+ fi
+ AC_SUBST([LDEXPF_LIBM])
+])
-# ldexpl.m4 serial 12
+# ldexpl.m4 serial 14
dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_LDEXPL],
[
AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
AC_REQUIRE([gl_FUNC_ISNANL]) dnl for ISNANL_LIBM
dnl Check whether it's declared.
dnl MacOS X 10.3 has ldexpl() in libc but doesn't declare it in <math.h>.
- AC_CHECK_DECL([ldexpl], , [HAVE_DECL_LDEXPL=0], [#include <math.h>])
+ AC_CHECK_DECL([ldexpl], , [HAVE_DECL_LDEXPL=0], [[#include <math.h>]])
LDEXPL_LIBM=
if test $HAVE_DECL_LDEXPL = 1; then
gl_CHECK_LDEXPL_NO_LIBM
fi
if test $HAVE_DECL_LDEXPL = 0 || test $gl_func_ldexpl = no; then
dnl Find libraries needed to link lib/ldexpl.c.
- LDEXPL_LIBM="$ISNANL_LIBM"
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
+ AC_REQUIRE([gl_FUNC_LDEXP])
+ LDEXPL_LIBM="$LDEXP_LIBM"
+ else
+ LDEXPL_LIBM="$ISNANL_LIBM"
+ fi
fi
AC_SUBST([LDEXPL_LIBM])
])
--- /dev/null
+# log.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_LOG],
+[
+ dnl Determine LOG_LIBM.
+ gl_COMMON_DOUBLE_MATHFUNC([log])
+])
--- /dev/null
+# log10.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_LOG10],
+[
+ dnl Determine LOG10_LIBM.
+ gl_COMMON_DOUBLE_MATHFUNC([log10])
+])
--- /dev/null
+# log10f.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_LOG10F],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_LOG10])
+
+ dnl Test whether log10f() exists. Assume that log10f(), if it exists, is
+ dnl defined in the same library as log10().
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $LOG10_LIBM"
+ AC_CHECK_FUNCS([log10f])
+ LIBS="$save_LIBS"
+ if test $ac_cv_func_log10f = yes; then
+ LOG10F_LIBM="$LOG10_LIBM"
+ else
+ HAVE_LOG10F=0
+ LOG10F_LIBM="$LOG10_LIBM"
+ fi
+ AC_SUBST([LOG10F_LIBM])
+])
-# logb.m4 serial 3
+# logb.m4 serial 4
dnl Copyright (C) 2010-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
[
AC_REQUIRE([gl_MATH_H_DEFAULTS])
dnl Test whether logb() is declared.
- AC_CHECK_DECLS([logb], , , [#include <math.h>])
+ AC_CHECK_DECLS([logb], , , [[#include <math.h>]])
if test "$ac_cv_have_decl_logb" != yes; then
HAVE_DECL_LOGB=0
fi
--- /dev/null
+# logf.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_LOGF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_LOG])
+
+ dnl Test whether logf() exists. Assume that logf(), if it exists, is
+ dnl defined in the same library as log().
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $LOG_LIBM"
+ AC_CHECK_FUNCS([logf])
+ LIBS="$save_LIBS"
+ if test $ac_cv_func_logf = yes; then
+ LOGF_LIBM="$LOG_LIBM"
+ else
+ HAVE_LOGF=0
+ LOGF_LIBM="$LOG_LIBM"
+ fi
+ AC_SUBST([LOGF_LIBM])
+])
-# logl.m4 serial 4
+# logl.m4 serial 6
dnl Copyright (C) 2010-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_LOGL],
[
AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+
dnl Persuade glibc <math.h> to declare logl().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|| test $gl_cv_func_logl_in_libm = yes; then
dnl Also check whether it's declared.
dnl MacOS X 10.3 has logl() in libc but doesn't declare it in <math.h>.
- AC_CHECK_DECL([logl], , [HAVE_DECL_LOGL=0], [#include <math.h>])
+ AC_CHECK_DECL([logl], , [HAVE_DECL_LOGL=0], [[#include <math.h>]])
else
HAVE_DECL_LOGL=0
HAVE_LOGL=0
dnl Find libraries needed to link lib/logl.c.
- AC_REQUIRE([gl_FUNC_FREXPL])
- AC_REQUIRE([gl_FUNC_ISNANL])
- AC_REQUIRE([gl_FUNC_FLOORL])
- dnl Append $FREXPL_LIBM to LOGL_LIBM, avoiding gratuitous duplicates.
- case " $LOGL_LIBM " in
- *" $FREXPL_LIBM "*) ;;
- *) LOGL_LIBM="$LOGL_LIBM $FREXPL_LIBM" ;;
- esac
- dnl Append $ISNANL_LIBM to LOGL_LIBM, avoiding gratuitous duplicates.
- case " $LOGL_LIBM " in
- *" $ISNANL_LIBM "*) ;;
- *) LOGL_LIBM="$LOGL_LIBM $ISNANL_LIBM" ;;
- esac
- dnl Append $FLOORL_LIBM to LOGL_LIBM, avoiding gratuitous duplicates.
- case " $LOGL_LIBM " in
- *" $FLOORL_LIBM "*) ;;
- *) LOGL_LIBM="$LOGL_LIBM $FLOORL_LIBM" ;;
- esac
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
+ AC_REQUIRE([gl_FUNC_LOG])
+ LOGL_LIBM="$LOG_LIBM"
+ else
+ AC_REQUIRE([gl_FUNC_FREXPL])
+ AC_REQUIRE([gl_FUNC_ISNANL])
+ AC_REQUIRE([gl_FUNC_FLOORL])
+ dnl Append $FREXPL_LIBM to LOGL_LIBM, avoiding gratuitous duplicates.
+ case " $LOGL_LIBM " in
+ *" $FREXPL_LIBM "*) ;;
+ *) LOGL_LIBM="$LOGL_LIBM $FREXPL_LIBM" ;;
+ esac
+ dnl Append $ISNANL_LIBM to LOGL_LIBM, avoiding gratuitous duplicates.
+ case " $LOGL_LIBM " in
+ *" $ISNANL_LIBM "*) ;;
+ *) LOGL_LIBM="$LOGL_LIBM $ISNANL_LIBM" ;;
+ esac
+ dnl Append $FLOORL_LIBM to LOGL_LIBM, avoiding gratuitous duplicates.
+ case " $LOGL_LIBM " in
+ *" $FLOORL_LIBM "*) ;;
+ *) LOGL_LIBM="$LOGL_LIBM $FLOORL_LIBM" ;;
+ esac
+ fi
fi
AC_SUBST([LOGL_LIBM])
])
-# lseek.m4 serial 7
+# lseek.m4 serial 8
dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
[
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
AC_REQUIRE([AC_PROG_CC])
+ AC_CHECK_HEADERS_ONCE([unistd.h])
AC_CACHE_CHECK([whether lseek detects pipes], [gl_cv_func_lseek_pipe],
[if test $cross_compiling = no; then
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <sys/types.h> /* for off_t */
#include <stdio.h> /* for SEEK_CUR */
-#include <unistd.h>]], [[
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#else /* on Windows with MSVC */
+# include <io.h>
+#endif
+]], [[
/* Exit with success only if stdin is seekable. */
return lseek (0, (off_t)0, SEEK_CUR) < 0;
]])],
-# manywarnings.m4 serial 1
+# manywarnings.m4 serial 3
dnl Copyright (C) 2008-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
# gl_MANYWARN_ALL_GCC(VARIABLE)
# -----------------------------
-# Add all documented GCC (currently as per version 4.4) warning
-# parameters to variable VARIABLE. Note that you need to test them
-# using gl_WARN_ADD if you want to make sure your gcc understands it.
+# Add all documented GCC warning parameters to variable VARIABLE.
+# Note that you need to test them using gl_WARN_ADD if you want to
+# make sure your gcc understands it.
AC_DEFUN([gl_MANYWARN_ALL_GCC],
[
dnl First, check if -Wno-missing-field-initializers is needed.
; do
gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
done
+ # More warnings from gcc 4.6.2 --help=warnings.
+ for gl_manywarn_item in \
+ -Wabi \
+ -Wcpp \
+ -Wdeprecated \
+ -Wdeprecated-declarations \
+ -Wdiv-by-zero \
+ -Wdouble-promotion \
+ -Wendif-labels \
+ -Wextra \
+ -Wformat-contains-nul \
+ -Wformat-extra-args \
+ -Wformat-zero-length \
+ -Wformat=2 \
+ -Wmultichar \
+ -Wnormalized=nfc \
+ -Woverflow \
+ -Wpointer-to-int-cast \
+ -Wpragmas \
+ -Wsuggest-attribute=const \
+ -Wsuggest-attribute=noreturn \
+ -Wsuggest-attribute=pure \
+ -Wtrampolines \
+ ; do
+ gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
+ done
# Disable the missing-field-initializers warning if needed
if test "$gl_cv_cc_nomfi_needed" = yes; then
-# math_h.m4 serial 25
+# math_h.m4 serial 56
dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl Check for declarations of anything we want to poison if the
dnl corresponding gnulib module is not in use.
- gl_WARN_ON_USE_PREPARE([[#include <math.h>
- ]], [acosl asinl atanl ceilf ceill cosl expl floorf floorl frexpl
- ldexpl logb logl round roundf roundl sinl sqrtl tanl trunc truncf truncl])
+ gl_WARN_ON_USE_PREPARE([[#include <math.h>]],
+ [acosf acosl asinf asinl atanf atanl
+ ceilf ceill copysign copysignf copysignl cosf cosl coshf
+ expf expl fabsf floorf floorl fma fmaf fmal fmodf frexpf frexpl
+ ldexpf ldexpl logb logf logl log10f modff powf
+ rint rintf rintl round roundf roundl sinf sinl sinhf sqrtf sqrtl
+ tanf tanl tanhf trunc truncf truncl])
])
AC_DEFUN([gl_MATH_MODULE_INDICATOR],
AC_DEFUN([gl_MATH_H_DEFAULTS],
[
- GNULIB_ACOSL=0; AC_SUBST([GNULIB_ACOSL])
- GNULIB_ASINL=0; AC_SUBST([GNULIB_ASINL])
- GNULIB_ATANL=0; AC_SUBST([GNULIB_ATANL])
- GNULIB_CEIL=0; AC_SUBST([GNULIB_CEIL])
- GNULIB_CEILF=0; AC_SUBST([GNULIB_CEILF])
- GNULIB_CEILL=0; AC_SUBST([GNULIB_CEILL])
- GNULIB_COSL=0; AC_SUBST([GNULIB_COSL])
- GNULIB_EXPL=0; AC_SUBST([GNULIB_EXPL])
- GNULIB_FLOOR=0; AC_SUBST([GNULIB_FLOOR])
- GNULIB_FLOORF=0; AC_SUBST([GNULIB_FLOORF])
- GNULIB_FLOORL=0; AC_SUBST([GNULIB_FLOORL])
- GNULIB_FREXP=0; AC_SUBST([GNULIB_FREXP])
- GNULIB_FREXPL=0; AC_SUBST([GNULIB_FREXPL])
- GNULIB_ISFINITE=0; AC_SUBST([GNULIB_ISFINITE])
- GNULIB_ISINF=0; AC_SUBST([GNULIB_ISINF])
- GNULIB_ISNAN=0; AC_SUBST([GNULIB_ISNAN])
- GNULIB_ISNANF=0; AC_SUBST([GNULIB_ISNANF])
- GNULIB_ISNAND=0; AC_SUBST([GNULIB_ISNAND])
- GNULIB_ISNANL=0; AC_SUBST([GNULIB_ISNANL])
- GNULIB_LDEXPL=0; AC_SUBST([GNULIB_LDEXPL])
- GNULIB_LOGB=0; AC_SUBST([GNULIB_LOGB])
- GNULIB_LOGL=0; AC_SUBST([GNULIB_LOGL])
- GNULIB_ROUND=0; AC_SUBST([GNULIB_ROUND])
- GNULIB_ROUNDF=0; AC_SUBST([GNULIB_ROUNDF])
- GNULIB_ROUNDL=0; AC_SUBST([GNULIB_ROUNDL])
- GNULIB_SIGNBIT=0; AC_SUBST([GNULIB_SIGNBIT])
- GNULIB_SINL=0; AC_SUBST([GNULIB_SINL])
- GNULIB_SQRTL=0; AC_SUBST([GNULIB_SQRTL])
- GNULIB_TANL=0; AC_SUBST([GNULIB_TANL])
- GNULIB_TRUNC=0; AC_SUBST([GNULIB_TRUNC])
- GNULIB_TRUNCF=0; AC_SUBST([GNULIB_TRUNCF])
- GNULIB_TRUNCL=0; AC_SUBST([GNULIB_TRUNCL])
+ GNULIB_ACOSF=0; AC_SUBST([GNULIB_ACOSF])
+ GNULIB_ACOSL=0; AC_SUBST([GNULIB_ACOSL])
+ GNULIB_ASINF=0; AC_SUBST([GNULIB_ASINF])
+ GNULIB_ASINL=0; AC_SUBST([GNULIB_ASINL])
+ GNULIB_ATANF=0; AC_SUBST([GNULIB_ATANF])
+ GNULIB_ATANL=0; AC_SUBST([GNULIB_ATANL])
+ GNULIB_ATAN2F=0; AC_SUBST([GNULIB_ATAN2F])
+ GNULIB_CEIL=0; AC_SUBST([GNULIB_CEIL])
+ GNULIB_CEILF=0; AC_SUBST([GNULIB_CEILF])
+ GNULIB_CEILL=0; AC_SUBST([GNULIB_CEILL])
+ GNULIB_COPYSIGN=0; AC_SUBST([GNULIB_COPYSIGN])
+ GNULIB_COPYSIGNF=0; AC_SUBST([GNULIB_COPYSIGNF])
+ GNULIB_COPYSIGNL=0; AC_SUBST([GNULIB_COPYSIGNL])
+ GNULIB_COSF=0; AC_SUBST([GNULIB_COSF])
+ GNULIB_COSL=0; AC_SUBST([GNULIB_COSL])
+ GNULIB_COSHF=0; AC_SUBST([GNULIB_COSHF])
+ GNULIB_EXPF=0; AC_SUBST([GNULIB_EXPF])
+ GNULIB_EXPL=0; AC_SUBST([GNULIB_EXPL])
+ GNULIB_FABSF=0; AC_SUBST([GNULIB_FABSF])
+ GNULIB_FLOOR=0; AC_SUBST([GNULIB_FLOOR])
+ GNULIB_FLOORF=0; AC_SUBST([GNULIB_FLOORF])
+ GNULIB_FLOORL=0; AC_SUBST([GNULIB_FLOORL])
+ GNULIB_FMA=0; AC_SUBST([GNULIB_FMA])
+ GNULIB_FMAF=0; AC_SUBST([GNULIB_FMAF])
+ GNULIB_FMAL=0; AC_SUBST([GNULIB_FMAL])
+ GNULIB_FMODF=0; AC_SUBST([GNULIB_FMODF])
+ GNULIB_FREXPF=0; AC_SUBST([GNULIB_FREXPF])
+ GNULIB_FREXP=0; AC_SUBST([GNULIB_FREXP])
+ GNULIB_FREXPL=0; AC_SUBST([GNULIB_FREXPL])
+ GNULIB_ISFINITE=0; AC_SUBST([GNULIB_ISFINITE])
+ GNULIB_ISINF=0; AC_SUBST([GNULIB_ISINF])
+ GNULIB_ISNAN=0; AC_SUBST([GNULIB_ISNAN])
+ GNULIB_ISNANF=0; AC_SUBST([GNULIB_ISNANF])
+ GNULIB_ISNAND=0; AC_SUBST([GNULIB_ISNAND])
+ GNULIB_ISNANL=0; AC_SUBST([GNULIB_ISNANL])
+ GNULIB_LDEXPF=0; AC_SUBST([GNULIB_LDEXPF])
+ GNULIB_LDEXPL=0; AC_SUBST([GNULIB_LDEXPL])
+ GNULIB_LOGB=0; AC_SUBST([GNULIB_LOGB])
+ GNULIB_LOGF=0; AC_SUBST([GNULIB_LOGF])
+ GNULIB_LOGL=0; AC_SUBST([GNULIB_LOGL])
+ GNULIB_LOG10F=0; AC_SUBST([GNULIB_LOG10F])
+ GNULIB_MODFF=0; AC_SUBST([GNULIB_MODFF])
+ GNULIB_POWF=0; AC_SUBST([GNULIB_POWF])
+ GNULIB_RINT=0; AC_SUBST([GNULIB_RINT])
+ GNULIB_RINTF=0; AC_SUBST([GNULIB_RINTF])
+ GNULIB_RINTL=0; AC_SUBST([GNULIB_RINTL])
+ GNULIB_ROUND=0; AC_SUBST([GNULIB_ROUND])
+ GNULIB_ROUNDF=0; AC_SUBST([GNULIB_ROUNDF])
+ GNULIB_ROUNDL=0; AC_SUBST([GNULIB_ROUNDL])
+ GNULIB_SIGNBIT=0; AC_SUBST([GNULIB_SIGNBIT])
+ GNULIB_SINF=0; AC_SUBST([GNULIB_SINF])
+ GNULIB_SINL=0; AC_SUBST([GNULIB_SINL])
+ GNULIB_SINHF=0; AC_SUBST([GNULIB_SINHF])
+ GNULIB_SQRTF=0; AC_SUBST([GNULIB_SQRTF])
+ GNULIB_SQRTL=0; AC_SUBST([GNULIB_SQRTL])
+ GNULIB_TANF=0; AC_SUBST([GNULIB_TANF])
+ GNULIB_TANL=0; AC_SUBST([GNULIB_TANL])
+ GNULIB_TANHF=0; AC_SUBST([GNULIB_TANHF])
+ GNULIB_TRUNC=0; AC_SUBST([GNULIB_TRUNC])
+ GNULIB_TRUNCF=0; AC_SUBST([GNULIB_TRUNCF])
+ GNULIB_TRUNCL=0; AC_SUBST([GNULIB_TRUNCL])
dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_ACOSF=1; AC_SUBST([HAVE_ACOSF])
HAVE_ACOSL=1; AC_SUBST([HAVE_ACOSL])
+ HAVE_ASINF=1; AC_SUBST([HAVE_ASINF])
HAVE_ASINL=1; AC_SUBST([HAVE_ASINL])
+ HAVE_ATANF=1; AC_SUBST([HAVE_ATANF])
HAVE_ATANL=1; AC_SUBST([HAVE_ATANL])
+ HAVE_ATAN2F=1; AC_SUBST([HAVE_ATAN2F])
+ HAVE_COPYSIGN=1; AC_SUBST([HAVE_COPYSIGN])
+ HAVE_COPYSIGNF=1; AC_SUBST([HAVE_COPYSIGNF])
+ HAVE_COPYSIGNL=1; AC_SUBST([HAVE_COPYSIGNL])
+ HAVE_COSF=1; AC_SUBST([HAVE_COSF])
HAVE_COSL=1; AC_SUBST([HAVE_COSL])
+ HAVE_COSHF=1; AC_SUBST([HAVE_COSHF])
+ HAVE_EXPF=1; AC_SUBST([HAVE_EXPF])
HAVE_EXPL=1; AC_SUBST([HAVE_EXPL])
+ HAVE_FABSF=1; AC_SUBST([HAVE_FABSF])
+ HAVE_FMA=1; AC_SUBST([HAVE_FMA])
+ HAVE_FMAF=1; AC_SUBST([HAVE_FMAF])
+ HAVE_FMAL=1; AC_SUBST([HAVE_FMAL])
+ HAVE_FMODF=1; AC_SUBST([HAVE_FMODF])
+ HAVE_FREXPF=1; AC_SUBST([HAVE_FREXPF])
HAVE_ISNANF=1; AC_SUBST([HAVE_ISNANF])
HAVE_ISNAND=1; AC_SUBST([HAVE_ISNAND])
HAVE_ISNANL=1; AC_SUBST([HAVE_ISNANL])
+ HAVE_LDEXPF=1; AC_SUBST([HAVE_LDEXPF])
+ HAVE_LOGF=1; AC_SUBST([HAVE_LOGF])
HAVE_LOGL=1; AC_SUBST([HAVE_LOGL])
+ HAVE_LOG10F=1; AC_SUBST([HAVE_LOG10F])
+ HAVE_MODFF=1; AC_SUBST([HAVE_MODFF])
+ HAVE_POWF=1; AC_SUBST([HAVE_POWF])
+ HAVE_RINT=1; AC_SUBST([HAVE_RINT])
+ HAVE_RINTF=1; AC_SUBST([HAVE_RINTF])
+ HAVE_RINTL=1; AC_SUBST([HAVE_RINTL])
+ HAVE_SINF=1; AC_SUBST([HAVE_SINF])
HAVE_SINL=1; AC_SUBST([HAVE_SINL])
+ HAVE_SINHF=1; AC_SUBST([HAVE_SINHF])
+ HAVE_SQRTF=1; AC_SUBST([HAVE_SQRTF])
HAVE_SQRTL=1; AC_SUBST([HAVE_SQRTL])
+ HAVE_TANF=1; AC_SUBST([HAVE_TANF])
HAVE_TANL=1; AC_SUBST([HAVE_TANL])
+ HAVE_TANHF=1; AC_SUBST([HAVE_TANHF])
HAVE_DECL_ACOSL=1; AC_SUBST([HAVE_DECL_ACOSL])
HAVE_DECL_ASINL=1; AC_SUBST([HAVE_DECL_ASINL])
HAVE_DECL_ATANL=1; AC_SUBST([HAVE_DECL_ATANL])
REPLACE_FLOOR=0; AC_SUBST([REPLACE_FLOOR])
REPLACE_FLOORF=0; AC_SUBST([REPLACE_FLOORF])
REPLACE_FLOORL=0; AC_SUBST([REPLACE_FLOORL])
+ REPLACE_FMA=0; AC_SUBST([REPLACE_FMA])
+ REPLACE_FMAF=0; AC_SUBST([REPLACE_FMAF])
+ REPLACE_FMAL=0; AC_SUBST([REPLACE_FMAL])
+ REPLACE_FREXPF=0; AC_SUBST([REPLACE_FREXPF])
REPLACE_FREXP=0; AC_SUBST([REPLACE_FREXP])
REPLACE_FREXPL=0; AC_SUBST([REPLACE_FREXPL])
REPLACE_HUGE_VAL=0; AC_SUBST([REPLACE_HUGE_VAL])
REPLACE_TRUNCF=0; AC_SUBST([REPLACE_TRUNCF])
REPLACE_TRUNCL=0; AC_SUBST([REPLACE_TRUNCL])
])
+
+# gl_LONG_DOUBLE_VS_DOUBLE
+# determines whether 'long double' and 'double' have the same representation.
+# Sets variable HAVE_SAME_LONG_DOUBLE_AS_DOUBLE to 0 or 1, and defines
+# HAVE_SAME_LONG_DOUBLE_AS_DOUBLE accordingly.
+# The currently known platforms where this is the case are:
+# Linux/HPPA, Minix 3.1.8, AIX 5, AIX 6 and 7 with xlc, MSVC 9.
+AC_DEFUN([gl_LONG_DOUBLE_VS_DOUBLE],
+[
+ AC_CACHE_CHECK([whether long double and double are the same],
+ [gl_cv_long_double_equals_double],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[#include <float.h>]],
+ [[typedef int check[sizeof (long double) == sizeof (double)
+ && LDBL_MANT_DIG == DBL_MANT_DIG
+ && LDBL_MAX_EXP == DBL_MAX_EXP
+ && LDBL_MIN_EXP == DBL_MIN_EXP
+ ? 1 : -1];
+ ]])],
+ [gl_cv_long_double_equals_double=yes],
+ [gl_cv_long_double_equals_double=no])
+ ])
+ if test $gl_cv_long_double_equals_double = yes; then
+ AC_DEFINE([HAVE_SAME_LONG_DOUBLE_AS_DOUBLE], [1],
+ [Define to 1 if 'long double' and 'double' have the same representation.])
+ HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=1
+ else
+ HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=0
+ fi
+ AC_SUBST([HAVE_SAME_LONG_DOUBLE_AS_DOUBLE])
+])
-# mathfunc.m4 serial 6
+# mathfunc.m4 serial 10
dnl Copyright (C) 2010-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
-# gl_MATHFUNC(FUNC, RETTYPE, PARAMTYPES)
-# --------------------------------------------------
+# gl_MATHFUNC(FUNC, RETTYPE, PARAMTYPES [, INCLUDES] [, EXTRA-CODE])
+# ------------------------------------------------------------------
# tests whether the function FUNC is available in libc or libm.
# RETTYPE is the return type. PARAMTYPES is a parameter list, with parentheses.
# It sets FUNC_LIBM to empty or "-lm" accordingly.
AC_DEFUN([gl_MATHFUNC],
[
dnl We need the RETTYPE and PARAMTYPES in order to force linking with the
- dnl function. With gcc >= 4.3 on glibc/x86_64, calls to the 'fabs' function
- dnl are inlined by the compiler, therefore linking of these calls does not
- dnl require -lm, but taking the function pointer of 'fabs' does.
+ dnl function.
+ dnl 1) With gcc >= 4.3 on glibc/x86_64, calls to the 'fabs' function
+ dnl are inlined by the compiler, therefore linking of these calls does
+ dnl not require -lm, but taking the function pointer of 'fabs' does.
+ dnl 2) On MSVC 9, many math functions exist only as macros with arguments,
+ dnl whereas the function pointer is undefined.
+ dnl On the other hand, taking just the function pointer is not enough.
+ dnl 1) On AIX 7.1, when 'long double' is 128 bit large ("xlc -qldbl128" or
+ dnl "xlc -qlongdouble" or "gcc -mlong-double-128") many math functions
+ dnl exist as macros with arguments, that may reference libm or even
+ dnl completely undefined functions such as __rint128.
+ dnl 2) In AIX 7.1 with gcc 4.2, when optimization is turned on, calls to
+ dnl rint() with simple arguments are turned into rintf() calls by the
+ dnl compiler. But while rint() is resides in libc, rintf() is in libm.
m4_pushdef([func], [$1])
m4_pushdef([FUNC], [m4_translit([$1],[abcdefghijklmnopqrstuvwxyz],
[ABCDEFGHIJKLMNOPQRSTUVWXYZ])])
+ m4_pushdef([ARGS], [m4_bpatsubst(
+ [m4_bpatsubst(
+ [m4_bpatsubst(
+ [m4_bpatsubst(
+ [m4_bpatsubst(
+ [m4_bpatsubst(
+ [m4_bpatsubst(
+ [m4_bpatsubst(
+ [m4_bpatsubst(
+ [$3],
+ [int \*], [&i_ret])],
+ [float \*], [&f_ret])],
+ [double \*], [&d_ret])],
+ [long double \*], [&l_ret])],
+ [int], [2])],
+ [float], [1.618034f])],
+ [long double], [1.618033988749894848L])],
+ [double], [1.6180339887])],
+ [void], [])])
FUNC[]_LIBM=
AC_CACHE_CHECK([whether func() can be used without linking with libm],
[gl_cv_func_]func[_no_libm],
# define __NO_MATH_INLINES 1 /* for glibc */
#endif
#include <math.h>
+ $4
$2 (*funcptr) $3 = ]func[;
- double d_ret;]],
- [[$2 y = funcptr ]m4_bpatsubst([m4_bpatsubst([m4_bpatsubst([$3], [int], [2])], [double \*], [&d_ret])], [double], [1.6180339887])[;
+ int i_ret;
+ float f_ret;
+ double d_ret;
+ long double l_ret;]],
+ [[$2 y = funcptr ]ARGS[ + ]func[ ]ARGS[;
+ $5
return y < 0.3 || y > 1.7;
]])],
[gl_cv_func_]func[_no_libm=yes],
# define __NO_MATH_INLINES 1 /* for glibc */
#endif
#include <math.h>
+ $4
$2 (*funcptr) $3 = ]func[;
- double d_ret;]],
- [[$2 y = funcptr ]m4_bpatsubst([m4_bpatsubst([m4_bpatsubst([$3], [int], [2])], [double \*], [&d_ret])], [double], [1.6180339887])[;
+ int i_ret;
+ float f_ret;
+ double d_ret;
+ long double l_ret;]],
+ [[$2 y = funcptr ]ARGS[ + ]func[ ]ARGS[;
+ $5
return y < 0.3 || y > 1.7;
]])],
[gl_cv_func_]func[_in_libm=yes],
fi
fi
AC_SUBST(FUNC[_LIBM])
+ m4_popdef([ARGS])
m4_popdef([FUNC])
m4_popdef([func])
])
--- /dev/null
+# mkdirat.m4 serial 1
+dnl Copyright (C) 2004-2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Written by Jim Meyering.
+
+AC_DEFUN([gl_FUNC_MKDIRAT],
+[
+ AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_CHECK_FUNCS_ONCE([mkdirat])
+ if test $ac_cv_func_mkdirat != yes; then
+ HAVE_MKDIRAT=0
+ fi
+])
+
+# Prerequisite of mkdirat's declaration and of lib/mkdirat.c.
+AC_DEFUN([gl_PREREQ_MKDIRAT],
+[
+ AC_REQUIRE([AC_TYPE_MODE_T])
+])
--- /dev/null
+# modf.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_MODF],
+[
+ dnl Determine MODF_LIBM.
+ gl_MATHFUNC([modf], [double], [(double, double *)])
+])
--- /dev/null
+# modff.m4 serial 2
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_MODFF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_MODF])
+
+ dnl Test whether modff() exists. We cannot assume that modff(), if it
+ dnl exists, is defined in the same library as modf(). This is not the case
+ dnl on FreeBSD, NetBSD, OpenBSD.
+ gl_MATHFUNC([modff], [float], [(float, float *)])
+ if test $gl_cv_func_modff_no_libm = no \
+ && test $gl_cv_func_modff_in_libm = no; then
+ HAVE_MODFF=0
+ MODFF_LIBM="$MODF_LIBM"
+ fi
+ AC_SUBST([MODFF_LIBM])
+])
--- /dev/null
+# msvc-inval.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_MSVC_INVAL],
+[
+ AC_CHECK_FUNCS_ONCE([_set_invalid_parameter_handler])
+ if test $ac_cv_func__set_invalid_parameter_handler = yes; then
+ HAVE_MSVC_INVALID_PARAMETER_HANDLER=1
+ AC_DEFINE([HAVE_MSVC_INVALID_PARAMETER_HANDLER], [1],
+ [Define to 1 on MSVC platforms that have the "invalid parameter handler"
+ concept.])
+ else
+ HAVE_MSVC_INVALID_PARAMETER_HANDLER=0
+ fi
+ AC_SUBST([HAVE_MSVC_INVALID_PARAMETER_HANDLER])
+])
--- /dev/null
+# msvc-nothrow.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_MSVC_NOTHROW],
+[
+ AC_REQUIRE([gl_MSVC_INVAL])
+])
-# nocrash.m4 serial 2
+# nocrash.m4 serial 3
dnl Copyright (C) 2005, 2009-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
}
}
}
+#elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+/* Avoid a crash on native Windows. */
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <winerror.h>
+static LONG WINAPI
+exception_filter (EXCEPTION_POINTERS *ExceptionInfo)
+{
+ switch (ExceptionInfo->ExceptionRecord->ExceptionCode)
+ {
+ case EXCEPTION_ACCESS_VIOLATION:
+ case EXCEPTION_IN_PAGE_ERROR:
+ case EXCEPTION_STACK_OVERFLOW:
+ case EXCEPTION_GUARD_PAGE:
+ case EXCEPTION_PRIV_INSTRUCTION:
+ case EXCEPTION_ILLEGAL_INSTRUCTION:
+ case EXCEPTION_DATATYPE_MISALIGNMENT:
+ case EXCEPTION_ARRAY_BOUNDS_EXCEEDED:
+ case EXCEPTION_NONCONTINUABLE_EXCEPTION:
+ exit (1);
+ }
+ return EXCEPTION_CONTINUE_SEARCH;
+}
+static void
+nocrash_init (void)
+{
+ SetUnhandledExceptionFilter ((LPTOP_LEVEL_EXCEPTION_FILTER) exception_filter);
+}
#else
/* Avoid a crash on POSIX systems. */
#include <signal.h>
-# onceonly.m4 serial 7
+# onceonly.m4 serial 8
dnl Copyright (C) 2002-2003, 2005-2006, 2008-2011 Free Software Foundation,
dnl Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
+dnl
+dnl This file is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 3 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This file is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this file. If not, see <http://www.gnu.org/licenses/>.
+dnl
+dnl As a special exception to the GNU General Public License,
+dnl this file may be distributed as part of a program
dnl that contains a configuration script generated by Autoconf, under
dnl the same distribution terms as the rest of that program.
-# serial 37
+# serial 43
# See if we need to use our replacement for Solaris' openat et al functions.
dnl Copyright (C) 2004-2011 Free Software Foundation, Inc.
AC_DEFUN([gl_FUNC_OPENAT],
[
AC_REQUIRE([gl_FCNTL_H_DEFAULTS])
- GNULIB_OPENAT=1
-
- AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
- GNULIB_FCHMODAT=1
- GNULIB_FSTATAT=1
- GNULIB_MKDIRAT=1
-
- AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
- GNULIB_FCHOWNAT=1
- GNULIB_UNLINKAT=1
-
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
- AC_CHECK_FUNCS_ONCE([fchmodat lchmod mkdirat openat unlinkat])
+ AC_CHECK_FUNCS_ONCE([openat])
AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
- AC_REQUIRE([gl_FUNC_UNLINK])
case $ac_cv_func_openat+$gl_cv_func_lstat_dereferences_slashed_symlink in
yes+yes)
- # GNU/Hurd has unlinkat, but it has the same bug as unlink.
- if test $REPLACE_UNLINK = 1; then
- REPLACE_UNLINKAT=1
- fi ;;
+ ;;
yes+*)
# Solaris 9 has *at functions, but uniformly mishandles trailing
# slash in all of them.
REPLACE_OPENAT=1
- REPLACE_UNLINKAT=1
;;
*)
HAVE_OPENAT=0
- HAVE_UNLINKAT=0 # No known system with unlinkat but not openat
- gl_PREREQ_OPENAT;;
+ ;;
esac
- if test $ac_cv_func_fchmodat != yes; then
- HAVE_FCHMODAT=0
- fi
- if test $ac_cv_func_mkdirat != yes; then
- HAVE_MKDIRAT=0
- fi
- gl_FUNC_FCHOWNAT
- gl_FUNC_FSTATAT
-])
-
-# gl_FUNC_FCHOWNAT_DEREF_BUG([ACTION-IF-BUGGY[, ACTION-IF-NOT_BUGGY]])
-AC_DEFUN([gl_FUNC_FCHOWNAT_DEREF_BUG],
-[
- dnl Persuade glibc's <unistd.h> to declare fchownat().
- AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
-
- AC_CACHE_CHECK([whether fchownat works with AT_SYMLINK_NOFOLLOW],
- gl_cv_func_fchownat_nofollow_works,
- [
- gl_dangle=conftest.dangle
- # Remove any remnants of a previous test.
- rm -f $gl_dangle
- # Arrange for deletion of the temporary file this test creates.
- ac_clean_files="$ac_clean_files $gl_dangle"
- ln -s conftest.no-such $gl_dangle
- AC_RUN_IFELSE(
- [AC_LANG_SOURCE(
- [[
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <sys/types.h>
-int
-main ()
-{
- return (fchownat (AT_FDCWD, "$gl_dangle", -1, getgid (),
- AT_SYMLINK_NOFOLLOW) != 0
- && errno == ENOENT);
-}
- ]])],
- [gl_cv_func_fchownat_nofollow_works=yes],
- [gl_cv_func_fchownat_nofollow_works=no],
- [gl_cv_func_fchownat_nofollow_works=no],
- )
- ])
- AS_IF([test $gl_cv_func_fchownat_nofollow_works = no], [$1], [$2])
-])
-
-# gl_FUNC_FCHOWNAT_EMPTY_FILENAME_BUG([ACTION-IF-BUGGY[, ACTION-IF-NOT_BUGGY]])
-AC_DEFUN([gl_FUNC_FCHOWNAT_EMPTY_FILENAME_BUG],
-[
- dnl Persuade glibc's <unistd.h> to declare fchownat().
- AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
-
- AC_CACHE_CHECK([whether fchownat works with an empty file name],
- [gl_cv_func_fchownat_empty_filename_works],
- [AC_RUN_IFELSE(
- [AC_LANG_PROGRAM(
- [[#include <unistd.h>
- #include <fcntl.h>
- ]],
- [[int fd;
- int ret;
- if (mkdir ("conftestdir", 0700) < 0)
- return 2;
- fd = open ("conftestdir", O_RDONLY);
- if (fd < 0)
- return 3;
- ret = fchownat (fd, "", -1, -1, 0);
- close (fd);
- rmdir ("conftestdir");
- return ret == 0;
- ]])],
- [gl_cv_func_fchownat_empty_filename_works=yes],
- [gl_cv_func_fchownat_empty_filename_works=no],
- [gl_cv_func_fchownat_empty_filename_works="guessing no"])
- ])
- AS_IF([test "$gl_cv_func_fchownat_empty_filename_works" != yes], [$1], [$2])
-])
-
-# If we have the fchownat function, and it has the bug (in glibc-2.4)
-# that it dereferences symlinks even with AT_SYMLINK_NOFOLLOW, then
-# use the replacement function.
-# Also if the fchownat function, like chown, has the trailing slash bug,
-# use the replacement function.
-# Also use the replacement function if fchownat is simply not available.
-AC_DEFUN([gl_FUNC_FCHOWNAT],
-[
- AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
- AC_REQUIRE([gl_FUNC_CHOWN])
- AC_CHECK_FUNC([fchownat],
- [gl_FUNC_FCHOWNAT_DEREF_BUG(
- [REPLACE_FCHOWNAT=1
- AC_DEFINE([FCHOWNAT_NOFOLLOW_BUG], [1],
- [Define to 1 if your platform has fchownat, but it cannot
- perform lchown tasks.])
- ])
- gl_FUNC_FCHOWNAT_EMPTY_FILENAME_BUG(
- [REPLACE_FCHOWNAT=1
- AC_DEFINE([FCHOWNAT_EMPTY_FILENAME_BUG], [1],
- [Define to 1 if your platform has fchownat, but it does
- not reject an empty file name.])
- ])
- if test $REPLACE_CHOWN = 1; then
- REPLACE_FCHOWNAT=1
- fi],
- [HAVE_FCHOWNAT=0])
-])
-
-# If we have the fstatat function, and it has the bug (in AIX 7.1)
-# that it does not fill in st_size correctly, use the replacement function.
-AC_DEFUN([gl_FUNC_FSTATAT],
-[
- AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
- AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
- AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
- AC_CHECK_FUNCS_ONCE([fstatat])
-
- if test $ac_cv_func_fstatat = no; then
- HAVE_FSTATAT=0
- else
- dnl Test for an AIX 7.1 bug; see
- dnl <http://lists.gnu.org/archive/html/bug-tar/2011-09/msg00015.html>.
- AC_CACHE_CHECK([whether fstatat (..., 0) works],
- [gl_cv_func_fstatat_zero_flag],
- [gl_cv_func_fstatat_zero_flag=no
- AC_RUN_IFELSE(
- [AC_LANG_SOURCE(
- [[
- #include <fcntl.h>
- #include <sys/stat.h>
- int
- main (void)
- {
- struct stat a;
- return fstatat (AT_FDCWD, ".", &a, 0) != 0;
- }
- ]])],
- [gl_cv_func_fstatat_zero_flag=yes])])
-
- case $gl_cv_func_fstatat_zero_flag+$gl_cv_func_lstat_dereferences_slashed_symlink in
- yes+yes) ;;
- *) REPLACE_FSTATAT=1
- if test $gl_cv_func_fstatat_zero_flag != yes; then
- AC_DEFINE([FSTATAT_ZERO_FLAG_BROKEN], [1],
- [Define to 1 if fstatat (..., 0) does not work,
- as in AIX 7.1.])
- fi
- ;;
- esac
- fi
])
+# Prerequisites of lib/openat.c.
AC_DEFUN([gl_PREREQ_OPENAT],
[
AC_REQUIRE([AC_C_INLINE])
--- /dev/null
+# opendir.m4 serial 2
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_OPENDIR],
+[
+ AC_REQUIRE([gl_DIRENT_H_DEFAULTS])
+
+ AC_CHECK_FUNCS([opendir])
+ if test $ac_cv_func_opendir = no; then
+ HAVE_OPENDIR=0
+ fi
+ dnl Replace opendir() for supporting the gnulib-defined fchdir() function,
+ dnl to keep fchdir's bookkeeping up-to-date.
+ m4_ifdef([gl_FUNC_FCHDIR], [
+ gl_TEST_FCHDIR
+ if test $HAVE_FCHDIR = 0; then
+ if test $HAVE_OPENDIR = 1; then
+ REPLACE_OPENDIR=1
+ fi
+ fi
+ ])
+])
-# pathmax.m4 serial 9
+# pathmax.m4 serial 10
dnl Copyright (C) 2002-2003, 2005-2006, 2009-2011 Free Software Foundation,
dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl Prerequisites of lib/pathmax.h.
AC_CHECK_HEADERS_ONCE([sys/param.h])
])
+
+# Expands to a piece of C program that defines PATH_MAX in the same way as
+# "pathmax.h" will do.
+AC_DEFUN([gl_PATHMAX_SNIPPET], [[
+/* Arrange to define PATH_MAX, like "pathmax.h" does. */
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#include <limits.h>
+#if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN
+# include <sys/param.h>
+#endif
+#if !defined PATH_MAX && defined MAXPATHLEN
+# define PATH_MAX MAXPATHLEN
+#endif
+#ifdef __hpux
+# undef PATH_MAX
+# define PATH_MAX 1024
+#endif
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+# undef PATH_MAX
+# define PATH_MAX 260
+#endif
+]])
+
+# Prerequisites of gl_PATHMAX_SNIPPET.
+AC_DEFUN([gl_PATHMAX_SNIPPET_PREREQ],
+[
+ AC_CHECK_HEADERS_ONCE([unistd.h sys/param.h])
+])
--- /dev/null
+# pclose.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_PCLOSE],
+[
+ AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+ AC_CHECK_FUNCS_ONCE([pclose])
+ if test $ac_cv_func_pclose = no; then
+ HAVE_PCLOSE=0
+ fi
+])
+
+# Prerequisites of lib/pclose.c.
+AC_DEFUN([gl_PREREQ_PCLOSE],
+[
+ :
+])
-# perror.m4 serial 3
+# perror.m4 serial 6
dnl Copyright (C) 2008-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
[AC_LANG_PROGRAM(
[[#include <errno.h>
#include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
]],
[[char *str = strerror (-1);
if (!getenv("CONFTEST_OUTPUT")) return 0;
puts (str);
errno = -1;
perror ("");
+ return 0;
]])],
- [CONFTEST_OUTPUT=1 ./conftest$EXEEXT >conftest.txt1 2>conftest.txt2
- if cmp conftest.txt1 conftest.txt2 >/dev/null; then
+ [if CONFTEST_OUTPUT=1 ./conftest$EXEEXT >conftest.txt1 2>conftest.txt2 \
+ && cmp conftest.txt1 conftest.txt2 >/dev/null; then
gl_cv_func_perror_works=yes
else
gl_cv_func_perror_works=no
rm -rf conftest.txt1 conftest.txt2],
[gl_cv_func_perror_works=no],
[dnl Guess no when cross-compiling.
- gl_cv_func_perror_works="guessing no"])])
- if test "$gl_cv_func_perror_works" != yes; then
- REPLACE_PERROR=1
- fi ;;
- *) dnl The system's perror() probably inherits the bugs in the
- dnl system's strerror_r(). Replace it.
- REPLACE_PERROR=1 ;;
+ gl_cv_func_perror_works="guessing no"
+ ])
+ ])
+ if test "$gl_cv_func_perror_works" != yes; then
+ REPLACE_PERROR=1
+ fi
+ ;;
+ *)
+ dnl The system's perror() probably inherits the bugs in the
+ dnl system's strerror_r(). Replace it.
+ REPLACE_PERROR=1
+ ;;
esac
])
-# poll.m4 serial 14
+# poll.m4 serial 16
dnl Copyright (c) 2003, 2005-2007, 2009-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_POLL],
[
AC_REQUIRE([gl_POLL_H])
- if test "$ac_cv_header_poll_h" = no; then
+ AC_REQUIRE([gl_SOCKETS])
+ if test $ac_cv_header_poll_h = no; then
ac_cv_func_poll=no
gl_cv_func_poll=no
else
AC_DEFINE([HAVE_POLL], [1],
[Define to 1 if you have the 'poll' function and it works.])
fi
+
+ dnl Determine the needed libraries.
+ LIB_POLL="$LIBSOCKET"
+ if test $HAVE_POLL = 0 || test $REPLACE_POLL = 1; then
+ case "$host_os" in
+ mingw*)
+ dnl On the MSVC platform, the function MsgWaitForMultipleObjects
+ dnl (used in lib/poll.c) requires linking with -luser32. On mingw,
+ dnl it is implicit.
+ AC_LINK_IFELSE(
+ [AC_LANG_SOURCE([[
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+int
+main ()
+{
+ MsgWaitForMultipleObjects (0, NULL, 0, 0, 0);
+ return 0;
+}]])],
+ [],
+ [LIB_POLL="$LIB_POLL -luser32"])
+ ;;
+ esac
+ fi
+ AC_SUBST([LIB_POLL])
])
# Prerequisites of lib/poll.c.
-# popen.m4 serial 4
+# popen.m4 serial 5
dnl Copyright (C) 2009-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_POPEN],
[
AC_REQUIRE([gl_STDIO_H_DEFAULTS])
- AC_CACHE_CHECK([whether popen works with closed stdin],
- [gl_cv_func_popen_works],
- [
- AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>
-]], [int result = 0;
- FILE *child;
- fclose (stdin);
- fclose (stdout);
- child = popen ("echo a", "r");
- if (fgetc (child) != 'a')
- result |= 1;
- if (pclose (child) != 0)
- result |= 2;
- return result;
-])], [gl_cv_func_popen_works=yes], [gl_cv_func_popen_works=no],
- dnl For now, only cygwin 1.5 or older is known to be broken.
- [gl_cv_func_popen_works='guessing yes'])
- ])
- if test "$gl_cv_func_popen_works" = no; then
- REPLACE_POPEN=1
+ AC_CHECK_FUNCS_ONCE([popen])
+ if test $ac_cv_func_popen = no; then
+ HAVE_POPEN=0
+ else
+ AC_CACHE_CHECK([whether popen works with closed stdin],
+ [gl_cv_func_popen_works],
+ [
+ AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <stdio.h>]],
+ [[int result = 0;
+ FILE *child;
+ fclose (stdin);
+ fclose (stdout);
+ child = popen ("echo a", "r");
+ if (fgetc (child) != 'a')
+ result |= 1;
+ if (pclose (child) != 0)
+ result |= 2;
+ return result;
+ ]])],
+ [gl_cv_func_popen_works=yes],
+ [gl_cv_func_popen_works=no],
+ dnl For now, only cygwin 1.5 or older is known to be broken.
+ [gl_cv_func_popen_works='guessing yes'])
+ ])
+ if test "$gl_cv_func_popen_works" = no; then
+ REPLACE_POPEN=1
+ fi
fi
])
--- /dev/null
+# posix_openpt.m4 serial 2
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_POSIX_OPENPT],
+[
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+
+ dnl Persuade Solaris <stdlib.h> to declare posix_openpt().
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+ AC_CHECK_FUNCS_ONCE([posix_openpt])
+ if test $ac_cv_func_posix_openpt != yes; then
+ dnl The system does not have posix_openpt.
+ HAVE_POSIX_OPENPT=0
+ fi
+])
--- /dev/null
+# pow.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_POW],
+[
+ dnl Determine POW_LIBM.
+ gl_COMMON_DOUBLE_MATHFUNC([pow])
+])
--- /dev/null
+# powf.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_POWF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_POW])
+
+ dnl Test whether powf() exists. Assume that powf(), if it exists, is
+ dnl defined in the same library as pow().
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $POW_LIBM"
+ AC_CHECK_FUNCS([powf])
+ LIBS="$save_LIBS"
+ if test $ac_cv_func_powf = yes; then
+ POWF_LIBM="$POW_LIBM"
+ else
+ HAVE_POWF=0
+ POWF_LIBM="$POW_LIBM"
+ fi
+ AC_SUBST([POWF_LIBM])
+])
-# printf-frexpl.m4 serial 7
+# printf-frexpl.m4 serial 9
dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_PRINTF_FREXPL],
[
AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+
dnl Subset of gl_FUNC_FREXPL_NO_LIBM.
gl_CHECK_FREXPL_NO_LIBM
if test $gl_cv_func_frexpl_no_libm = yes; then
[Define if the frexpl function is available in libc.])
dnl Also check whether it's declared.
dnl MacOS X 10.3 has frexpl() in libc but doesn't declare it in <math.h>.
- AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [#include <math.h>])
+ AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [[#include <math.h>]])
fi
gl_CHECK_LDEXPL_NO_LIBM
[Define if the ldexpl function is available in libc.])
dnl Also check whether it's declared.
dnl MacOS X 10.3 has ldexpl() in libc but doesn't declare it in <math.h>.
- AC_CHECK_DECL([ldexpl], , [HAVE_DECL_LDEXPL=0], [#include <math.h>])
+ AC_CHECK_DECL([ldexpl], , [HAVE_DECL_LDEXPL=0], [[#include <math.h>]])
;;
esac
fi
-# printf.m4 serial 43
+# printf.m4 serial 46
dnl Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
int main ()
{
int result = 0;
- if (sprintf (buf, "%f", 1.0 / 0.0) < 0
+ if (sprintf (buf, "%f", 1.0 / zero) < 0
|| (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
result |= 1;
- if (sprintf (buf, "%f", -1.0 / 0.0) < 0
+ if (sprintf (buf, "%f", -1.0 / zero) < 0
|| (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
result |= 1;
if (sprintf (buf, "%f", zero / zero) < 0
|| !strisnan (buf, 0, strlen (buf)))
result |= 2;
- if (sprintf (buf, "%e", 1.0 / 0.0) < 0
+ if (sprintf (buf, "%e", 1.0 / zero) < 0
|| (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
result |= 4;
- if (sprintf (buf, "%e", -1.0 / 0.0) < 0
+ if (sprintf (buf, "%e", -1.0 / zero) < 0
|| (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
result |= 4;
if (sprintf (buf, "%e", zero / zero) < 0
|| !strisnan (buf, 0, strlen (buf)))
result |= 8;
- if (sprintf (buf, "%g", 1.0 / 0.0) < 0
+ if (sprintf (buf, "%g", 1.0 / zero) < 0
|| (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
result |= 16;
- if (sprintf (buf, "%g", -1.0 / 0.0) < 0
+ if (sprintf (buf, "%g", -1.0 / zero) < 0
|| (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
result |= 16;
if (sprintf (buf, "%g", zero / zero) < 0
AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([gl_BIGENDIAN])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
dnl The user can set or unset the variable gl_printf_safe to indicate
dnl that he wishes a safe handling of non-IEEE-754 'long double' values.
{
int result = 0;
nocrash_init();
- if (sprintf (buf, "%Lf", 1.0L / 0.0L) < 0
+ if (sprintf (buf, "%Lf", 1.0L / zeroL) < 0
|| (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
result |= 1;
- if (sprintf (buf, "%Lf", -1.0L / 0.0L) < 0
+ if (sprintf (buf, "%Lf", -1.0L / zeroL) < 0
|| (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
result |= 1;
if (sprintf (buf, "%Lf", zeroL / zeroL) < 0
|| !strisnan (buf, 0, strlen (buf)))
result |= 1;
- if (sprintf (buf, "%Le", 1.0L / 0.0L) < 0
+ if (sprintf (buf, "%Le", 1.0L / zeroL) < 0
|| (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
result |= 1;
- if (sprintf (buf, "%Le", -1.0L / 0.0L) < 0
+ if (sprintf (buf, "%Le", -1.0L / zeroL) < 0
|| (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
result |= 1;
if (sprintf (buf, "%Le", zeroL / zeroL) < 0
|| !strisnan (buf, 0, strlen (buf)))
result |= 1;
- if (sprintf (buf, "%Lg", 1.0L / 0.0L) < 0
+ if (sprintf (buf, "%Lg", 1.0L / zeroL) < 0
|| (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
result |= 1;
- if (sprintf (buf, "%Lg", -1.0L / 0.0L) < 0
+ if (sprintf (buf, "%Lg", -1.0L / zeroL) < 0
|| (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
result |= 1;
if (sprintf (buf, "%Lg", zeroL / zeroL) < 0
|| !strisnan (buf, 0, strlen (buf)))
result |= 1;
-#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
/* Representation of an 80-bit 'long double' as an initializer for a sequence
of 'unsigned int' words. */
# ifdef WORDS_BIGENDIAN
#include <stdio.h>
#include <string.h>
static char buf[100];
+static double zero = 0.0;
int main ()
{
int result = 0;
result |= 4;
/* This catches a FreeBSD 6.1 bug. See
<http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
- if (sprintf (buf, "%010a %d", 1.0 / 0.0, 33, 44, 55) < 0
+ if (sprintf (buf, "%010a %d", 1.0 / zero, 33, 44, 55) < 0
|| buf[0] == '0')
result |= 8;
/* This catches a MacOS X 10.3.9 (Darwin 7.9) bug. */
#include <stdio.h>
#include <string.h>
static char buf[100];
+static double zero = 0.0;
int main ()
{
int result = 0;
if (sprintf (buf, "%F %d", 1234567.0, 33, 44, 55) < 0
|| strcmp (buf, "1234567.000000 33") != 0)
result |= 1;
- if (sprintf (buf, "%F", 1.0 / 0.0) < 0
+ if (sprintf (buf, "%F", 1.0 / zero) < 0
|| (strcmp (buf, "INF") != 0 && strcmp (buf, "INFINITY") != 0))
result |= 2;
/* This catches a Cygwin 1.5.x bug. */
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
+#ifdef _MSC_VER
+/* See page about "Parameter Validation" on msdn.microsoft.com. */
+static void cdecl
+invalid_parameter_handler (const wchar_t *expression,
+ const wchar_t *function,
+ const wchar_t *file, unsigned int line,
+ uintptr_t dummy)
+{
+ exit (1);
+}
+#endif
static char fmtstring[10];
static char buf[100];
int main ()
{
int count = -1;
+#ifdef _MSC_VER
+ _set_invalid_parameter_handler (invalid_parameter_handler);
+#endif
/* Copy the format string. Some systems (glibc with _FORTIFY_SOURCE=2)
support %n in format strings in read-only memory but not in writable
memory. */
[
changequote(,)dnl
case "$host_os" in
- *) gl_cv_func_printf_directive_n="guessing yes";;
+ mingw*) gl_cv_func_printf_directive_n="guessing no";;
+ *) gl_cv_func_printf_directive_n="guessing yes";;
esac
changequote([,])dnl
])
#include <stdio.h>
#include <string.h>
static char buf[100];
+static double zero = 0.0;
int main ()
{
- if (sprintf (buf, "%010f", 1.0 / 0.0, 33, 44, 55) < 0
+ if (sprintf (buf, "%010f", 1.0 / zero, 33, 44, 55) < 0
|| (strcmp (buf, " inf") != 0
&& strcmp (buf, " infinity") != 0))
return 1;
[
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_REQUIRE([gl_SNPRINTF_PRESENCE])
AC_CACHE_CHECK([whether snprintf truncates the result as in C99],
[gl_cv_func_snprintf_truncation_c99],
[
[AC_LANG_SOURCE([[
#include <stdio.h>
#include <string.h>
+#if HAVE_SNPRINTF
+# define my_snprintf snprintf
+#else
+# include <stdarg.h>
+static int my_snprintf (char *buf, int size, const char *format, ...)
+{
+ va_list args;
+ int ret;
+ va_start (args, format);
+ ret = vsnprintf (buf, size, format, args);
+ va_end (args);
+ return ret;
+}
+#endif
static char buf[100];
int main ()
{
strcpy (buf, "ABCDEF");
- snprintf (buf, 3, "%d %d", 4567, 89);
+ my_snprintf (buf, 3, "%d %d", 4567, 89);
if (memcmp (buf, "45\0DEF", 6) != 0)
return 1;
return 0;
[
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_REQUIRE([gl_SNPRINTF_PRESENCE])
AC_CACHE_CHECK([whether snprintf returns a byte count as in C99],
[gl_cv_func_snprintf_retval_c99],
[
[AC_LANG_SOURCE([[
#include <stdio.h>
#include <string.h>
+#if HAVE_SNPRINTF
+# define my_snprintf snprintf
+#else
+# include <stdarg.h>
+static int my_snprintf (char *buf, int size, const char *format, ...)
+{
+ va_list args;
+ int ret;
+ va_start (args, format);
+ ret = vsnprintf (buf, size, format, args);
+ va_end (args);
+ return ret;
+}
+#endif
static char buf[100];
int main ()
{
strcpy (buf, "ABCDEF");
- if (snprintf (buf, 3, "%d %d", 4567, 89) != 7)
+ if (my_snprintf (buf, 3, "%d %d", 4567, 89) != 7)
return 1;
- if (snprintf (buf, 0, "%d %d", 4567, 89) != 7)
+ if (my_snprintf (buf, 0, "%d %d", 4567, 89) != 7)
return 2;
- if (snprintf (NULL, 0, "%d %d", 4567, 89) != 7)
+ if (my_snprintf (NULL, 0, "%d %d", 4567, 89) != 7)
return 3;
return 0;
}]])],
[
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_REQUIRE([gl_SNPRINTF_PRESENCE])
AC_CACHE_CHECK([whether snprintf fully supports the 'n' directive],
[gl_cv_func_snprintf_directive_n],
[
[AC_LANG_SOURCE([[
#include <stdio.h>
#include <string.h>
+#if HAVE_SNPRINTF
+# define my_snprintf snprintf
+#else
+# include <stdarg.h>
+static int my_snprintf (char *buf, int size, const char *format, ...)
+{
+ va_list args;
+ int ret;
+ va_start (args, format);
+ ret = vsnprintf (buf, size, format, args);
+ va_end (args);
+ return ret;
+}
+#endif
static char fmtstring[10];
static char buf[100];
int main ()
support %n in format strings in read-only memory but not in writable
memory. */
strcpy (fmtstring, "%d %n");
- snprintf (buf, 4, fmtstring, 12345, &count, 33, 44, 55);
+ my_snprintf (buf, 4, fmtstring, 12345, &count, 33, 44, 55);
if (count != 6)
return 1;
return 0;
AC_DEFUN([gl_SNPRINTF_SIZE1],
[
AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([gl_SNPRINTF_PRESENCE])
AC_CACHE_CHECK([whether snprintf respects a size of 1],
[gl_cv_func_snprintf_size1],
[
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <stdio.h>
+#if HAVE_SNPRINTF
+# define my_snprintf snprintf
+#else
+# include <stdarg.h>
+static int my_snprintf (char *buf, int size, const char *format, ...)
+{
+ va_list args;
+ int ret;
+ va_start (args, format);
+ ret = vsnprintf (buf, size, format, args);
+ va_end (args);
+ return ret;
+}
+#endif
int main()
{
static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
- snprintf (buf, 1, "%d", 12345);
+ my_snprintf (buf, 1, "%d", 12345);
return buf[1] != 'E';
}]])],
[gl_cv_func_snprintf_size1=yes],
dnl Haiku . . . # # # . # . . . . . ? . . ? . . .
dnl BeOS # # . # # # . ? # . ? . # ? . . ? . . .
dnl old mingw / msvcrt # # # # # # . . # # . # # ? . # # # . .
+dnl MSVC 9 # # # # # # # . # # . # # ? # # # # . .
dnl mingw 2009-2011 . # . # . . . . # # . . . ? . . . . . .
dnl mingw-w64 2011 # # # # # # . . # # . # # ? . # # # . .
-# pthread.m4 serial 2
+# pthread.m4 serial 3
dnl Copyright (C) 2009-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
LIB_PTHREAD=
if test $ac_cv_header_pthread_h = yes; then
- gl_saved_libs=$LIBS
- AC_SEARCH_LIBS([pthread_join], [pthread],
- [if test "$ac_cv_search_pthread_join" != "none required"; then
- LIB_PTHREAD="$ac_cv_search_pthread_join"
- fi])
- LIBS="$gl_saved_libs"
+ dnl We cannot use AC_SEARCH_LIBS here, because on OSF/1 5.1 pthread_join
+ dnl is defined as a macro which expands to __phread_join, and libpthread
+ dnl contains a definition for __phread_join but none for pthread_join.
+ AC_CACHE_CHECK([for library containing pthread_join],
+ [gl_cv_search_pthread_join],
+ [gl_saved_libs="$LIBS"
+ gl_cv_search_pthread_join=
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <pthread.h>]],
+ [[pthread_join (pthread_self (), (void **) 0);]])],
+ [gl_cv_search_pthread_join="none required"])
+ if test -z "$gl_cv_search_pthread_join"; then
+ LIBS="-lpthread $gl_saved_libs"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <pthread.h>]],
+ [[pthread_join (pthread_self (), (void **) 0);]])],
+ [gl_cv_search_pthread_join="-lpthread"])
+ fi
+ LIBS="$gl_saved_libs"
+ ])
+ if test "$gl_cv_search_pthread_join" != "none required"; then
+ LIB_PTHREAD="$gl_cv_search_pthread_join"
+ fi
fi
AC_SUBST([LIB_PTHREAD])
-# pthread_sigmask.m4 serial 12
+# pthread_sigmask.m4 serial 13
dnl Copyright (C) 2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK],
[
+ AC_REQUIRE([gl_SIGNAL_H_DEFAULTS])
+
AC_CHECK_FUNCS_ONCE([pthread_sigmask])
LIB_PTHREAD_SIGMASK=
--- /dev/null
+# ptsname_r.m4 serial 2
+dnl Copyright (C) 2010-2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_PTSNAME_R],
+[
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+
+ dnl Persuade glibc <stdlib.h> to declare ptsname_r().
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+ AC_CHECK_FUNCS_ONCE([ptsname_r])
+ if test $ac_cv_func_ptsname_r = no; then
+ HAVE_PTSNAME_R=0
+ else
+ dnl On OSF/1 5.1, the type of the third argument is 'int', not 'size_t',
+ dnl and the declaration is missing if _REENTRANT is not defined.
+ AC_CACHE_CHECK([whether ptsname_r has the same signature as in glibc],
+ [gl_cv_func_ptsname_r_signature_ok],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <stddef.h>
+ #include <stdlib.h>
+ /* Test whether ptsname_r is declared at all. */
+ int (*f) (int, char *, size_t) = ptsname_r;
+ /* Test whether it has the same declaration as in glibc. */
+ #undef ptsname_r
+ extern
+ #ifdef __cplusplus
+ "C"
+ #endif
+ int ptsname_r (int, char *, size_t);
+ ]],
+ [[return f (0, NULL, 0);]])
+ ],
+ [gl_cv_func_ptsname_r_signature_ok=yes],
+ [gl_cv_func_ptsname_r_signature_ok=no])
+ ])
+ if test $gl_cv_func_ptsname_r_signature_ok = no; then
+ REPLACE_PTSNAME_R=1
+ fi
+ fi
+])
+
+# Prerequisites of lib/ptsname.c.
+AC_DEFUN([gl_PREREQ_PTSNAME_R], [
+ :
+])
--- /dev/null
+# raise.m4 serial 2
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_RAISE],
+[
+ AC_REQUIRE([gl_SIGNAL_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([gl_MSVC_INVAL])
+ AC_CHECK_FUNCS([raise])
+ if test $ac_cv_func_raise = no; then
+ HAVE_RAISE=0
+ else
+ if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+ REPLACE_RAISE=1
+ fi
+ m4_ifdef([gl_SIGNALBLOCKING], [
+ gl_SIGNALBLOCKING
+ if test $HAVE_POSIX_SIGNALBLOCKING = 0; then
+ m4_ifdef([gl_SIGNAL_SIGPIPE], [
+ gl_SIGNAL_SIGPIPE
+ if test $gl_cv_header_signal_h_SIGPIPE != yes; then
+ REPLACE_RAISE=1
+ fi
+ ], [:])
+ fi
+ ])
+ fi
+])
+
+# Prerequisites of lib/raise.c.
+AC_DEFUN([gl_PREREQ_RAISE], [
+ AC_REQUIRE([AC_C_INLINE])
+])
-# read.m4 serial 2
+# read.m4 serial 3
dnl Copyright (C) 2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_READ],
[
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ AC_REQUIRE([gl_MSVC_INVAL])
+ if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+ REPLACE_READ=1
+ fi
dnl This ifdef is just an optimization, to avoid performing a configure
dnl check whose result is not used. It does not make the test of
dnl GNULIB_UNISTD_H_NONBLOCKING or GNULIB_NONBLOCKING redundant.
fi
])
])
+
+# Prerequisites of lib/read.c.
+AC_DEFUN([gl_PREREQ_READ],
+[
+ AC_REQUIRE([AC_C_INLINE])
+])
--- /dev/null
+# readdir.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_READDIR],
+[
+ AC_REQUIRE([gl_DIRENT_H_DEFAULTS])
+
+ AC_CHECK_FUNCS([readdir])
+ if test $ac_cv_func_readdir = no; then
+ HAVE_READDIR=0
+ fi
+])
AC_SUBST([LIBREADLINE])
AC_SUBST([LTLIBREADLINE])
- AC_CHECK_HEADERS([readline/readline.h])
+ AC_CHECK_HEADERS([readline/readline.h readline/history.h])
])
# Prerequisites of lib/readline.c.
-# readutmp.m4 serial 18
+# readutmp.m4 serial 19
dnl Copyright (C) 2002-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl Prerequisites of lib/readutmp.h and lib/readutmp.c.
AC_REQUIRE([AC_C_INLINE])
AC_CHECK_FUNCS_ONCE([utmpname utmpxname])
- AC_CHECK_DECLS([getutent],,,[
+ AC_CHECK_DECLS([getutent],,,[[
/* <sys/types.h> is a prerequisite of <utmp.h> on FreeBSD 8.0, OpenBSD 4.6. */
#include <sys/types.h>
#ifdef HAVE_UTMP_H
# include <utmp.h>
#endif
-])
+]])
utmp_includes="\
AC_INCLUDES_DEFAULT
#ifdef HAVE_UTMPX_H
-# serial 59
+# serial 60
# Copyright (C) 1996-2001, 2003-2011 Free Software Foundation, Inc.
#
AC_REQUIRE([AC_TYPE_MBSTATE_T])
AC_CHECK_HEADERS([libintl.h])
AC_CHECK_FUNCS_ONCE([isblank iswctype wcscoll])
- AC_CHECK_DECLS([isblank], [], [], [#include <ctype.h>])
+ AC_CHECK_DECLS([isblank], [], [], [[#include <ctype.h>]])
])
-# serial 24
+# serial 25
# Copyright (C) 2001, 2003, 2005-2006, 2009-2011 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
dnl NetBSD 1.6 and cygwin 1.5.x mistakenly reduce hard link count
dnl on rename("h1","h2").
dnl This bug requires stat'ting targets prior to attempting rename.
+ AC_CHECK_FUNCS_ONCE([link])
AC_CACHE_CHECK([whether rename manages hard links correctly],
[gl_cv_func_rename_link_works],
- [rm -rf conftest.f conftest.f1
- if touch conftest.f && ln conftest.f conftest.f1 &&
- set x `ls -i conftest.f conftest.f1` && test "$2" = "$4"; then
- AC_RUN_IFELSE(
- [AC_LANG_PROGRAM([[
-# include <stdio.h>
-# include <stdlib.h>
-# include <unistd.h>
- ]],
- [[int result = 0;
- if (rename ("conftest.f", "conftest.f1"))
- result |= 1;
- if (unlink ("conftest.f1"))
- result |= 2;
- if (rename ("conftest.f", "conftest.f"))
- result |= 4;
- if (rename ("conftest.f1", "conftest.f1") == 0)
- result |= 8;
- return result;
- ]])],
- [gl_cv_func_rename_link_works=yes],
- [gl_cv_func_rename_link_works=no],
- dnl When crosscompiling, assume rename is broken.
- [gl_cv_func_rename_link_works="guessing no"])
- else
- gl_cv_func_rename_link_works="guessing no"
- fi
- rm -rf conftest.f conftest.f1
- ])
+ [if test $ac_cv_func_link = yes; then
+ rm -rf conftest.f conftest.f1
+ if touch conftest.f && ln conftest.f conftest.f1 &&
+ set x `ls -i conftest.f conftest.f1` && test "$2" = "$4"; then
+ AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM([[
+# include <stdio.h>
+# include <stdlib.h>
+# include <unistd.h>
+ ]],
+ [[int result = 0;
+ if (rename ("conftest.f", "conftest.f1"))
+ result |= 1;
+ if (unlink ("conftest.f1"))
+ result |= 2;
+ if (rename ("conftest.f", "conftest.f"))
+ result |= 4;
+ if (rename ("conftest.f1", "conftest.f1") == 0)
+ result |= 8;
+ return result;
+ ]])],
+ [gl_cv_func_rename_link_works=yes],
+ [gl_cv_func_rename_link_works=no],
+ dnl When crosscompiling, assume rename is broken.
+ [gl_cv_func_rename_link_works="guessing no"])
+ else
+ gl_cv_func_rename_link_works="guessing no"
+ fi
+ rm -rf conftest.f conftest.f1
+ else
+ gl_cv_func_rename_link_works=yes
+ fi
+ ])
if test "x$gl_cv_func_rename_link_works" != xyes; then
REPLACE_RENAME=1
AC_DEFINE([RENAME_HARD_LINK_BUG], [1],
--- /dev/null
+# rewinddir.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_REWINDDIR],
+[
+ AC_REQUIRE([gl_DIRENT_H_DEFAULTS])
+
+ AC_CHECK_FUNCS([rewinddir])
+ if test $ac_cv_func_rewinddir = no; then
+ HAVE_REWINDDIR=0
+ fi
+])
--- /dev/null
+# rint.m4 serial 4
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_RINT],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+
+ dnl Determine RINT_LIBM.
+ dnl The reason for the extra code is:
+ dnl In AIX 7.1 with gcc 4.2, when optimization is turned on, calls to
+ dnl rint() with simple arguments are turned into rintf() calls by the
+ dnl compiler. But while rint() is resides in libc, rintf() is in libm.
+ gl_MATHFUNC([rint], [double], [(double)], [], [y += rint (2.0);])
+ if test $gl_cv_func_rint_no_libm = no \
+ && test $gl_cv_func_rint_in_libm = no; then
+ HAVE_RINT=0
+ RINT_LIBM=
+ fi
+ AC_SUBST([RINT_LIBM])
+])
--- /dev/null
+# rintf.m4 serial 2
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_RINTF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+
+ dnl Determine RINTF_LIBM.
+ gl_MATHFUNC([rintf], [float], [(float)])
+ if test $gl_cv_func_rintf_no_libm = no \
+ && test $gl_cv_func_rintf_in_libm = no; then
+ HAVE_RINTF=0
+ RINTF_LIBM=
+ fi
+ AC_SUBST([RINTF_LIBM])
+])
--- /dev/null
+# rintl.m4 serial 3
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_RINTL],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+
+ dnl Determine RINTL_LIBM.
+ gl_MATHFUNC([rintl], [long double], [(long double)])
+ if test $gl_cv_func_rintl_no_libm = no \
+ && test $gl_cv_func_rintl_in_libm = no; then
+ HAVE_RINTL=0
+ dnl Find libraries needed to link lib/rintl.c.
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
+ AC_REQUIRE([gl_FUNC_RINT])
+ RINTL_LIBM="$RINT_LIBM"
+ else
+ RINTL_LIBM=
+ fi
+ fi
+ AC_SUBST([RINTL_LIBM])
+])
-# rmdir.m4 serial 11
+# rmdir.m4 serial 12
dnl Copyright (C) 2002, 2005, 2009-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
[
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
dnl Detect cygwin 1.5.x bug.
+ AC_CHECK_HEADERS_ONCE([unistd.h])
AC_CACHE_CHECK([whether rmdir works], [gl_cv_func_rmdir_works],
[mkdir conftest.dir
touch conftest.file
[AC_LANG_PROGRAM(
[[#include <stdio.h>
#include <errno.h>
- #include <unistd.h>
+ #if HAVE_UNISTD_H
+ # include <unistd.h>
+ #else /* on Windows with MSVC */
+ # include <direct.h>
+ #endif
]], [[int result = 0;
if (!rmdir ("conftest.file/"))
result |= 1;
-# round.m4 serial 12
+# round.m4 serial 13
dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_REQUIRE([gl_MATH_H_DEFAULTS])
dnl Persuade glibc <math.h> to declare round().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
- AC_CHECK_DECLS([round], , , [#include <math.h>])
+ AC_CHECK_DECLS([round], , , [[#include <math.h>]])
if test "$ac_cv_have_decl_round" = yes; then
gl_CHECK_MATH_LIB([ROUND_LIBM], [x = round (x);])
if test "$ROUND_LIBM" != missing; then
-# roundf.m4 serial 13
+# roundf.m4 serial 14
dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_REQUIRE([gl_MATH_H_DEFAULTS])
dnl Persuade glibc <math.h> to declare roundf().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
- AC_CHECK_DECLS([roundf], , , [#include <math.h>])
+ AC_CHECK_DECLS([roundf], , , [[#include <math.h>]])
if test "$ac_cv_have_decl_roundf" = yes; then
gl_CHECK_MATH_LIB([ROUNDF_LIBM], [x = roundf (x);])
if test "$ROUNDF_LIBM" != missing; then
fi
if test $HAVE_DECL_ROUNDF = 0 || test $REPLACE_ROUNDF = 1; then
dnl Find libraries needed to link lib/roundf.c.
- AC_CHECK_DECLS([ceilf, floorf], , , [#include <math.h>])
+ AC_CHECK_DECLS([ceilf, floorf], , , [[#include <math.h>]])
if test "$ac_cv_have_decl_floorf" = yes \
&& test "$ac_cv_have_decl_ceilf" = yes; then
gl_FUNC_FLOORF_LIBS
-# roundl.m4 serial 11
+# roundl.m4 serial 13
dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
[
m4_divert_text([DEFAULTS], [gl_roundl_required=plain])
AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+
dnl Persuade glibc <math.h> to declare roundl().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
- AC_CHECK_DECLS([roundl], , , [#include <math.h>])
+
+ AC_CHECK_DECLS([roundl], , , [[#include <math.h>]])
if test "$ac_cv_have_decl_roundl" = yes; then
gl_CHECK_MATH_LIB([ROUNDL_LIBM], [x = roundl (x);])
if test "$ROUNDL_LIBM" = missing; then
fi
if test $HAVE_DECL_ROUNDL = 0 || test $REPLACE_ROUNDL = 1; then
dnl Find libraries needed to link lib/roundl.c.
- AC_CHECK_DECLS([ceill, floorl], , , [#include <math.h>])
- if test "$ac_cv_have_decl_floorl" = yes \
- && test "$ac_cv_have_decl_ceill" = yes; then
- gl_FUNC_FLOORL_LIBS
- gl_FUNC_CEILL_LIBS
- if test "$FLOORL_LIBM" != '?' && test "$CEILL_LIBM" != '?'; then
- AC_DEFINE([HAVE_FLOORL_AND_CEILL], [1],
- [Define if the both the floorl() and ceill() functions exist.])
- ROUNDL_LIBM=
- dnl Append $FLOORL_LIBM to ROUNDL_LIBM, avoiding gratuitous duplicates.
- case " $ROUNDL_LIBM " in
- *" $FLOORL_LIBM "*) ;;
- *) ROUNDL_LIBM="$ROUNDL_LIBM $FLOORL_LIBM" ;;
- esac
- dnl Append $CEILL_LIBM to ROUNDL_LIBM, avoiding gratuitous duplicates.
- case " $ROUNDL_LIBM " in
- *" $CEILL_LIBM "*) ;;
- *) ROUNDL_LIBM="$ROUNDL_LIBM $CEILL_LIBM" ;;
- esac
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
+ AC_REQUIRE([gl_FUNC_ROUND])
+ ROUNDL_LIBM="$ROUND_LIBM"
+ else
+ AC_CHECK_DECLS([ceill, floorl], , , [[#include <math.h>]])
+ if test "$ac_cv_have_decl_floorl" = yes \
+ && test "$ac_cv_have_decl_ceill" = yes; then
+ gl_FUNC_FLOORL_LIBS
+ gl_FUNC_CEILL_LIBS
+ if test "$FLOORL_LIBM" != '?' && test "$CEILL_LIBM" != '?'; then
+ AC_DEFINE([HAVE_FLOORL_AND_CEILL], [1],
+ [Define if the both the floorl() and ceill() functions exist.])
+ ROUNDL_LIBM=
+ dnl Append $FLOORL_LIBM to ROUNDL_LIBM, avoiding gratuitous duplicates.
+ case " $ROUNDL_LIBM " in
+ *" $FLOORL_LIBM "*) ;;
+ *) ROUNDL_LIBM="$ROUNDL_LIBM $FLOORL_LIBM" ;;
+ esac
+ dnl Append $CEILL_LIBM to ROUNDL_LIBM, avoiding gratuitous duplicates.
+ case " $ROUNDL_LIBM " in
+ *" $CEILL_LIBM "*) ;;
+ *) ROUNDL_LIBM="$ROUNDL_LIBM $CEILL_LIBM" ;;
+ esac
+ else
+ ROUNDL_LIBM=
+ fi
else
ROUNDL_LIBM=
fi
- else
- ROUNDL_LIBM=
fi
fi
AC_SUBST([ROUNDL_LIBM])
-# sched_h.m4 serial 4
+# sched_h.m4 serial 6
dnl Copyright (C) 2008-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
#include <sched.h>
struct sched_param a;
int b[] = { SCHED_FIFO, SCHED_RR, SCHED_OTHER };
+ pid_t t1;
]])],
[SCHED_H=''],
[SCHED_H='sched.h'
[HAVE_STRUCT_SCHED_PARAM=1], [HAVE_STRUCT_SCHED_PARAM=0],
[#include <sched.h>])
AC_SUBST([HAVE_STRUCT_SCHED_PARAM])
+
+ dnl Ensure the type pid_t gets defined.
+ AC_REQUIRE([AC_TYPE_PID_T])
])
AC_SUBST([SCHED_H])
AM_CONDITIONAL([GL_GENERATE_SCHED_H], [test -n "$SCHED_H"])
-# select.m4 serial 5
+# select.m4 serial 6
dnl Copyright (C) 2009-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
*) REPLACE_SELECT=1 ;;
esac
fi
+
+ dnl Determine the needed libraries.
+ LIB_SELECT="$LIBSOCKET"
+ if test $REPLACE_SELECT = 1; then
+ case "$host_os" in
+ mingw*)
+ dnl On the MSVC platform, the function MsgWaitForMultipleObjects
+ dnl (used in lib/select.c) requires linking with -luser32. On mingw,
+ dnl it is implicit.
+ AC_LINK_IFELSE(
+ [AC_LANG_SOURCE([[
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+int
+main ()
+{
+ MsgWaitForMultipleObjects (0, NULL, 0, 0, 0);
+ return 0;
+}]])],
+ [],
+ [LIB_SELECT="$LIB_SELECT -luser32"])
+ ;;
+ esac
+ fi
+ AC_SUBST([LIB_SELECT])
])
-# setenv.m4 serial 24
+# setenv.m4 serial 25
dnl Copyright (C) 2001-2004, 2006-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
#ifdef __cplusplus
"C"
#endif
-#if defined(__STDC__) || defined(__cplusplus)
int unsetenv (const char *name);
-#else
-int unsetenv();
-#endif
]],
[[]])],
[gt_cv_func_unsetenv_ret='int'],
-# signal_h.m4 serial 16
+# signal_h.m4 serial 18
dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
#include <signal.h>
]])
+ dnl Ensure the type pid_t gets defined.
+ AC_REQUIRE([AC_TYPE_PID_T])
+
AC_REQUIRE([AC_TYPE_UID_T])
dnl Persuade glibc <signal.h> to define sighandler_t.
AC_DEFUN([gl_SIGNAL_H_DEFAULTS],
[
GNULIB_PTHREAD_SIGMASK=0; AC_SUBST([GNULIB_PTHREAD_SIGMASK])
+ GNULIB_RAISE=0; AC_SUBST([GNULIB_RAISE])
GNULIB_SIGNAL_H_SIGPIPE=0; AC_SUBST([GNULIB_SIGNAL_H_SIGPIPE])
GNULIB_SIGPROCMASK=0; AC_SUBST([GNULIB_SIGPROCMASK])
GNULIB_SIGACTION=0; AC_SUBST([GNULIB_SIGACTION])
dnl Assume proper GNU behavior unless another module says otherwise.
HAVE_POSIX_SIGNALBLOCKING=1; AC_SUBST([HAVE_POSIX_SIGNALBLOCKING])
HAVE_PTHREAD_SIGMASK=1; AC_SUBST([HAVE_PTHREAD_SIGMASK])
+ HAVE_RAISE=1; AC_SUBST([HAVE_RAISE])
HAVE_SIGSET_T=1; AC_SUBST([HAVE_SIGSET_T])
HAVE_SIGINFO_T=1; AC_SUBST([HAVE_SIGINFO_T])
HAVE_SIGACTION=1; AC_SUBST([HAVE_SIGACTION])
AC_SUBST([HAVE_TYPE_VOLATILE_SIG_ATOMIC_T])
HAVE_SIGHANDLER_T=1; AC_SUBST([HAVE_SIGHANDLER_T])
REPLACE_PTHREAD_SIGMASK=0; AC_SUBST([REPLACE_PTHREAD_SIGMASK])
+ REPLACE_RAISE=0; AC_SUBST([REPLACE_RAISE])
])
-# signalblocking.m4 serial 12
+# signalblocking.m4 serial 13
dnl Copyright (C) 2001-2002, 2006-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
])
# Prerequisites of lib/sigprocmask.c.
-AC_DEFUN([gl_PREREQ_SIGPROCMASK], [:])
+AC_DEFUN([gl_PREREQ_SIGPROCMASK], [
+ AC_REQUIRE([AC_C_INLINE])
+])
-# signbit.m4 serial 10
+# signbit.m4 serial 11
dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
gl_LONG_DOUBLE_SIGN_LOCATION
if test "$gl_cv_cc_float_signbit" = unknown; then
dnl Test whether copysignf() is declared.
- AC_CHECK_DECLS([copysignf], , , [#include <math.h>])
+ AC_CHECK_DECLS([copysignf], , , [[#include <math.h>]])
if test "$ac_cv_have_decl_copysignf" = yes; then
dnl Test whether copysignf() can be used without libm.
AC_CACHE_CHECK([whether copysignf can be used without linking with libm],
fi
if test "$gl_cv_cc_double_signbit" = unknown; then
dnl Test whether copysign() is declared.
- AC_CHECK_DECLS([copysign], , , [#include <math.h>])
+ AC_CHECK_DECLS([copysign], , , [[#include <math.h>]])
if test "$ac_cv_have_decl_copysign" = yes; then
dnl Test whether copysign() can be used without libm.
AC_CACHE_CHECK([whether copysign can be used without linking with libm],
fi
if test "$gl_cv_cc_long_double_signbit" = unknown; then
dnl Test whether copysignl() is declared.
- AC_CHECK_DECLS([copysignl], , , [#include <math.h>])
+ AC_CHECK_DECLS([copysignl], , , [[#include <math.h>]])
if test "$ac_cv_have_decl_copysignl" = yes; then
dnl Test whether copysignl() can be used without libm.
AC_CACHE_CHECK([whether copysignl can be used without linking with libm],
--- /dev/null
+# sin.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_SIN],
+[
+ dnl Determine SIN_LIBM.
+ gl_COMMON_DOUBLE_MATHFUNC([sin])
+])
--- /dev/null
+# sinf.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_SINF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_SIN])
+
+ dnl Test whether sinf() exists. Assume that sinf(), if it exists, is
+ dnl defined in the same library as sin().
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $SIN_LIBM"
+ AC_CHECK_FUNCS([sinf])
+ LIBS="$save_LIBS"
+ if test $ac_cv_func_sinf = yes; then
+ SINF_LIBM="$SIN_LIBM"
+ else
+ HAVE_SINF=0
+ SINF_LIBM="$SIN_LIBM"
+ fi
+ AC_SUBST([SINF_LIBM])
+])
--- /dev/null
+# sinh.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_SINH],
+[
+ dnl Determine SINH_LIBM.
+ gl_COMMON_DOUBLE_MATHFUNC([sinh])
+])
--- /dev/null
+# sinhf.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_SINHF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_SINH])
+
+ dnl Test whether sinhf() exists. Assume that sinhf(), if it exists, is
+ dnl defined in the same library as sinh().
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $SINH_LIBM"
+ AC_CHECK_FUNCS([sinhf])
+ LIBS="$save_LIBS"
+ if test $ac_cv_func_sinhf = yes; then
+ SINHF_LIBM="$SINH_LIBM"
+ else
+ HAVE_SINHF=0
+ SINHF_LIBM="$SINH_LIBM"
+ fi
+ AC_SUBST([SINHF_LIBM])
+])
-# sinl.m4 serial 4
+# sinl.m4 serial 6
dnl Copyright (C) 2010-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_SINL],
[
AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+
dnl Persuade glibc <math.h> to declare sinl().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|| test $gl_cv_func_sinl_in_libm = yes; then
dnl Also check whether it's declared.
dnl MacOS X 10.3 has sinl() in libc but doesn't declare it in <math.h>.
- AC_CHECK_DECL([sinl], , [HAVE_DECL_SINL=0], [#include <math.h>])
+ AC_CHECK_DECL([sinl], , [HAVE_DECL_SINL=0], [[#include <math.h>]])
else
HAVE_DECL_SINL=0
HAVE_SINL=0
dnl Find libraries needed to link lib/sinl.c, lib/sincosl.c, lib/trigl.c.
- AC_REQUIRE([gl_FUNC_ISNANL])
- AC_REQUIRE([gl_FUNC_FLOOR])
- AC_REQUIRE([gl_FUNC_FLOORL])
- dnl Append $ISNANL_LIBM to SINL_LIBM, avoiding gratuitous duplicates.
- case " $SINL_LIBM " in
- *" $ISNANL_LIBM "*) ;;
- *) SINL_LIBM="$SINL_LIBM $ISNANL_LIBM" ;;
- esac
- dnl Append $FLOOR_LIBM to SINL_LIBM, avoiding gratuitous duplicates.
- case " $SINL_LIBM " in
- *" $FLOOR_LIBM "*) ;;
- *) SINL_LIBM="$SINL_LIBM $FLOOR_LIBM" ;;
- esac
- dnl Append $FLOORL_LIBM to SINL_LIBM, avoiding gratuitous duplicates.
- case " $SINL_LIBM " in
- *" $FLOORL_LIBM "*) ;;
- *) SINL_LIBM="$SINL_LIBM $FLOORL_LIBM" ;;
- esac
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
+ AC_REQUIRE([gl_FUNC_SIN])
+ SINL_LIBM="$SIN_LIBM"
+ else
+ AC_REQUIRE([gl_FUNC_ISNANL])
+ AC_REQUIRE([gl_FUNC_FLOOR])
+ AC_REQUIRE([gl_FUNC_FLOORL])
+ dnl Append $ISNANL_LIBM to SINL_LIBM, avoiding gratuitous duplicates.
+ case " $SINL_LIBM " in
+ *" $ISNANL_LIBM "*) ;;
+ *) SINL_LIBM="$SINL_LIBM $ISNANL_LIBM" ;;
+ esac
+ dnl Append $FLOOR_LIBM to SINL_LIBM, avoiding gratuitous duplicates.
+ case " $SINL_LIBM " in
+ *" $FLOOR_LIBM "*) ;;
+ *) SINL_LIBM="$SINL_LIBM $FLOOR_LIBM" ;;
+ esac
+ dnl Append $FLOORL_LIBM to SINL_LIBM, avoiding gratuitous duplicates.
+ case " $SINL_LIBM " in
+ *" $FLOORL_LIBM "*) ;;
+ *) SINL_LIBM="$SINL_LIBM $FLOORL_LIBM" ;;
+ esac
+ fi
fi
AC_SUBST([SINL_LIBM])
])
-# sleep.m4 serial 5
+# sleep.m4 serial 6
dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl _sleep() in MSVCRT. It has a different signature than POSIX sleep():
dnl it takes the number of milliseconds as argument and returns void.
dnl mingw does not declare this function.
- AC_CHECK_DECLS([sleep], , , [#include <unistd.h>])
+ AC_CHECK_DECLS([sleep], , , [[#include <unistd.h>]])
AC_CHECK_FUNCS_ONCE([sleep])
if test $ac_cv_have_decl_sleep != yes; then
HAVE_SLEEP=0
-# spawn_h.m4 serial 13
+# spawn_h.m4 serial 15
dnl Copyright (C) 2008-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
fi
AC_SUBST([HAVE_SPAWN_H])
+ dnl Ensure the type pid_t gets defined.
+ AC_REQUIRE([AC_TYPE_PID_T])
+
+ dnl Ensure the type mode_t gets defined.
+ AC_REQUIRE([AC_TYPE_MODE_T])
+
AC_REQUIRE([gl_HAVE_POSIX_SPAWN])
AC_REQUIRE([AC_C_RESTRICT])
--- /dev/null
+# sqrtf.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_SQRTF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_SQRT])
+
+ dnl Test whether sqrtf() exists. Assume that sqrtf(), if it exists, is
+ dnl defined in the same library as sqrt().
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $SQRT_LIBM"
+ AC_CHECK_FUNCS([sqrtf])
+ LIBS="$save_LIBS"
+ if test $ac_cv_func_sqrtf = yes; then
+ SQRTF_LIBM="$SQRT_LIBM"
+ else
+ HAVE_SQRTF=0
+ SQRTF_LIBM="$SQRT_LIBM"
+ fi
+ AC_SUBST([SQRTF_LIBM])
+])
-# sqrtl.m4 serial 4
+# sqrtl.m4 serial 6
dnl Copyright (C) 2010-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_SQRTL],
[
AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+
dnl Persuade glibc <math.h> to declare sqrtl().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|| test $gl_cv_func_sqrtl_in_libm = yes; then
dnl Also check whether it's declared.
dnl MacOS X 10.3 has sqrtl() in libc but doesn't declare it in <math.h>.
- AC_CHECK_DECL([sqrtl], , [HAVE_DECL_SQRTL=0], [#include <math.h>])
+ AC_CHECK_DECL([sqrtl], , [HAVE_DECL_SQRTL=0], [[#include <math.h>]])
else
HAVE_DECL_SQRTL=0
HAVE_SQRTL=0
dnl Find libraries needed to link lib/sqrtl.c.
- AC_REQUIRE([gl_FUNC_ISNANL])
- AC_REQUIRE([gl_FUNC_FREXPL])
- AC_REQUIRE([gl_FUNC_LDEXPL])
- AC_REQUIRE([gl_FUNC_SQRT])
- dnl Append $ISNANL_LIBM to SQRTL_LIBM, avoiding gratuitous duplicates.
- case " $SQRTL_LIBM " in
- *" $ISNANL_LIBM "*) ;;
- *) SQRTL_LIBM="$SQRTL_LIBM $ISNANL_LIBM" ;;
- esac
- dnl Append $FREXPL_LIBM to SQRTL_LIBM, avoiding gratuitous duplicates.
- case " $SQRTL_LIBM " in
- *" $FREXPL_LIBM "*) ;;
- *) SQRTL_LIBM="$SQRTL_LIBM $FREXPL_LIBM" ;;
- esac
- dnl Append $LDEXPL_LIBM to SQRTL_LIBM, avoiding gratuitous duplicates.
- case " $SQRTL_LIBM " in
- *" $LDEXPL_LIBM "*) ;;
- *) SQRTL_LIBM="$SQRTL_LIBM $LDEXPL_LIBM" ;;
- esac
- dnl Append $SQRT_LIBM to SQRTL_LIBM, avoiding gratuitous duplicates.
- case " $SQRTL_LIBM " in
- *" $SQRT_LIBM "*) ;;
- *) SQRTL_LIBM="$SQRTL_LIBM $SQRT_LIBM" ;;
- esac
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
+ AC_REQUIRE([gl_FUNC_SQRT])
+ SQRTL_LIBM="$SQRT_LIBM"
+ else
+ AC_REQUIRE([gl_FUNC_ISNANL])
+ AC_REQUIRE([gl_FUNC_FREXPL])
+ AC_REQUIRE([gl_FUNC_LDEXPL])
+ AC_REQUIRE([gl_FUNC_SQRT])
+ dnl Append $ISNANL_LIBM to SQRTL_LIBM, avoiding gratuitous duplicates.
+ case " $SQRTL_LIBM " in
+ *" $ISNANL_LIBM "*) ;;
+ *) SQRTL_LIBM="$SQRTL_LIBM $ISNANL_LIBM" ;;
+ esac
+ dnl Append $FREXPL_LIBM to SQRTL_LIBM, avoiding gratuitous duplicates.
+ case " $SQRTL_LIBM " in
+ *" $FREXPL_LIBM "*) ;;
+ *) SQRTL_LIBM="$SQRTL_LIBM $FREXPL_LIBM" ;;
+ esac
+ dnl Append $LDEXPL_LIBM to SQRTL_LIBM, avoiding gratuitous duplicates.
+ case " $SQRTL_LIBM " in
+ *" $LDEXPL_LIBM "*) ;;
+ *) SQRTL_LIBM="$SQRTL_LIBM $LDEXPL_LIBM" ;;
+ esac
+ dnl Append $SQRT_LIBM to SQRTL_LIBM, avoiding gratuitous duplicates.
+ case " $SQRTL_LIBM " in
+ *" $SQRT_LIBM "*) ;;
+ *) SQRTL_LIBM="$SQRTL_LIBM $SQRT_LIBM" ;;
+ esac
+ fi
fi
AC_SUBST([SQRTL_LIBM])
])
--- /dev/null
+# Check for stdalign.h that conforms to C1x.
+
+dnl Copyright 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Prepare for substituting <stdalign.h> if it is not supported.
+
+AC_DEFUN([gl_STDALIGN_H],
+[
+ AC_CACHE_CHECK([for working stdalign.h],
+ [gl_cv_header_working_stdalign_h],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <stdalign.h>
+ int align_int = alignof (int) + _Alignof (double);
+
+ /* Test _Alignas only on platforms where gnulib can help. */
+ #if \
+ (__GNUC__ || __IBMC__ || __IBMCPP__ \
+ || 0x5110 <= __SUNPRO_C || 1300 <= _MSC_VER)
+ int alignas (8) alignas_int = 1;
+ #endif
+ ]])],
+ [gl_cv_header_working_stdalign_h=yes],
+ [gl_cv_header_working_stdalign_h=no])])
+
+ if test $gl_cv_header_working_stdalign_h = yes; then
+ STDALIGN_H=''
+ else
+ STDALIGN_H='stdalign.h'
+ fi
+
+ AC_SUBST([STDALIGN_H])
+ AM_CONDITIONAL([GL_GENERATE_STDALIGN_H], [test -n "$STDALIGN_H"])
+])
fi
gl_INTEGER_TYPE_SUFFIX([sig_atomic_t wchar_t wint_t],
[gl_STDINT_INCLUDES])
+
+ dnl If wint_t is smaller than 'int', it cannot satisfy the ISO C 99
+ dnl requirement that wint_t is "unchanged by default argument promotions".
+ dnl In this case gnulib's <wchar.h> and <wctype.h> override wint_t.
+ dnl Set the variable BITSIZEOF_WINT_T accordingly.
+ if test $BITSIZEOF_WINT_T -lt 32; then
+ BITSIZEOF_WINT_T=32
+ fi
])
dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
-# stdio_h.m4 serial 37
+# stdio_h.m4 serial 40
dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl corresponding gnulib module is not in use, and which is not
dnl guaranteed by C89.
gl_WARN_ON_USE_PREPARE([[#include <stdio.h>
- ]], [dprintf fpurge fseeko ftello getdelim getline popen renameat
+ ]], [dprintf fpurge fseeko ftello getdelim getline pclose popen renameat
snprintf tmpfile vdprintf vsnprintf])
])
[
GNULIB_DPRINTF=0; AC_SUBST([GNULIB_DPRINTF])
GNULIB_FCLOSE=0; AC_SUBST([GNULIB_FCLOSE])
+ GNULIB_FDOPEN=0; AC_SUBST([GNULIB_FDOPEN])
GNULIB_FFLUSH=0; AC_SUBST([GNULIB_FFLUSH])
GNULIB_FGETC=0; AC_SUBST([GNULIB_FGETC])
GNULIB_FGETS=0; AC_SUBST([GNULIB_FGETS])
GNULIB_GETS=0; AC_SUBST([GNULIB_GETS])
GNULIB_OBSTACK_PRINTF=0; AC_SUBST([GNULIB_OBSTACK_PRINTF])
GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX])
+ GNULIB_PCLOSE=0; AC_SUBST([GNULIB_PCLOSE])
GNULIB_PERROR=0; AC_SUBST([GNULIB_PERROR])
GNULIB_POPEN=0; AC_SUBST([GNULIB_POPEN])
GNULIB_PRINTF=0; AC_SUBST([GNULIB_PRINTF])
HAVE_DPRINTF=1; AC_SUBST([HAVE_DPRINTF])
HAVE_FSEEKO=1; AC_SUBST([HAVE_FSEEKO])
HAVE_FTELLO=1; AC_SUBST([HAVE_FTELLO])
+ HAVE_PCLOSE=1; AC_SUBST([HAVE_PCLOSE])
+ HAVE_POPEN=1; AC_SUBST([HAVE_POPEN])
HAVE_RENAMEAT=1; AC_SUBST([HAVE_RENAMEAT])
HAVE_VASPRINTF=1; AC_SUBST([HAVE_VASPRINTF])
HAVE_VDPRINTF=1; AC_SUBST([HAVE_VDPRINTF])
REPLACE_DPRINTF=0; AC_SUBST([REPLACE_DPRINTF])
REPLACE_FCLOSE=0; AC_SUBST([REPLACE_FCLOSE])
+ REPLACE_FDOPEN=0; AC_SUBST([REPLACE_FDOPEN])
REPLACE_FFLUSH=0; AC_SUBST([REPLACE_FFLUSH])
REPLACE_FOPEN=0; AC_SUBST([REPLACE_FOPEN])
REPLACE_FPRINTF=0; AC_SUBST([REPLACE_FPRINTF])
-# stdlib_h.m4 serial 37
+# stdlib_h.m4 serial 39
dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
#if HAVE_RANDOM_H
# include <random.h>
#endif
- ]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt mkdtemp
- mkostemp mkostemps mkstemp mkstemps ptsname random_r initstat_r srandom_r
- setstate_r realpath rpmatch setenv strtod strtoll strtoull unlockpt
- unsetenv])
+ ]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt
+ initstate_r mkdtemp mkostemp mkostemps mkstemp mkstemps posix_openpt
+ ptsname ptsname_r random_r realpath rpmatch setenv setstate_r srandom_r
+ strtod strtoll strtoull unlockpt unsetenv])
])
AC_DEFUN([gl_STDLIB_MODULE_INDICATOR],
GNULIB_MKOSTEMPS=0; AC_SUBST([GNULIB_MKOSTEMPS])
GNULIB_MKSTEMP=0; AC_SUBST([GNULIB_MKSTEMP])
GNULIB_MKSTEMPS=0; AC_SUBST([GNULIB_MKSTEMPS])
+ GNULIB_POSIX_OPENPT=0; AC_SUBST([GNULIB_POSIX_OPENPT])
GNULIB_PTSNAME=0; AC_SUBST([GNULIB_PTSNAME])
+ GNULIB_PTSNAME_R=0; AC_SUBST([GNULIB_PTSNAME_R])
GNULIB_PUTENV=0; AC_SUBST([GNULIB_PUTENV])
GNULIB_RANDOM_R=0; AC_SUBST([GNULIB_RANDOM_R])
GNULIB_REALLOC_POSIX=0; AC_SUBST([GNULIB_REALLOC_POSIX])
HAVE_MKOSTEMPS=1; AC_SUBST([HAVE_MKOSTEMPS])
HAVE_MKSTEMP=1; AC_SUBST([HAVE_MKSTEMP])
HAVE_MKSTEMPS=1; AC_SUBST([HAVE_MKSTEMPS])
+ HAVE_POSIX_OPENPT=1; AC_SUBST([HAVE_POSIX_OPENPT])
HAVE_PTSNAME=1; AC_SUBST([HAVE_PTSNAME])
+ HAVE_PTSNAME_R=1; AC_SUBST([HAVE_PTSNAME_R])
HAVE_RANDOM_H=1; AC_SUBST([HAVE_RANDOM_H])
HAVE_RANDOM_R=1; AC_SUBST([HAVE_RANDOM_R])
HAVE_REALPATH=1; AC_SUBST([HAVE_REALPATH])
REPLACE_MALLOC=0; AC_SUBST([REPLACE_MALLOC])
REPLACE_MBTOWC=0; AC_SUBST([REPLACE_MBTOWC])
REPLACE_MKSTEMP=0; AC_SUBST([REPLACE_MKSTEMP])
+ REPLACE_PTSNAME_R=0; AC_SUBST([REPLACE_PTSNAME_R])
REPLACE_PUTENV=0; AC_SUBST([REPLACE_PUTENV])
REPLACE_REALLOC=0; AC_SUBST([REPLACE_REALLOC])
REPLACE_REALPATH=0; AC_SUBST([REPLACE_REALPATH])
-# strerror_r.m4 serial 13
+# strerror_r.m4 serial 14
dnl Copyright (C) 2002, 2007-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl glibc >= 2.3.4 and cygwin 1.7.9 have a function __xpg_strerror_r.
AC_CHECK_FUNCS_ONCE([__xpg_strerror_r])
AC_CHECK_FUNCS_ONCE([catgets])
+ AC_CHECK_FUNCS_ONCE([snprintf])
])
# Detect if strerror_r works, but without affecting whether a replacement
# Configure a replacement for <strings.h>.
-# serial 5
+# serial 6
# Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
AC_DEFUN([gl_HEADER_STRINGS_H_BODY],
[
AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
+
gl_CHECK_NEXT_HEADERS([strings.h])
+ if test $ac_cv_header_strings_h = yes; then
+ HAVE_STRINGS_H=1
+ else
+ HAVE_STRINGS_H=0
+ fi
+ AC_SUBST([HAVE_STRINGS_H])
dnl Check for declarations of anything we want to poison if the
dnl corresponding gnulib module is not in use.
-# strsignal.m4 serial 6
+# strsignal.m4 serial 8
dnl Copyright (C) 2008-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
# Prerequisites of lib/strsignal.c.
AC_DEFUN([gl_PREREQ_STRSIGNAL], [
+ AC_CHECK_HEADERS_ONCE([unistd.h])
AC_REQUIRE([AC_DECL_SYS_SIGLIST])
- AC_CHECK_DECLS([_sys_siglist], [], [], [#include <signal.h>])
+ AC_CHECK_DECLS([_sys_siglist], [], [], [[#include <signal.h>]])
])
-# sys_stat_h.m4 serial 24 -*- Autoconf -*-
+# sys_stat_h.m4 serial 26 -*- Autoconf -*-
dnl Copyright (C) 2006-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
gl_CHECK_NEXT_HEADERS([sys/stat.h])
+ dnl Ensure the type mode_t gets defined.
+ AC_REQUIRE([AC_TYPE_MODE_T])
+
dnl Define types that are supposed to be defined in <sys/types.h> or
dnl <sys/stat.h>.
AC_CHECK_TYPE([nlink_t], [],
dnl Check for declarations of anything we want to poison if the
dnl corresponding gnulib module is not in use.
gl_WARN_ON_USE_PREPARE([[#include <sys/stat.h>
- ]], [fchmodat fstatat futimens lchmod lstat mkdirat mkfifo mkfifoat
+ ]], [fchmodat fstat fstatat futimens lchmod lstat mkdirat mkfifo mkfifoat
mknod mknodat stat utimensat])
]) # gl_HEADER_SYS_STAT_H
[
AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) dnl for REPLACE_FCHDIR
GNULIB_FCHMODAT=0; AC_SUBST([GNULIB_FCHMODAT])
+ GNULIB_FSTAT=0; AC_SUBST([GNULIB_FSTAT])
GNULIB_FSTATAT=0; AC_SUBST([GNULIB_FSTATAT])
GNULIB_FUTIMENS=0; AC_SUBST([GNULIB_FUTIMENS])
GNULIB_LCHMOD=0; AC_SUBST([GNULIB_LCHMOD])
# Configure a replacement for <sys/time.h>.
-# serial 6
+# serial 7
# Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
HAVE_SYS_TIME_H=0
fi
+ dnl On native Windows with MSVC, 'struct timeval' is defined in <winsock2.h>
+ dnl only. So include that header in the list.
+ gl_PREREQ_SYS_H_WINSOCK2
AC_CACHE_CHECK([for struct timeval], [gl_cv_sys_struct_timeval],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM(
#include <sys/time.h>
#endif
#include <time.h>
+ #if HAVE_WINSOCK2_H
+ # include <winsock2.h>
+ #endif
]],
[[static struct timeval x; x.tv_sec = x.tv_usec;]])],
[gl_cv_sys_struct_timeval=yes],
--- /dev/null
+# sys_types_h.m4 serial 2
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_SYS_TYPES_H],
+[
+ AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS])
+ gl_NEXT_HEADERS([sys/types.h])
+
+ dnl Ensure the type pid_t gets defined.
+ AC_REQUIRE([AC_TYPE_PID_T])
+
+ dnl Ensure the type mode_t gets defined.
+ AC_REQUIRE([AC_TYPE_MODE_T])
+])
+
+AC_DEFUN([gl_SYS_TYPES_H_DEFAULTS],
+[
+])
-# sys_wait_h.m4 serial 5
+# sys_wait_h.m4 serial 6
dnl Copyright (C) 2008-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl <sys/wait.h> is always overridden, because of GNULIB_POSIXCHECK.
gl_CHECK_NEXT_HEADERS([sys/wait.h])
+ dnl Ensure the type pid_t gets defined.
+ AC_REQUIRE([AC_TYPE_PID_T])
+
dnl Check for declarations of anything we want to poison if the
dnl corresponding gnulib module is not in use.
gl_WARN_ON_USE_PREPARE([[#include <sys/wait.h>]],
--- /dev/null
+# tan.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_TAN],
+[
+ dnl Determine TAN_LIBM.
+ gl_COMMON_DOUBLE_MATHFUNC([tan])
+])
--- /dev/null
+# tanf.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_TANF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_TAN])
+
+ dnl Test whether tanf() exists. Assume that tanf(), if it exists, is
+ dnl defined in the same library as tan().
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $TAN_LIBM"
+ AC_CHECK_FUNCS([tanf])
+ LIBS="$save_LIBS"
+ if test $ac_cv_func_tanf = yes; then
+ TANF_LIBM="$TAN_LIBM"
+ else
+ HAVE_TANF=0
+ TANF_LIBM="$TAN_LIBM"
+ fi
+ AC_SUBST([TANF_LIBM])
+])
--- /dev/null
+# tanh.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_TANH],
+[
+ dnl Determine TANH_LIBM.
+ gl_COMMON_DOUBLE_MATHFUNC([tanh])
+])
--- /dev/null
+# tanhf.m4 serial 1
+dnl Copyright (C) 2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_TANHF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_TANH])
+
+ dnl Test whether tanhf() exists. Assume that tanhf(), if it exists, is
+ dnl defined in the same library as tanh().
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $TANH_LIBM"
+ AC_CHECK_FUNCS([tanhf])
+ LIBS="$save_LIBS"
+ if test $ac_cv_func_tanhf = yes; then
+ TANHF_LIBM="$TANH_LIBM"
+ else
+ HAVE_TANHF=0
+ TANHF_LIBM="$TANH_LIBM"
+ fi
+ AC_SUBST([TANHF_LIBM])
+])
-# tanl.m4 serial 4
+# tanl.m4 serial 6
dnl Copyright (C) 2010-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_TANL],
[
AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+
dnl Persuade glibc <math.h> to declare tanl().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|| test $gl_cv_func_tanl_in_libm = yes; then
dnl Also check whether it's declared.
dnl MacOS X 10.3 has tanl() in libc but doesn't declare it in <math.h>.
- AC_CHECK_DECL([tanl], , [HAVE_DECL_TANL=0], [#include <math.h>])
+ AC_CHECK_DECL([tanl], , [HAVE_DECL_TANL=0], [[#include <math.h>]])
else
HAVE_DECL_TANL=0
HAVE_TANL=0
dnl Find libraries needed to link lib/tanl.c, lib/trigl.c.
- AC_REQUIRE([gl_FUNC_ISNANL])
- AC_REQUIRE([gl_FUNC_FLOOR])
- AC_REQUIRE([gl_FUNC_FLOORL])
- dnl Append $ISNANL_LIBM to TANL_LIBM, avoiding gratuitous duplicates.
- case " $TANL_LIBM " in
- *" $ISNANL_LIBM "*) ;;
- *) TANL_LIBM="$TANL_LIBM $ISNANL_LIBM" ;;
- esac
- dnl Append $FLOOR_LIBM to TANL_LIBM, avoiding gratuitous duplicates.
- case " $TANL_LIBM " in
- *" $FLOOR_LIBM "*) ;;
- *) TANL_LIBM="$TANL_LIBM $FLOOR_LIBM" ;;
- esac
- dnl Append $FLOORL_LIBM to TANL_LIBM, avoiding gratuitous duplicates.
- case " $TANL_LIBM " in
- *" $FLOORL_LIBM "*) ;;
- *) TANL_LIBM="$TANL_LIBM $FLOORL_LIBM" ;;
- esac
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
+ AC_REQUIRE([gl_FUNC_TAN])
+ TANL_LIBM="$TAN_LIBM"
+ else
+ AC_REQUIRE([gl_FUNC_ISNANL])
+ AC_REQUIRE([gl_FUNC_FLOOR])
+ AC_REQUIRE([gl_FUNC_FLOORL])
+ dnl Append $ISNANL_LIBM to TANL_LIBM, avoiding gratuitous duplicates.
+ case " $TANL_LIBM " in
+ *" $ISNANL_LIBM "*) ;;
+ *) TANL_LIBM="$TANL_LIBM $ISNANL_LIBM" ;;
+ esac
+ dnl Append $FLOOR_LIBM to TANL_LIBM, avoiding gratuitous duplicates.
+ case " $TANL_LIBM " in
+ *" $FLOOR_LIBM "*) ;;
+ *) TANL_LIBM="$TANL_LIBM $FLOOR_LIBM" ;;
+ esac
+ dnl Append $FLOORL_LIBM to TANL_LIBM, avoiding gratuitous duplicates.
+ case " $TANL_LIBM " in
+ *" $FLOORL_LIBM "*) ;;
+ *) TANL_LIBM="$TANL_LIBM $FLOORL_LIBM" ;;
+ esac
+ fi
fi
AC_SUBST([TANL_LIBM])
])
-# termios_h.m4 serial 3
+# termios_h.m4 serial 4
dnl Copyright (C) 2010-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
HAVE_TERMIOS_H=0
fi
+ dnl Ensure the type pid_t gets defined.
+ AC_REQUIRE([AC_TYPE_PID_T])
+
dnl Check for declarations of anything we want to poison if the
dnl corresponding gnulib module is not in use, and which is not
dnl guaranteed by C89.
# Copyright (C) 2000-2001, 2003-2007, 2009-2011 Free Software Foundation, Inc.
-# serial 4
+# serial 6
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
-# trunc.m4 serial 7
+# trunc.m4 serial 8
dnl Copyright (C) 2007, 2010-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl Persuade glibc <math.h> to declare trunc().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
dnl Test whether trunc() is declared.
- AC_CHECK_DECLS([trunc], , , [#include <math.h>])
+ AC_CHECK_DECLS([trunc], , , [[#include <math.h>]])
if test "$ac_cv_have_decl_trunc" = yes; then
dnl Test whether trunc() can be used without libm.
TRUNC_LIBM=?
-# truncf.m4 serial 6
+# truncf.m4 serial 8
dnl Copyright (C) 2007, 2010-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl Persuade glibc <math.h> to declare truncf().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
dnl Test whether truncf() is declared.
- AC_CHECK_DECLS([truncf], , , [#include <math.h>])
+ AC_CHECK_DECLS([truncf], , , [[#include <math.h>]])
if test "$ac_cv_have_decl_truncf" = yes; then
dnl Test whether truncf() can be used without libm.
TRUNCF_LIBM=?
-# truncl.m4 serial 8
+# truncl.m4 serial 10
dnl Copyright (C) 2007-2008, 2010-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
[
m4_divert_text([DEFAULTS], [gl_truncl_required=plain])
AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
dnl Persuade glibc <math.h> to declare truncl().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
dnl Test whether truncl() is declared.
- AC_CHECK_DECLS([truncl], , , [#include <math.h>])
+ AC_CHECK_DECLS([truncl], , , [[#include <math.h>]])
if test "$ac_cv_have_decl_truncl" = yes; then
dnl Test whether truncl() can be used without libm.
TRUNCL_LIBM=?
HAVE_DECL_TRUNCL=0
fi
if test $HAVE_DECL_TRUNCL = 0 || test $REPLACE_TRUNCL = 1; then
- dnl No libraries are needed to link lib/truncl.c.
- TRUNCL_LIBM=
+ dnl Find libraries needed to link lib/truncl.c.
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
+ AC_REQUIRE([gl_FUNC_TRUNC])
+ TRUNCL_LIBM="$TRUNC_LIBM"
+ else
+ TRUNCL_LIBM=
+ fi
fi
AC_SUBST([TRUNCL_LIBM])
])
-# unistd_h.m4 serial 56
+# unistd_h.m4 serial 62
dnl Copyright (C) 2006-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
fi
AC_SUBST([HAVE_UNISTD_H])
+ dnl Ensure the type pid_t gets defined.
+ AC_REQUIRE([AC_TYPE_PID_T])
+
dnl Check for declarations of anything we want to poison if the
dnl corresponding gnulib module is not in use.
- gl_WARN_ON_USE_PREPARE([[#include <unistd.h>
+ gl_WARN_ON_USE_PREPARE([[
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
/* Some systems declare various items in the wrong headers. */
#if !(defined __GLIBC__ && !defined __UCLIBC__)
# include <fcntl.h>
# include <io.h>
# endif
#endif
- ]], [chown dup2 dup3 environ euidaccess faccessat fchdir fchownat
- fsync ftruncate getcwd getdomainname getdtablesize getgroups
+ ]], [chdir chown dup dup2 dup3 environ euidaccess faccessat fchdir fchownat
+ fdatasync fsync ftruncate getcwd getdomainname getdtablesize getgroups
gethostname getlogin getlogin_r getpagesize getusershell setusershell
endusershell group_member lchown link linkat lseek pipe pipe2 pread pwrite
readlink readlinkat rmdir sleep symlink symlinkat ttyname_r unlink unlinkat
AC_DEFUN([gl_UNISTD_H_DEFAULTS],
[
+ GNULIB_CHDIR=0; AC_SUBST([GNULIB_CHDIR])
GNULIB_CHOWN=0; AC_SUBST([GNULIB_CHOWN])
GNULIB_CLOSE=0; AC_SUBST([GNULIB_CLOSE])
+ GNULIB_DUP=0; AC_SUBST([GNULIB_DUP])
GNULIB_DUP2=0; AC_SUBST([GNULIB_DUP2])
GNULIB_DUP3=0; AC_SUBST([GNULIB_DUP3])
GNULIB_ENVIRON=0; AC_SUBST([GNULIB_ENVIRON])
GNULIB_FACCESSAT=0; AC_SUBST([GNULIB_FACCESSAT])
GNULIB_FCHDIR=0; AC_SUBST([GNULIB_FCHDIR])
GNULIB_FCHOWNAT=0; AC_SUBST([GNULIB_FCHOWNAT])
+ GNULIB_FDATASYNC=0; AC_SUBST([GNULIB_FDATASYNC])
GNULIB_FSYNC=0; AC_SUBST([GNULIB_FSYNC])
GNULIB_FTRUNCATE=0; AC_SUBST([GNULIB_FTRUNCATE])
GNULIB_GETCWD=0; AC_SUBST([GNULIB_GETCWD])
GNULIB_SYMLINK=0; AC_SUBST([GNULIB_SYMLINK])
GNULIB_SYMLINKAT=0; AC_SUBST([GNULIB_SYMLINKAT])
GNULIB_TTYNAME_R=0; AC_SUBST([GNULIB_TTYNAME_R])
- GNULIB_UNISTD_H_GETOPT=0; AC_SUBST([GNULIB_UNISTD_H_GETOPT])
GNULIB_UNISTD_H_NONBLOCKING=0; AC_SUBST([GNULIB_UNISTD_H_NONBLOCKING])
GNULIB_UNISTD_H_SIGPIPE=0; AC_SUBST([GNULIB_UNISTD_H_SIGPIPE])
GNULIB_UNLINK=0; AC_SUBST([GNULIB_UNLINK])
HAVE_FACCESSAT=1; AC_SUBST([HAVE_FACCESSAT])
HAVE_FCHDIR=1; AC_SUBST([HAVE_FCHDIR])
HAVE_FCHOWNAT=1; AC_SUBST([HAVE_FCHOWNAT])
+ HAVE_FDATASYNC=1; AC_SUBST([HAVE_FDATASYNC])
HAVE_FSYNC=1; AC_SUBST([HAVE_FSYNC])
HAVE_FTRUNCATE=1; AC_SUBST([HAVE_FTRUNCATE])
HAVE_GETDTABLESIZE=1; AC_SUBST([HAVE_GETDTABLESIZE])
HAVE_USLEEP=1; AC_SUBST([HAVE_USLEEP])
HAVE_DECL_ENVIRON=1; AC_SUBST([HAVE_DECL_ENVIRON])
HAVE_DECL_FCHDIR=1; AC_SUBST([HAVE_DECL_FCHDIR])
+ HAVE_DECL_FDATASYNC=1; AC_SUBST([HAVE_DECL_FDATASYNC])
HAVE_DECL_GETDOMAINNAME=1; AC_SUBST([HAVE_DECL_GETDOMAINNAME])
HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R])
HAVE_DECL_GETPAGESIZE=1; AC_SUBST([HAVE_DECL_GETPAGESIZE])
-# unlink.m4 serial 8
+# unlink.m4 serial 9
dnl Copyright (C) 2009-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
[
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_CHECK_HEADERS_ONCE([unistd.h])
dnl Detect FreeBSD 7.2, AIX 7.1, Solaris 9 bug.
AC_CACHE_CHECK([whether unlink honors trailing slashes],
[gl_cv_func_unlink_honors_slashes],
fi
AC_RUN_IFELSE(
[AC_LANG_PROGRAM(
- [[#include <unistd.h>
+ [[#if HAVE_UNISTD_H
+ # include <unistd.h>
+ #else /* on Windows with MSVC */
+ # include <io.h>
+ #endif
#include <errno.h>
]],
[[int result = 0;
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <stdlib.h>
- #include <unistd.h>
+ #if HAVE_UNISTD_H
+ # include <unistd.h>
+ #else /* on Windows with MSVC */
+ # include <direct.h>
+ # include <io.h>
+ #endif
int main ()
{
int result = 0;
--- /dev/null
+# unlinkat.m4 serial 1
+dnl Copyright (C) 2004-2011 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Written by Jim Meyering.
+
+AC_DEFUN([gl_FUNC_UNLINKAT],
+[
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_CHECK_FUNCS_ONCE([unlinkat])
+ AC_REQUIRE([gl_FUNC_UNLINK])
+ AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
+ if test $ac_cv_func_unlinkat = no; then
+ HAVE_UNLINKAT=0
+ else
+ if test $gl_cv_func_lstat_dereferences_slashed_symlink != yes; then
+ # Solaris 9 has *at functions, but uniformly mishandles trailing
+ # slash in all of them.
+ REPLACE_UNLINKAT=1
+ else
+ # GNU/Hurd has unlinkat, but it has the same bug as unlink.
+ if test $REPLACE_UNLINK = 1; then
+ REPLACE_UNLINKAT=1
+ fi
+ fi
+ fi
+])
-# valgrind-tests.m4 serial 2
+# valgrind-tests.m4 serial 3
dnl Copyright (C) 2008-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_CHECK_PROGS(VALGRIND, valgrind)
fi
- if test -n "$VALGRIND" && $VALGRIND -q true > /dev/null 2>&1; then
+ OPTS="-q --error-exitcode=1 --leak-check=full"
+
+ if test -n "$VALGRIND" \
+ && $VALGRIND $OPTS $SHELL -c 'exit 0' > /dev/null 2>&1; then
opt_valgrind_tests=yes
- VALGRIND="$VALGRIND -q --error-exitcode=1 --leak-check=full"
+ VALGRIND="$VALGRIND $OPTS"
else
opt_valgrind_tests=no
VALGRIND=
-# vasnprintf.m4 serial 32
+# vasnprintf.m4 serial 34
dnl Copyright (C) 2002-2004, 2006-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_CHECK_FUNCS([snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
dnl Use the _snprintf function only if it is declared (because on NetBSD it
dnl is defined as a weak alias of snprintf; we prefer to use the latter).
- AC_CHECK_DECLS([_snprintf], , , [#include <stdio.h>])
+ AC_CHECK_DECLS([_snprintf], , , [[#include <stdio.h>]])
+ dnl Knowing DBL_EXPBIT0_WORD and DBL_EXPBIT0_BIT enables an optimization
+ dnl in the code for NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE.
+ AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION])
dnl We can avoid a lot of code by assuming that snprintf's return value
dnl conforms to ISO C99. So check that.
AC_REQUIRE([gl_SNPRINTF_RETVAL_C99])
-# vsnprintf-posix.m4 serial 14
+# vsnprintf-posix.m4 serial 15
dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
gl_cv_func_vsnprintf_posix=no
AC_CHECK_FUNCS([vsnprintf])
if test $ac_cv_func_vsnprintf = yes; then
- dnl Assume that if vsnprintf() exists, snprintf() also exists.
+ dnl These tests use vsnprintf() if snprintf() does not exist.
gl_SNPRINTF_TRUNCATION_C99
gl_SNPRINTF_RETVAL_C99
gl_SNPRINTF_DIRECTIVE_N
-# wctob.m4 serial 9
+# wctob.m4 serial 10
dnl Copyright (C) 2008-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
if test $REPLACE_WCTOB = 0; then
dnl IRIX 6.5 has the wctob() function but does not declare it.
- AC_CHECK_DECLS([wctob], [], [], [
+ AC_CHECK_DECLS([wctob], [], [], [[
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
<wchar.h>.
BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
#include <stdio.h>
#include <time.h>
#include <wchar.h>
-])
+]])
if test $ac_cv_have_decl_wctob != yes; then
HAVE_DECL_WCTOB=0
fi
-# wcwidth.m4 serial 20
+# wcwidth.m4 serial 21
dnl Copyright (C) 2006-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_CHECK_HEADERS_ONCE([wchar.h])
AC_CHECK_FUNCS_ONCE([wcwidth])
- AC_CHECK_DECLS([wcwidth], [], [], [
+ AC_CHECK_DECLS([wcwidth], [], [], [[
/* AIX 3.2.5 declares wcwidth in <string.h>. */
#include <string.h>
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
#include <stdio.h>
#include <time.h>
#include <wchar.h>
-])
+]])
if test $ac_cv_have_decl_wcwidth != yes; then
HAVE_DECL_WCWIDTH=0
fi
-# wmemchr.m4 serial 2
+# wmemchr.m4 serial 3
dnl Copyright (C) 2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_WMEMCHR],
[
AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
- AC_CHECK_FUNCS_ONCE([wmemchr])
- if test $ac_cv_func_wmemchr = no; then
+ dnl We cannot use AC_CHECK_FUNCS here, because the MSVC 9 header files
+ dnl provide this function as an inline function definition.
+ AC_CACHE_CHECK([for wmemchr], [gl_cv_func_wmemchr],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+]],
+ [[return ! wmemchr ((const wchar_t *) 0, (wchar_t) ' ', 0);]])
+ ],
+ [gl_cv_func_wmemchr=yes],
+ [gl_cv_func_wmemchr=no])
+ ])
+ if test $gl_cv_func_wmemchr = no; then
HAVE_WMEMCHR=0
fi
])
-# wmemcmp.m4 serial 2
+# wmemcmp.m4 serial 3
dnl Copyright (C) 2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_WMEMCMP],
[
AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
- AC_CHECK_FUNCS_ONCE([wmemcmp])
- if test $ac_cv_func_wmemcmp = no; then
+ dnl We cannot use AC_CHECK_FUNCS here, because the MSVC 9 header files
+ dnl provide this function as an inline function definition.
+ AC_CACHE_CHECK([for wmemcmp], [gl_cv_func_wmemcmp],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+]],
+ [[return ! wmemcmp ((const wchar_t *) 0, (const wchar_t *) 0, 0);]])
+ ],
+ [gl_cv_func_wmemcmp=yes],
+ [gl_cv_func_wmemcmp=no])
+ ])
+ if test $gl_cv_func_wmemcmp = no; then
HAVE_WMEMCMP=0
fi
])
-# wmemcpy.m4 serial 2
+# wmemcpy.m4 serial 3
dnl Copyright (C) 2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_WMEMCPY],
[
AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
- AC_CHECK_FUNCS_ONCE([wmemcpy])
- if test $ac_cv_func_wmemcpy = no; then
+ dnl We cannot use AC_CHECK_FUNCS here, because the MSVC 9 header files
+ dnl provide this function as an inline function definition.
+ AC_CACHE_CHECK([for wmemcpy], [gl_cv_func_wmemcpy],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+]],
+ [[return ! wmemcpy ((wchar_t *) 0, (const wchar_t *) 0, 0);]])
+ ],
+ [gl_cv_func_wmemcpy=yes],
+ [gl_cv_func_wmemcpy=no])
+ ])
+ if test $gl_cv_func_wmemcpy = no; then
HAVE_WMEMCPY=0
fi
])
-# wmemmove.m4 serial 2
+# wmemmove.m4 serial 3
dnl Copyright (C) 2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_WMEMMOVE],
[
AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
- AC_CHECK_FUNCS_ONCE([wmemmove])
- if test $ac_cv_func_wmemmove = no; then
+ dnl We cannot use AC_CHECK_FUNCS here, because the MSVC 9 header files
+ dnl provide this function as an inline function definition.
+ AC_CACHE_CHECK([for wmemmove], [gl_cv_func_wmemmove],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+]],
+ [[return ! wmemmove ((wchar_t *) 0, (const wchar_t *) 0, 0);]])
+ ],
+ [gl_cv_func_wmemmove=yes],
+ [gl_cv_func_wmemmove=no])
+ ])
+ if test $gl_cv_func_wmemmove = no; then
HAVE_WMEMMOVE=0
fi
])
-# wmemset.m4 serial 2
+# wmemset.m4 serial 3
dnl Copyright (C) 2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_WMEMSET],
[
AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
- AC_CHECK_FUNCS_ONCE([wmemset])
- if test $ac_cv_func_wmemset = no; then
+ dnl We cannot use AC_CHECK_FUNCS here, because the MSVC 9 header files
+ dnl provide this function as an inline function definition.
+ AC_CACHE_CHECK([for wmemset], [gl_cv_func_wmemset],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+]],
+ [[return ! wmemset ((wchar_t *) 0, (wchar_t) ' ', 0);]])
+ ],
+ [gl_cv_func_wmemset=yes],
+ [gl_cv_func_wmemset=no])
+ ])
+ if test $gl_cv_func_wmemset = no; then
HAVE_WMEMSET=0
fi
])
-# write.m4 serial 3
+# write.m4 serial 4
dnl Copyright (C) 2008-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_DEFUN([gl_FUNC_WRITE],
[
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ AC_REQUIRE([gl_MSVC_INVAL])
+ if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+ REPLACE_WRITE=1
+ fi
dnl This ifdef is just an optimization, to avoid performing a configure
dnl check whose result is not used. It does not make the test of
dnl GNULIB_UNISTD_H_SIGPIPE or GNULIB_SIGPIPE redundant.
fi
])
])
+
+# Prerequisites of lib/write.c.
+AC_DEFUN([gl_PREREQ_WRITE],
+[
+ AC_REQUIRE([AC_C_INLINE])
+])
Depends-on:
sys_socket
+socketlib
errno [test "$ac_cv_header_winsock2_h" = yes]
+msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes]
configure.ac:
AC_REQUIRE([gl_HEADER_SYS_SOCKET])
Include:
<sys/socket.h>
+Link:
+$(LIBSOCKET)
+
License:
LGPLv2+
--- /dev/null
+Files:
+tests/test-accept.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+netinet_in
+sockets
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-accept
+check_PROGRAMS += test-accept
+test_accept_LDADD = $(LDADD) @LIBSOCKET@
fcntl-h
binary-io
extensions
+msvc-nothrow
configure.ac:
gl_FUNC_ACCEPT4
Include:
<sys/socket.h>
+Link:
+$(LIBSOCKET)
+
License:
LGPL
--- /dev/null
+Files:
+tests/test-accept4.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+fcntl-h
+netinet_in
+binary-io
+sockets
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-accept4
+check_PROGRAMS += test-accept4
+test_accept4_LDADD = $(LDADD) @LIBSOCKET@
Depends-on:
error
+fstat
gettext-h
quote
sys_stat
Files:
tests/test-file-has-acl.sh
+tests/test-file-has-acl-1.sh
+tests/test-file-has-acl-2.sh
tests/test-set-mode-acl.sh
+tests/test-set-mode-acl-1.sh
+tests/test-set-mode-acl-2.sh
tests/test-copy-acl.sh
+tests/test-copy-acl-1.sh
+tests/test-copy-acl-2.sh
tests/test-file-has-acl.c
tests/test-set-mode-acl.c
tests/test-copy-acl.c
AC_CHECK_DECLS_ONCE([alarm])
Makefile.am:
-TESTS += test-file-has-acl.sh test-set-mode-acl.sh test-copy-acl.sh
+TESTS += \
+ test-file-has-acl.sh test-file-has-acl-1.sh test-file-has-acl-2.sh \
+ test-set-mode-acl.sh test-set-mode-acl-1.sh test-set-mode-acl-2.sh \
+ test-copy-acl.sh test-copy-acl-1.sh test-copy-acl-2.sh
TESTS_ENVIRONMENT += USE_ACL=$(USE_ACL)
check_PROGRAMS += test-file-has-acl test-set-mode-acl test-copy-acl test-sameacls
test_file_has_acl_LDADD = $(LDADD) $(LIB_ACL)
acos() function: inverse cosine function.
Files:
+m4/acos.m4
m4/mathfunc.m4
Depends-on:
configure.ac:
-gl_COMMON_DOUBLE_MATHFUNC([acos])
+gl_FUNC_ACOS
Makefile.am:
--- /dev/null
+Description:
+acosf() function: inverse cosine function.
+
+Files:
+lib/acosf.c
+m4/acosf.m4
+
+Depends-on:
+math
+acos [test $HAVE_ACOSF = 0]
+
+configure.ac:
+gl_FUNC_ACOSF
+if test $HAVE_ACOSF = 0; then
+ AC_LIBOBJ([acosf])
+fi
+gl_MATH_MODULE_INDICATOR([acosf])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(ACOSF_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-acosf.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-acosf
+check_PROGRAMS += test-acosf
+test_acosf_LDADD = $(LDADD) @ACOSF_LIBM@
Depends-on:
math
extensions
-asinl [test $HAVE_ACOSL = 0]
-sqrtl [test $HAVE_ACOSL = 0]
+acos [test $HAVE_ACOSL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1]
+asinl [test $HAVE_ACOSL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+sqrtl [test $HAVE_ACOSL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
configure.ac:
gl_FUNC_ACOSL
Files:
lib/areadlink.h
lib/areadlinkat.c
+lib/at-func.c
Depends-on:
areadlink
careadlinkat
readlinkat
+at-internal
+dosname
+errno
+extensions
+fchdir
+fcntl-h
+openat-die
+openat-h
+save-cwd
configure.ac:
gl_MODULE_INDICATOR([areadlinkat])
Files:
lib/areadlink.h
lib/areadlinkat-with-size.c
+lib/at-func.c
Depends-on:
areadlink-with-size
stdint
readlinkat
+at-internal
+dosname
+errno
+extensions
+fchdir
+fcntl-h
+openat-die
+openat-h
+save-cwd
+unistd
configure.ac:
gl_MODULE_INDICATOR([areadlinkat-with-size])
extensions
vsnprintf
sleep
+stdalign
strerror
memchr
memmove
Include:
"argv-iter.h"
-License
+License:
GPL
Maintainer:
-e 's/@''GNULIB_INET_PTON''@/$(GNULIB_INET_PTON)/g' \
-e 's|@''HAVE_DECL_INET_NTOP''@|$(HAVE_DECL_INET_NTOP)|g' \
-e 's|@''HAVE_DECL_INET_PTON''@|$(HAVE_DECL_INET_PTON)|g' \
+ -e 's|@''REPLACE_INET_NTOP''@|$(REPLACE_INET_NTOP)|g' \
+ -e 's|@''REPLACE_INET_PTON''@|$(REPLACE_INET_PTON)|g' \
-e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
-e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
-e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
asin() function: inverse sine function.
Files:
+m4/asin.m4
m4/mathfunc.m4
Depends-on:
configure.ac:
-gl_COMMON_DOUBLE_MATHFUNC([asin])
+gl_FUNC_ASIN
Makefile.am:
--- /dev/null
+Description:
+asinf() function: inverse sine function.
+
+Files:
+lib/asinf.c
+m4/asinf.m4
+
+Depends-on:
+math
+asin [test $HAVE_ASINF = 0]
+
+configure.ac:
+gl_FUNC_ASINF
+if test $HAVE_ASINF = 0; then
+ AC_LIBOBJ([asinf])
+fi
+gl_MATH_MODULE_INDICATOR([asinf])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(ASINF_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-asinf.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-asinf
+check_PROGRAMS += test-asinf
+test_asinf_LDADD = $(LDADD) @ASINF_LIBM@
Depends-on:
math
extensions
-sqrtl [test $HAVE_ASINL = 0]
+asin [test $HAVE_ASINL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1]
+sqrtl [test $HAVE_ASINL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
configure.ac:
gl_FUNC_ASINL
--- /dev/null
+Description:
+Internal functions for dealing with files relative to a directory.
+
+Files:
+lib/openat-priv.h
+lib/openat-proc.c
+
+Depends-on:
+errno
+fcntl-h
+intprops
+open
+sys_stat
+unistd
+
+configure.ac:
+AC_LIBOBJ([openat-proc])
+
+Makefile.am:
+
+Include:
+"openat-priv.h"
+
+License:
+GPL
+
+Maintainer:
+Jim Meyering, Eric Blake
atan() function: inverse tangent function.
Files:
+m4/atan.m4
m4/mathfunc.m4
Depends-on:
configure.ac:
-gl_COMMON_DOUBLE_MATHFUNC([atan])
+gl_FUNC_ATAN
Makefile.am:
atan2() function: angle of a point in the plane.
Files:
+m4/atan2.m4
m4/mathfunc.m4
Depends-on:
configure.ac:
-gl_COMMON_DOUBLE_MATHFUNC([atan2])
+gl_FUNC_ATAN2
Makefile.am:
--- /dev/null
+Description:
+atan2f() function: angle of a point in the plane.
+
+Files:
+lib/atan2f.c
+m4/atan2f.m4
+
+Depends-on:
+math
+atan2 [test $HAVE_ATAN2F = 0]
+
+configure.ac:
+gl_FUNC_ATAN2F
+if test $HAVE_ATAN2F = 0; then
+ AC_LIBOBJ([atan2f])
+fi
+gl_MATH_MODULE_INDICATOR([atan2f])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(ATAN2F_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-atan2f.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-atan2f
+check_PROGRAMS += test-atan2f
+test_atan2f_LDADD = $(LDADD) @ATAN2F_LIBM@
--- /dev/null
+Description:
+atanf() function: inverse tangent function.
+
+Files:
+lib/atanf.c
+m4/atanf.m4
+
+Depends-on:
+math
+atan [test $HAVE_ATANF = 0]
+
+configure.ac:
+gl_FUNC_ATANF
+if test $HAVE_ATANF = 0; then
+ AC_LIBOBJ([atanf])
+fi
+gl_MATH_MODULE_INDICATOR([atanf])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(ATANF_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-atanf.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-atanf
+check_PROGRAMS += test-atanf
+test_atanf_LDADD = $(LDADD) @ATANF_LIBM@
Depends-on:
math
extensions
-isnanl [test $HAVE_ATANL = 0]
+atan [test $HAVE_ATANL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1]
+isnanl [test $HAVE_ATANL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
configure.ac:
gl_FUNC_ATANL
Depends-on:
argmatch
+closedir
d-ino
dirent-safer
dirname-lgpl
memcmp
+opendir
+readdir
stdbool
configure.ac:
--- /dev/null
+Description:
+Encode binary data using printable characters (base32).
+
+Files:
+lib/base32.h
+lib/base32.c
+m4/base32.m4
+
+Depends-on:
+stdbool
+memchr
+
+configure.ac:
+gl_FUNC_BASE32
+
+Makefile.am:
+lib_SOURCES += base32.h base32.c
+
+Include:
+"base32.h"
+
+License:
+LGPLv2+
+
+Maintainer:
+TODO
--- /dev/null
+Files:
+tests/test-base32.c
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-base32
+check_PROGRAMS += test-base32
Depends-on:
sys_socket
+socketlib
errno [test "$ac_cv_header_winsock2_h" = yes]
+msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes]
configure.ac:
AC_REQUIRE([gl_HEADER_SYS_SOCKET])
Include:
<sys/socket.h>
+Link:
+$(LIBSOCKET)
+
License:
LGPLv2+
--- /dev/null
+Files:
+tests/test-bind.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+netinet_in
+sockets
+inet_pton
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-bind
+check_PROGRAMS += test-bind
+test_bind_LDADD = $(LDADD) @LIBSOCKET@ $(INET_PTON_LIB)
tests/test-ceil1.c
tests/test-ceil2.c
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
tests/test-ceilf1.c
tests/test-ceilf2.c
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
Depends-on:
math
extensions
-float [test $HAVE_DECL_CEILL = 0 || test $REPLACE_CEILL = 1]
+ceil [{ test $HAVE_DECL_CEILL = 0 || test $REPLACE_CEILL = 1; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1]
+float [{ test $HAVE_DECL_CEILL = 0 || test $REPLACE_CEILL = 1; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
configure.ac:
gl_FUNC_CEILL
Files:
tests/test-ceill.c
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
--- /dev/null
+Description:
+chdir() function: switch to another current directory
+
+Files:
+
+Depends-on:
+unistd
+
+configure.ac:
+gl_UNISTD_MODULE_INDICATOR([chdir])
+
+Makefile.am:
+
+Include:
+<unistd.h>
+
+License:
+LGPLv2+
+
+Maintainer:
+Bruno Haible
lib/chdir-long.h
lib/chdir-long.c
m4/chdir-long.m4
+m4/pathmax.m4
Depends-on:
unistd
pathmax
+chdir
atexit [test $gl_cv_have_arbitrary_file_name_length_limit = yes]
fchdir [test $gl_cv_have_arbitrary_file_name_length_limit = yes]
fcntl-h [test $gl_cv_have_arbitrary_file_name_length_limit = yes]
errno
fchdir
fcntl-h
+fstat
open
same-inode
stdbool
--- /dev/null
+Files:
+tests/test-chdir.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-chdir
+check_PROGRAMS += test-chdir
Depends-on:
unistd
+fstat [test $HAVE_CHOWN = 0 || test $REPLACE_CHOWN = 1]
open [test $HAVE_CHOWN = 0 || test $REPLACE_CHOWN = 1]
stat [test $HAVE_CHOWN = 0 || test $REPLACE_CHOWN = 1]
stdbool [test $HAVE_CHOWN = 0 || test $REPLACE_CHOWN = 1]
Depends-on:
binary-io
+msvc-nothrow
configure.ac:
Depends-on:
unistd
fd-hook [test $REPLACE_CLOSE = 1]
+msvc-inval [test $REPLACE_CLOSE = 1]
configure.ac:
gl_FUNC_CLOSE
--- /dev/null
+Files:
+tests/test-close.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-close
+check_PROGRAMS += test-close
--- /dev/null
+Description:
+closedir() function: stop reading the entries of a directory
+
+Files:
+lib/closedir.c
+lib/dirent-private.h
+m4/closedir.m4
+
+Depends-on:
+dirent
+
+configure.ac:
+gl_FUNC_CLOSEDIR
+if test $HAVE_CLOSEDIR = 0 || test $REPLACE_CLOSEDIR = 1; then
+ AC_LIBOBJ([closedir])
+fi
+gl_DIRENT_MODULE_INDICATOR([closedir])
+
+Makefile.am:
+
+Include:
+<dirent.h>
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
Depends-on:
sys_socket
+socketlib
errno [test "$ac_cv_header_winsock2_h" = yes]
+msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes]
configure.ac:
AC_REQUIRE([gl_HEADER_SYS_SOCKET])
Include:
<sys/socket.h>
+Link:
+$(LIBSOCKET)
+
License:
LGPLv2+
--- /dev/null
+Files:
+tests/test-connect.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+netinet_in
+sockets
+inet_pton
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-connect
+check_PROGRAMS += test-connect
+test_connect_LDADD = $(LDADD) @LIBSOCKET@ $(INET_PTON_LIB)
acl
binary-io
error
+fstat
full-write
gettext-h
open
Files:
tests/test-copy-file.sh
+tests/test-copy-file-1.sh
+tests/test-copy-file-2.sh
tests/test-copy-file.c
tests/macros.h
configure.ac:
Makefile.am:
-TESTS += test-copy-file.sh
+TESTS += test-copy-file.sh test-copy-file-1.sh test-copy-file-2.sh
TESTS_ENVIRONMENT += USE_ACL=$(USE_ACL)
check_PROGRAMS += test-copy-file
test_copy_file_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@
Description:
-copysign() function: copy sign.
+copysign() function: copy sign into another 'double' number.
Files:
+lib/copysign.c
+m4/copysign.m4
m4/mathfunc.m4
Depends-on:
+math
+signbit [test $HAVE_COPYSIGN = 0]
configure.ac:
-gl_MATHFUNC([copysign], [double], [(double, double)])
+gl_FUNC_COPYSIGN
+if test $HAVE_COPYSIGN = 0; then
+ AC_LIBOBJ([copysign])
+fi
+gl_MATH_MODULE_INDICATOR([copysign])
Makefile.am:
--- /dev/null
+Description:
+copysignf() function: copy sign into another 'float' number.
+
+Files:
+lib/copysignf.c
+m4/copysignf.m4
+m4/mathfunc.m4
+
+Depends-on:
+math
+signbit [test $HAVE_COPYSIGNF = 0]
+
+configure.ac:
+gl_FUNC_COPYSIGNF
+if test $HAVE_COPYSIGNF = 0; then
+ AC_LIBOBJ([copysignf])
+fi
+gl_MATH_MODULE_INDICATOR([copysignf])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(COPYSIGNF_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-copysignf.c
+tests/signature.h
+tests/minus-zero.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-copysignf
+check_PROGRAMS += test-copysignf
+test_copysignf_LDADD = $(LDADD) @COPYSIGNF_LIBM@
--- /dev/null
+Description:
+copysignl() function: copy sign into another 'long double' number.
+
+Files:
+lib/copysignl.c
+m4/copysignl.m4
+m4/mathfunc.m4
+
+Depends-on:
+math
+copysign [test $HAVE_COPYSIGNL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1]
+signbit [test $HAVE_COPYSIGNL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+
+configure.ac:
+gl_FUNC_COPYSIGNL
+if test $HAVE_COPYSIGNL = 0; then
+ AC_LIBOBJ([copysignl])
+fi
+gl_MATH_MODULE_INDICATOR([copysignl])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(COPYSIGNL_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-copysignl.c
+tests/signature.h
+tests/minus-zero.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-copysignl
+check_PROGRAMS += test-copysignl
+test_copysignl_LDADD = $(LDADD) @COPYSIGNL_LIBM@
cos() function: cosine function.
Files:
+m4/cos.m4
m4/mathfunc.m4
Depends-on:
configure.ac:
-gl_COMMON_DOUBLE_MATHFUNC([cos])
+gl_FUNC_COS
Makefile.am:
--- /dev/null
+Description:
+cosf() function: cosine function.
+
+Files:
+lib/cosf.c
+m4/cosf.m4
+
+Depends-on:
+math
+cos [test $HAVE_COSF = 0]
+
+configure.ac:
+gl_FUNC_COSF
+if test $HAVE_COSF = 0; then
+ AC_LIBOBJ([cosf])
+fi
+gl_MATH_MODULE_INDICATOR([cosf])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(COSF_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-cosf.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-cosf
+check_PROGRAMS += test-cosf
+test_cosf_LDADD = $(LDADD) @COSF_LIBM@
cosh() function: hyperbolic cosine function.
Files:
+m4/cosh.m4
m4/mathfunc.m4
Depends-on:
configure.ac:
-gl_COMMON_DOUBLE_MATHFUNC([cosh])
+gl_FUNC_COSH
Makefile.am:
--- /dev/null
+Description:
+coshf() function: hyperbolic cosine function.
+
+Files:
+lib/coshf.c
+m4/coshf.m4
+
+Depends-on:
+math
+cosh [test $HAVE_COSHF = 0]
+
+configure.ac:
+gl_FUNC_COSHF
+if test $HAVE_COSHF = 0; then
+ AC_LIBOBJ([coshf])
+fi
+gl_MATH_MODULE_INDICATOR([coshf])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(COSHF_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-coshf.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-coshf
+check_PROGRAMS += test-coshf
+test_coshf_LDADD = $(LDADD) @COSHF_LIBM@
Depends-on:
math
extensions
-float [test $HAVE_COSL = 0]
-isnanl [test $HAVE_COSL = 0]
-floor [test $HAVE_COSL = 0]
-floorl [test $HAVE_COSL = 0]
+cos [test $HAVE_COSL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1]
+float [test $HAVE_COSL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+isnanl [test $HAVE_COSL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+floor [test $HAVE_COSL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+floorl [test $HAVE_COSL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
configure.ac:
gl_FUNC_COSL
if test $HAVE_COSL = 0; then
AC_LIBOBJ([cosl])
- AC_LIBOBJ([sincosl])
- AC_LIBOBJ([trigl])
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0; then
+ AC_LIBOBJ([sincosl])
+ AC_LIBOBJ([trigl])
+ fi
fi
gl_MATH_MODULE_INDICATOR([cosl])
Files:
m4/gc-arcfour.m4
-lib/arcfour.h
-lib/arcfour.c
Depends-on:
-stdint
crypto/gc
+crypto/arcfour [test "$ac_cv_libgcrypt" != yes]
configure.ac:
gl_GC_ARCFOUR
-if test "$ac_cv_libgcrypt" != yes; then
- AC_LIBOBJ([arcfour])
-fi
gl_MODULE_INDICATOR([gc-arcfour])
Makefile.am:
Files:
m4/gc-arctwo.m4
-lib/arctwo.h
-lib/arctwo.c
-m4/arctwo.m4
Depends-on:
-stdint
crypto/gc
-bitrotate
+crypto/arctwo [test "$ac_cv_libgcrypt" != yes]
configure.ac:
gl_GC_ARCTWO
-if test "$ac_cv_libgcrypt" != yes; then
- AC_LIBOBJ([arctwo])
-fi
gl_MODULE_INDICATOR([gc-arctwo])
Makefile.am:
Files:
m4/gc-des.m4
-lib/des.h
-lib/des.c
Depends-on:
-stdint
-stdbool
crypto/gc
+crypto/des [test "$ac_cv_libgcrypt" != yes]
configure.ac:
gl_GC_DES
-if test "$ac_cv_libgcrypt" != yes; then
- AC_LIBOBJ([des])
-fi
gl_MODULE_INDICATOR([gc-des])
Makefile.am:
Files:
m4/gc-hmac-md5.m4
-lib/md5.h
-lib/md5.c
-m4/md5.m4
-lib/hmac.h
-lib/hmac-md5.c
-lib/memxor.h
-lib/memxor.c
-m4/memxor.m4
Depends-on:
-stdint
crypto/gc
+crypto/hmac-md5 [test "$ac_cv_libgcrypt" != yes]
configure.ac:
gl_GC_HMAC_MD5
-if test "$ac_cv_libgcrypt" != yes; then
- AC_LIBOBJ([md5])
- AC_LIBOBJ([hmac-md5])
- AC_LIBOBJ([memxor])
-fi
gl_MODULE_INDICATOR([gc-hmac-md5])
Makefile.am:
Files:
m4/gc-hmac-sha1.m4
-lib/sha1.h
-lib/sha1.c
-m4/sha1.m4
-lib/hmac.h
-lib/hmac-sha1.c
-lib/memxor.h
-lib/memxor.c
-m4/memxor.m4
Depends-on:
-stdint
crypto/gc
+crypto/hmac-sha1 [test "$ac_cv_libgcrypt" != yes]
configure.ac:
gl_GC_HMAC_SHA1
-if test "$ac_cv_libgcrypt" != yes; then
- AC_LIBOBJ([sha1])
- AC_LIBOBJ([hmac-sha1])
- AC_LIBOBJ([memxor])
-fi
gl_MODULE_INDICATOR([gc-hmac-sha1])
Makefile.am:
m4/gc-md2.m4
Depends-on:
-stdint
-minmax
crypto/gc
crypto/md2
Files:
m4/gc-md4.m4
-lib/md4.h
-lib/md4.c
-m4/md4.m4
Depends-on:
-stdint
crypto/gc
+crypto/md4 [test "$ac_cv_libgcrypt" != yes]
configure.ac:
gl_GC_MD4
-if test "$ac_cv_libgcrypt" != yes; then
- AC_LIBOBJ([md4])
-fi
gl_MODULE_INDICATOR([gc-md4])
Makefile.am:
Files:
m4/gc-md5.m4
-lib/md5.h
-lib/md5.c
-m4/md5.m4
Depends-on:
-stdint
crypto/gc
+crypto/md5 [test "$ac_cv_libgcrypt" != yes]
configure.ac:
gl_GC_MD5
-if test "$ac_cv_libgcrypt" != yes; then
- AC_LIBOBJ([md5])
-fi
gl_MODULE_INDICATOR([gc-md5])
Makefile.am:
Files:
m4/gc-rijndael.m4
-lib/rijndael-alg-fst.c
-lib/rijndael-alg-fst.h
-lib/rijndael-api-fst.c
-lib/rijndael-api-fst.h
Depends-on:
-stdint
crypto/gc
+crypto/rijndael [test "$ac_cv_libgcrypt" != yes]
configure.ac:
gl_GC_RIJNDAEL
-if test "$ac_cv_libgcrypt" != yes; then
- AC_LIBOBJ([rijndael-alg-fst])
- AC_LIBOBJ([rijndael-api-fst])
-fi
gl_MODULE_INDICATOR([gc-rijndael])
Makefile.am:
Files:
m4/gc-sha1.m4
-lib/sha1.h
-lib/sha1.c
-m4/sha1.m4
Depends-on:
-stdint
crypto/gc
+crypto/sha1 [test "$ac_cv_libgcrypt" != yes]
configure.ac:
gl_GC_SHA1
-if test "$ac_cv_libgcrypt" != yes; then
- AC_LIBOBJ([sha1])
-fi
gl_MODULE_INDICATOR([gc-sha1])
Makefile.am:
m4/md4.m4
Depends-on:
+stdalign
stdint
configure.ac:
m4/md5.m4
Depends-on:
+stdalign
stdint
configure.ac:
m4/sha1.m4
Depends-on:
+stdalign
stdint
configure.ac:
m4/sha256.m4
Depends-on:
+stdalign
stdint
configure.ac:
m4/sha512.m4
Depends-on:
+stdalign
stdint
u64
Include:
"di-set.h"
-License
+License:
GPL
Maintainer:
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
+ -e 's|@''HAVE_DIRENT_H''@|$(HAVE_DIRENT_H)|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_DIRENT_H''@|$(NEXT_DIRENT_H)|g' \
+ -e 's/@''GNULIB_OPENDIR''@/$(GNULIB_OPENDIR)/g' \
+ -e 's/@''GNULIB_READDIR''@/$(GNULIB_READDIR)/g' \
+ -e 's/@''GNULIB_REWINDDIR''@/$(GNULIB_REWINDDIR)/g' \
+ -e 's/@''GNULIB_CLOSEDIR''@/$(GNULIB_CLOSEDIR)/g' \
-e 's/@''GNULIB_DIRFD''@/$(GNULIB_DIRFD)/g' \
-e 's/@''GNULIB_FDOPENDIR''@/$(GNULIB_FDOPENDIR)/g' \
-e 's/@''GNULIB_SCANDIR''@/$(GNULIB_SCANDIR)/g' \
-e 's/@''GNULIB_ALPHASORT''@/$(GNULIB_ALPHASORT)/g' \
+ -e 's/@''HAVE_OPENDIR''@/$(HAVE_OPENDIR)/g' \
+ -e 's/@''HAVE_READDIR''@/$(HAVE_READDIR)/g' \
+ -e 's/@''HAVE_REWINDDIR''@/$(HAVE_REWINDDIR)/g' \
+ -e 's/@''HAVE_CLOSEDIR''@/$(HAVE_CLOSEDIR)/g' \
-e 's|@''HAVE_DECL_DIRFD''@|$(HAVE_DECL_DIRFD)|g' \
-e 's|@''HAVE_DECL_FDOPENDIR''@|$(HAVE_DECL_FDOPENDIR)|g' \
-e 's|@''HAVE_FDOPENDIR''@|$(HAVE_FDOPENDIR)|g' \
-e 's|@''HAVE_SCANDIR''@|$(HAVE_SCANDIR)|g' \
-e 's|@''HAVE_ALPHASORT''@|$(HAVE_ALPHASORT)|g' \
+ -e 's|@''REPLACE_OPENDIR''@|$(REPLACE_OPENDIR)|g' \
-e 's|@''REPLACE_CLOSEDIR''@|$(REPLACE_CLOSEDIR)|g' \
-e 's|@''REPLACE_DIRFD''@|$(REPLACE_DIRFD)|g' \
-e 's|@''REPLACE_FDOPENDIR''@|$(REPLACE_FDOPENDIR)|g' \
- -e 's|@''REPLACE_OPENDIR''@|$(REPLACE_OPENDIR)|g' \
-e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
-e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
-e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
Depends-on:
dirent
+closedir
dirfd
+opendir
unistd-safer
configure.ac:
Depends-on:
dup2
+opendir
+closedir
configure.ac:
Files:
m4/dprintf-posix.m4
m4/printf.m4
+m4/math_h.m4
Depends-on:
dprintf
tests/test-printf-posix.output
tests/test-dprintf-posix2.sh
tests/test-dprintf-posix2.c
+tests/infinity.h
tests/signature.h
tests/macros.h
--- /dev/null
+Files:
+tests/test-dprintf.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-dprintf
+check_PROGRAMS += test-dprintf
--- /dev/null
+Description:
+dup() function: duplicate an open file descriptor.
+
+Files:
+lib/dup.c
+m4/dup.m4
+
+Depends-on:
+unistd
+msvc-inval [test $REPLACE_DUP = 1]
+
+configure.ac:
+gl_FUNC_DUP
+if test $REPLACE_DUP = 1; then
+ AC_LIBOBJ([dup])
+ gl_PREREQ_DUP
+fi
+gl_UNISTD_MODULE_INDICATOR([dup])
+
+Makefile.am:
+
+Include:
+<unistd.h>
+
+License:
+LGPLv2+
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-dup.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-dup
+check_PROGRAMS += test-dup
Depends-on:
unistd
dup2-obsolete
+msvc-inval [test $HAVE_DUP2 = 0 || test $REPLACE_DUP2 = 1]
+msvc-nothrow [test $HAVE_DUP2 = 0 || test $REPLACE_DUP2 = 1]
configure.ac:
gl_FUNC_DUP2
if test $HAVE_DUP2 = 0 || test $REPLACE_DUP2 = 1; then
AC_LIBOBJ([dup2])
+ gl_PREREQ_DUP2
fi
gl_UNISTD_MODULE_INDICATOR([dup2])
Depends-on:
binary-io
+close
+fcntl-h
+msvc-nothrow
open
configure.ac:
tests/macros.h
Depends-on:
+msvc-nothrow
open
+close
configure.ac:
Depends-on:
strerror [test $ac_cv_lib_error_at_line = no]
unistd [test $ac_cv_lib_error_at_line = no]
+msvc-nothrow [test $ac_cv_lib_error_at_line = no]
configure.ac:
gl_ERROR
Files:
+tests/init.sh
tests/test-exclude.c
tests/test-exclude1.sh
tests/test-exclude2.sh
fatal-signal
wait-process
gettext-h
+msvc-nothrow
spawn
posix_spawnp
posix_spawn_file_actions_init
exp() function: exponential function.
Files:
+m4/exp.m4
m4/mathfunc.m4
Depends-on:
configure.ac:
-gl_COMMON_DOUBLE_MATHFUNC([exp])
+gl_FUNC_EXP
Makefile.am:
--- /dev/null
+Description:
+expf() function: exponential function.
+
+Files:
+lib/expf.c
+m4/expf.m4
+
+Depends-on:
+math
+exp [test $HAVE_EXPF = 0]
+
+configure.ac:
+gl_FUNC_EXPF
+if test $HAVE_EXPF = 0; then
+ AC_LIBOBJ([expf])
+fi
+gl_MATH_MODULE_INDICATOR([expf])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(EXPF_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-expf.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-expf
+check_PROGRAMS += test-expf
+test_expf_LDADD = $(LDADD) @EXPF_LIBM@
Depends-on:
math
extensions
-float [test $HAVE_EXPL = 0]
-floorl [test $HAVE_EXPL = 0]
+exp [test $HAVE_EXPL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1]
+float [test $HAVE_EXPL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+floorl [test $HAVE_EXPL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
configure.ac:
gl_FUNC_EXPL
fabs() function: absolute value.
Files:
+m4/fabs.m4
m4/mathfunc.m4
Depends-on:
configure.ac:
-gl_MATHFUNC([fabs], [double], [(double)])
+gl_FUNC_FABS
Makefile.am:
--- /dev/null
+Description:
+fabsf() function: absolute value.
+
+Files:
+lib/fabsf.c
+m4/fabsf.m4
+m4/mathfunc.m4
+
+Depends-on:
+math
+fabs [test $HAVE_FABSF = 0]
+
+configure.ac:
+gl_FUNC_FABSF
+if test $HAVE_FABSF = 0; then
+ AC_LIBOBJ([fabsf])
+fi
+gl_MATH_MODULE_INDICATOR([fabsf])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(FABSF_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-fabsf.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-fabsf
+check_PROGRAMS += test-fabsf
+test_fabsf_LDADD = $(LDADD) @FABSF_LIBM@
Files:
lib/faccessat.c
+lib/at-func.c
+lib/openat-priv.h
m4/faccessat.m4
Depends-on:
unistd
extensions
-fcntl-h
+at-internal [test $HAVE_FACCESSAT = 0]
+dosname [test $HAVE_FACCESSAT = 0]
+errno [test $HAVE_FACCESSAT = 0]
+fchdir [test $HAVE_FACCESSAT = 0]
+fcntl-h [test $HAVE_FACCESSAT = 0]
+openat-die [test $HAVE_FACCESSAT = 0]
+openat-h [test $HAVE_FACCESSAT = 0]
+save-cwd [test $HAVE_FACCESSAT = 0]
euidaccess [test $HAVE_FACCESSAT = 0]
-openat [test $HAVE_FACCESSAT = 0]
configure.ac:
gl_FUNC_FACCESSAT
+if test $HAVE_FACCESSAT = 0; then
+ AC_LIBOBJ([faccessat])
+ gl_PREREQ_FACCESSAT
+fi
gl_MODULE_INDICATOR([faccessat])
gl_UNISTD_MODULE_INDICATOR([faccessat])
--- /dev/null
+Files:
+tests/test-faccessat.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+fcntl-h
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-faccessat
+check_PROGRAMS += test-faccessat
+test_faccessat_LDADD = $(LDADD) $(LIB_EACCESS) @LIBINTL@
Depends-on:
unistd
+chdir [test $HAVE_FCHDIR = 0]
close [test $HAVE_FCHDIR = 0]
dirent [test $HAVE_FCHDIR = 0]
dirfd [test $HAVE_FCHDIR = 0]
fcntl [test $HAVE_FCHDIR = 0]
fcntl-h [test $HAVE_FCHDIR = 0]
filenamecat-lgpl [test $HAVE_FCHDIR = 0]
+fstat [test $HAVE_FCHDIR = 0]
getcwd-lgpl [test $HAVE_FCHDIR = 0]
malloc-posix [test $HAVE_FCHDIR = 0]
open [test $HAVE_FCHDIR = 0]
Makefile.am:
TESTS += test-fchdir
check_PROGRAMS += test-fchdir
+test_fchdir_LDADD = $(LDADD) $(LIBINTL)
--- /dev/null
+Files:
+tests/test-fchmod.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-fchmod
+check_PROGRAMS += test-fchmod
--- /dev/null
+Description:
+fchmodat() function: Change access permissions of a file at a directory.
+
+Files:
+lib/fchmodat.c
+lib/at-func.c
+lib/openat-priv.h
+m4/fchmodat.m4
+
+Depends-on:
+sys_stat
+extensions
+at-internal [test $HAVE_FCHMODAT = 0]
+dosname [test $HAVE_FCHMODAT = 0]
+errno [test $HAVE_FCHMODAT = 0]
+fchdir [test $HAVE_FCHMODAT = 0]
+fcntl-h [test $HAVE_FCHMODAT = 0]
+openat-die [test $HAVE_FCHMODAT = 0]
+openat-h [test $HAVE_FCHMODAT = 0]
+save-cwd [test $HAVE_FCHMODAT = 0]
+
+configure.ac:
+gl_FUNC_FCHMODAT
+if test $HAVE_FCHMODAT = 0; then
+ AC_LIBOBJ([fchmodat])
+fi
+AC_REQUIRE([AC_C_INLINE]) dnl because 'inline' is used in lib/openat.h
+gl_MODULE_INDICATOR([fchmodat]) dnl for lib/openat.h
+gl_SYS_STAT_MODULE_INDICATOR([fchmodat])
+
+Makefile.am:
+
+Include:
+<sys/stat.h>
+
+License:
+GPL
+
+Maintainer:
+Jim Meyering, Eric Blake
--- /dev/null
+Files:
+tests/test-fchmodat.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-fchmodat
+check_PROGRAMS += test-fchmodat
+test_fchmodat_LDADD = $(LDADD) @LIBINTL@
--- /dev/null
+Files:
+tests/test-fchown.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-fchown
+check_PROGRAMS += test-fchown
--- /dev/null
+Description:
+fchownat() function: Change the owner of a file at a directory.
+
+Files:
+lib/fchownat.c
+lib/at-func.c
+lib/openat-priv.h
+m4/fchownat.m4
+
+Depends-on:
+unistd
+extensions
+at-internal [test $HAVE_FCHOWNAT = 0 || test $REPLACE_FCHOWNAT = 1]
+dosname [test $HAVE_FCHOWNAT = 0 || test $REPLACE_FCHOWNAT = 1]
+errno [test $HAVE_FCHOWNAT = 0 || test $REPLACE_FCHOWNAT = 1]
+fchdir [test $HAVE_FCHOWNAT = 0 || test $REPLACE_FCHOWNAT = 1]
+fcntl-h [test $HAVE_FCHOWNAT = 0 || test $REPLACE_FCHOWNAT = 1]
+lchown [test $HAVE_FCHOWNAT = 0 || test $REPLACE_FCHOWNAT = 1]
+openat-die [test $HAVE_FCHOWNAT = 0 || test $REPLACE_FCHOWNAT = 1]
+openat-h [test $HAVE_FCHOWNAT = 0 || test $REPLACE_FCHOWNAT = 1]
+save-cwd [test $HAVE_FCHOWNAT = 0 || test $REPLACE_FCHOWNAT = 1]
+fstatat [test $REPLACE_FCHOWNAT = 1]
+
+configure.ac:
+gl_FUNC_FCHOWNAT
+if test $HAVE_FCHOWNAT = 0 || test $REPLACE_FCHOWNAT = 1; then
+ AC_LIBOBJ([fchownat])
+fi
+AC_REQUIRE([AC_C_INLINE]) dnl because 'inline' is used in lib/openat.h
+gl_MODULE_INDICATOR([fchownat]) dnl for lib/openat.h
+gl_UNISTD_MODULE_INDICATOR([fchownat])
+
+Makefile.am:
+
+Include:
+<unistd.h>
+
+License:
+GPL
+
+Maintainer:
+Jim Meyering, Eric Blake
--- /dev/null
+Files:
+tests/nap.h
+tests/test-chown.h
+tests/test-lchown.h
+tests/test-fchownat.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+ignore-value
+mgetgroups
+openat-h
+progname
+usleep
+stat-time
+symlink
+
+configure.ac:
+AC_CHECK_FUNCS_ONCE([getegid])
+
+Makefile.am:
+TESTS += test-fchownat
+check_PROGRAMS += test-fchownat
+test_fchownat_LDADD = $(LDADD) @LIBINTL@
fflush [test $REPLACE_FCLOSE = 1]
freading [test $REPLACE_FCLOSE = 1]
lseek [test $REPLACE_FCLOSE = 1]
+msvc-inval [test $REPLACE_FCLOSE = 1]
configure.ac:
gl_FUNC_FCLOSE
tests/test-fclose.c
Depends-on:
+fdopen
configure.ac:
extensions
dup2 [test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1]
getdtablesize [test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1]
+msvc-nothrow [test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1]
configure.ac:
gl_FUNC_FCNTL
Depends-on:
binary-io
+close
getdtablesize
+msvc-nothrow
stdbool
configure.ac:
--- /dev/null
+Description:
+fdatasync(2) function: synchronize writes to a file.
+
+Files:
+lib/fdatasync.c
+m4/fdatasync.m4
+
+Depends-on:
+fsync [test $HAVE_FDATASYNC = 0]
+unistd
+
+configure.ac:
+gl_FUNC_FDATASYNC
+if test $HAVE_FDATASYNC = 0; then
+ AC_LIBOBJ([fdatasync])
+fi
+gl_UNISTD_MODULE_INDICATOR([fdatasync])
+
+Makefile.am:
+
+Include:
+<unistd.h>
+
+Link:
+$(LIB_FDATASYNC)
+
+License:
+LGPLv2+
+
+Maintainer:
+Eric Blake
--- /dev/null
+Files:
+tests/test-fdatasync.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+errno
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-fdatasync
+check_PROGRAMS += test-fdatasync
+test_fdatasync_LDADD = $(LDADD) $(LIB_FDATASYNC)
--- /dev/null
+Description:
+fdopen() function: open a stream with a given file descriptor.
+
+Files:
+lib/fdopen.c
+m4/fdopen.m4
+
+Depends-on:
+stdio
+msvc-inval [test $REPLACE_FDOPEN = 1]
+
+configure.ac:
+gl_FUNC_FDOPEN
+if test $REPLACE_FDOPEN = 1; then
+ AC_LIBOBJ([fdopen])
+ gl_PREREQ_FDOPEN
+fi
+gl_STDIO_MODULE_INDICATOR([fdopen])
+
+Makefile.am:
+
+Include:
+<stdio.h>
+
+License:
+LGPLv2+
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-fdopen.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-fdopen
+check_PROGRAMS += test-fdopen
Files:
lib/fdopendir.c
-lib/openat-priv.h
-lib/openat-proc.c
m4/fdopendir.m4
Depends-on:
dirent
extensions
+at-internal [test $HAVE_FDOPENDIR = 0]
+dup [test $HAVE_FDOPENDIR = 0]
errno [test $HAVE_FDOPENDIR = 0]
fchdir [test $HAVE_FDOPENDIR = 0]
+fstat [test $HAVE_FDOPENDIR = 0]
openat-die [test $HAVE_FDOPENDIR = 0]
+opendir [test $HAVE_FDOPENDIR = 0]
save-cwd [test $HAVE_FDOPENDIR = 0]
configure.ac:
if test $HAVE_FDOPENDIR = 0 || test $REPLACE_FDOPENDIR = 1; then
AC_LIBOBJ([fdopendir])
fi
-if test $HAVE_FDOPENDIR = 0; then
- AC_LIBOBJ([openat-proc])
-fi
gl_DIRENT_MODULE_INDICATOR([fdopendir])
gl_MODULE_INDICATOR([fdopendir])
Depends-on:
open
+opendir
+closedir
progname
configure.ac:
tests/macros.h
Depends-on:
+fcntl-h
ignore-value
+openat
timespec
+dup
usleep
utimecmp
configure.ac:
+AC_REQUIRE([AC_C_INLINE])
Makefile.am:
TESTS += test-fdutimensat
Depends-on:
binary-io
+fdopen
fseeko
configure.ac:
if test $HAVE_FFSLL = 0; then
AC_LIBOBJ([ffsll])
fi
-gl_STRING_MODULE_INDICATOR([ffsl])
+gl_STRING_MODULE_INDICATOR([ffsll])
Makefile.am:
--- /dev/null
+Files:
+tests/test-fgetc.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+unistd
+fdopen
+msvc-inval
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-fgetc
+check_PROGRAMS += test-fgetc
Files:
lib/float.in.h
lib/float.c
+lib/itold.c
m4/float_h.m4
Depends-on:
if test $REPLACE_FLOAT_LDBL = 1; then
AC_LIBOBJ([float])
fi
+if test $REPLACE_ITOLD = 1; then
+ AC_LIBOBJ([itold])
+fi
Makefile.am:
BUILT_SOURCES += $(FLOAT_H)
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_FLOAT_H''@|$(NEXT_FLOAT_H)|g' \
+ -e 's|@''REPLACE_ITOLD''@|$(REPLACE_ITOLD)|g' \
< $(srcdir)/float.in.h; \
} > $@-t && \
mv $@-t $@
Depends-on:
sys_file
+msvc-nothrow [test $HAVE_FLOCK = 0]
configure.ac:
gl_FUNC_FLOCK
tests/test-floor1.c
tests/test-floor2.c
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
tests/test-floorf1.c
tests/test-floorf2.c
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
Depends-on:
math
extensions
-float [test $HAVE_DECL_FLOORL = 0 || test $REPLACE_FLOORL = 1]
+floor [{ test $HAVE_DECL_FLOORL = 0 || test $REPLACE_FLOORL = 1; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1]
+float [{ test $HAVE_DECL_FLOORL = 0 || test $REPLACE_FLOORL = 1; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
configure.ac:
gl_FUNC_FLOORL
Files:
tests/test-floorl.c
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
--- /dev/null
+Description:
+fma() function: fused multiply-add.
+
+Files:
+lib/fma.c
+lib/float+.h
+m4/fma.m4
+m4/fegetround.m4
+m4/mathfunc.m4
+
+Depends-on:
+math
+float [test $HAVE_FMA = 0 || test $REPLACE_FMA = 1]
+stdbool [test $HAVE_FMA = 0 || test $REPLACE_FMA = 1]
+verify [test $HAVE_FMA = 0 || test $REPLACE_FMA = 1]
+isfinite [test $HAVE_FMA = 0 || test $REPLACE_FMA = 1]
+integer_length [test $HAVE_FMA = 0 || test $REPLACE_FMA = 1]
+frexp [test $HAVE_FMA = 0 || test $REPLACE_FMA = 1]
+ldexp [test $HAVE_FMA = 0 || test $REPLACE_FMA = 1]
+
+configure.ac:
+gl_FUNC_FMA
+if test $HAVE_FMA = 0 || test $REPLACE_FMA = 1; then
+ AC_LIBOBJ([fma])
+ gl_PREREQ_FMA
+fi
+gl_MATH_MODULE_INDICATOR([fma])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(FMA_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-fma1.c
+tests/test-fma1.h
+tests/test-fma2.c
+tests/test-fma2.h
+tests/infinity.h
+tests/nan.h
+tests/signature.h
+tests/macros.h
+lib/float+.h
+
+Depends-on:
+float
+isnand-nolibm
+ldexp
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-fma1 test-fma2
+check_PROGRAMS += test-fma1 test-fma2
+test_fma1_LDADD = $(LDADD) @FMA_LIBM@
+test_fma2_LDADD = $(LDADD) @FMA_LIBM@ @LDEXP_LIBM@
--- /dev/null
+Description:
+fmaf() function: fused multiply-add.
+
+Files:
+lib/fmaf.c
+lib/fma.c
+lib/float+.h
+m4/fmaf.m4
+m4/fegetround.m4
+m4/mathfunc.m4
+
+Depends-on:
+math
+float [test $HAVE_FMAF = 0 || test $REPLACE_FMAF = 1]
+stdbool [test $HAVE_FMAF = 0 || test $REPLACE_FMAF = 1]
+verify [test $HAVE_FMAF = 0 || test $REPLACE_FMAF = 1]
+isfinite [test $HAVE_FMAF = 0 || test $REPLACE_FMAF = 1]
+integer_length [test $HAVE_FMAF = 0 || test $REPLACE_FMAF = 1]
+frexpf [test $HAVE_FMAF = 0 || test $REPLACE_FMAF = 1]
+ldexpf [test $HAVE_FMAF = 0 || test $REPLACE_FMAF = 1]
+
+configure.ac:
+gl_FUNC_FMAF
+if test $HAVE_FMAF = 0 || test $REPLACE_FMAF = 1; then
+ AC_LIBOBJ([fmaf])
+ gl_PREREQ_FMAF
+fi
+gl_MATH_MODULE_INDICATOR([fmaf])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(FMAF_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-fmaf1.c
+tests/test-fma1.h
+tests/test-fmaf2.c
+tests/test-fma2.h
+tests/infinity.h
+tests/nan.h
+tests/signature.h
+tests/macros.h
+lib/float+.h
+
+Depends-on:
+float
+isnanf-nolibm
+ldexpf
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-fmaf1 test-fmaf2
+check_PROGRAMS += test-fmaf1 test-fmaf2
+test_fmaf1_LDADD = $(LDADD) @FMAF_LIBM@
+test_fmaf2_LDADD = $(LDADD) @FMAF_LIBM@ @LDEXPF_LIBM@
--- /dev/null
+Description:
+fmal() function: fused multiply-add.
+
+Files:
+lib/fmal.c
+lib/fma.c
+lib/float+.h
+m4/fmal.m4
+m4/fegetround.m4
+m4/mathfunc.m4
+
+Depends-on:
+math
+fma [{ test $HAVE_FMAL = 0 || test $REPLACE_FMAL = 1; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1]
+float [{ test $HAVE_FMAL = 0 || test $REPLACE_FMAL = 1; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+stdbool [{ test $HAVE_FMAL = 0 || test $REPLACE_FMAL = 1; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+verify [{ test $HAVE_FMAL = 0 || test $REPLACE_FMAL = 1; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+isfinite [{ test $HAVE_FMAL = 0 || test $REPLACE_FMAL = 1; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+integer_length [{ test $HAVE_FMAL = 0 || test $REPLACE_FMAL = 1; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+frexpl [{ test $HAVE_FMAL = 0 || test $REPLACE_FMAL = 1; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+ldexpl [{ test $HAVE_FMAL = 0 || test $REPLACE_FMAL = 1; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+
+configure.ac:
+gl_FUNC_FMAL
+if test $HAVE_FMAL = 0 || test $REPLACE_FMAL = 1; then
+ AC_LIBOBJ([fmal])
+ gl_PREREQ_FMAL
+fi
+gl_MATH_MODULE_INDICATOR([fmal])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(FMAL_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-fmal1.c
+tests/test-fma1.h
+tests/test-fmal2.c
+tests/test-fma2.h
+tests/infinity.h
+tests/nan.h
+tests/signature.h
+tests/macros.h
+lib/float+.h
+
+Depends-on:
+float
+fpucw
+isnanl-nolibm
+ldexpl
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-fmal1 test-fmal2
+check_PROGRAMS += test-fmal1 test-fmal2
+test_fmal1_LDADD = $(LDADD) @FMAL_LIBM@
+test_fmal2_LDADD = $(LDADD) @FMAL_LIBM@ @LDEXPL_LIBM@
fmod() function: floating-point remainder function.
Files:
+m4/fmod.m4
m4/mathfunc.m4
Depends-on:
configure.ac:
-gl_COMMON_DOUBLE_MATHFUNC([fmod])
+gl_FUNC_FMOD
Makefile.am:
--- /dev/null
+Description:
+fmodf() function: floating-point remainder function.
+
+Files:
+lib/fmodf.c
+m4/fmodf.m4
+
+Depends-on:
+math
+fmod [test $HAVE_FMODF = 0]
+
+configure.ac:
+gl_FUNC_FMODF
+if test $HAVE_FMODF = 0; then
+ AC_LIBOBJ([fmodf])
+fi
+gl_MATH_MODULE_INDICATOR([fmodf])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(FMODF_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-fmodf.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-fmodf
+check_PROGRAMS += test-fmodf
+test_fmodf_LDADD = $(LDADD) @FMODF_LIBM@
stdio
largefile
unistd [test $REPLACE_FOPEN = 1]
+fstat [test $REPLACE_FOPEN = 1]
configure.ac:
gl_FUNC_FOPEN
lib/fprintf.c
m4/fprintf-posix.m4
m4/printf.m4
+m4/math_h.m4
Depends-on:
stdio
tests/test-fprintf-posix2.c
tests/test-fprintf-posix3.sh
tests/test-fprintf-posix3.c
+tests/infinity.h
tests/signature.h
tests/macros.h
--- /dev/null
+Files:
+tests/test-fputc.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+unistd
+fdopen
+msvc-inval
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-fputc
+check_PROGRAMS += test-fputc
--- /dev/null
+Files:
+tests/test-fread.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+unistd
+fdopen
+msvc-inval
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-fread
+check_PROGRAMS += test-fread
tests/macros.h
Depends-on:
+fdopen
configure.ac:
Files:
tests/test-frexp.c
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
Files:
tests/test-frexp.c
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
--- /dev/null
+Description:
+frexpf() function: split a float into its constituents.
+
+Files:
+lib/frexpf.c
+m4/frexpf.m4
+m4/mathfunc.m4
+
+Depends-on:
+math
+frexp [test $HAVE_FREXPF = 0 || test $REPLACE_FREXPF = 1]
+
+configure.ac:
+gl_FUNC_FREXPF
+if test $HAVE_FREXPF = 0 || test $REPLACE_FREXPF = 1; then
+ AC_LIBOBJ([frexpf])
+fi
+gl_MATH_MODULE_INDICATOR([frexpf])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(FREXPF_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-frexpf.c
+tests/minus-zero.h
+tests/infinity.h
+tests/nan.h
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+isnanf-nolibm
+signbit
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-frexpf
+check_PROGRAMS += test-frexpf
+test_frexpf_LDADD = $(LDADD) @FREXPF_LIBM@
Depends-on:
math
-isnanl-nolibm [test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl = no]
-fpucw [test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl = no]
+frexp [{ test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl = no; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1]
+isnanl-nolibm [{ test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl = no; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+fpucw [{ test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl = no; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
configure.ac:
gl_FUNC_FREXPL
Depends-on:
math
-isnanl-nolibm [test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl_no_libm = no]
-fpucw [test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl_no_libm = no]
+frexp-nolibm [{ test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl_no_libm = no; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1]
+isnanl-nolibm [{ test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl_no_libm = no; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+fpucw [{ test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl_no_libm = no; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
configure.ac:
gl_FUNC_FREXPL_NO_LIBM
Files:
tests/test-frexpl.c
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
Files:
tests/test-frexpl.c
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
tests/test-fseeko2.sh
tests/test-fseeko3.c
tests/test-fseeko3.sh
+tests/test-fseeko4.c
+tests/test-fseeko4.sh
tests/signature.h
tests/macros.h
m4/ungetc.m4
Depends-on:
+fdopen
configure.ac:
gl_FUNC_UNGETC_WORKS
Makefile.am:
-TESTS += test-fseeko.sh test-fseeko2.sh test-fseeko3.sh
-check_PROGRAMS += test-fseeko test-fseeko3
+TESTS += test-fseeko.sh test-fseeko2.sh test-fseeko3.sh test-fseeko4.sh
+check_PROGRAMS += test-fseeko test-fseeko3 test-fseeko4
--- /dev/null
+Description:
+fstat() function: return information about an open file.
+
+Files:
+lib/fstat.c
+m4/fstat.m4
+
+Depends-on:
+sys_stat
+largefile
+unistd [test $REPLACE_STAT = 1]
+msvc-inval [test $REPLACE_STAT = 1]
+
+configure.ac:
+gl_FUNC_FSTAT
+if test $REPLACE_FSTAT = 1; then
+ AC_LIBOBJ([fstat])
+ gl_PREREQ_FSTAT
+fi
+gl_SYS_STAT_MODULE_INDICATOR([fstat])
+
+Makefile.am:
+
+Include:
+<sys/stat.h>
+
+License:
+LGPLv2+
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-fstat.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-fstat
+check_PROGRAMS += test-fstat
--- /dev/null
+Description:
+fstatat() function: Return information about a file at a directory.
+
+Files:
+lib/fstatat.c
+lib/at-func.c
+lib/openat-priv.h
+m4/fstatat.m4
+m4/lstat.m4
+
+Depends-on:
+sys_stat
+extensions
+at-internal [test $HAVE_FSTATAT = 0 || test $REPLACE_FSTATAT = 1]
+dosname [test $HAVE_FSTATAT = 0 || test $REPLACE_FSTATAT = 1]
+errno [test $HAVE_FSTATAT = 0 || test $REPLACE_FSTATAT = 1]
+fchdir [test $HAVE_FSTATAT = 0 || test $REPLACE_FSTATAT = 1]
+fcntl-h [test $HAVE_FSTATAT = 0 || test $REPLACE_FSTATAT = 1]
+lstat [test $HAVE_FSTATAT = 0 || test $REPLACE_FSTATAT = 1]
+openat-die [test $HAVE_FSTATAT = 0 || test $REPLACE_FSTATAT = 1]
+openat-h [test $HAVE_FSTATAT = 0 || test $REPLACE_FSTATAT = 1]
+save-cwd [test $HAVE_FSTATAT = 0 || test $REPLACE_FSTATAT = 1]
+
+configure.ac:
+gl_FUNC_FSTATAT
+if test $HAVE_FSTATAT = 0 || test $REPLACE_FSTATAT = 1; then
+ AC_LIBOBJ([fstatat])
+fi
+AC_REQUIRE([AC_C_INLINE]) dnl because 'inline' is used in lib/openat.h
+gl_MODULE_INDICATOR([fstatat]) dnl for lib/openat.h
+gl_SYS_STAT_MODULE_INDICATOR([fstatat])
+
+Makefile.am:
+
+Include:
+<sys/stat.h>
+
+License:
+GPL
+
+Maintainer:
+Jim Meyering, Eric Blake
--- /dev/null
+Files:
+tests/test-fstatat.c
+tests/test-lstat.h
+tests/test-stat.h
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+getcwd-lgpl
+ignore-value
+openat-h
+progname
+symlink
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-fstatat
+check_PROGRAMS += test-fstatat
+test_fstatat_LDADD = $(LDADD) @LIBINTL@
Description:
-fsync(2) function: synchronize writes to a file.
+fsync(2) function: synchronize writes, including metadata, to a file.
Files:
lib/fsync.c
Depends-on:
unistd
+msvc-nothrow [test $HAVE_FSYNC = 0]
configure.ac:
gl_FUNC_FSYNC
tests/macros.h
Depends-on:
+errno
configure.ac:
tests/test-ftello.sh
tests/test-ftello2.sh
tests/test-ftello3.c
+tests/test-ftello4.c
+tests/test-ftello4.sh
tests/signature.h
tests/macros.h
m4/ungetc.m4
Depends-on:
binary-io
+fdopen
configure.ac:
gl_FUNC_UNGETC_WORKS
Makefile.am:
-TESTS += test-ftello.sh test-ftello2.sh test-ftello3
-check_PROGRAMS += test-ftello test-ftello3
+TESTS += test-ftello.sh test-ftello2.sh test-ftello3 test-ftello4.sh
+check_PROGRAMS += test-ftello test-ftello3 test-ftello4
MOSTLYCLEANFILES += t-ftello3.tmp
Description:
ftruncate() function: truncate an open file to a specified length.
-Status:
-obsolete
-
-Notice:
-This module is obsolete.
-
Files:
lib/ftruncate.c
m4/ftruncate.m4
Depends-on:
unistd
+largefile
+msvc-inval [test $HAVE_FTRUNCATE = 0]
configure.ac:
gl_FUNC_FTRUNCATE
--- /dev/null
+Files:
+tests/test-ftruncate.c
+tests/test-ftruncate.sh
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-ftruncate.sh
+check_PROGRAMS += test-ftruncate
Depends-on:
cloexec
+closedir
cycle-check
d-ino
d-type
dirent-safer
+dup
fchdir
fcntl-h
fcntl-safer
+fstat
hash
i-ring
lstat
memmove
+openat-h
openat-safer
+opendir
+readdir
stdbool
unistd-safer
tests/macros.h
Depends-on:
+fcntl-h
ignore-value
timespec
+dup
usleep
utimecmp
configure.ac:
+AC_REQUIRE([AC_C_INLINE])
Makefile.am:
TESTS += test-futimens
--- /dev/null
+Files:
+tests/test-fwrite.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+unistd
+fdopen
+msvc-inval
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-fwrite
+check_PROGRAMS += test-fwrite
m4/getcwd-abort-bug.m4
m4/getcwd-path-max.m4
m4/getcwd.m4
+m4/pathmax.m4
Depends-on:
unistd
d-ino [test $REPLACE_GETCWD = 1]
memmove [test $REPLACE_GETCWD = 1]
openat [test $REPLACE_GETCWD = 1]
+fcntl-h [test $REPLACE_GETCWD = 1]
+fdopendir [test $REPLACE_GETCWD = 1]
+fstat [test $REPLACE_GETCWD = 1]
+fstatat [test $REPLACE_GETCWD = 1]
+opendir [test $REPLACE_GETCWD = 1]
+readdir [test $REPLACE_GETCWD = 1]
+rewinddir [test $REPLACE_GETCWD = 1]
+closedir [test $REPLACE_GETCWD = 1]
stdbool [test $REPLACE_GETCWD = 1]
malloc-posix [test $REPLACE_GETCWD = 1]
strdup-posix [test $REPLACE_GETCWD = 1]
Makefile.am:
TESTS += test-getcwd-lgpl
check_PROGRAMS += test-getcwd-lgpl
+test_getcwd_lgpl_LDADD = $(LDADD) $(LIBINTL)
Files:
tests/test-getcwd.c
+tests/test-getcwd.sh
+tests/init.sh
Depends-on:
errno
configure.ac:
Makefile.am:
-TESTS += test-getcwd
+TESTS += test-getcwd.sh
check_PROGRAMS += test-getcwd
+test_getcwd_LDADD = $(LDADD) @LIBINTL@
Depends-on:
unistd
+msvc-inval [test $HAVE_GETDTABLESIZE = 0]
configure.ac:
gl_FUNC_GETDTABLESIZE
if test $HAVE_GETDTABLESIZE = 0; then
AC_LIBOBJ([getdtablesize])
+ gl_PREREQ_GETDTABLESIZE
fi
gl_UNISTD_MODULE_INDICATOR([getdtablesize])
sys_socket [test $HAVE_GETHOSTNAME = 0]
errno [test $HAVE_GETHOSTNAME = 0]
sockets [test $HAVE_GETHOSTNAME = 0]
+msvc-nothrow [test $HAVE_GETHOSTNAME = 0]
configure.ac:
gl_FUNC_GETHOSTNAME
AC_LIBOBJ([getopt])
AC_LIBOBJ([getopt1])
gl_PREREQ_GETOPT
+ dnl Arrange for unistd.h to include getopt.h.
+ GNULIB_${gl_include_guard_prefix}_UNISTD_H_GETOPT=1
fi
+AC_SUBST([GNULIB_${gl_include_guard_prefix}_UNISTD_H_GETOPT])
gl_MODULE_INDICATOR_FOR_TESTS([getopt-gnu])
Makefile.am:
AC_LIBOBJ([getopt])
AC_LIBOBJ([getopt1])
gl_PREREQ_GETOPT
+ dnl Arrange for unistd.h to include getopt.h.
+ GNULIB_${gl_include_guard_prefix}_UNISTD_H_GETOPT=1
fi
+AC_SUBST([GNULIB_${gl_include_guard_prefix}_UNISTD_H_GETOPT])
Makefile.am:
BUILT_SOURCES += $(GETOPT_H)
Depends-on:
sys_socket
+socketlib
errno [test "$ac_cv_header_winsock2_h" = yes]
+msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes]
configure.ac:
AC_REQUIRE([gl_HEADER_SYS_SOCKET])
Include:
<sys/socket.h>
+Link:
+$(LIBSOCKET)
+
License:
LGPLv2+
--- /dev/null
+Files:
+tests/test-getpeername.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+netinet_in
+sockets
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-getpeername
+check_PROGRAMS += test-getpeername
+test_getpeername_LDADD = $(LDADD) @LIBSOCKET@
Depends-on:
sys_socket
+socketlib
errno [test "$ac_cv_header_winsock2_h" = yes]
+msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes]
configure.ac:
AC_REQUIRE([gl_HEADER_SYS_SOCKET])
Include:
<sys/socket.h>
+Link:
+$(LIBSOCKET)
+
License:
LGPLv2+
--- /dev/null
+Files:
+tests/test-getsockname.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+netinet_in
+sockets
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-getsockname
+check_PROGRAMS += test-getsockname
+test_getsockname_LDADD = $(LDADD) @LIBSOCKET@
Depends-on:
sys_socket
+socketlib
sys_time [test "$ac_cv_header_winsock2_h" = yes]
errno [test "$ac_cv_header_winsock2_h" = yes]
+msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes]
configure.ac:
AC_REQUIRE([gl_HEADER_SYS_SOCKET])
Include:
<sys/socket.h>
+Link:
+$(LIBSOCKET)
+
License:
LGPLv2+
--- /dev/null
+Files:
+tests/test-getsockopt.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+netinet_in
+sockets
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-getsockopt
+check_PROGRAMS += test-getsockopt
+test_getsockopt_LDADD = $(LDADD) @LIBSOCKET@
snippet/c++defs
snippet/warn-on-use
alloca [test -n "$GLOB_H"]
+closedir [test -n "$GLOB_H"]
d-type [test -n "$GLOB_H"]
dirfd [test -n "$GLOB_H"]
fnmatch [test -n "$GLOB_H"]
getlogin_r [test -n "$GLOB_H"]
memchr [test -n "$GLOB_H"]
mempcpy [test -n "$GLOB_H"]
+opendir [test -n "$GLOB_H"]
+readdir [test -n "$GLOB_H"]
stdbool [test -n "$GLOB_H"]
strdup [test -n "$GLOB_H"]
sys_stat [test -n "$GLOB_H"]
Files:
lib/grantpt.c
+lib/pty-private.h
m4/grantpt.m4
Depends-on:
stdlib
extensions
+fcntl-h [test $HAVE_GRANTPT = 0]
pt_chown [test $HAVE_GRANTPT = 0]
waitpid [test $HAVE_GRANTPT = 0]
configmake [test $HAVE_GRANTPT = 0]
<stdlib.h>
License:
-LGPL
+LGPLv2+
Maintainer:
Bruno Haible
--- /dev/null
+Files:
+tests/test-grantpt.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-grantpt
+check_PROGRAMS += test-grantpt
--- /dev/null
+Files:
+tests/test-imaxabs.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-imaxabs
+check_PROGRAMS += test-imaxabs
--- /dev/null
+Files:
+tests/test-imaxdiv.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-imaxdiv
+check_PROGRAMS += test-imaxdiv
Files:
lib/inet_ntop.c
m4/inet_ntop.m4
+m4/sys_socket_h.m4
Depends-on:
arpa_inet
extensions
-sys_socket [test $HAVE_INET_NTOP = 0]
-errno [test $HAVE_INET_NTOP = 0]
-netinet_in [test $HAVE_INET_NTOP = 0]
+sys_socket [test $HAVE_INET_NTOP = 0 || test $REPLACE_INET_NTOP = 1]
+errno [test $HAVE_INET_NTOP = 0 || test $REPLACE_INET_NTOP = 1]
+netinet_in [test $HAVE_INET_NTOP = 0 || test $REPLACE_INET_NTOP = 1]
configure.ac:
gl_FUNC_INET_NTOP
-if test $HAVE_INET_NTOP = 0; then
+if test $HAVE_INET_NTOP = 0 || test $REPLACE_INET_NTOP = 1; then
AC_LIBOBJ([inet_ntop])
gl_PREREQ_INET_NTOP
fi
Depends-on:
arpa_inet
extensions
-c-ctype [test $HAVE_INET_PTON = 0]
-sys_socket [test $HAVE_INET_PTON = 0]
-errno [test $HAVE_INET_PTON = 0]
-netinet_in [test $HAVE_INET_PTON = 0]
+c-ctype [test $HAVE_INET_PTON = 0 || test $REPLACE_INET_NTOP = 1]
+sys_socket [test $HAVE_INET_PTON = 0 || test $REPLACE_INET_NTOP = 1]
+errno [test $HAVE_INET_PTON = 0 || test $REPLACE_INET_NTOP = 1]
+netinet_in [test $HAVE_INET_PTON = 0 || test $REPLACE_INET_NTOP = 1]
configure.ac:
gl_FUNC_INET_PTON
-if test $HAVE_INET_PTON = 0; then
+if test $HAVE_INET_PTON = 0 || test $REPLACE_INET_NTOP = 1; then
AC_LIBOBJ([inet_pton])
gl_PREREQ_INET_PTON
fi
Include:
"ino-map.h"
-License
+License:
GPL
Maintainer:
--- /dev/null
+Description:
+Finds the most significant bit in an 'unsigned int'.
+
+Files:
+lib/integer_length.h
+lib/integer_length.c
+lib/float+.h
+m4/longlong.m4
+m4/exponentd.m4
+
+Depends-on:
+float
+
+configure.ac:
+AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
+AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION])
+
+Makefile.am:
+lib_SOURCES += integer_length.c
+
+Include:
+"integer_length.h"
+
+License:
+LGPLv2+
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-integer_length.c
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-integer_length
+check_PROGRAMS += test-integer_length
--- /dev/null
+Description:
+Finds the most significant bit in an 'unsigned long'.
+
+Files:
+lib/integer_length.h
+lib/integer_length_l.c
+m4/longlong.m4
+
+Depends-on:
+integer_length
+
+configure.ac:
+AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
+
+Makefile.am:
+lib_SOURCES += integer_length_l.c
+
+Include:
+"integer_length.h"
+
+License:
+LGPLv2+
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-integer_length_l.c
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-integer_length_l
+check_PROGRAMS += test-integer_length_l
--- /dev/null
+Description:
+Finds the most significant bit in an 'unsigned long long'.
+
+Files:
+lib/integer_length.h
+lib/integer_length_ll.c
+lib/integer_length_l.c
+m4/longlong.m4
+
+Depends-on:
+integer_length
+
+configure.ac:
+AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
+
+Makefile.am:
+lib_SOURCES += integer_length_ll.c
+
+Include:
+"integer_length.h"
+
+License:
+LGPLv2+
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-integer_length_ll.c
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-integer_length_ll
+check_PROGRAMS += test-integer_length_ll
sys_socket [test $HAVE_IOCTL = 0 || test $REPLACE_IOCTL = 1]
errno [test $HAVE_IOCTL = 0 || test $REPLACE_IOCTL = 1]
fd-hook [test $HAVE_IOCTL = 0 || test $REPLACE_IOCTL = 1]
+msvc-nothrow [test $HAVE_IOCTL = 0 || test $REPLACE_IOCTL = 1]
configure.ac:
gl_FUNC_IOCTL
--- /dev/null
+Files:
+tests/test-ioctl.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-ioctl
+check_PROGRAMS += test-ioctl
stdbool [test $HAVE_ISAPIPE = 0]
sys_stat [test $HAVE_ISAPIPE = 0]
unistd [test $HAVE_ISAPIPE = 0]
+msvc-nothrow [test $HAVE_ISAPIPE = 0]
+fstat [test $HAVE_ISAPIPE = 0]
configure.ac:
gl_ISAPIPE
--- /dev/null
+Files:
+tests/test-isatty.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+unistd
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-isatty
+check_PROGRAMS += test-isatty
Files:
tests/test-isfinite.c
+tests/infinity.h
tests/macros.h
Depends-on:
gl_FLOAT_EXPONENT_LOCATION
gl_DOUBLE_EXPONENT_LOCATION
gl_LONG_DOUBLE_EXPONENT_LOCATION
+AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
Makefile.am:
TESTS += test-isfinite
m4/exponentd.m4
m4/exponentl.m4
tests/test-isinf.c
+tests/infinity.h
tests/macros.h
Depends-on:
gl_FLOAT_EXPONENT_LOCATION
gl_DOUBLE_EXPONENT_LOCATION
gl_LONG_DOUBLE_EXPONENT_LOCATION
+AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
Makefile.am:
TESTS += test-isinf
Files:
tests/test-isnan.c
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/macros.h
gl_FLOAT_EXPONENT_LOCATION
gl_DOUBLE_EXPONENT_LOCATION
gl_LONG_DOUBLE_EXPONENT_LOCATION
+AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
Makefile.am:
TESTS += test-isnan
tests/test-isnand-nolibm.c
tests/test-isnand.h
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/macros.h
tests/test-isnand.c
tests/test-isnand.h
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/macros.h
tests/test-isnanf-nolibm.c
tests/test-isnanf.h
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/macros.h
tests/test-isnanf.c
tests/test-isnanf.h
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/macros.h
lib/float+.h
m4/exponentl.m4
m4/isnanl.m4
+m4/math_h.m4
Depends-on:
float
tests/test-isnanl-nolibm.c
tests/test-isnanl.h
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/macros.h
configure.ac:
gl_LONG_DOUBLE_EXPONENT_LOCATION
+AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
Makefile.am:
TESTS += test-isnanl-nolibm
tests/test-isnanl.c
tests/test-isnanl.h
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/macros.h
configure.ac:
gl_LONG_DOUBLE_EXPONENT_LOCATION
+AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
Makefile.am:
TESTS += test-isnanl
Files:
tests/test-ldexp.c
+tests/test-ldexp.h
+tests/minus-zero.h
+tests/infinity.h
+tests/nan.h
tests/signature.h
tests/macros.h
Depends-on:
+isnand-nolibm
+signbit
+float
configure.ac:
--- /dev/null
+Description:
+ldexpf() function: multiply a 'float' by a power of 2.
+
+Files:
+lib/ldexpf.c
+m4/ldexpf.m4
+m4/mathfunc.m4
+
+Depends-on:
+math
+ldexp [test $HAVE_LDEXPF = 0]
+
+configure.ac:
+gl_FUNC_LDEXPF
+if test $HAVE_LDEXPF = 0; then
+ AC_LIBOBJ([ldexpf])
+fi
+gl_MATH_MODULE_INDICATOR([ldexpf])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(LDEXPF_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-ldexpf.c
+tests/test-ldexp.h
+tests/minus-zero.h
+tests/infinity.h
+tests/nan.h
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+isnanf-nolibm
+signbit
+float
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-ldexpf
+check_PROGRAMS += test-ldexpf
+test_ldexpf_LDADD = $(LDADD) @LDEXPF_LIBM@
Depends-on:
math
-isnanl [test $HAVE_DECL_LDEXPL = 0 || test $gl_func_ldexpl = no]
-fpucw [test $HAVE_DECL_LDEXPL = 0 || test $gl_func_ldexpl = no]
+ldexp [{ test $HAVE_DECL_LDEXPL = 0 || test $gl_func_ldexpl = no; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1]
+isnanl [{ test $HAVE_DECL_LDEXPL = 0 || test $gl_func_ldexpl = no; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+fpucw [{ test $HAVE_DECL_LDEXPL = 0 || test $gl_func_ldexpl = no; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
configure.ac:
gl_FUNC_LDEXPL
Files:
tests/test-ldexpl.c
+tests/test-ldexp.h
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
Depends-on:
unistd
extensions
-areadlink [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
-areadlinkat [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
dirname-lgpl [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
-dosname [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
errno [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
fcntl-h [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
filenamecat-lgpl [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
-getcwd-lgpl [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
-openat [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
-link [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
link-follow [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
-lstat [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
-same-inode [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
-save-cwd [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
-symlink [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
+areadlink [test $HAVE_LINKAT = 0]
+at-internal [test $HAVE_LINKAT = 0]
+dosname [test $HAVE_LINKAT = 0]
+fstat [test $HAVE_LINKAT = 0]
+getcwd-lgpl [test $HAVE_LINKAT = 0]
+openat-h [test $HAVE_LINKAT = 0]
+openat-die [test $HAVE_LINKAT = 0]
+link [test $HAVE_LINKAT = 0]
+lstat [test $HAVE_LINKAT = 0]
+same-inode [test $HAVE_LINKAT = 0]
+save-cwd [test $HAVE_LINKAT = 0]
+symlink [test $HAVE_LINKAT = 0]
+areadlinkat [test $REPLACE_LINKAT = 1]
+fstatat [test $REPLACE_LINKAT = 1]
configure.ac:
gl_FUNC_LINKAT
filenamecat-lgpl
getcwd-lgpl
same-inode
+unlinkat
configure.ac:
Depends-on:
sys_socket
+socketlib
errno [test "$ac_cv_header_winsock2_h" = yes]
+msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes]
configure.ac:
AC_REQUIRE([gl_HEADER_SYS_SOCKET])
Include:
<sys/socket.h>
+Link:
+$(LIBSOCKET)
+
License:
LGPLv2+
--- /dev/null
+Files:
+tests/test-listen.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+sockets
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-listen
+check_PROGRAMS += test-listen
+test_listen_LDADD = $(LDADD) @LIBSOCKET@
log() function: natural logarithmic function.
Files:
+m4/log.m4
m4/mathfunc.m4
Depends-on:
configure.ac:
-gl_COMMON_DOUBLE_MATHFUNC([log])
+gl_FUNC_LOG
Makefile.am:
log10() function: base 10 logarithmic function.
Files:
+m4/log10.m4
m4/mathfunc.m4
Depends-on:
configure.ac:
-gl_COMMON_DOUBLE_MATHFUNC([log10])
+gl_FUNC_LOG10
Makefile.am:
--- /dev/null
+Description:
+log10f() function: base 10 logarithmic function.
+
+Files:
+lib/log10f.c
+m4/log10f.m4
+
+Depends-on:
+math
+log10 [test $HAVE_LOG10F = 0]
+
+configure.ac:
+gl_FUNC_LOG10F
+if test $HAVE_LOG10F = 0; then
+ AC_LIBOBJ([log10f])
+fi
+gl_MATH_MODULE_INDICATOR([log10f])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(LOG10F_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-log10f.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-log10f
+check_PROGRAMS += test-log10f
+test_log10f_LDADD = $(LDADD) @LOG10F_LIBM@
--- /dev/null
+Description:
+logf() function: natural logarithmic function.
+
+Files:
+lib/logf.c
+m4/logf.m4
+
+Depends-on:
+math
+log [test $HAVE_LOGF = 0]
+
+configure.ac:
+gl_FUNC_LOGF
+if test $HAVE_LOGF = 0; then
+ AC_LIBOBJ([logf])
+fi
+gl_MATH_MODULE_INDICATOR([logf])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(LOGF_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-logf.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-logf
+check_PROGRAMS += test-logf
+test_logf_LDADD = $(LDADD) @LOGF_LIBM@
Depends-on:
math
extensions
-frexpl [test $HAVE_LOGL = 0]
-isnanl [test $HAVE_LOGL = 0]
-floorl [test $HAVE_LOGL = 0]
+log [test $HAVE_LOGL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1]
+frexpl [test $HAVE_LOGL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+isnanl [test $HAVE_LOGL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+floorl [test $HAVE_LOGL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
configure.ac:
gl_FUNC_LOGL
Depends-on:
unistd
largefile
+msvc-nothrow [test $REPLACE_LSEEK = 1]
+fstat [test $REPLACE_LSEEK = 1]
configure.ac:
gl_FUNC_LSEEK
snippet/arg-nonnull
snippet/c++defs
snippet/warn-on-use
+float
configure.ac:
gl_MATH_H
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_AS_FIRST_DIRECTIVE_MATH_H''@|$(NEXT_AS_FIRST_DIRECTIVE_MATH_H)|g' \
+ -e 's/@''GNULIB_ACOSF''@/$(GNULIB_ACOSF)/g' \
-e 's/@''GNULIB_ACOSL''@/$(GNULIB_ACOSL)/g' \
+ -e 's/@''GNULIB_ASINF''@/$(GNULIB_ASINF)/g' \
-e 's/@''GNULIB_ASINL''@/$(GNULIB_ASINL)/g' \
+ -e 's/@''GNULIB_ATANF''@/$(GNULIB_ATANF)/g' \
-e 's/@''GNULIB_ATANL''@/$(GNULIB_ATANL)/g' \
+ -e 's/@''GNULIB_ATAN2F''@/$(GNULIB_ATAN2F)/g' \
-e 's/@''GNULIB_CEIL''@/$(GNULIB_CEIL)/g' \
-e 's/@''GNULIB_CEILF''@/$(GNULIB_CEILF)/g' \
-e 's/@''GNULIB_CEILL''@/$(GNULIB_CEILL)/g' \
+ -e 's/@''GNULIB_COPYSIGN''@/$(GNULIB_COPYSIGN)/g' \
+ -e 's/@''GNULIB_COPYSIGNF''@/$(GNULIB_COPYSIGNF)/g' \
+ -e 's/@''GNULIB_COPYSIGNL''@/$(GNULIB_COPYSIGNL)/g' \
+ -e 's/@''GNULIB_COSF''@/$(GNULIB_COSF)/g' \
-e 's/@''GNULIB_COSL''@/$(GNULIB_COSL)/g' \
+ -e 's/@''GNULIB_COSHF''@/$(GNULIB_COSHF)/g' \
+ -e 's/@''GNULIB_EXPF''@/$(GNULIB_EXPF)/g' \
-e 's/@''GNULIB_EXPL''@/$(GNULIB_EXPL)/g' \
+ -e 's/@''GNULIB_FABSF''@/$(GNULIB_FABSF)/g' \
-e 's/@''GNULIB_FLOOR''@/$(GNULIB_FLOOR)/g' \
-e 's/@''GNULIB_FLOORF''@/$(GNULIB_FLOORF)/g' \
-e 's/@''GNULIB_FLOORL''@/$(GNULIB_FLOORL)/g' \
+ -e 's/@''GNULIB_FMA''@/$(GNULIB_FMA)/g' \
+ -e 's/@''GNULIB_FMAF''@/$(GNULIB_FMAF)/g' \
+ -e 's/@''GNULIB_FMAL''@/$(GNULIB_FMAL)/g' \
+ -e 's/@''GNULIB_FMODF''@/$(GNULIB_FMODF)/g' \
+ -e 's/@''GNULIB_FREXPF''@/$(GNULIB_FREXPF)/g' \
-e 's/@''GNULIB_FREXP''@/$(GNULIB_FREXP)/g' \
-e 's/@''GNULIB_FREXPL''@/$(GNULIB_FREXPL)/g' \
-e 's/@''GNULIB_ISFINITE''@/$(GNULIB_ISFINITE)/g' \
-e 's/@''GNULIB_ISNANF''@/$(GNULIB_ISNANF)/g' \
-e 's/@''GNULIB_ISNAND''@/$(GNULIB_ISNAND)/g' \
-e 's/@''GNULIB_ISNANL''@/$(GNULIB_ISNANL)/g' \
+ -e 's/@''GNULIB_LDEXPF''@/$(GNULIB_LDEXPF)/g' \
-e 's/@''GNULIB_LDEXPL''@/$(GNULIB_LDEXPL)/g' \
-e 's/@''GNULIB_LOGB''@/$(GNULIB_LOGB)/g' \
+ -e 's/@''GNULIB_LOGF''@/$(GNULIB_LOGF)/g' \
-e 's/@''GNULIB_LOGL''@/$(GNULIB_LOGL)/g' \
+ -e 's/@''GNULIB_LOG10F''@/$(GNULIB_LOG10F)/g' \
+ -e 's/@''GNULIB_MODFF''@/$(GNULIB_MODFF)/g' \
+ -e 's/@''GNULIB_POWF''@/$(GNULIB_POWF)/g' \
+ -e 's/@''GNULIB_RINT''@/$(GNULIB_RINT)/g' \
+ -e 's/@''GNULIB_RINTF''@/$(GNULIB_RINTF)/g' \
+ -e 's/@''GNULIB_RINTL''@/$(GNULIB_RINTL)/g' \
-e 's/@''GNULIB_ROUND''@/$(GNULIB_ROUND)/g' \
-e 's/@''GNULIB_ROUNDF''@/$(GNULIB_ROUNDF)/g' \
-e 's/@''GNULIB_ROUNDL''@/$(GNULIB_ROUNDL)/g' \
-e 's/@''GNULIB_SIGNBIT''@/$(GNULIB_SIGNBIT)/g' \
+ -e 's/@''GNULIB_SINF''@/$(GNULIB_SINF)/g' \
-e 's/@''GNULIB_SINL''@/$(GNULIB_SINL)/g' \
+ -e 's/@''GNULIB_SINHF''@/$(GNULIB_SINHF)/g' \
+ -e 's/@''GNULIB_SQRTF''@/$(GNULIB_SQRTF)/g' \
-e 's/@''GNULIB_SQRTL''@/$(GNULIB_SQRTL)/g' \
+ -e 's/@''GNULIB_TANF''@/$(GNULIB_TANF)/g' \
-e 's/@''GNULIB_TANL''@/$(GNULIB_TANL)/g' \
+ -e 's/@''GNULIB_TANHF''@/$(GNULIB_TANHF)/g' \
-e 's/@''GNULIB_TRUNC''@/$(GNULIB_TRUNC)/g' \
-e 's/@''GNULIB_TRUNCF''@/$(GNULIB_TRUNCF)/g' \
-e 's/@''GNULIB_TRUNCL''@/$(GNULIB_TRUNCL)/g' \
< $(srcdir)/math.in.h | \
- sed -e 's|@''HAVE_ACOSL''@|$(HAVE_ACOSL)|g' \
+ sed -e 's|@''HAVE_ACOSF''@|$(HAVE_ACOSF)|g' \
+ -e 's|@''HAVE_ACOSL''@|$(HAVE_ACOSL)|g' \
+ -e 's|@''HAVE_ASINF''@|$(HAVE_ASINF)|g' \
-e 's|@''HAVE_ASINL''@|$(HAVE_ASINL)|g' \
+ -e 's|@''HAVE_ATANF''@|$(HAVE_ATANF)|g' \
-e 's|@''HAVE_ATANL''@|$(HAVE_ATANL)|g' \
+ -e 's|@''HAVE_ATAN2F''@|$(HAVE_ATAN2F)|g' \
+ -e 's|@''HAVE_COPYSIGN''@|$(HAVE_COPYSIGN)|g' \
+ -e 's|@''HAVE_COPYSIGNF''@|$(HAVE_COPYSIGNF)|g' \
+ -e 's|@''HAVE_COPYSIGNL''@|$(HAVE_COPYSIGNL)|g' \
+ -e 's|@''HAVE_COSF''@|$(HAVE_COSF)|g' \
-e 's|@''HAVE_COSL''@|$(HAVE_COSL)|g' \
+ -e 's|@''HAVE_COSHF''@|$(HAVE_COSHF)|g' \
+ -e 's|@''HAVE_EXPF''@|$(HAVE_EXPF)|g' \
-e 's|@''HAVE_EXPL''@|$(HAVE_EXPL)|g' \
+ -e 's|@''HAVE_FABSF''@|$(HAVE_FABSF)|g' \
+ -e 's|@''HAVE_FMA''@|$(HAVE_FMA)|g' \
+ -e 's|@''HAVE_FMAF''@|$(HAVE_FMAF)|g' \
+ -e 's|@''HAVE_FMAL''@|$(HAVE_FMAL)|g' \
+ -e 's|@''HAVE_FMODF''@|$(HAVE_FMODF)|g' \
+ -e 's|@''HAVE_FREXPF''@|$(HAVE_FREXPF)|g' \
-e 's|@''HAVE_ISNANF''@|$(HAVE_ISNANF)|g' \
-e 's|@''HAVE_ISNAND''@|$(HAVE_ISNAND)|g' \
-e 's|@''HAVE_ISNANL''@|$(HAVE_ISNANL)|g' \
+ -e 's|@''HAVE_LDEXPF''@|$(HAVE_LDEXPF)|g' \
+ -e 's|@''HAVE_LOGF''@|$(HAVE_LOGF)|g' \
-e 's|@''HAVE_LOGL''@|$(HAVE_LOGL)|g' \
+ -e 's|@''HAVE_LOG10F''@|$(HAVE_LOG10F)|g' \
+ -e 's|@''HAVE_MODFF''@|$(HAVE_MODFF)|g' \
+ -e 's|@''HAVE_POWF''@|$(HAVE_POWF)|g' \
+ -e 's|@''HAVE_RINT''@|$(HAVE_RINT)|g' \
+ -e 's|@''HAVE_RINTF''@|$(HAVE_RINTF)|g' \
+ -e 's|@''HAVE_RINTL''@|$(HAVE_RINTL)|g' \
+ -e 's|@''HAVE_SINF''@|$(HAVE_SINF)|g' \
-e 's|@''HAVE_SINL''@|$(HAVE_SINL)|g' \
+ -e 's|@''HAVE_SINHF''@|$(HAVE_SINHF)|g' \
+ -e 's|@''HAVE_SQRTF''@|$(HAVE_SQRTF)|g' \
-e 's|@''HAVE_SQRTL''@|$(HAVE_SQRTL)|g' \
+ -e 's|@''HAVE_TANF''@|$(HAVE_TANF)|g' \
-e 's|@''HAVE_TANL''@|$(HAVE_TANL)|g' \
+ -e 's|@''HAVE_TANHF''@|$(HAVE_TANHF)|g' \
-e 's|@''HAVE_DECL_ACOSL''@|$(HAVE_DECL_ACOSL)|g' \
-e 's|@''HAVE_DECL_ASINL''@|$(HAVE_DECL_ASINL)|g' \
-e 's|@''HAVE_DECL_ATANL''@|$(HAVE_DECL_ATANL)|g' \
-e 's|@''REPLACE_FLOOR''@|$(REPLACE_FLOOR)|g' \
-e 's|@''REPLACE_FLOORF''@|$(REPLACE_FLOORF)|g' \
-e 's|@''REPLACE_FLOORL''@|$(REPLACE_FLOORL)|g' \
+ -e 's|@''REPLACE_FMA''@|$(REPLACE_FMA)|g' \
+ -e 's|@''REPLACE_FMAF''@|$(REPLACE_FMAF)|g' \
+ -e 's|@''REPLACE_FMAL''@|$(REPLACE_FMAL)|g' \
+ -e 's|@''REPLACE_FREXPF''@|$(REPLACE_FREXPF)|g' \
-e 's|@''REPLACE_FREXP''@|$(REPLACE_FREXP)|g' \
-e 's|@''REPLACE_FREXPL''@|$(REPLACE_FREXPL)|g' \
-e 's|@''REPLACE_HUGE_VAL''@|$(REPLACE_HUGE_VAL)|g' \
-e 's|@''REPLACE_ISFINITE''@|$(REPLACE_ISFINITE)|g' \
-e 's|@''REPLACE_ISINF''@|$(REPLACE_ISINF)|g' \
-e 's|@''REPLACE_ISNAN''@|$(REPLACE_ISNAN)|g' \
+ -e 's|@''REPLACE_ITOLD''@|$(REPLACE_ITOLD)|g' \
-e 's|@''REPLACE_LDEXPL''@|$(REPLACE_LDEXPL)|g' \
-e 's|@''REPLACE_NAN''@|$(REPLACE_NAN)|g' \
-e 's|@''REPLACE_ROUND''@|$(REPLACE_ROUND)|g' \
TESTS += test-math-c++
check_PROGRAMS += test-math-c++
test_math_c___SOURCES = test-math-c++.cc test-math-c++2.cc
+# These link dependencies are needed on IRIX 6.5 with cc.
+test_math_c___LDADD = $(LDADD) $(COPYSIGNL_LIBM) $(RINT_LIBM) $(RINTL_LIBM)
endif
Depends-on:
error
fcntl-h
+fstat
gettext-h
lchmod
lchown
--- /dev/null
+Description:
+mkdirat() function: Create a directory relative to a given directory.
+
+Files:
+lib/mkdirat.c
+lib/at-func.c
+lib/openat-priv.h
+m4/mkdirat.m4
+
+Depends-on:
+sys_stat
+extensions
+at-internal [test $HAVE_MKDIRAT = 0]
+dosname [test $HAVE_MKDIRAT = 0]
+errno [test $HAVE_MKDIRAT = 0]
+fchdir [test $HAVE_MKDIRAT = 0]
+fcntl-h [test $HAVE_MKDIRAT = 0]
+mkdir [test $HAVE_MKDIRAT = 0]
+openat-die [test $HAVE_MKDIRAT = 0]
+openat-h [test $HAVE_MKDIRAT = 0]
+save-cwd [test $HAVE_MKDIRAT = 0]
+unistd [test $HAVE_MKDIRAT = 0]
+
+configure.ac:
+gl_FUNC_MKDIRAT
+if test $HAVE_MKDIRAT = 0; then
+ AC_LIBOBJ([mkdirat])
+ gl_PREREQ_MKDIRAT
+fi
+gl_SYS_STAT_MODULE_INDICATOR([mkdirat])
+
+Makefile.am:
+
+Include:
+<sys/stat.h>
+
+License:
+GPL
+
+Maintainer:
+Jim Meyering, Eric Blake
--- /dev/null
+Files:
+tests/test-mkdirat.c
+tests/test-mkdir.h
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+ignore-value
+progname
+symlink
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-mkdirat
+check_PROGRAMS += test-mkdirat
+test_mkdirat_LDADD = $(LDADD) @LIBINTL@
Description:
-mkfifoat() and mknodat(): create named FIFOs relative to a directory
+mkfifoat() function and mknodat() function: create named FIFOs relative to a
+directory
Files:
lib/mkfifoat.c
lib/mknodat.c
+lib/at-func.c
m4/mkfifoat.m4
Depends-on:
sys_stat
extensions
-fcntl-h
+at-internal [test $HAVE_MKFIFOAT = 0 || test $HAVE_MKNODAT = 0]
+dosname [test $HAVE_MKFIFOAT = 0 || test $HAVE_MKNODAT = 0]
+errno [test $HAVE_MKFIFOAT = 0 || test $HAVE_MKNODAT = 0]
+fchdir [test $HAVE_MKFIFOAT = 0 || test $HAVE_MKNODAT = 0]
+fcntl-h [test $HAVE_MKFIFOAT = 0 || test $HAVE_MKNODAT = 0]
+openat-die [test $HAVE_MKFIFOAT = 0 || test $HAVE_MKNODAT = 0]
+openat-h [test $HAVE_MKFIFOAT = 0 || test $HAVE_MKNODAT = 0]
+save-cwd [test $HAVE_MKFIFOAT = 0 || test $HAVE_MKNODAT = 0]
mkfifo [test $HAVE_MKFIFOAT = 0]
mknod [test $HAVE_MKNODAT = 0]
-openat [test $HAVE_MKFIFOAT = 0 || test $HAVE_MKNODAT = 0]
configure.ac:
gl_FUNC_MKFIFOAT
if test $HAVE_MKNODAT = 0; then
AC_LIBOBJ([mknodat])
fi
-gl_UNISTD_MODULE_INDICATOR([mkfifoat])
-gl_UNISTD_MODULE_INDICATOR([mknodat])
+gl_SYS_STAT_MODULE_INDICATOR([mkfifoat])
+gl_SYS_STAT_MODULE_INDICATOR([mknodat])
Makefile.am:
tests/macros.h
Depends-on:
+fstatat
ignore-value
symlink
+unlinkat
configure.ac:
modf() function: get signed integer and fractional parts.
Files:
+m4/modf.m4
m4/mathfunc.m4
Depends-on:
configure.ac:
-gl_MATHFUNC([modf], [double], [(double, double *)])
+gl_FUNC_MODF
Makefile.am:
--- /dev/null
+Description:
+modff() function: get signed integer and fractional parts.
+
+Files:
+lib/modff.c
+m4/modff.m4
+m4/mathfunc.m4
+
+Depends-on:
+math
+modf [test $HAVE_MODFF = 0]
+
+configure.ac:
+gl_FUNC_MODFF
+if test $HAVE_MODFF = 0; then
+ AC_LIBOBJ([modff])
+fi
+gl_MATH_MODULE_INDICATOR([modff])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(MODFF_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-modff.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-modff
+check_PROGRAMS += test-modff
+test_modff_LDADD = $(LDADD) @MODFF_LIBM@
--- /dev/null
+Description:
+invalid parameter handler for MSVC runtime libraries
+
+Files:
+lib/msvc-inval.h
+lib/msvc-inval.c
+m4/msvc-inval.m4
+
+Depends-on:
+
+configure.ac:
+gl_MSVC_INVAL
+if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+ AC_LIBOBJ([msvc-inval])
+fi
+
+Makefile.am:
+
+Include:
+"msvc-inval.h"
+
+License:
+LGPLv2+
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Description:
+wrappers that don't throw invalid parameter notifications with MSVC runtime
+libraries
+
+Files:
+lib/msvc-nothrow.h
+lib/msvc-nothrow.c
+m4/msvc-nothrow.m4
+
+Depends-on:
+msvc-inval
+
+configure.ac:
+gl_MSVC_NOTHROW
+if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+ AC_LIBOBJ([msvc-nothrow])
+fi
+
+Makefile.am:
+
+Include:
+"msvc-nothrow.h"
+
+License:
+LGPLv2+
+
+Maintainer:
+Bruno Haible
Depends-on:
fcntl-h
ioctl
+msvc-nothrow
stdbool
stdio
sys_socket
Files:
m4/obstack-printf.m4
m4/obstack-printf-posix.m4
+m4/math_h.m4
lib/obstack_printf.c
Depends-on:
Depends-on:
fcntl-h
largefile
+fstat [test $REPLACE_OPEN = 1]
stat [test $REPLACE_OPEN = 1]
configure.ac:
Description:
-Open a file at a directory.
+openat() function: Open a file at a directory.
Files:
-lib/at-func.c
-lib/fchmodat.c
-lib/fchownat.c
-lib/fstatat.c
-lib/mkdirat.c
lib/openat.c
-lib/openat.h
lib/openat-priv.h
-lib/openat-proc.c
-lib/unlinkat.c
m4/openat.m4
+m4/lstat.m4
m4/mode_t.m4
Depends-on:
-dosname
-errno
-extensions
-fchdir
fcntl-h
-fdopendir
-gettext-h
-intprops
+extensions
largefile
-lchown [test $HAVE_FCHOWNAT = 0 || test $REPLACE_FCHOWNAT = 1]
-lstat
-mkdir [test $HAVE_MKDIRAT = 0]
-open
-openat-die
-rmdir [test $REPLACE_UNLINKAT = 1]
-save-cwd
-stdbool
-sys_stat
-unistd
-unlink [test $REPLACE_UNLINKAT = 1]
+openat-h [test $HAVE_OPENAT = 0 || test $REPLACE_OPENAT = 1]
+stdbool [test $HAVE_OPENAT = 0 || test $REPLACE_OPENAT = 1]
+sys_stat [test $HAVE_OPENAT = 0 || test $REPLACE_OPENAT = 1]
+fstat [test $REPLACE_OPENAT = 1]
+at-internal [test $HAVE_OPENAT = 0]
+dosname [test $HAVE_OPENAT = 0]
+errno [test $HAVE_OPENAT = 0]
+fchdir [test $HAVE_OPENAT = 0]
+open [test $HAVE_OPENAT = 0]
+openat-die [test $HAVE_OPENAT = 0]
+save-cwd [test $HAVE_OPENAT = 0]
configure.ac:
gl_FUNC_OPENAT
-AC_LIBOBJ([openat-proc])
-if test $HAVE_FCHMODAT = 0; then
- AC_LIBOBJ([fchmodat])
-fi
-if test $ac_cv_func_fstatat = no || test $REPLACE_FSTATAT = 1; then
- AC_LIBOBJ([fstatat])
-fi
-if test $HAVE_MKDIRAT = 0; then
- AC_LIBOBJ([mkdirat])
-fi
if test $HAVE_OPENAT = 0 || test $REPLACE_OPENAT = 1; then
AC_LIBOBJ([openat])
+ gl_PREREQ_OPENAT
fi
-if test $ac_cv_func_unlinkat = no || test $REPLACE_UNLINKAT = 1; then
- AC_LIBOBJ([unlinkat])
-fi
-if test $HAVE_FCHOWNAT = 0 || test $REPLACE_FCHOWNAT = 1; then
- AC_LIBOBJ([fchownat])
-fi
+gl_MODULE_INDICATOR([openat]) dnl for lib/getcwd.c
+gl_FCNTL_MODULE_INDICATOR([openat])
Makefile.am:
Include:
<fcntl.h>
-<sys/stat.h>
-<unistd.h>
-"openat.h"
License:
GPL
lib/openat-die.c
Depends-on:
-openat
+openat-h
error
-gettext-h
exitfail
+gettext-h
configure.ac:
--- /dev/null
+Description:
+Declarations of functions related to accessing files relative to a directory.
+
+Files:
+lib/openat.h
+
+Depends-on:
+fcntl-h
+stdbool
+sys_stat
+unistd
+
+configure.ac:
+
+Makefile.am:
+
+Include:
+"openat.h"
+
+License:
+GPL
+
+Maintainer:
+Jim Meyering, Eric Blake
Files:
-tests/nap.h
-tests/test-chown.h
-tests/test-lchown.h
-tests/test-lstat.h
-tests/test-mkdir.h
-tests/test-rmdir.h
-tests/test-stat.h
-tests/test-unlink.h
-tests/test-fchownat.c
-tests/test-fstatat.c
-tests/test-mkdirat.c
tests/test-openat.c
-tests/test-unlinkat.c
+tests/test-open.h
tests/signature.h
tests/macros.h
Depends-on:
-getcwd-lgpl
-ignore-value
-mgetgroups
progname
-usleep
-stat-time
symlink
-unlinkdir
configure.ac:
-AC_CHECK_FUNCS_ONCE([getegid])
Makefile.am:
-TESTS += test-fchownat test-fstatat test-mkdirat test-openat test-unlinkat
-check_PROGRAMS += test-fchownat test-fstatat test-mkdirat test-openat \
- test-unlinkat
-test_fchownat_LDADD = $(LDADD) @LIBINTL@
-test_fstatat_LDADD = $(LDADD) @LIBINTL@
-test_mkdirat_LDADD = $(LDADD) @LIBINTL@
+TESTS += test-openat
+check_PROGRAMS += test-openat
test_openat_LDADD = $(LDADD) @LIBINTL@
-test_unlinkat_LDADD = $(LDADD) @LIBINTL@
--- /dev/null
+Description:
+opendir() function: start reading the entries of a directory
+
+Files:
+lib/opendir.c
+lib/dirent-private.h
+m4/opendir.m4
+
+Depends-on:
+dirent
+largefile
+filename [test $HAVE_OPENDIR = 0 || test $REPLACE_OPENDIR = 1]
+unistd [test $HAVE_OPENDIR = 0 || test $REPLACE_OPENDIR = 1]
+closedir [test $HAVE_OPENDIR = 0 || test $REPLACE_OPENDIR = 1]
+
+configure.ac:
+gl_FUNC_OPENDIR
+if test $HAVE_OPENDIR = 0 || test $REPLACE_OPENDIR = 1; then
+ AC_LIBOBJ([opendir])
+fi
+gl_DIRENT_MODULE_INDICATOR([opendir])
+
+Makefile.am:
+
+Include:
+<dirent.h>
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
Depends-on:
pty
extensions
-fcntl-h
-ioctl
+fcntl-h [test $HAVE_OPENPTY = 0 || test $REPLACE_OPENPTY = 1]
+posix_openpt [test $HAVE_OPENPTY = 0 || test $REPLACE_OPENPTY = 1]
+ioctl [test $HAVE_OPENPTY = 0 || test $REPLACE_OPENPTY = 1]
configure.ac:
gl_FUNC_OPENPTY
$(PTY_LIB)
License:
-LGPL
+LGPLv2+
Maintainer:
Simon Josefsson
--- /dev/null
+Description:
+pclose() function: close a stream to a shell command.
+
+Files:
+lib/pclose.c
+m4/pclose.m4
+
+Depends-on:
+stdio
+
+configure.ac:
+gl_FUNC_PCLOSE
+if test $HAVE_PCLOSE = 0; then
+ AC_LIBOBJ([pclose])
+ gl_PREREQ_PCLOSE
+fi
+gl_STDIO_MODULE_INDICATOR([pclose])
+
+Makefile.am:
+
+Include:
+<stdio.h>
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+
+Depends-on:
+popen-tests
+
+configure.ac:
+
+Makefile.am:
Depends-on:
dup2
+ftruncate
strerror
configure.ac:
Depends-on:
stdbool
binary-io
+msvc-nothrow
configure.ac:
Depends-on:
stdbool
+msvc-nothrow
configure.ac:
poll-h
alloca [test $HAVE_POLL = 0 || test $REPLACE_POLL = 1]
select [test $HAVE_POLL = 0 || test $REPLACE_POLL = 1]
+sockets [test $HAVE_POLL = 0 || test $REPLACE_POLL = 1]
sys_select [test $HAVE_POLL = 0 || test $REPLACE_POLL = 1]
sys_time [test $HAVE_POLL = 0 || test $REPLACE_POLL = 1]
errno [test $HAVE_POLL = 0 || test $REPLACE_POLL = 1]
+msvc-nothrow [test $HAVE_POLL = 0 || test $REPLACE_POLL = 1]
configure.ac:
gl_FUNC_POLL
Include:
<poll.h>
+Link:
+$(LIB_POLL)
+
License:
LGPLv2+
TESTS += test-poll-h-c++
check_PROGRAMS += test-poll-h-c++
test_poll_h_c___SOURCES = test-poll-h-c++.cc
-test_poll_h_c___LDADD = $(LDADD) @LIBSOCKET@
+test_poll_h_c___LDADD = $(LDADD) $(LIB_POLL)
endif
Makefile.am:
TESTS += test-poll
check_PROGRAMS += test-poll
-test_poll_LDADD = $(LDADD) @LIBSOCKET@ $(INET_PTON_LIB)
+test_poll_LDADD = $(LDADD) $(LIB_POLL) @LIBSOCKET@ $(INET_PTON_LIB)
Depends-on:
stdio
-open [test $REPLACE_POPEN = 1]
+open [test $HAVE_POPEN = 0 || test $REPLACE_POPEN = 1]
configure.ac:
gl_FUNC_POPEN
-if test $REPLACE_POPEN = 1; then
+if test $HAVE_POPEN = 0 || test $REPLACE_POPEN = 1; then
AC_LIBOBJ([popen])
gl_PREREQ_POPEN
fi
Depends-on:
dup2
+pclose
sys_wait
configure.ac:
Depends-on:
dup2
+pclose
sys_wait
configure.ac:
--- /dev/null
+Description:
+posix_openpt() function: Open the master side of a pseudo-terminal.
+
+Files:
+lib/posix_openpt.c
+m4/posix_openpt.m4
+
+Depends-on:
+extensions
+stdlib
+
+configure.ac:
+gl_FUNC_POSIX_OPENPT
+if test $HAVE_POSIX_OPENPT = 0; then
+ AC_LIBOBJ([posix_openpt])
+fi
+gl_STDLIB_MODULE_INDICATOR([posix_openpt])
+
+Makefile.am:
+
+Include:
+<stdlib.h>
+
+License:
+LGPLv2+
+
+Maintainer:
+Eric Blake
--- /dev/null
+Files:
+tests/test-posix_openpt.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+grantpt
+ptsname
+unlockpt
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-posix_openpt
+check_PROGRAMS += test-posix_openpt
Depends-on:
spawn
-getdtablesize [test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1]
+getdtablesize [test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1]
+posix_spawn_file_actions_init [test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1]
configure.ac:
gl_POSIX_SPAWN
--- /dev/null
+Files:
+tests/test-posix_spawn_file_actions_addclose.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+posix_spawn_file_actions_init
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-posix_spawn_file_actions_addclose
+check_PROGRAMS += test-posix_spawn_file_actions_addclose
Depends-on:
spawn
-getdtablesize [test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1]
+getdtablesize [test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1]
+posix_spawn_file_actions_init [test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1]
configure.ac:
gl_POSIX_SPAWN
--- /dev/null
+Files:
+tests/test-posix_spawn_file_actions_adddup2.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+posix_spawn_file_actions_init
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-posix_spawn_file_actions_adddup2
+check_PROGRAMS += test-posix_spawn_file_actions_adddup2
Depends-on:
spawn
-getdtablesize [test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1]
+getdtablesize [test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1]
+posix_spawn_file_actions_init [test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1]
configure.ac:
gl_POSIX_SPAWN
--- /dev/null
+Files:
+tests/test-posix_spawn_file_actions_addopen.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+posix_spawn_file_actions_init
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-posix_spawn_file_actions_addopen
+check_PROGRAMS += test-posix_spawn_file_actions_addopen
stdbool
unistd
sys_wait
+dup
configure.ac:
AC_EGREP_CPP([notposix], [[
pow() function: power function.
Files:
+m4/pow.m4
m4/mathfunc.m4
Depends-on:
configure.ac:
-gl_COMMON_DOUBLE_MATHFUNC([pow])
+gl_FUNC_POW
Makefile.am:
--- /dev/null
+Description:
+powf() function: power function.
+
+Files:
+lib/powf.c
+m4/powf.m4
+
+Depends-on:
+math
+pow [test $HAVE_POWF = 0]
+
+configure.ac:
+gl_FUNC_POWF
+if test $HAVE_POWF = 0; then
+ AC_LIBOBJ([powf])
+fi
+gl_MATH_MODULE_INDICATOR([powf])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(POWF_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-powf.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-powf
+check_PROGRAMS += test-powf
+test_powf_LDADD = $(LDADD) @POWF_LIBM@
m4/ldexpl.m4
Depends-on:
-float
-math
-fpucw
+printf-frexp [test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1]
+float [test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+math [test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+fpucw [test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
configure.ac:
gl_FUNC_PRINTF_FREXPL
tests/test-printf-posix.output
tests/test-printf-posix2.sh
tests/test-printf-posix2.c
+tests/infinity.h
tests/signature.h
tests/macros.h
<sys/select.h>
Link:
-$(LIBSOCKET) $(LIB_PTHREAD_SIGMASK)
+$(LIB_SELECT) $(LIB_PTHREAD_SIGMASK)
License:
LGPLv2+
Makefile.am:
TESTS += test-pselect
check_PROGRAMS += test-pselect
-test_pselect_LDADD = $(LDADD) @LIBSOCKET@ @LIB_PTHREAD_SIGMASK@ $(INET_PTON_LIB)
+test_pselect_LDADD = $(LDADD) @LIB_SELECT@ @LIBSOCKET@ @LIB_PTHREAD_SIGMASK@ $(INET_PTON_LIB)
Depends-on:
ptsname
stdlib
+configmake
configure.ac:
Makefile.am:
# TODO: Add rules for installing as setuid root (chown root, chmod a=rx,u+s).
-# The next line can be removed once we assume automake >= 1.11.
-pkglibexecdir = $(libexecdir)/@PACKAGE@
pkglibexec_PROGRAMS = pt_chown
pt_chown_LDADD = libgnu.a
Include:
License:
-LGPL
+LGPLv2+
Maintainer:
glibc
m4/pthread_sigmask.m4
Depends-on:
-signal
+signal-h
threadlib
sigprocmask [test $HAVE_PTHREAD_SIGMASK = 0 || test $REPLACE_PTHREAD_SIGMASK = 1]
Depends-on:
stdlib
extensions
-ttyname_r [test $HAVE_PTSNAME = 0]
+ptsname_r [test $HAVE_PTSNAME = 0]
configure.ac:
gl_FUNC_PTSNAME
<stdlib.h>
License:
-LGPL
+LGPLv2+
Maintainer:
Bruno Haible
same-inode
configure.ac:
+AC_CHECK_DECLS_ONCE([alarm])
Makefile.am:
TESTS += test-ptsname
--- /dev/null
+Description:
+ptsname_r() function: Determine name of the slave side of a pseudo-terminal.
+
+Files:
+lib/ptsname_r.c
+m4/ptsname_r.m4
+
+Depends-on:
+stdlib
+extensions
+ttyname_r [test $HAVE_PTSNAME_R = 0 || test $REPLACE_PTSNAME_R = 1]
+
+configure.ac:
+gl_FUNC_PTSNAME_R
+if test $HAVE_PTSNAME_R = 0 || test $REPLACE_PTSNAME_R = 1; then
+ AC_LIBOBJ([ptsname_r])
+ gl_PREREQ_PTSNAME_R
+fi
+gl_STDLIB_MODULE_INDICATOR([ptsname_r])
+
+Makefile.am:
+
+Include:
+<stdlib.h>
+
+License:
+LGPLv2+
+
+Maintainer:
+Bruno Haible, Eric Blake
--- /dev/null
+Files:
+tests/test-ptsname_r.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+same-inode
+
+configure.ac:
+AC_CHECK_DECLS_ONCE([alarm])
+
+Makefile.am:
+TESTS += test-ptsname_r
+check_PROGRAMS += test-ptsname_r
Depends-on:
stdlib
+environ [test $REPLACE_PUTENV = 1]
malloc-posix [test $REPLACE_PUTENV = 1]
configure.ac:
Description:
Send a signal to the executing process.
-Status:
-obsolete
-
-Notice:
-This module is obsolete.
-
Files:
lib/raise.c
+m4/raise.m4
Depends-on:
+signal-h
+msvc-inval [test $HAVE_RAISE = 0 || test $REPLACE_RAISE = 1]
configure.ac:
-AC_REPLACE_FUNCS(raise)
+gl_FUNC_RAISE
+if test $HAVE_RAISE = 0 || test $REPLACE_RAISE = 1; then
+ AC_LIBOBJ([raise])
+ gl_PREREQ_RAISE
+fi
+gl_SIGNAL_MODULE_INDICATOR([raise])
Makefile.am:
LGPLv2+
Maintainer:
-Jim Meyering
+Jim Meyering, Bruno Haible
--- /dev/null
+Files:
+tests/test-raise.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-raise
+check_PROGRAMS += test-raise
Depends-on:
unistd
+msvc-inval [test $REPLACE_READ = 1]
+msvc-nothrow [test $REPLACE_READ = 1]
configure.ac:
gl_FUNC_READ
if test $REPLACE_READ = 1; then
AC_LIBOBJ([read])
+ gl_PREREQ_READ
fi
gl_UNISTD_MODULE_INDICATOR([read])
m4/read-file.m4
Depends-on:
+fstat
ftello
malloc-posix
realloc-posix
--- /dev/null
+Files:
+tests/test-read.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+binary-io
+open
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-read
+check_PROGRAMS += test-read
--- /dev/null
+Description:
+readdir() function: read the next entry of a directory
+
+Files:
+lib/readdir.c
+lib/dirent-private.h
+m4/readdir.m4
+
+Depends-on:
+dirent
+largefile
+
+configure.ac:
+gl_FUNC_READDIR
+if test $HAVE_READDIR = 0; then
+ AC_LIBOBJ([readdir])
+fi
+gl_DIRENT_MODULE_INDICATOR([readdir])
+
+Makefile.am:
+
+Include:
+<dirent.h>
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
Description:
-readlinkat(): read symlinks relative to a directory
+readlinkat() function: read symlinks relative to a directory
Files:
lib/readlinkat.c
+lib/at-func.c
m4/readlinkat.m4
Depends-on:
unistd
extensions
-fcntl-h
-openat [test $HAVE_READLINKAT = 0]
+at-internal [test $HAVE_READLINKAT = 0]
+dosname [test $HAVE_READLINKAT = 0]
+errno [test $HAVE_READLINKAT = 0]
+fchdir [test $HAVE_READLINKAT = 0]
+fcntl-h [test $HAVE_READLINKAT = 0]
+openat-die [test $HAVE_READLINKAT = 0]
+openat-h [test $HAVE_READLINKAT = 0]
+save-cwd [test $HAVE_READLINKAT = 0]
readlink [test $HAVE_READLINKAT = 0]
configure.ac:
Depends-on:
ignore-value
+openat
symlinkat
+unlinkat
configure.ac:
Depends-on:
sys_socket
+socketlib
errno [test "$ac_cv_header_winsock2_h" = yes]
+msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes]
configure.ac:
AC_REQUIRE([gl_HEADER_SYS_SOCKET])
Include:
<sys/socket.h>
+Link:
+$(LIBSOCKET)
+
License:
LGPLv2+
--- /dev/null
+Files:
+tests/test-recv.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+sockets
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-recv
+check_PROGRAMS += test-recv
+test_recv_LDADD = $(LDADD) @LIBSOCKET@
Depends-on:
sys_socket
+socketlib
errno [test "$ac_cv_header_winsock2_h" = yes]
getpeername [test "$ac_cv_header_winsock2_h" = yes]
+msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes]
configure.ac:
AC_REQUIRE([gl_HEADER_SYS_SOCKET])
Include:
<sys/socket.h>
+Link:
+$(LIBSOCKET)
+
License:
LGPLv2+
--- /dev/null
+Files:
+tests/test-recvfrom.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+netinet_in
+sockets
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-recvfrom
+check_PROGRAMS += test-recvfrom
+test_recvfrom_LDADD = $(LDADD) @LIBSOCKET@
Depends-on:
stdio
canonicalize-lgpl [test $REPLACE_RENAME = 1]
+chdir [test $REPLACE_RENAME = 1]
dirname-lgpl [test $REPLACE_RENAME = 1]
lstat [test $REPLACE_RENAME = 1]
rmdir [test $REPLACE_RENAME = 1]
stdbool
symlink
sys_stat
+opendir
+readdir
+closedir
configure.ac:
stdio
extensions
fcntl-h
-dosname [test $HAVE_RENAMEAT = 0 || test $REPLACE_RENAMEAT = 1]
filenamecat-lgpl [test $HAVE_RENAMEAT = 0 || test $REPLACE_RENAMEAT = 1]
-getcwd-lgpl [test $HAVE_RENAMEAT = 0 || test $REPLACE_RENAMEAT = 1]
-openat [test $HAVE_RENAMEAT = 0 || test $REPLACE_RENAMEAT = 1]
-rename [test $HAVE_RENAMEAT = 0 || test $REPLACE_RENAMEAT = 1]
-same-inode [test $HAVE_RENAMEAT = 0 || test $REPLACE_RENAMEAT = 1]
-save-cwd [test $HAVE_RENAMEAT = 0 || test $REPLACE_RENAMEAT = 1]
+openat-h [test $HAVE_RENAMEAT = 0 || test $REPLACE_RENAMEAT = 1]
+fstatat [test $REPLACE_RENAMEAT = 1]
+stdbool [test $REPLACE_RENAMEAT = 1]
+at-internal [test $HAVE_RENAMEAT = 0]
+dosname [test $HAVE_RENAMEAT = 0]
+fstat [test $HAVE_RENAMEAT = 0]
+getcwd-lgpl [test $HAVE_RENAMEAT = 0]
+openat-die [test $HAVE_RENAMEAT = 0]
+rename [test $HAVE_RENAMEAT = 0]
+same-inode [test $HAVE_RENAMEAT = 0]
+save-cwd [test $HAVE_RENAMEAT = 0]
configure.ac:
gl_FUNC_RENAMEAT
if test $HAVE_RENAMEAT = 0 || test $REPLACE_RENAMEAT = 1; then
AC_LIBOBJ([renameat])
+fi
+if test $HAVE_RENAMEAT = 0; then
AC_LIBOBJ([at-func2])
fi
gl_STDIO_MODULE_INDICATOR([renameat])
ignore-value
filenamecat
getcwd-lgpl
+opendir
+readdir
+closedir
configure.ac:
--- /dev/null
+Description:
+rewinddir() function: restart reading the entries of a directory from the
+beginning
+
+Files:
+lib/rewinddir.c
+lib/dirent-private.h
+m4/rewinddir.m4
+
+Depends-on:
+dirent
+largefile
+
+configure.ac:
+gl_FUNC_REWINDDIR
+if test $HAVE_REWINDDIR = 0; then
+ AC_LIBOBJ([rewinddir])
+fi
+gl_DIRENT_MODULE_INDICATOR([rewinddir])
+
+Makefile.am:
+
+Include:
+<dirent.h>
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
Description:
-rint() function: round to nearest integer.
+rint() function: round according to the current rounding mode.
Files:
+lib/rint.c
+m4/rint.m4
m4/mathfunc.m4
Depends-on:
+math
configure.ac:
-gl_MATHFUNC([rint], [double], [(double)])
+gl_FUNC_RINT
+if test $HAVE_RINT = 0; then
+ AC_LIBOBJ([rint])
+fi
+gl_MATH_MODULE_INDICATOR([rint])
Makefile.am:
Files:
tests/test-rint.c
+tests/minus-zero.h
+tests/infinity.h
+tests/nan.h
tests/signature.h
tests/macros.h
Depends-on:
+isnand-nolibm
configure.ac:
--- /dev/null
+Description:
+rintf() function: round according to the current rounding mode.
+
+Files:
+lib/rintf.c
+lib/rint.c
+m4/rintf.m4
+m4/mathfunc.m4
+
+Depends-on:
+math
+
+configure.ac:
+gl_FUNC_RINTF
+if test $HAVE_RINTF = 0; then
+ AC_LIBOBJ([rintf])
+fi
+gl_MATH_MODULE_INDICATOR([rintf])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(RINTF_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-rintf.c
+tests/minus-zero.h
+tests/infinity.h
+tests/nan.h
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+isnanf-nolibm
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-rintf
+check_PROGRAMS += test-rintf
+test_rintf_LDADD = $(LDADD) @RINTF_LIBM@
--- /dev/null
+Description:
+rintl() function: round according to the current rounding mode.
+
+Files:
+lib/rintl.c
+lib/rint.c
+m4/rintl.m4
+m4/mathfunc.m4
+
+Depends-on:
+math
+rint [test $HAVE_RINTL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1]
+
+configure.ac:
+gl_FUNC_RINTL
+if test $HAVE_RINTL = 0; then
+ AC_LIBOBJ([rintl])
+fi
+gl_MATH_MODULE_INDICATOR([rintl])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(RINTL_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-rintl.c
+tests/minus-zero.h
+tests/infinity.h
+tests/nan.h
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+fpucw
+isnanl-nolibm
+float
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-rintl
+check_PROGRAMS += test-rintl
+test_rintl_LDADD = $(LDADD) @RINTL_LIBM@
tests/test-round1.c
tests/test-round2.c
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
tests/test-round2.c
tests/test-roundf2.c
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
Depends-on:
math
extensions
-float [test $HAVE_DECL_ROUNDL = 0 || test $REPLACE_ROUNDL = 1]
+round [{ test $HAVE_DECL_ROUNDL = 0 || test $REPLACE_ROUNDL = 1; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1]
+float [{ test $HAVE_DECL_ROUNDL = 0 || test $REPLACE_ROUNDL = 1; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
configure.ac:
gl_FUNC_ROUNDL
Files:
tests/test-roundl.c
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
m4/savedir.m4
Depends-on:
+closedir
dirent-safer
fdopendir
+opendir
+readdir
xalloc
configure.ac:
m4/savewd.m4
Depends-on:
+chdir
dosname
errno
fchdir
m4/scandir.m4
Depends-on:
+closedir
dirent
extensions
largefile
+opendir
+readdir
configure.ac:
gl_FUNC_SCANDIR
sys_select
alloca [test $REPLACE_SELECT = 1]
sockets [test $REPLACE_SELECT = 1]
+msvc-nothrow [test $REPLACE_SELECT = 1]
configure.ac:
gl_FUNC_SELECT
<sys/select.h>
Link:
-$(LIBSOCKET)
+$(LIB_SELECT)
License:
LGPLv2+
TESTS += test-select test-select-in.sh test-select-out.sh
# test-select-stdin has to be run by hand.
check_PROGRAMS += test-select test-select-fd test-select-stdin
-test_select_LDADD = $(LDADD) @LIBSOCKET@ $(INET_PTON_LIB)
-test_select_fd_LDADD = $(LDADD) @LIBSOCKET@
-test_select_stdin_LDADD = $(LDADD) @LIBSOCKET@
+test_select_LDADD = $(LDADD) @LIB_SELECT@ @LIBSOCKET@ $(INET_PTON_LIB)
+test_select_fd_LDADD = $(LDADD) @LIB_SELECT@
+test_select_stdin_LDADD = $(LDADD) @LIB_SELECT@
openat-style fd-relative functions for SE Linux
Files:
-lib/selinux-at.c
lib/selinux-at.h
+lib/selinux-at.c
+lib/at-func.c
Depends-on:
-openat
selinux-h
+at-internal
+dosname
+errno
+extensions
+fchdir
+fcntl-h
+openat-die
+openat-h
+save-cwd
+unistd
configure.ac:
AC_CHECK_HEADERS([selinux/flask.h])
Depends-on:
sys_socket
+socketlib
errno [test "$ac_cv_header_winsock2_h" = yes]
+msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes]
configure.ac:
AC_REQUIRE([gl_HEADER_SYS_SOCKET])
Include:
<sys/socket.h>
+Link:
+$(LIBSOCKET)
+
License:
LGPLv2+
--- /dev/null
+Files:
+tests/test-send.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+sockets
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-send
+check_PROGRAMS += test-send
+test_send_LDADD = $(LDADD) @LIBSOCKET@
Depends-on:
sys_socket
+socketlib
errno [test "$ac_cv_header_winsock2_h" = yes]
+msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes]
configure.ac:
AC_REQUIRE([gl_HEADER_SYS_SOCKET])
Include:
<sys/socket.h>
+Link:
+$(LIBSOCKET)
+
License:
LGPLv2+
--- /dev/null
+Files:
+tests/test-sendto.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+netinet_in
+sockets
+inet_pton
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-sendto
+check_PROGRAMS += test-sendto
+test_sendto_LDADD = $(LDADD) @LIBSOCKET@ $(INET_PTON_LIB)
Depends-on:
sys_socket
+socketlib
sys_time [test "$ac_cv_header_winsock2_h" = yes]
errno [test "$ac_cv_header_winsock2_h" = yes]
+msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes]
configure.ac:
AC_REQUIRE([gl_HEADER_SYS_SOCKET])
Include:
<sys/socket.h>
+Link:
+$(LIBSOCKET)
+
License:
LGPLv2+
--- /dev/null
+Files:
+tests/test-setsockopt.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+netinet_in
+sockets
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-setsockopt
+check_PROGRAMS += test-setsockopt
+test_setsockopt_LDADD = $(LDADD) @LIBSOCKET@
Depends-on:
sys_socket
+socketlib
errno [test "$ac_cv_header_winsock2_h" = yes]
+msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes]
configure.ac:
AC_REQUIRE([gl_HEADER_SYS_SOCKET])
Include:
<sys/socket.h>
+Link:
+$(LIBSOCKET)
+
License:
LGPLv2+
--- /dev/null
+Files:
+tests/test-shutdown.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+sockets
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-shutdown
+check_PROGRAMS += test-shutdown
+test_shutdown_LDADD = $(LDADD) @LIBSOCKET@
m4/sigaction.m4
Depends-on:
-signal
+signal-h
sigprocmask [test $HAVE_SIGACTION = 0]
configure.ac:
Description:
-A GNU-like <signal.h>.
+Placeholder for eventual signal() replacement.
Files:
-lib/signal.in.h
-m4/signal_h.m4
Depends-on:
-include_next
-snippet/arg-nonnull
-snippet/c++defs
-snippet/warn-on-use
-extensions
+signal-h
configure.ac:
-gl_SIGNAL_H
Makefile.am:
-BUILT_SOURCES += signal.h
-
-# We need the following in order to create <signal.h> when the system
-# doesn't have a complete one.
-signal.h: signal.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
- $(AM_V_GEN)rm -f $@-t $@ && \
- { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
- sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
- -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
- -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
- -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
- -e 's|@''NEXT_SIGNAL_H''@|$(NEXT_SIGNAL_H)|g' \
- -e 's|@''GNULIB_PTHREAD_SIGMASK''@|$(GNULIB_PTHREAD_SIGMASK)|g' \
- -e 's/@''GNULIB_SIGNAL_H_SIGPIPE''@/$(GNULIB_SIGNAL_H_SIGPIPE)/g' \
- -e 's/@''GNULIB_SIGPROCMASK''@/$(GNULIB_SIGPROCMASK)/g' \
- -e 's/@''GNULIB_SIGACTION''@/$(GNULIB_SIGACTION)/g' \
- -e 's|@''HAVE_POSIX_SIGNALBLOCKING''@|$(HAVE_POSIX_SIGNALBLOCKING)|g' \
- -e 's|@''HAVE_PTHREAD_SIGMASK''@|$(HAVE_PTHREAD_SIGMASK)|g' \
- -e 's|@''HAVE_SIGSET_T''@|$(HAVE_SIGSET_T)|g' \
- -e 's|@''HAVE_SIGINFO_T''@|$(HAVE_SIGINFO_T)|g' \
- -e 's|@''HAVE_SIGACTION''@|$(HAVE_SIGACTION)|g' \
- -e 's|@''HAVE_STRUCT_SIGACTION_SA_SIGACTION''@|$(HAVE_STRUCT_SIGACTION_SA_SIGACTION)|g' \
- -e 's|@''HAVE_TYPE_VOLATILE_SIG_ATOMIC_T''@|$(HAVE_TYPE_VOLATILE_SIG_ATOMIC_T)|g' \
- -e 's|@''HAVE_SIGHANDLER_T''@|$(HAVE_SIGHANDLER_T)|g' \
- -e 's|@''REPLACE_PTHREAD_SIGMASK''@|$(REPLACE_PTHREAD_SIGMASK)|g' \
- -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
- -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
- -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
- < $(srcdir)/signal.in.h; \
- } > $@-t && \
- mv $@-t $@
-MOSTLYCLEANFILES += signal.h signal.h-t
Include:
-<signal.h>
License:
LGPLv2+
Maintainer:
-all
+Bruno Haible
+++ /dev/null
-Files:
-tests/test-signal-c++.cc
-tests/test-signal-c++2.cc
-tests/signature.h
-
-Status:
-c++-test
-
-Depends-on:
-ansi-c++-opt
-
-configure.ac:
-
-Makefile.am:
-if ANSICXX
-TESTS += test-signal-c++
-check_PROGRAMS += test-signal-c++
-test_signal_c___SOURCES = test-signal-c++.cc test-signal-c++2.cc
-test_signal_c___LDADD = $(LDADD) $(LIBINTL) $(LIB_NANOSLEEP) $(LIB_PTHREAD_SIGMASK)
-endif
--- /dev/null
+Description:
+A GNU-like <signal.h>.
+
+Files:
+lib/signal.in.h
+m4/signal_h.m4
+
+Depends-on:
+include_next
+snippet/arg-nonnull
+snippet/c++defs
+snippet/warn-on-use
+extensions
+
+configure.ac:
+gl_SIGNAL_H
+
+Makefile.am:
+BUILT_SOURCES += signal.h
+
+# We need the following in order to create <signal.h> when the system
+# doesn't have a complete one.
+signal.h: signal.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_SIGNAL_H''@|$(NEXT_SIGNAL_H)|g' \
+ -e 's|@''GNULIB_PTHREAD_SIGMASK''@|$(GNULIB_PTHREAD_SIGMASK)|g' \
+ -e 's|@''GNULIB_RAISE''@|$(GNULIB_RAISE)|g' \
+ -e 's/@''GNULIB_SIGNAL_H_SIGPIPE''@/$(GNULIB_SIGNAL_H_SIGPIPE)/g' \
+ -e 's/@''GNULIB_SIGPROCMASK''@/$(GNULIB_SIGPROCMASK)/g' \
+ -e 's/@''GNULIB_SIGACTION''@/$(GNULIB_SIGACTION)/g' \
+ -e 's|@''HAVE_POSIX_SIGNALBLOCKING''@|$(HAVE_POSIX_SIGNALBLOCKING)|g' \
+ -e 's|@''HAVE_PTHREAD_SIGMASK''@|$(HAVE_PTHREAD_SIGMASK)|g' \
+ -e 's|@''HAVE_RAISE''@|$(HAVE_RAISE)|g' \
+ -e 's|@''HAVE_SIGSET_T''@|$(HAVE_SIGSET_T)|g' \
+ -e 's|@''HAVE_SIGINFO_T''@|$(HAVE_SIGINFO_T)|g' \
+ -e 's|@''HAVE_SIGACTION''@|$(HAVE_SIGACTION)|g' \
+ -e 's|@''HAVE_STRUCT_SIGACTION_SA_SIGACTION''@|$(HAVE_STRUCT_SIGACTION_SA_SIGACTION)|g' \
+ -e 's|@''HAVE_TYPE_VOLATILE_SIG_ATOMIC_T''@|$(HAVE_TYPE_VOLATILE_SIG_ATOMIC_T)|g' \
+ -e 's|@''HAVE_SIGHANDLER_T''@|$(HAVE_SIGHANDLER_T)|g' \
+ -e 's|@''REPLACE_PTHREAD_SIGMASK''@|$(REPLACE_PTHREAD_SIGMASK)|g' \
+ -e 's|@''REPLACE_RAISE''@|$(REPLACE_RAISE)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+ < $(srcdir)/signal.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+MOSTLYCLEANFILES += signal.h signal.h-t
+
+Include:
+<signal.h>
+
+License:
+LGPLv2+
+
+Maintainer:
+all
--- /dev/null
+Files:
+tests/test-signal-h-c++.cc
+tests/test-signal-h-c++2.cc
+tests/signature.h
+
+Status:
+c++-test
+
+Depends-on:
+ansi-c++-opt
+
+configure.ac:
+
+Makefile.am:
+if ANSICXX
+TESTS += test-signal-h-c++
+check_PROGRAMS += test-signal-h-c++
+test_signal_h_c___SOURCES = test-signal-h-c++.cc test-signal-h-c++2.cc
+test_signal_h_c___LDADD = $(LDADD) $(LIBINTL) $(LIB_NANOSLEEP) $(LIB_PTHREAD_SIGMASK)
+endif
--- /dev/null
+Files:
+tests/test-signal-h.c
+
+Depends-on:
+signal-h-c++-tests
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-signal-h
+check_PROGRAMS += test-signal-h
+++ /dev/null
-Files:
-tests/test-signal.c
-
-Depends-on:
-signal-c++-tests
-
-configure.ac:
-
-Makefile.am:
-TESTS += test-signal
-check_PROGRAMS += test-signal
Files:
tests/test-signbit.c
tests/minus-zero.h
+tests/infinity.h
tests/macros.h
m4/exponentf.m4
m4/exponentd.m4
m4/asm-underscore.m4
Depends-on:
+msvc-nothrow
raise
-signal
+signal-h
sigprocmask
stdio
unistd
m4/signalblocking.m4
Depends-on:
-signal
+signal-h
stdint [test $HAVE_POSIX_SIGNALBLOCKING = 0]
raise [test $HAVE_POSIX_SIGNALBLOCKING = 0]
+msvc-inval [test $HAVE_POSIX_SIGNALBLOCKING = 0]
configure.ac:
gl_SIGNALBLOCKING
sin() function: sine function.
Files:
+m4/sin.m4
m4/mathfunc.m4
Depends-on:
configure.ac:
-gl_COMMON_DOUBLE_MATHFUNC([sin])
+gl_FUNC_SIN
Makefile.am:
--- /dev/null
+Description:
+sinf() function: sine function.
+
+Files:
+lib/sinf.c
+m4/sinf.m4
+
+Depends-on:
+math
+sin [test $HAVE_SINF = 0]
+
+configure.ac:
+gl_FUNC_SINF
+if test $HAVE_SINF = 0; then
+ AC_LIBOBJ([sinf])
+fi
+gl_MATH_MODULE_INDICATOR([sinf])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(SINF_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-sinf.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-sinf
+check_PROGRAMS += test-sinf
+test_sinf_LDADD = $(LDADD) @SINF_LIBM@
sinh() function: hyperbolic sine function.
Files:
+m4/sinh.m4
m4/mathfunc.m4
Depends-on:
configure.ac:
-gl_COMMON_DOUBLE_MATHFUNC([sinh])
+gl_FUNC_SINH
Makefile.am:
--- /dev/null
+Description:
+sinhf() function: hyperbolic sine function.
+
+Files:
+lib/sinhf.c
+m4/sinhf.m4
+
+Depends-on:
+math
+sinh [test $HAVE_SINHF = 0]
+
+configure.ac:
+gl_FUNC_SINHF
+if test $HAVE_SINHF = 0; then
+ AC_LIBOBJ([sinhf])
+fi
+gl_MATH_MODULE_INDICATOR([sinhf])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(SINHF_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-sinhf.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-sinhf
+check_PROGRAMS += test-sinhf
+test_sinhf_LDADD = $(LDADD) @SINHF_LIBM@
Depends-on:
math
extensions
-float [test $HAVE_SINL = 0]
-isnanl [test $HAVE_SINL = 0]
-floor [test $HAVE_SINL = 0]
-floorl [test $HAVE_SINL = 0]
+sin [test $HAVE_SINL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1]
+float [test $HAVE_SINL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+isnanl [test $HAVE_SINL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+floor [test $HAVE_SINL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+floorl [test $HAVE_SINL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
configure.ac:
gl_FUNC_SINL
if test $HAVE_SINL = 0; then
AC_LIBOBJ([sinl])
- AC_LIBOBJ([sincosl])
- AC_LIBOBJ([trigl])
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0; then
+ AC_LIBOBJ([sincosl])
+ AC_LIBOBJ([trigl])
+ fi
fi
gl_MATH_MODULE_INDICATOR([sinl])
Files:
m4/snprintf-posix.m4
m4/printf.m4
+m4/math_h.m4
Depends-on:
snprintf
tests/test-snprintf-posix.h
tests/test-snprintf.c
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
float
configure.ac:
+AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
AC_DEFINE([CHECK_SNPRINTF_POSIX], 1,
[Define to 1 for strict checking in test-snprintf.c.])
Depends-on:
sys_socket
+socketlib
errno [test "$ac_cv_header_winsock2_h" = yes]
sockets [test "$ac_cv_header_winsock2_h" = yes]
+msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes]
configure.ac:
AC_REQUIRE([gl_HEADER_SYS_SOCKET])
Include:
<sys/socket.h>
+Link:
+$(LIBSOCKET)
+
License:
LGPLv2+
socketlib
sys_socket
fd-hook
+msvc-nothrow
configure.ac:
gl_SOCKETS
error
fatal-signal
gettext-h
+msvc-nothrow
open
pipe2
pipe2-safer
tests/macros.h
Depends-on:
+close
configure.ac:
lib/sprintf.c
m4/sprintf-posix.m4
m4/printf.m4
+m4/math_h.m4
Depends-on:
stdio
tests/test-sprintf-posix.c
tests/test-sprintf-posix.h
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
float
configure.ac:
+AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
Makefile.am:
TESTS += test-sprintf-posix
--- /dev/null
+Description:
+sqrtf() function: square root.
+
+Files:
+lib/sqrtf.c
+m4/sqrtf.m4
+
+Depends-on:
+math
+sqrt [test $HAVE_SQRTF = 0]
+
+configure.ac:
+gl_FUNC_SQRTF
+if test $HAVE_SQRTF = 0; then
+ AC_LIBOBJ([sqrtf])
+fi
+gl_MATH_MODULE_INDICATOR([sqrtf])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(SQRTF_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-sqrtf.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-sqrtf
+check_PROGRAMS += test-sqrtf
+test_sqrtf_LDADD = $(LDADD) @SQRTF_LIBM@
Depends-on:
math
extensions
-float [test $HAVE_SQRTL = 0]
-isnanl [test $HAVE_SQRTL = 0]
-frexpl [test $HAVE_SQRTL = 0]
-ldexpl [test $HAVE_SQRTL = 0]
sqrt [test $HAVE_SQRTL = 0]
+float [test $HAVE_SQRTL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+isnanl [test $HAVE_SQRTL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+frexpl [test $HAVE_SQRTL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+ldexpl [test $HAVE_SQRTL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
configure.ac:
gl_FUNC_SQRTL
sys_stat
largefile
dosname [test $REPLACE_STAT = 1]
+pathmax [test $REPLACE_STAT = 1]
stdbool [test $REPLACE_STAT = 1]
verify [test $REPLACE_STAT = 1]
Makefile.am:
TESTS += test-stat
check_PROGRAMS += test-stat
+test_stat_LDADD = $(LDADD) $(LIBINTL)
--- /dev/null
+Description:
+A <stdalign.h> that nearly conforms to ISO C1X and C++0X.
+
+Files:
+lib/stdalign.in.h
+m4/stdalign.m4
+
+Depends-on:
+
+configure.ac:
+gl_STDALIGN_H
+
+Makefile.am:
+BUILT_SOURCES += $(STDALIGN_H)
+
+# We need the following in order to create <stdalign.h> when the system
+# doesn't have one that works.
+if GL_GENERATE_STDALIGN_H
+stdalign.h: stdalign.in.h $(top_builddir)/config.status
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ cat $(srcdir)/stdalign.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+else
+stdalign.h: $(top_builddir)/config.status
+ rm -f $@
+endif
+MOSTLYCLEANFILES += stdalign.h stdalign.h-t
+
+Include:
+<stdalign.h>
+
+License:
+LGPLv2+
+
+Maintainer:
+Paul Eggert, Bruno Haible
--- /dev/null
+Files:
+tests/test-stdalign.c
+tests/macros.h
+
+Depends-on:
+verify
+stdint
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-stdalign
+check_PROGRAMS += test-stdalign
configure.ac-early:
dnl Some compilers (e.g., AIX 5.3 cc) need to be in c99 mode
dnl for the builtin va_copy to work. With Autoconf 2.60 or later,
-dnl AC_PROG_CC_STDC arranges for this. With older Autoconf AC_PROG_CC_STDC
+dnl gl_PROG_CC_C99 arranges for this. With older Autoconf gl_PROG_CC_C99
dnl shouldn't hurt, though installers are on their own to set c99 mode.
-AC_REQUIRE([AC_PROG_CC_STDC])
+gl_PROG_CC_C99
configure.ac:
gl_STDARG_H
snippet/arg-nonnull
snippet/c++defs
snippet/warn-on-use
+ssize_t
stddef
configure.ac:
-e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \
-e 's/@''GNULIB_DPRINTF''@/$(GNULIB_DPRINTF)/g' \
-e 's/@''GNULIB_FCLOSE''@/$(GNULIB_FCLOSE)/g' \
+ -e 's/@''GNULIB_FDOPEN''@/$(GNULIB_FDOPEN)/g' \
-e 's/@''GNULIB_FFLUSH''@/$(GNULIB_FFLUSH)/g' \
-e 's/@''GNULIB_FGETC''@/$(GNULIB_FGETC)/g' \
-e 's/@''GNULIB_FGETS''@/$(GNULIB_FGETS)/g' \
-e 's/@''GNULIB_GETS''@/$(GNULIB_GETS)/g' \
-e 's/@''GNULIB_OBSTACK_PRINTF''@/$(GNULIB_OBSTACK_PRINTF)/g' \
-e 's/@''GNULIB_OBSTACK_PRINTF_POSIX''@/$(GNULIB_OBSTACK_PRINTF_POSIX)/g' \
+ -e 's/@''GNULIB_PCLOSE''@/$(GNULIB_PCLOSE)/g' \
-e 's/@''GNULIB_PERROR''@/$(GNULIB_PERROR)/g' \
-e 's/@''GNULIB_POPEN''@/$(GNULIB_POPEN)/g' \
-e 's/@''GNULIB_PRINTF''@/$(GNULIB_PRINTF)/g' \
-e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \
-e 's|@''HAVE_FSEEKO''@|$(HAVE_FSEEKO)|g' \
-e 's|@''HAVE_FTELLO''@|$(HAVE_FTELLO)|g' \
+ -e 's|@''HAVE_PCLOSE''@|$(HAVE_PCLOSE)|g' \
+ -e 's|@''HAVE_POPEN''@|$(HAVE_POPEN)|g' \
-e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \
-e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \
-e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \
-e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \
-e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \
+ -e 's|@''REPLACE_FDOPEN''@|$(REPLACE_FDOPEN)|g' \
-e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \
-e 's|@''REPLACE_FOPEN''@|$(REPLACE_FOPEN)|g' \
-e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \
Depends-on:
verify
stdio-c++-tests
+fgetc-tests
+fputc-tests
+fread-tests
+fwrite-tests
configure.ac:
-e 's/@''GNULIB_MKOSTEMPS''@/$(GNULIB_MKOSTEMPS)/g' \
-e 's/@''GNULIB_MKSTEMP''@/$(GNULIB_MKSTEMP)/g' \
-e 's/@''GNULIB_MKSTEMPS''@/$(GNULIB_MKSTEMPS)/g' \
+ -e 's/@''GNULIB_POSIX_OPENPT''@/$(GNULIB_POSIX_OPENPT)/g' \
-e 's/@''GNULIB_PTSNAME''@/$(GNULIB_PTSNAME)/g' \
+ -e 's/@''GNULIB_PTSNAME_R''@/$(GNULIB_PTSNAME_R)/g' \
-e 's/@''GNULIB_PUTENV''@/$(GNULIB_PUTENV)/g' \
-e 's/@''GNULIB_RANDOM_R''@/$(GNULIB_RANDOM_R)/g' \
-e 's/@''GNULIB_REALLOC_POSIX''@/$(GNULIB_REALLOC_POSIX)/g' \
-e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \
-e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \
-e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \
+ -e 's|@''HAVE_POSIX_OPENPT''@|$(HAVE_POSIX_OPENPT)|g' \
-e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \
+ -e 's|@''HAVE_PTSNAME_R''@|$(HAVE_PTSNAME_R)|g' \
-e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \
-e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \
-e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \
-e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \
-e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \
-e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
+ -e 's|@''REPLACE_PTSNAME_R''@|$(REPLACE_PTSNAME_R)|g' \
-e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
-e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \
-e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \
Description:
Case-insensitive string comparison functions.
-Status:
-obsolete
-
-Notice:
-This module is obsolete.
-
Files:
lib/strcasecmp.c
lib/strncasecmp.c
snippet/arg-nonnull
snippet/c++defs
snippet/warn-on-use
+sys_types
configure.ac:
gl_HEADER_STRINGS_H
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
+ -e 's|@''HAVE_STRINGS_H''@|$(HAVE_STRINGS_H)|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
--- /dev/null
+Files:
+tests/test-strtoimax.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-strtoimax
+check_PROGRAMS += test-strtoimax
--- /dev/null
+Files:
+tests/test-strtoumax.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-strtoumax
+check_PROGRAMS += test-strtoumax
Description:
-symlinkat(): create symlinks relative to a directory
+symlinkat() function: create symlinks relative to a directory
Files:
lib/symlinkat.c
+lib/at-func.c
m4/symlinkat.m4
Depends-on:
unistd
extensions
-fcntl-h
-openat [test $HAVE_SYMLINKAT = 0]
+at-internal [test $HAVE_SYMLINKAT = 0]
+dosname [test $HAVE_SYMLINKAT = 0]
+errno [test $HAVE_SYMLINKAT = 0]
+fchdir [test $HAVE_SYMLINKAT = 0]
+fcntl-h [test $HAVE_SYMLINKAT = 0]
+openat-die [test $HAVE_SYMLINKAT = 0]
+openat-h [test $HAVE_SYMLINKAT = 0]
+save-cwd [test $HAVE_SYMLINKAT = 0]
symlink [test $HAVE_SYMLINKAT = 0]
configure.ac:
Depends-on:
ignore-value
+openat
configure.ac:
Depends-on:
include_next
-signal
+signal-h
snippet/c++defs
snippet/warn-on-use
sys_time
TESTS += test-sys_select-c++
check_PROGRAMS += test-sys_select-c++
test_sys_select_c___SOURCES = test-sys_select-c++.cc
-test_sys_select_c___LDADD = $(LDADD) $(LIBINTL) $(LIBSOCKET) $(LIB_NANOSLEEP)
+test_sys_select_c___LDADD = $(LDADD) $(LIBINTL) $(LIB_SELECT) $(LIB_NANOSLEEP)
endif
m4/sockpfaf.m4
Depends-on:
-alignof
errno
include_next
snippet/arg-nonnull
snippet/c++defs
snippet/warn-on-use
socklen
+ssize_t
+stdalign
sys_uio
configure.ac:
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_SYS_STAT_H''@|$(NEXT_SYS_STAT_H)|g' \
-e 's/@''GNULIB_FCHMODAT''@/$(GNULIB_FCHMODAT)/g' \
+ -e 's/@''GNULIB_FSTAT''@/$(GNULIB_FSTAT)/g' \
-e 's/@''GNULIB_FSTATAT''@/$(GNULIB_FSTATAT)/g' \
-e 's/@''GNULIB_FUTIMENS''@/$(GNULIB_FUTIMENS)/g' \
-e 's/@''GNULIB_LCHMOD''@/$(GNULIB_LCHMOD)/g' \
Files:
lib/sys_time.in.h
m4/sys_time_h.m4
+m4/sys_socket_h.m4
Depends-on:
include_next
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_SYS_TIME_H''@|$(NEXT_SYS_TIME_H)|g' \
-e 's/@''GNULIB_GETTIMEOFDAY''@/$(GNULIB_GETTIMEOFDAY)/g' \
+ -e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_H)|g' \
-e 's/@''HAVE_GETTIMEOFDAY''@/$(HAVE_GETTIMEOFDAY)/g' \
-e 's/@''HAVE_STRUCT_TIMEVAL''@/$(HAVE_STRUCT_TIMEVAL)/g' \
-e 's/@''REPLACE_GETTIMEOFDAY''@/$(REPLACE_GETTIMEOFDAY)/g' \
--- /dev/null
+Description:
+A <sys/types.h> that conforms better to POSIX.
+
+Files:
+lib/sys_types.in.h
+m4/sys_types_h.m4
+
+Depends-on:
+include_next
+ssize_t
+
+configure.ac:
+gl_SYS_TYPES_H
+AC_PROG_MKDIR_P
+
+Makefile.am:
+BUILT_SOURCES += sys/types.h
+
+# We need the following in order to create <sys/types.h> when the system
+# doesn't have one that works with the given compiler.
+sys/types.h: sys_types.in.h $(top_builddir)/config.status
+ $(AM_V_at)$(MKDIR_P) sys
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \
+ < $(srcdir)/sys_types.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+MOSTLYCLEANFILES += sys/types.h sys/types.h-t
+
+Include:
+<sys/types.h>
+
+License:
+LGPLv2+
+
+Maintainer:
+all
--- /dev/null
+Files:
+tests/test-sys_types-c++.cc
+
+Status:
+c++-test
+
+Depends-on:
+ansi-c++-opt
+
+configure.ac:
+
+Makefile.am:
+if ANSICXX
+TESTS += test-sys_types-c++
+check_PROGRAMS += test-sys_types-c++
+test_sys_types_c___SOURCES = test-sys_types-c++.cc
+endif
--- /dev/null
+Files:
+tests/test-sys_types.c
+
+Depends-on:
+sys_types-c++-tests
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-sys_types
+check_PROGRAMS += test-sys_types
Depends-on:
include_next
+ssize_t
+sys_types
configure.ac:
gl_HEADER_SYS_UIO
tan() function: tangent function.
Files:
+m4/tan.m4
m4/mathfunc.m4
Depends-on:
configure.ac:
-gl_COMMON_DOUBLE_MATHFUNC([tan])
+gl_FUNC_TAN
Makefile.am:
--- /dev/null
+Description:
+tanf() function: tangent function.
+
+Files:
+lib/tanf.c
+m4/tanf.m4
+
+Depends-on:
+math
+tan [test $HAVE_TANF = 0]
+
+configure.ac:
+gl_FUNC_TANF
+if test $HAVE_TANF = 0; then
+ AC_LIBOBJ([tanf])
+fi
+gl_MATH_MODULE_INDICATOR([tanf])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(TANF_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-tanf.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-tanf
+check_PROGRAMS += test-tanf
+test_tanf_LDADD = $(LDADD) @TANF_LIBM@
tanh() function: hyperbolic tangent function.
Files:
+m4/tanh.m4
m4/mathfunc.m4
Depends-on:
configure.ac:
-gl_COMMON_DOUBLE_MATHFUNC([tanh])
+gl_FUNC_TANH
Makefile.am:
--- /dev/null
+Description:
+tanhf() function: hyperbolic tangent function.
+
+Files:
+lib/tanhf.c
+m4/tanhf.m4
+
+Depends-on:
+math
+tanh [test $HAVE_TANHF = 0]
+
+configure.ac:
+gl_FUNC_TANHF
+if test $HAVE_TANHF = 0; then
+ AC_LIBOBJ([tanhf])
+fi
+gl_MATH_MODULE_INDICATOR([tanhf])
+
+Makefile.am:
+
+Include:
+<math.h>
+
+Link:
+$(TANHF_LIBM)
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
--- /dev/null
+Files:
+tests/test-tanhf.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-tanhf
+check_PROGRAMS += test-tanhf
+test_tanhf_LDADD = $(LDADD) @TANHF_LIBM@
Depends-on:
math
extensions
-float [test $HAVE_TANL = 0]
-isnanl [test $HAVE_TANL = 0]
-floor [test $HAVE_TANL = 0]
-floorl [test $HAVE_TANL = 0]
+tan [test $HAVE_TANL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1]
+float [test $HAVE_TANL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+isnanl [test $HAVE_TANL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+floor [test $HAVE_TANL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
+floorl [test $HAVE_TANL = 0 && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
configure.ac:
gl_FUNC_TANL
if test $HAVE_TANL = 0; then
AC_LIBOBJ([tanl])
- AC_LIBOBJ([trigl])
+ if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0; then
+ AC_LIBOBJ([trigl])
+ fi
fi
gl_MATH_MODULE_INDICATOR([tanl])
Depends-on:
extensions
+fcntl-h
gettimeofday
lstat
stdint
tests/test-trunc1.c
tests/test-trunc2.c
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
tests/test-truncf1.c
tests/test-truncf2.c
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
Depends-on:
math
extensions
-float [test $HAVE_DECL_TRUNCL = 0 || test $REPLACE_TRUNCL = 1]
+trunc [{ test $HAVE_DECL_TRUNCL = 0 || test $REPLACE_TRUNCL = 1; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1]
+float [{ test $HAVE_DECL_TRUNCL = 0 || test $REPLACE_TRUNCL = 1; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0]
configure.ac:
gl_FUNC_TRUNCL
Files:
tests/test-truncl.c
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
<unistd.h>
License:
-LGPL
+LGPLv2+
Maintainer:
Bruno Haible
snippet/arg-nonnull
snippet/c++defs
snippet/warn-on-use
+ssize_t
stddef
configure.ac:
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
+ -e 's/@''GNULIB_CHDIR''@/$(GNULIB_CHDIR)/g' \
-e 's/@''GNULIB_CHOWN''@/$(GNULIB_CHOWN)/g' \
-e 's/@''GNULIB_CLOSE''@/$(GNULIB_CLOSE)/g' \
+ -e 's/@''GNULIB_DUP''@/$(GNULIB_DUP)/g' \
-e 's/@''GNULIB_DUP2''@/$(GNULIB_DUP2)/g' \
-e 's/@''GNULIB_DUP3''@/$(GNULIB_DUP3)/g' \
-e 's/@''GNULIB_ENVIRON''@/$(GNULIB_ENVIRON)/g' \
-e 's/@''GNULIB_FACCESSAT''@/$(GNULIB_FACCESSAT)/g' \
-e 's/@''GNULIB_FCHDIR''@/$(GNULIB_FCHDIR)/g' \
-e 's/@''GNULIB_FCHOWNAT''@/$(GNULIB_FCHOWNAT)/g' \
+ -e 's/@''GNULIB_FDATASYNC''@/$(GNULIB_FDATASYNC)/g' \
-e 's/@''GNULIB_FSYNC''@/$(GNULIB_FSYNC)/g' \
-e 's/@''GNULIB_FTRUNCATE''@/$(GNULIB_FTRUNCATE)/g' \
-e 's/@''GNULIB_GETCWD''@/$(GNULIB_GETCWD)/g' \
-e 's/@''GNULIB_SYMLINK''@/$(GNULIB_SYMLINK)/g' \
-e 's/@''GNULIB_SYMLINKAT''@/$(GNULIB_SYMLINKAT)/g' \
-e 's/@''GNULIB_TTYNAME_R''@/$(GNULIB_TTYNAME_R)/g' \
- -e 's/@''GNULIB_UNISTD_H_GETOPT''@/$(GNULIB_UNISTD_H_GETOPT)/g' \
+ -e 's/@''GNULIB_UNISTD_H_GETOPT''@/0$(GNULIB_${gl_include_guard_prefix}_UNISTD_H_GETOPT)/g' \
-e 's/@''GNULIB_UNISTD_H_NONBLOCKING''@/$(GNULIB_UNISTD_H_NONBLOCKING)/g' \
-e 's/@''GNULIB_UNISTD_H_SIGPIPE''@/$(GNULIB_UNISTD_H_SIGPIPE)/g' \
-e 's/@''GNULIB_UNLINK''@/$(GNULIB_UNLINK)/g' \
-e 's|@''HAVE_FACCESSAT''@|$(HAVE_FACCESSAT)|g' \
-e 's|@''HAVE_FCHDIR''@|$(HAVE_FCHDIR)|g' \
-e 's|@''HAVE_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \
+ -e 's|@''HAVE_FDATASYNC''@|$(HAVE_FDATASYNC)|g' \
-e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \
-e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
-e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \
-e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \
-e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \
-e 's|@''HAVE_DECL_FCHDIR''@|$(HAVE_DECL_FCHDIR)|g' \
+ -e 's|@''HAVE_DECL_FDATASYNC''@|$(HAVE_DECL_FDATASYNC)|g' \
-e 's|@''HAVE_DECL_GETDOMAINNAME''@|$(HAVE_DECL_GETDOMAINNAME)|g' \
-e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
-e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \
Depends-on:
binary-io
cloexec
+close
+dup
fd-safer-flag
+msvc-nothrow
stdbool
configure.ac:
lib/vasnprintf.c
m4/vasnprintf.m4
m4/printf.m4
+m4/math_h.m4
m4/wchar_t.m4
m4/wint_t.m4
m4/longlong.m4
m4/intmax_t.m4
m4/stdint_h.m4
m4/inttypes_h.m4
+m4/exponentd.m4
Depends-on:
unistdio/base
lib/vasnprintf.c
m4/vasnprintf.m4
m4/printf.m4
+m4/math_h.m4
m4/wchar_t.m4
m4/wint_t.m4
m4/longlong.m4
m4/intmax_t.m4
m4/stdint_h.m4
m4/inttypes_h.m4
+m4/exponentd.m4
Depends-on:
unistdio/base
lib/vasnprintf.c
m4/vasnprintf.m4
m4/printf.m4
+m4/math_h.m4
m4/wchar_t.m4
m4/wint_t.m4
m4/longlong.m4
m4/intmax_t.m4
m4/stdint_h.m4
m4/inttypes_h.m4
+m4/exponentd.m4
Depends-on:
unistdio/base
lib/vasnprintf.c
m4/vasnprintf.m4
m4/printf.m4
+m4/math_h.m4
m4/wchar_t.m4
m4/wint_t.m4
m4/longlong.m4
m4/intmax_t.m4
m4/stdint_h.m4
m4/inttypes_h.m4
+m4/exponentd.m4
Depends-on:
unistdio/base
lib/vasnprintf.c
m4/vasnprintf.m4
m4/printf.m4
+m4/math_h.m4
m4/wchar_t.m4
m4/wint_t.m4
m4/longlong.m4
m4/intmax_t.m4
m4/stdint_h.m4
m4/inttypes_h.m4
+m4/exponentd.m4
Depends-on:
unistdio/base
lib/vasnprintf.c
m4/vasnprintf.m4
m4/printf.m4
+m4/math_h.m4
m4/wchar_t.m4
m4/wint_t.m4
m4/longlong.m4
m4/intmax_t.m4
m4/stdint_h.m4
m4/inttypes_h.m4
+m4/exponentd.m4
Depends-on:
unistdio/base
lib/vasnprintf.c
m4/vasnprintf.m4
m4/printf.m4
+m4/math_h.m4
m4/wchar_t.m4
m4/wint_t.m4
m4/longlong.m4
m4/intmax_t.m4
m4/stdint_h.m4
m4/inttypes_h.m4
+m4/exponentd.m4
Depends-on:
unistdio/base
--- /dev/null
+Description:
+unlinkat() function: Remove a file at a directory.
+
+Files:
+lib/unlinkat.c
+lib/at-func.c
+lib/openat-priv.h
+m4/unlinkat.m4
+m4/lstat.m4
+
+Depends-on:
+unistd
+extensions
+fcntl-h [test $HAVE_UNLINKAT = 0 || test $REPLACE_UNLINKAT = 1]
+openat-h [test $HAVE_UNLINKAT = 0 || test $REPLACE_UNLINKAT = 1]
+sys_stat [test $HAVE_UNLINKAT = 0 || test $REPLACE_UNLINKAT = 1]
+fstatat [test $REPLACE_UNLINKAT = 1]
+at-internal [test $HAVE_UNLINKAT = 0]
+dosname [test $HAVE_UNLINKAT = 0]
+errno [test $HAVE_UNLINKAT = 0]
+fchdir [test $HAVE_UNLINKAT = 0]
+openat-die [test $HAVE_UNLINKAT = 0]
+rmdir [test $HAVE_UNLINKAT = 0]
+save-cwd [test $HAVE_UNLINKAT = 0]
+unlink [test $HAVE_UNLINKAT = 0]
+
+configure.ac:
+gl_FUNC_UNLINKAT
+if test $HAVE_UNLINKAT = 0 || test $REPLACE_UNLINKAT = 1; then
+ AC_LIBOBJ([unlinkat])
+fi
+gl_UNISTD_MODULE_INDICATOR([unlinkat])
+
+Makefile.am:
+
+Include:
+<unistd.h>
+
+License:
+GPL
+
+Maintainer:
+Jim Meyering, Eric Blake
--- /dev/null
+Files:
+tests/test-unlinkat.c
+tests/test-rmdir.h
+tests/test-unlink.h
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+ignore-value
+progname
+symlink
+unlinkdir
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-unlinkat
+check_PROGRAMS += test-unlinkat
+test_unlinkat_LDADD = $(LDADD) @LIBINTL@
Depends-on:
stdlib
extensions
+fcntl-h [test $HAVE_UNLOCKPT = 0]
ptsname [test $HAVE_UNLOCKPT = 0]
configure.ac:
<stdlib.h>
License:
-LGPL
+LGPLv2+
Maintainer:
Bruno Haible
--- /dev/null
+Files:
+tests/test-unlockpt.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-unlockpt
+check_PROGRAMS += test-unlockpt
m4/utimes.m4
Depends-on:
-dup2
errno
+fcntl-h
+fstat
lstat
gettime
stat-time
tests/macros.h
Depends-on:
+dup
ignore-value
symlink
timespec
utimecmp
configure.ac:
+AC_REQUIRE([AC_C_INLINE])
Makefile.am:
TESTS += test-utimens
Files:
lib/utimensat.c
+lib/at-func.c
m4/utimensat.m4
Depends-on:
sys_stat
extensions
-openat [test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1]
+at-internal [test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1]
+dosname [test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1]
+errno [test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1]
+fchdir [test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1]
+fcntl-h [test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1]
+openat-die [test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1]
+openat-h [test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1]
+save-cwd [test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1]
utimens [test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1]
+fstatat [test $REPLACE_UTIMENSAT = 1]
configure.ac:
gl_FUNC_UTIMENSAT
utimecmp
configure.ac:
+AC_REQUIRE([AC_C_INLINE])
Makefile.am:
TESTS += test-utimensat
m4/inttypes_h.m4
m4/vasnprintf.m4
m4/printf.m4
+m4/math_h.m4
+m4/exponentd.m4
Depends-on:
alloca-opt
Files:
m4/vasnprintf-posix.m4
m4/printf.m4
+m4/math_h.m4
Depends-on:
vasnprintf
tests/test-vasnprintf-posix2.c
tests/test-vasnprintf-posix3.c
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/macros.h
m4/locale-fr.m4
setlocale
configure.ac:
+AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
gt_LOCALE_FR
gt_LOCALE_FR_UTF8
Files:
m4/vasprintf-posix.m4
m4/printf.m4
+m4/math_h.m4
Depends-on:
vasprintf
Files:
tests/test-vasprintf-posix.c
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/macros.h
float
configure.ac:
+AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
Makefile.am:
TESTS += test-vasprintf-posix
Files:
m4/vdprintf-posix.m4
m4/printf.m4
+m4/math_h.m4
Depends-on:
vdprintf
tests/test-vdprintf-posix.c
tests/test-fprintf-posix.h
tests/test-printf-posix.output
+tests/infinity.h
tests/signature.h
tests/macros.h
--- /dev/null
+Files:
+tests/test-vdprintf.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-vdprintf
+check_PROGRAMS += test-vdprintf
lib/vfprintf.c
m4/vfprintf-posix.m4
m4/printf.m4
+m4/math_h.m4
Depends-on:
stdio
tests/test-vfprintf-posix.c
tests/test-fprintf-posix.h
tests/test-printf-posix.output
+tests/infinity.h
tests/signature.h
tests/macros.h
tests/test-vprintf-posix.c
tests/test-printf-posix.h
tests/test-printf-posix.output
+tests/infinity.h
tests/signature.h
tests/macros.h
Files:
m4/vsnprintf-posix.m4
m4/printf.m4
+m4/math_h.m4
Depends-on:
vsnprintf
tests/test-snprintf-posix.h
tests/test-vsnprintf.c
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
float
configure.ac:
+AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
AC_DEFINE([CHECK_VSNPRINTF_POSIX], 1,
[Define to 1 for strict checking in test-vsnprintf.c.])
lib/vsprintf.c
m4/vsprintf-posix.m4
m4/printf.m4
+m4/math_h.m4
Depends-on:
stdio
tests/test-vsprintf-posix.c
tests/test-sprintf-posix.h
tests/minus-zero.h
+tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
float
configure.ac:
+AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
Makefile.am:
TESTS += test-vsprintf-posix
Depends-on:
unistd
raise [test $REPLACE_WRITE = 1]
+msvc-inval [test $REPLACE_WRITE = 1]
+msvc-nothrow [test $REPLACE_WRITE = 1]
configure.ac:
gl_FUNC_WRITE
if test $REPLACE_WRITE = 1; then
AC_LIBOBJ([write])
+ gl_PREREQ_WRITE
fi
gl_UNISTD_MODULE_INDICATOR([write])
--- /dev/null
+Files:
+tests/test-write.c
+tests/signature.h
+tests/macros.h
+
+Depends-on:
+binary-io
+open
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-write
+check_PROGRAMS += test-write
tests/test-fprintf-posix.h
tests/test-printf-posix.h
tests/test-printf-posix.output
+tests/infinity.h
tests/macros.h
Depends-on:
--- /dev/null
+/* Macros for infinity.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+
+/* Infinityf () returns a 'float' +Infinity. */
+
+/* The Microsoft MSVC 9 compiler chokes on the expression 1.0f / 0.0f. */
+#if defined _MSC_VER
+static float
+Infinityf ()
+{
+ static float zero = 0.0f;
+ return 1.0f / zero;
+}
+#else
+# define Infinityf() (1.0f / 0.0f)
+#endif
+
+
+/* Infinityd () returns a 'double' +Infinity. */
+
+/* The Microsoft MSVC 9 compiler chokes on the expression 1.0 / 0.0. */
+#if defined _MSC_VER
+static double
+Infinityd ()
+{
+ static double zero = 0.0;
+ return 1.0 / zero;
+}
+#else
+# define Infinityd() (1.0 / 0.0)
+#endif
+
+
+/* Infinityl () returns a 'long double' +Infinity. */
+
+/* The Microsoft MSVC 9 compiler chokes on the expression 1.0L / 0.0L. */
+#if defined _MSC_VER
+static double
+Infinityl ()
+{
+ static long double zero = 0.0L;
+ return 1.0L / zero;
+}
+#else
+# define Infinityl() (1.0L / 0.0L)
+#endif
# the reason for skip/failure to console, rather than to the .log files.
: ${stderr_fileno_=2}
-warn_ () { echo "$@" 1>&$stderr_fileno_; }
+# Note that correct expansion of "$*" depends on IFS starting with ' '.
+# Always write the full diagnostic to stderr.
+# When stderr_fileno_ is not 2, also emit the first line of the
+# diagnostic to that file descriptor.
+warn_ ()
+{
+ # If IFS does not start with ' ', set it and emit the warning in a subshell.
+ case $IFS in
+ ' '*) printf '%s\n' "$*" >&2
+ test $stderr_fileno_ = 2 \
+ || { printf '%s\n' "$*" | sed 1q >&$stderr_fileno_ ; } ;;
+ *) (IFS=' '; warn_ "$@");;
+ esac
+}
fail_ () { warn_ "$ME_: failed test: $@"; Exit 1; }
skip_ () { warn_ "$ME_: skipped test: $@"; Exit 77; }
fatal_ () { warn_ "$ME_: hard error: $@"; Exit 99; }
# a partition, or to undo any other global state changes.
cleanup_ () { :; }
-if ( diff --version < /dev/null 2>&1 | grep GNU ) > /dev/null 2>&1; then
- compare () { diff -u "$@"; }
+# Emit a header similar to that from diff -u; Print the simulated "diff"
+# command so that the order of arguments is clear. Don't bother with @@ lines.
+emit_diff_u_header_ ()
+{
+ printf '%s\n' "diff -u $*" \
+ "--- $1 1970-01-01" \
+ "+++ $2 1970-01-01"
+}
+
+# Arrange not to let diff or cmp operate on /dev/null,
+# since on some systems (at least OSF/1 5.1), that doesn't work.
+# When there are not two arguments, or no argument is /dev/null, return 2.
+# When one argument is /dev/null and the other is not empty,
+# cat the nonempty file to stderr and return 1.
+# Otherwise, return 0.
+compare_dev_null_ ()
+{
+ test $# = 2 || return 2
+
+ if test "x$1" = x/dev/null; then
+ test -s "$2" || return 0
+ { emit_diff_u_header_ "$@"; sed 's/^/+/' -- "$2"; } >&2
+ return 1
+ fi
+
+ if test "x$2" = x/dev/null; then
+ test -s "$1" || return 0
+ { emit_diff_u_header_ "$@"; sed 's/^/-/' -- "$1"; } >&2
+ return 1
+ fi
+
+ return 2
+}
+
+if diff_out_=`( diff -u "$0" "$0" < /dev/null ) 2>/dev/null`; then
+ if test -z "$diff_out_"; then
+ compare_ () { diff -u "$@"; }
+ else
+ compare_ ()
+ {
+ if diff -u "$@" > diff.out; then
+ # No differences were found, but Solaris 'diff' produces output
+ # "No differences encountered". Hide this output.
+ rm -f diff.out
+ true
+ else
+ cat diff.out
+ rm -f diff.out
+ false
+ fi
+ }
+ fi
+elif diff_out_=`( diff -c "$0" "$0" < /dev/null ) 2>/dev/null`; then
+ if test -z "$diff_out_"; then
+ compare_ () { diff -c "$@"; }
+ else
+ compare_ ()
+ {
+ if diff -c "$@" > diff.out; then
+ # No differences were found, but AIX and HP-UX 'diff' produce output
+ # "No differences encountered" or "There are no differences between the
+ # files.". Hide this output.
+ rm -f diff.out
+ true
+ else
+ cat diff.out
+ rm -f diff.out
+ false
+ fi
+ }
+ fi
elif ( cmp --version < /dev/null 2>&1 | grep GNU ) > /dev/null 2>&1; then
- compare () { cmp -s "$@"; }
+ compare_ () { cmp -s "$@"; }
else
- compare () { cmp "$@"; }
+ compare_ () { cmp "$@"; }
fi
+# Usage: compare EXPECTED ACTUAL
+#
+# Given compare_dev_null_'s preprocessing, defer to compare_ if 2 or more.
+# Otherwise, propagate $? to caller: any diffs have already been printed.
+compare ()
+{
+ compare_dev_null_ "$@"
+ case $? in
+ 0|1) return $?;;
+ *) compare_ "$@";;
+ esac
+}
+
# An arbitrary prefix to help distinguish test directories.
testdir_prefix_ () { printf gt; }
esac
# First, try to use mktemp.
- d=`unset TMPDIR; mktemp -d -t -p "$destdir_" "$template_" 2>/dev/null` \
+ d=`unset TMPDIR; { mktemp -d -t -p "$destdir_" "$template_"; } 2>/dev/null` \
|| fail=1
# The resulting name must be in the specified directory.
/* NaNf () returns a 'float' not-a-number. */
-/* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0. */
-#ifdef __DECC
+/* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler choke
+ on the expression 0.0 / 0.0. */
+#if defined __DECC || defined _MSC_VER
static float
NaNf ()
{
/* NaNd () returns a 'double' not-a-number. */
-/* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0. */
-#ifdef __DECC
+/* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler choke
+ on the expression 0.0 / 0.0. */
+#if defined __DECC || defined _MSC_VER
static double
NaNd ()
{
/* NaNl () returns a 'long double' not-a-number. */
/* On Irix 6.5, gcc 3.4.3 can't compute compile-time NaN, and needs the
- runtime type conversion. */
+ runtime type conversion.
+ The Microsoft MSVC 9 compiler chokes on the expression 0.0L / 0.0L. */
#ifdef __sgi
static long double NaNl ()
{
double zero = 0.0;
return zero / zero;
}
+#elif defined _MSC_VER
+static long double
+NaNl ()
+{
+ static long double zero = 0.0L;
+ return zero / zero;
+}
#else
# define NaNl() (0.0L / 0.0L)
#endif
--- /dev/null
+/* Test accepting a connection to a server socket.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <sys/socket.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (accept, int, (int, struct sockaddr *, socklen_t *));
+
+#include <errno.h>
+#include <netinet/in.h>
+
+#include "sockets.h"
+#include "macros.h"
+
+int
+main (void)
+{
+ gl_sockets_startup (SOCKETS_1_1);
+
+ /* Test behaviour for invalid file descriptors. */
+ {
+ struct sockaddr_in addr;
+ socklen_t addrlen = sizeof (addr);
+
+ errno = 0;
+ ASSERT (accept (-1, (struct sockaddr *) &addr, &addrlen) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ struct sockaddr_in addr;
+ socklen_t addrlen = sizeof (addr);
+
+ errno = 0;
+ ASSERT (accept (99, (struct sockaddr *) &addr, &addrlen) == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ return 0;
+}
--- /dev/null
+/* Test accepting a connection to a server socket.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <sys/socket.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (accept4, int, (int, struct sockaddr *, socklen_t *, int));
+
+#include <errno.h>
+#include <fcntl.h>
+#include <netinet/in.h>
+
+#include "binary-io.h"
+#include "sockets.h"
+
+#include "macros.h"
+
+int
+main (void)
+{
+ gl_sockets_startup (SOCKETS_1_1);
+
+ /* Test behaviour for invalid file descriptors. */
+ {
+ struct sockaddr_in addr;
+ socklen_t addrlen = sizeof (addr);
+
+ errno = 0;
+ ASSERT (accept4 (-1, (struct sockaddr *) &addr, &addrlen,
+ O_CLOEXEC | O_BINARY)
+ == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ struct sockaddr_in addr;
+ socklen_t addrlen = sizeof (addr);
+
+ errno = 0;
+ ASSERT (accept4 (99, (struct sockaddr *) &addr, &addrlen,
+ O_CLOEXEC | O_BINARY)
+ == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ return 0;
+}
--- /dev/null
+/* Test of acosf() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010-2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (acosf, float, (float));
+
+#include "macros.h"
+
+volatile float x;
+float y;
+
+int
+main ()
+{
+ /* A particular value. */
+ x = 0.6f;
+ y = acosf (x);
+ ASSERT (y >= 0.9272951f && y <= 0.9272953f);
+
+ return 0;
+}
--- /dev/null
+/* Test of asinf() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010-2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (asinf, float, (float));
+
+#include "macros.h"
+
+volatile float x;
+float y;
+
+int
+main ()
+{
+ /* A particular value. */
+ x = 0.6f;
+ y = asinf (x);
+ ASSERT (y >= 0.6435011f && y <= 0.6435013f);
+
+ return 0;
+}
--- /dev/null
+/* Test of atan2f() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010-2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (atan2f, float, (float, float));
+
+#include "macros.h"
+
+volatile float x;
+volatile float y;
+float z;
+
+int
+main ()
+{
+ /* A particular value in the first quadrant. */
+ x = 0.6f;
+ y = 0.8f;
+ z = atan2f (y, x);
+ ASSERT (z >= 0.92729515f && z <= 0.9272953f);
+
+ /* A particular value in the second quadrant. */
+ x = -0.6f;
+ y = 0.8f;
+ z = atan2f (y, x);
+ ASSERT (z >= 2.2142974f && z <= 2.2142975f);
+
+ /* A particular value in the third quadrant. */
+ x = -0.6f;
+ y = -0.8f;
+ z = atan2f (y, x);
+ ASSERT (z >= -2.2142975f && z <= -2.2142974f);
+
+ /* A particular value in the fourth quadrant. */
+ x = 0.6f;
+ y = -0.8f;
+ z = atan2f (y, x);
+ ASSERT (z >= -0.9272953f && z <= -0.92729515f);
+
+ return 0;
+}
--- /dev/null
+/* Test of atanf() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010-2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (atanf, float, (float));
+
+#include "macros.h"
+
+volatile float x;
+float y;
+
+int
+main ()
+{
+ /* A particular value. */
+ x = 0.6f;
+ y = atanf (x);
+ ASSERT (y >= 0.5404194f && y <= 0.5404196f);
+
+ return 0;
+}
--- /dev/null
+/* Self tests for base32.
+ Copyright (C) 2004, 2008-2011 Free Software Foundation, Inc.
+ Based on the tests for base64 written by Simon Josefsson.
+ Adapted for base32 by Gijs van Tulder.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "base32.h"
+
+#include <stddef.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+
+#include "macros.h"
+
+int
+main (void)
+{
+ const char *in = "abcdefghijklmnop";
+ const char *b32in = "MFRGGZDFMZTWQ2LKNNWG23TPOA======";
+ char out[255];
+ size_t len;
+ bool ok;
+ char *p;
+
+ memset (out, 0x42, sizeof (out));
+ base32_encode (in, 0, out, 0);
+ ASSERT (out[0] == '\x42');
+
+ memset (out, 0x42, sizeof (out));
+ base32_encode (in, 1, out, 10);
+ ASSERT (memcmp (out, "ME======", 1) == 0);
+
+ memset (out, 0x42, sizeof (out));
+ base32_encode (in, 1, out, 2);
+ ASSERT (memcmp (out, "ME======", 2) == 0);
+
+ memset (out, 0x42, sizeof (out));
+ base32_encode (in, 1, out, 3);
+ ASSERT (memcmp (out, "ME======", 3) == 0);
+
+ memset (out, 0x42, sizeof (out));
+ base32_encode (in, 1, out, 4);
+ ASSERT (memcmp (out, "ME======", 4) == 0);
+
+ memset (out, 0x42, sizeof (out));
+ base32_encode (in, 1, out, 8);
+ ASSERT (memcmp (out, "ME======", 8) == 0);
+
+ memset (out, 0x42, sizeof (out));
+ base32_encode (in, 2, out, 8);
+ ASSERT (memcmp (out, "MFRA====", 8) == 0);
+
+ memset (out, 0x42, sizeof (out));
+ base32_encode (in, 3, out, 8);
+ ASSERT (memcmp (out, "MFRGG===", 8) == 0);
+
+ memset (out, 0x42, sizeof (out));
+ base32_encode (in, 4, out, 8);
+ ASSERT (memcmp (out, "MFRGGZA=", 8) == 0);
+
+ memset (out, 0x42, sizeof (out));
+ base32_encode (in, 5, out, 8);
+ ASSERT (memcmp (out, "MFRGGZDF", 8) == 0);
+
+ memset (out, 0x42, sizeof (out));
+ base32_encode (in, 6, out, 16);
+ ASSERT (memcmp (out, "MFRGGZDFMY======", 16) == 0);
+
+ memset (out, 0x42, sizeof (out));
+ base32_encode (in, 6, out, 100);
+ ASSERT (memcmp (out, "MFRGGZDFMY======", 16) == 0);
+
+ /* Decode. */
+
+ memset (out, 0x42, sizeof (out));
+ len = 0;
+ ok = base32_decode (b32in, 8, out, &len);
+ ASSERT (ok);
+ ASSERT (len == 0);
+
+ memset (out, 0x42, sizeof (out));
+ len = 1;
+ ok = base32_decode (b32in, 8, out, &len);
+ ASSERT (ok);
+ ASSERT (len == 1);
+ ASSERT (memcmp (out, "abcdefghijklmnop", 1) == 0);
+
+ memset (out, 0x42, sizeof (out));
+ len = 2;
+ ok = base32_decode (b32in, 8, out, &len);
+ ASSERT (ok);
+ ASSERT (len == 2);
+ ASSERT (memcmp (out, "abcdefghijklmnop", 2) == 0);
+
+ memset (out, 0x42, sizeof (out));
+ len = 3;
+ ok = base32_decode (b32in, 8, out, &len);
+ ASSERT (ok);
+ ASSERT (len == 3);
+ ASSERT (memcmp (out, "abcdefghijklmnop", 3) == 0);
+
+ memset (out, 0x42, sizeof (out));
+ len = 4;
+ ok = base32_decode (b32in, 8, out, &len);
+ ASSERT (ok);
+ ASSERT (len == 4);
+ ASSERT (memcmp (out, "abcdefghijklmnop", 4) == 0);
+
+ memset (out, 0x42, sizeof (out));
+ len = 5;
+ ok = base32_decode (b32in, 8, out, &len);
+ ASSERT (ok);
+ ASSERT (len == 5);
+ ASSERT (memcmp (out, "abcdefghijklmnop", 5) == 0);
+
+ memset (out, 0x42, sizeof (out));
+ len = 6;
+ ok = base32_decode (b32in, 8, out, &len);
+ ASSERT (ok);
+ ASSERT (len == 5);
+ ASSERT (memcmp (out, "abcdefghijklmnop", 5) == 0);
+
+ memset (out, 0x42, sizeof (out));
+ len = 100;
+ ok = base32_decode (b32in, strlen (b32in), out, &len);
+ ASSERT (ok);
+ ASSERT (len == 16);
+ ASSERT (memcmp (out, "abcdefghijklmnop", 16) == 0);
+
+ /* Allocating encode */
+
+ len = base32_encode_alloc (in, strlen (in), &p);
+ ASSERT (len == 32);
+ ASSERT (strcmp (p, "MFRGGZDFMZTWQ2LKNNWG23TPOA======") == 0);
+ free (p);
+
+ len = base32_encode_alloc (in, SIZE_MAX - 5, &p);
+ ASSERT (len == 0);
+
+ /* Decode context function */
+ {
+ struct base32_decode_context ctx;
+
+ base32_decode_ctx_init (&ctx);
+
+ len = sizeof (out);
+ ok = base32_decode_ctx (&ctx, b32in, strlen (b32in), out, &len);
+ ASSERT (ok);
+ ASSERT (len == 16);
+ ASSERT (memcmp (out, "abcdefghijklmnop", len) == 0);
+ }
+
+ /* Allocating decode context function */
+
+ ok = base32_decode_alloc_ctx (NULL, b32in, strlen (b32in), &p, &len);
+ ASSERT (ok);
+ ASSERT (len == 16);
+ ASSERT (memcmp (out, "abcdefghijklmnop", len) == 0);
+ free (p);
+
+ {
+ struct base32_decode_context ctx;
+ const char *newlineb32 = "MFRG\nGZDFMZTWQ2LKNNW\nG23TPOA======";
+
+ base32_decode_ctx_init (&ctx);
+
+ ok = base32_decode_alloc_ctx (&ctx, newlineb32, strlen (newlineb32), &p, &len);
+ ASSERT (ok);
+ ASSERT (len == strlen (in));
+ ASSERT (memcmp (p, in, len) == 0);
+ free (p);
+ }
+
+ {
+ struct base32_decode_context ctx;
+ base32_decode_ctx_init (&ctx);
+
+ ok = base32_decode_alloc_ctx (&ctx, "MFRGGZDFM\nZTWQ2LK", 17, &p, &len);
+ ASSERT (ok);
+ ASSERT (len == 10);
+ ASSERT (memcmp (p, "abcdefghij", len) == 0);
+ free (p);
+
+ base32_decode_ctx_init (&ctx);
+
+ ok = base32_decode_alloc_ctx (&ctx, "MF\n", 3, &p, &len);
+ ASSERT (ok);
+ ASSERT (len == 0);
+ free (p);
+
+ ok = base32_decode_alloc_ctx (&ctx, "RGGZDFMZ", 8, &p, &len);
+ ASSERT (ok);
+ ASSERT (len == 5);
+ ASSERT (memcmp (p, "abcde", len) == 0);
+ free (p);
+
+ ok = base32_decode_alloc_ctx (&ctx, "TWQ2LK", 6, &p, &len);
+ ASSERT (ok);
+ ASSERT (len == 5);
+ ASSERT (memcmp (p, "fghij", len) == 0);
+ free (p);
+
+ ok = base32_decode_alloc_ctx (&ctx, "", 0, &p, &len);
+ ASSERT (ok);
+ free (p);
+ }
+
+ {
+ struct base32_decode_context ctx;
+ const char *newlineb32 = "\n\n\n\n\n";
+
+ base32_decode_ctx_init (&ctx);
+
+ ok = base32_decode_alloc_ctx (&ctx, newlineb32, strlen (newlineb32), &p, &len);
+ ASSERT (ok);
+ ASSERT (len == 0);
+ free (p);
+ }
+
+ ok = base32_decode_alloc_ctx (NULL, " ! ", 3, &p, &len);
+ ASSERT (!ok);
+
+ ok = base32_decode_alloc_ctx (NULL, "ABC\nDEF", 7, &p, &len);
+ ASSERT (!ok);
+
+ ok = base32_decode_alloc_ctx (NULL, "AA", 2, &p, &len);
+ ASSERT (!ok);
+
+ ok = base32_decode_alloc_ctx (NULL, "AA=", 3, &p, &len);
+ ASSERT (!ok);
+
+ ok = base32_decode_alloc_ctx (NULL, "AABBAAxx", 8, &p, &len);
+ ASSERT (!ok);
+
+ ok = base32_decode_alloc_ctx (NULL, "AABBAA=X", 8, &p, &len);
+ ASSERT (!ok);
+
+ ok = base32_decode_alloc_ctx (NULL, "AABBAA=X", 8, &p, &len);
+ ASSERT (!ok);
+
+ ok = base32_decode_alloc_ctx (NULL, "AABBAA=A", 8, &p, &len);
+ ASSERT (!ok);
+
+ return 0;
+}
ASSERT (ok);
ASSERT (len == 7);
ASSERT (memcmp (out, "abcdefg", len) == 0);
+ free (p);
{
struct base64_decode_context ctx;
ASSERT (ok);
ASSERT (len == strlen (in));
ASSERT (memcmp (p, in, len) == 0);
+ free (p);
}
{
ASSERT (ok);
ASSERT (len == 9);
ASSERT (memcmp (p, "abcdefghi", len) == 0);
+ free (p);
base64_decode_ctx_init (&ctx);
ok = base64_decode_alloc_ctx (&ctx, "YW\n", 3, &p, &len);
ASSERT (ok);
ASSERT (len == 0);
+ free (p);
ok = base64_decode_alloc_ctx (&ctx, "JjZGVmZ2", 8, &p, &len);
ASSERT (ok);
ASSERT (len == 6);
ASSERT (memcmp (p, "abcdef", len) == 0);
+ free (p);
ok = base64_decode_alloc_ctx (&ctx, "hp", 2, &p, &len);
ASSERT (ok);
ASSERT (len == 3);
ASSERT (memcmp (p, "ghi", len) == 0);
+ free (p);
+
ok = base64_decode_alloc_ctx (&ctx, "", 0, &p, &len);
ASSERT (ok);
+ free (p);
}
{
ok = base64_decode_alloc_ctx (&ctx, newlineb64, strlen (newlineb64), &p, &len);
ASSERT (ok);
ASSERT (len == 0);
+ free (p);
}
ok = base64_decode_alloc_ctx (NULL, " ! ", 3, &p, &len);
exit (1);
ASSERT (statbuf.st_size == 6);
}
- unlink ("t-bin-out2.tmp");
/* Test the SET_BINARY macro. */
SET_BINARY (1);
fputs ("Hello\n", stdout);
- fclose (stdout);
- fclose (stderr);
- {
- struct stat statbuf;
- if (stat ("t-bin-out1.tmp", &statbuf) < 0)
- exit (1);
- ASSERT (statbuf.st_size == 6);
- }
return 0;
}
tmpfiles="$tmpfiles t-bin-out1.tmp t-bin-out2.tmp"
./test-binary-io${EXEEXT} > t-bin-out1.tmp || exit 1
+cmp t-bin-out1.tmp t-bin-out2.tmp > /dev/null || exit 1
rm -fr $tmpfiles
--- /dev/null
+/* Test binding a server socket to a port.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <sys/socket.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (bind, int, (int, const struct sockaddr *, socklen_t));
+
+#include <errno.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+#include "sockets.h"
+#include "macros.h"
+
+int
+main (void)
+{
+ gl_sockets_startup (SOCKETS_1_1);
+
+ /* Test behaviour for invalid file descriptors. */
+ {
+ struct sockaddr_in addr;
+
+ addr.sin_family = AF_INET;
+ inet_pton (AF_INET, "127.0.0.1", &addr.sin_addr);
+ addr.sin_port = htons (80);
+ {
+ errno = 0;
+ ASSERT (bind (-1, (const struct sockaddr *) &addr, sizeof (addr)) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (bind (99, (const struct sockaddr *) &addr, sizeof (addr)) == -1);
+ ASSERT (errno == EBADF);
+ }
+ }
+
+ return 0;
+}
#include "isnand-nolibm.h"
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
#include "macros.h"
ASSERT (ceil (-65536.0) == -65536.0);
ASSERT (ceil (-2.341e31) == -2.341e31);
/* Infinite numbers. */
- ASSERT (ceil (1.0 / 0.0) == 1.0 / 0.0);
- ASSERT (ceil (-1.0 / 0.0) == -1.0 / 0.0);
+ ASSERT (ceil (Infinityd ()) == Infinityd ());
+ ASSERT (ceil (- Infinityd ()) == - Infinityd ());
/* NaNs. */
ASSERT (isnand (ceil (NaNd ())));
#include "isnanf-nolibm.h"
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
#include "macros.h"
ASSERT (my_ceilf (-65536.0f) == -65536.0f);
ASSERT (my_ceilf (-2.341e31f) == -2.341e31f);
/* Infinite numbers. */
- ASSERT (my_ceilf (1.0f / 0.0f) == 1.0f / 0.0f);
- ASSERT (my_ceilf (-1.0f / 0.0f) == -1.0f / 0.0f);
+ ASSERT (my_ceilf (Infinityf ()) == Infinityf ());
+ ASSERT (my_ceilf (- Infinityf ()) == - Infinityf ());
/* NaNs. */
ASSERT (isnanf (my_ceilf (NaNf ())));
#include "fpucw.h"
#include "isnanl-nolibm.h"
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
#include "macros.h"
ASSERT (ceill (-65536.0L) == -65536.0L);
ASSERT (ceill (-2.341e31L) == -2.341e31L);
/* Infinite numbers. */
- ASSERT (ceill (1.0L / 0.0L) == 1.0L / 0.0L);
- ASSERT (ceill (-1.0L / 0.0L) == -1.0L / 0.0L);
+ ASSERT (ceill (Infinityl ()) == Infinityl ());
+ ASSERT (ceill (- Infinityl ()) == - Infinityl ());
/* NaNs. */
ASSERT (isnanl (ceill (NaNl ())));
--- /dev/null
+/* Test changing to a directory.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <unistd.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (chdir, int, (const char *));
+
+#include "macros.h"
+
+int
+main (void)
+{
+ ASSERT (chdir ("/") == 0);
+
+ return 0;
+}
/* Get declarations of the Win32 API functions. */
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
+/* Get _get_osfhandle. */
+# include "msvc-nothrow.h"
#endif
#include "binary-io.h"
--- /dev/null
+/* Test closing a file or socket.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <unistd.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (close, int, (int));
+
+#include <errno.h>
+
+#include "macros.h"
+
+int
+main (void)
+{
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (close (-1) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (close (99) == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ return 0;
+}
--- /dev/null
+/* Test connecting a client socket.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <sys/socket.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (connect, int, (int, const struct sockaddr *, socklen_t));
+
+#include <errno.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+#include "sockets.h"
+#include "macros.h"
+
+int
+main (void)
+{
+ gl_sockets_startup (SOCKETS_1_1);
+
+ /* Test behaviour for invalid file descriptors. */
+ {
+ struct sockaddr_in addr;
+
+ addr.sin_family = AF_INET;
+ inet_pton (AF_INET, "127.0.0.1", &addr.sin_addr);
+ addr.sin_port = htons (80);
+ {
+ errno = 0;
+ ASSERT (connect (-1, (const struct sockaddr *) &addr, sizeof (addr))
+ == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (connect (99, (const struct sockaddr *) &addr, sizeof (addr))
+ == -1);
+ ASSERT (errno == EBADF);
+ }
+ }
+
+ return 0;
+}
--- /dev/null
+#!/bin/sh
+
+# Test copy-acl on the file system of /var/tmp, which usually is a local
+# file system.
+
+if test -d /var/tmp; then
+ TMPDIR=/var/tmp
+else
+ TMPDIR=/tmp
+fi
+export TMPDIR
+
+exec "${srcdir}/test-copy-acl.sh"
--- /dev/null
+#!/bin/sh
+
+# Test copy-acl on the file system of the build directory, which may be
+# a local file system or NFS mounted.
+
+TMPDIR=`pwd`
+export TMPDIR
+
+exec "${srcdir}/test-copy-acl.sh"
--- /dev/null
+#!/bin/sh
+
+# Test copy-file on the file system of /var/tmp, which usually is a local
+# file system.
+
+if test -d /var/tmp; then
+ TMPDIR=/var/tmp
+else
+ TMPDIR=/tmp
+fi
+export TMPDIR
+
+exec "${srcdir}/test-copy-file.sh"
--- /dev/null
+#!/bin/sh
+
+# Test copy-file on the file system of the build directory, which may be
+# a local file system or NFS mounted.
+
+TMPDIR=`pwd`
+export TMPDIR
+
+exec "${srcdir}/test-copy-file.sh"
--- /dev/null
+/* Test of copysignf() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010-2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (copysignf, float, (float, float));
+
+#include "macros.h"
+#include "minus-zero.h"
+
+#include <string.h>
+
+volatile float x;
+volatile float y;
+float z;
+float zero = 0.0f;
+
+int
+main ()
+{
+ /* A particular value in the first quadrant. */
+ x = 0.6f;
+ y = 0.8f;
+ z = copysignf (x, y);
+ ASSERT (z == 0.6f);
+
+ /* A particular value in the second quadrant. */
+ x = -0.6f;
+ y = 0.8f;
+ z = copysignf (x, y);
+ ASSERT (z == 0.6f);
+
+ /* A particular value in the third quadrant. */
+ x = -0.6f;
+ y = -0.8f;
+ z = copysignf (x, y);
+ ASSERT (z == -0.6f);
+
+ /* A particular value in the fourth quadrant. */
+ x = 0.6f;
+ y = -0.8f;
+ z = copysignf (x, y);
+ ASSERT (z == -0.6f);
+
+ /* From signed zero. */
+ x = 1.0f;
+ y = 0.0f;
+ z = copysignf (x, y);
+ ASSERT (z == 1.0f);
+
+ x = 1.0f;
+ y = minus_zerof;
+ z = copysignf (x, y);
+ /* Assume all gnulib targets support -0.0f, until proven otherwise. */
+ ASSERT (z == -1.0f);
+
+ x = -1.0f;
+ y = 0.0f;
+ z = copysignf (x, y);
+ ASSERT (z == 1.0f);
+
+ x = -1.0f;
+ y = minus_zerof;
+ z = copysignf (x, y);
+ ASSERT (z == -1.0f);
+
+ /* To signed zero. */
+ x = 0.0f;
+ y = 1.0f;
+ z = copysignf (x, y);
+ ASSERT (z == 0.0f);
+ ASSERT (memcmp (&z, &zero, sizeof z) == 0);
+
+ x = 0.0f;
+ y = -1.0f;
+ z = copysignf (x, y);
+ ASSERT (z == 0.0f);
+ ASSERT (memcmp (&z, &zero, sizeof z) != 0);
+
+ x = minus_zerof;
+ y = 1.0f;
+ z = copysignf (x, y);
+ ASSERT (z == 0.0f);
+ ASSERT (memcmp (&z, &zero, sizeof z) == 0);
+
+ x = minus_zerof;
+ y = -1.0f;
+ z = copysignf (x, y);
+ ASSERT (z == 0.0f);
+ ASSERT (memcmp (&z, &zero, sizeof z) != 0);
+
+ return 0;
+}
--- /dev/null
+/* Test of copysignl() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010-2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (copysignl, long double, (long double, long double));
+
+#include "macros.h"
+#include "minus-zero.h"
+
+#include <string.h>
+
+volatile long double x;
+volatile long double y;
+long double z;
+long double zero = 0.0L;
+
+int
+main ()
+{
+ /* A particular value in the first quadrant. */
+ x = 0.6L;
+ y = 0.8L;
+ z = copysignl (x, y);
+ ASSERT (z == 0.6L);
+
+ /* A particular value in the second quadrant. */
+ x = -0.6L;
+ y = 0.8L;
+ z = copysignl (x, y);
+ ASSERT (z == 0.6L);
+
+ /* A particular value in the third quadrant. */
+ x = -0.6L;
+ y = -0.8L;
+ z = copysignl (x, y);
+ ASSERT (z == -0.6L);
+
+ /* A particular value in the fourth quadrant. */
+ x = 0.6L;
+ y = -0.8L;
+ z = copysignl (x, y);
+ ASSERT (z == -0.6L);
+
+ /* From signed zero. */
+ x = 1.0L;
+ y = 0.0L;
+ z = copysignl (x, y);
+ ASSERT (z == 1.0L);
+
+ x = 1.0L;
+ y = minus_zerol;
+ z = copysignl (x, y);
+ /* Assume all gnulib targets support -0.0L, until proven otherwise. */
+ ASSERT (z == -1.0L);
+
+ x = -1.0L;
+ y = 0.0L;
+ z = copysignl (x, y);
+ ASSERT (z == 1.0L);
+
+ x = -1.0L;
+ y = minus_zerol;
+ z = copysignl (x, y);
+ ASSERT (z == -1.0L);
+
+ /* To signed zero. */
+ x = 0.0L;
+ y = 1.0L;
+ z = copysignl (x, y);
+ ASSERT (z == 0.0L);
+ ASSERT (memcmp (&z, &zero, sizeof z) == 0);
+
+ x = 0.0L;
+ y = -1.0L;
+ z = copysignl (x, y);
+ ASSERT (z == 0.0L);
+ ASSERT (memcmp (&z, &zero, sizeof z) != 0);
+
+ x = minus_zerol;
+ y = 1.0L;
+ z = copysignl (x, y);
+ ASSERT (z == 0.0L);
+ ASSERT (memcmp (&z, &zero, sizeof z) == 0);
+
+ x = minus_zerol;
+ y = -1.0L;
+ z = copysignl (x, y);
+ ASSERT (z == 0.0L);
+ ASSERT (memcmp (&z, &zero, sizeof z) != 0);
+
+ return 0;
+}
--- /dev/null
+/* Test of cosf() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010-2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (cosf, float, (float));
+
+#include "macros.h"
+
+volatile float x;
+float y;
+
+int
+main ()
+{
+ /* A particular value. */
+ x = 0.6f;
+ y = cosf (x);
+ ASSERT (y >= 0.8253355f && y <= 0.8253357f);
+
+ return 0;
+}
--- /dev/null
+/* Test of coshf() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010-2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (coshf, float, (float));
+
+#include "macros.h"
+
+volatile float x;
+float y;
+
+int
+main ()
+{
+ /* A particular value. */
+ x = 0.6f;
+ y = coshf (x);
+ ASSERT (y >= 1.1854652f && y <= 1.1854653f);
+
+ return 0;
+}
#include <stdint.h>
#include <string.h>
+#include "infinity.h"
#include "macros.h"
static void
my_dprintf (fileno (stdout), "%a %d\n", 0.0, 33, 44, 55);
/* Positive infinity. */
- my_dprintf (fileno (stdout), "%a %d\n", 1.0 / 0.0, 33, 44, 55);
+ my_dprintf (fileno (stdout), "%a %d\n", Infinityd (), 33, 44, 55);
/* Negative infinity. */
- my_dprintf (fileno (stdout), "%a %d\n", -1.0 / 0.0, 33, 44, 55);
+ my_dprintf (fileno (stdout), "%a %d\n", - Infinityd (), 33, 44, 55);
/* FLAG_ZERO with infinite number. */
- my_dprintf (fileno (stdout), "%010a %d\n", 1.0 / 0.0, 33, 44, 55);
+ my_dprintf (fileno (stdout), "%010a %d\n", Infinityd (), 33, 44, 55);
/* Test the support of the %f format directive. */
--- /dev/null
+/* Test of dprintf() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <stdio.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (dprintf, int, (int, const char *, ...));
+
+#include <errno.h>
+
+#include "macros.h"
+
+int
+main (int argc, char *argv[])
+{
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (dprintf (-1, "test") == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (dprintf (99, "test") == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ return 0;
+}
/* Get declarations of the Win32 API functions. */
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
+/* Get _get_osfhandle. */
+# include "msvc-nothrow.h"
#endif
#if !O_BINARY
--- /dev/null
+/* Test duplicating a file descriptor.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <unistd.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (dup, int, (int));
+
+#include <errno.h>
+
+#include "macros.h"
+
+int
+main (void)
+{
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (dup (-1) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (dup (99) == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ return 0;
+}
/* Get declarations of the Win32 API functions. */
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
+/* Get _get_osfhandle. */
+# include "msvc-nothrow.h"
#endif
#include "macros.h"
ASSERT (dup2 (-1, fd) == -1);
ASSERT (errno == EBADF);
errno = 0;
+ ASSERT (dup2 (99, fd) == -1);
+ ASSERT (errno == EBADF);
+ errno = 0;
ASSERT (dup2 (AT_FDCWD, fd) == -1);
ASSERT (errno == EBADF);
ASSERT (is_open (fd));
/* Get declarations of the Win32 API functions. */
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
+/* Get _get_osfhandle. */
+# include "msvc-nothrow.h"
#endif
#include "binary-io.h"
exclude_options &= ~flag;
else
exclude_options |= flag;
+
+ /* Skip this test if invoked with -leading-dir on a system that
+ lacks support for FNM_LEADING_DIR. */
+ if (strcmp (s, "leading_dir") == 0 && FNM_LEADING_DIR == 0)
+ exit (77);
+
+ /* Likewise for -casefold and FNM_CASEFOLD. */
+ if (strcmp (s, "casefold") == 0 && FNM_CASEFOLD == 0)
+ exit (77);
}
else if (add_exclude_file (add_exclude, exclude, opt,
exclude_options, '\n') != 0)
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-TMP=excltmp.$$
-LIST=flist.$$
-ERR=0
+. "${srcdir=.}/init.sh"; path_prepend_ .
+fail=0
# Test literal matches
-cat > $LIST <<EOT
+cat > in <<EOT
foo*
bar
Baz
EOT
-cat > $TMP <<EOT
+cat > expected <<EOT
foo: 0
foo*: 1
bar: 1
bar/qux: 0
EOT
-./test-exclude$EXEEXT $LIST -- foo 'foo*' bar foobar baz bar/qux |
- tr -d '\015' |
- diff -c $TMP - || ERR=1
+test-exclude in -- foo 'foo*' bar foobar baz bar/qux > out || exit $?
-rm -f $TMP $LIST
-exit $ERR
+# Find out how to remove carriage returns from output. Solaris /usr/ucb/tr
+# does not understand '\r'.
+case $(echo r | tr -d '\r') in '') cr='\015';; *) cr='\r';; esac
+
+# normalize output
+LC_ALL=C tr -d "$cr" < out > k && mv k out
+
+compare expected out || fail=1
+
+Exit $fail
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-TMP=excltmp.$$
-LIST=flist.$$
-ERR=0
+. "${srcdir=.}/init.sh"; path_prepend_ .
+fail=0
-cat > $LIST <<EOT
+cat > in <<EOT
foo*
bar
Baz
# Test case-insensitive literal matches
-cat > $TMP <<EOT
+cat > expected <<EOT
foo: 0
foo*: 1
bar: 1
bar/qux: 0
EOT
-./test-exclude$EXEEXT -casefold $LIST -- foo 'foo*' bar foobar baz bar/qux |
- tr -d '\015' |
- diff -c $TMP - || ERR=1
+test-exclude -casefold in -- foo 'foo*' bar foobar baz bar/qux > out || exit $?
-rm -f $TMP $LIST
-exit $ERR
+# Find out how to remove carriage returns from output. Solaris /usr/ucb/tr
+# does not understand '\r'.
+case $(echo r | tr -d '\r') in '') cr='\015';; *) cr='\r';; esac
+
+# normalize output
+LC_ALL=C tr -d "$cr" < out > k && mv k out
+
+compare expected out || fail=1
+
+Exit $fail
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-TMP=excltmp.$$
-LIST=flist.$$
-ERR=0
+. "${srcdir=.}/init.sh"; path_prepend_ .
+fail=0
# Test include
-cat > $LIST <<EOT
+cat > in <<EOT
foo*
bar
Baz
EOT
-cat > $TMP <<EOT
+cat > expected <<EOT
foo: 1
foo*: 0
bar: 0
bar/qux: 1
EOT
-./test-exclude$EXEEXT -include $LIST -- foo 'foo*' bar foobar baz bar/qux |
- tr -d '\015' |
- diff -c $TMP - || ERR=1
+test-exclude -include in -- foo 'foo*' bar foobar baz bar/qux > out || exit $?
-rm -f $TMP $LIST
-exit $ERR
+# Find out how to remove carriage returns from output. Solaris /usr/ucb/tr
+# does not understand '\r'.
+case $(echo r | tr -d '\r') in '') cr='\015';; *) cr='\r';; esac
+
+# normalize output
+LC_ALL=C tr -d "$cr" < out > k && mv k out
+
+compare expected out || fail=1
+
+Exit $fail
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-TMP=excltmp.$$
-LIST=flist.$$
-ERR=0
+. "${srcdir=.}/init.sh"; path_prepend_ .
+fail=0
# Test wildcard matching
-cat > $LIST <<EOT
+cat > in <<EOT
foo*
bar
Baz
EOT
-cat > $TMP <<EOT
+cat > expected <<EOT
foobar: 1
EOT
-./test-exclude$EXEEXT -wildcards $LIST -- foobar |
- tr -d '\015' |
- diff -c $TMP - || ERR=1
+test-exclude -wildcards in -- foobar > out || exit $?
-rm -f $TMP $LIST
-exit $ERR
+# Find out how to remove carriage returns from output. Solaris /usr/ucb/tr
+# does not understand '\r'.
+case $(echo r | tr -d '\r') in '') cr='\015';; *) cr='\r';; esac
+
+# normalize output
+LC_ALL=C tr -d "$cr" < out > k && mv k out
+
+compare expected out || fail=1
+
+Exit $fail
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-TMP=excltmp.$$
-LIST=flist.$$
-ERR=0
+. "${srcdir=.}/init.sh"; path_prepend_ .
+fail=0
# Test FNM_LEADING_DIR
-cat > $LIST <<EOT
+cat > in <<EOT
foo*
bar
Baz
EOT
-cat > $TMP <<EOT
+cat > expected <<EOT
bar: 1
bar/qux: 1
barz: 0
foo/bar: 1
EOT
-./test-exclude$EXEEXT -leading_dir $LIST -- bar bar/qux barz foo/bar |
- tr -d '\015' |
- diff -c $TMP - || ERR=1
+test-exclude -leading_dir in -- bar bar/qux barz foo/bar > out || exit $?
-rm -f $TMP $LIST
-exit $ERR
+# Find out how to remove carriage returns from output. Solaris /usr/ucb/tr
+# does not understand '\r'.
+case $(echo r | tr -d '\r') in '') cr='\015';; *) cr='\r';; esac
+
+# normalize output
+LC_ALL=C tr -d "$cr" < out > k && mv k out
+
+compare expected out || fail=1
+
+Exit $fail
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-TMP=excltmp.$$
-LIST=flist.$$
-ERR=0
+. "${srcdir=.}/init.sh"; path_prepend_ .
+fail=0
# Test anchored
-cat > $LIST <<EOT
+cat > in <<EOT
foo*
bar
Baz
EOT
-cat > $TMP <<EOT
+cat > expected <<EOT
bar: 1
foo/bar: 0
EOT
-./test-exclude$EXEEXT -anchored $LIST -- bar foo/bar |
- tr -d '\015' |
- diff -c $TMP - || ERR=1
+test-exclude -anchored in -- bar foo/bar > out || exit $?
-rm -f $TMP $LIST
-exit $ERR
+# Find out how to remove carriage returns from output. Solaris /usr/ucb/tr
+# does not understand '\r'.
+case $(echo r | tr -d '\r') in '') cr='\015';; *) cr='\r';; esac
+
+# normalize output
+LC_ALL=C tr -d "$cr" < out > k && mv k out
+
+compare expected out || fail=1
+
+Exit $fail
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-TMP=excltmp.$$
-LIST=flist.$$
-ERR=0
+. "${srcdir=.}/init.sh"; path_prepend_ .
+fail=0
# Test exclude precedence
-cat > $LIST <<EOT
+cat > in <<EOT
foo*
bar
Baz
EOT
-cat > $TMP <<EOT
+cat > expected <<EOT
bar: 1
bar: 0
EOT
-./test-exclude$EXEEXT $LIST -include $LIST -- bar |
- tr -d '\015' >$TMP.1
-./test-exclude$EXEEXT -include $LIST -no-include $LIST -- bar |
- tr -d '\015' >>$TMP.1
+test-exclude in -include in -- bar > out || exit $?
+test-exclude -include in -no-include in -- bar >> out || exit $?
-diff -c $TMP $TMP.1 || ERR=1
+# Find out how to remove carriage returns from output. Solaris /usr/ucb/tr
+# does not understand '\r'.
+case $(echo r | tr -d '\r') in '') cr='\015';; *) cr='\r';; esac
-rm -f $TMP $TMP.1 $LIST
-exit $ERR
+# normalize output
+LC_ALL=C tr -d "$cr" < out > k && mv k out
+
+compare expected out || fail=1
+
+Exit $fail
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-TMP=excltmp.$$
-LIST=flist.$$
-ERR=0
+. "${srcdir=.}/init.sh"; path_prepend_ .
+fail=0
# Test escaped metacharacters.
-cat > $LIST <<'EOT'
+cat > in <<'EOT'
f\*e
b[a\*]r
EOT
-cat > $TMP <<'EOT'
+cat > expected <<'EOT'
f*e: 1
file: 0
bar: 1
EOT
-./test-exclude$EXEEXT -wildcards $LIST -- 'f*e' 'file' 'bar' |
- tr -d '\015' | diff -c $TMP - || ERR=1
+test-exclude -wildcards in -- 'f*e' 'file' 'bar' > out || exit $?
-rm -f $TMP $LIST
-exit $ERR
+# Find out how to remove carriage returns from output. Solaris /usr/ucb/tr
+# does not understand '\r'.
+case $(echo r | tr -d '\r') in '') cr='\015';; *) cr='\r';; esac
+
+# normalize output
+LC_ALL=C tr -d "$cr" < out > k && mv k out
+
+compare expected out || fail=1
+
+Exit $fail
--- /dev/null
+/* Test of expf() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010-2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (expf, float, (float));
+
+#include "macros.h"
+
+volatile float x;
+float y;
+
+int
+main ()
+{
+ /* A particular value. */
+ x = 0.6f;
+ y = expf (x);
+ ASSERT (y >= 1.8221188f && y <= 1.8221189f);
+
+ return 0;
+}
--- /dev/null
+/* Test of fabsf() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010-2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (fabsf, float, (float));
+
+#include "macros.h"
+
+volatile float x;
+float y;
+
+int
+main ()
+{
+ /* A particular positive value. */
+ x = 0.6f;
+ y = fabsf (x);
+ ASSERT (y == 0.6f);
+
+ /* A particular negative value. */
+ x = -0.6f;
+ y = fabsf (x);
+ ASSERT (y == 0.6f);
+
+ return 0;
+}
--- /dev/null
+/* Test checking user's permissions for a file.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <unistd.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (faccessat, int, (int, const char *, int, int));
+
+#include <errno.h>
+#include <fcntl.h>
+
+#include "macros.h"
+
+int
+main (void)
+{
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (faccessat (-1, "foo", F_OK, 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (faccessat (99, "foo", F_OK, 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ return 0;
+}
int
main (void)
{
- char *cwd = getcwd (NULL, 0);
- int fd = open (".", O_RDONLY);
+ char *cwd;
+ int fd;
int i;
+ cwd = getcwd (NULL, 0);
ASSERT (cwd);
+
+ fd = open (".", O_RDONLY);
ASSERT (0 <= fd);
- /* Check for failure cases. */
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (fchdir (-1) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (fchdir (99) == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ /* Check for other failure cases. */
{
int bad_fd = open ("/dev/null", O_RDONLY);
ASSERT (0 <= bad_fd);
ASSERT (fchdir (bad_fd) == -1);
ASSERT (errno == ENOTDIR);
ASSERT (close (bad_fd) == 0);
- errno = 0;
- ASSERT (fchdir (-1) == -1);
- ASSERT (errno == EBADF);
}
/* Repeat test twice, once in '.' and once in '..'. */
--- /dev/null
+/* Test changing the protections of a file.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <sys/stat.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (fchmod, int, (int, mode_t));
+
+#include <errno.h>
+
+#include "macros.h"
+
+int
+main (void)
+{
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (fchmod (-1, 0600) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (fchmod (99, 0600) == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ return 0;
+}
--- /dev/null
+/* Test changing the protections of a file relative to an open directory.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <sys/stat.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (fchmodat, int, (int, const char *, mode_t, int));
+
+#include <errno.h>
+
+#include "macros.h"
+
+int
+main (void)
+{
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (fchmodat (-1, "foo", 0600, 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (fchmodat (99, "foo", 0600, 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ return 0;
+}
--- /dev/null
+/* Tests of fchown.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <unistd.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (fchown, int, (int, uid_t, gid_t));
+
+#include <errno.h>
+
+#include "macros.h"
+
+int
+main (int argc, char *argv[])
+{
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (fchown (-1, getuid (), getgid ()) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (fchown (99, getuid (), getgid ()) == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ return 0;
+}
/* Clean up any trash from prior testsuite runs. */
ignore_value (system ("rm -rf " BASE "*"));
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (fchownat (-1, "foo", getuid (), getgid (), 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (fchownat (99, "foo", getuid (), getgid (), 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+
/* Basic tests. */
result1 = test_chown (do_chown, true);
result2 = test_lchown (do_lchown, result1 == 0);
/* Test that fclose() sets errno if someone else closes the stream
fd behind the back of stdio. */
- f = fdopen (fd, "w+");
- ASSERT (f);
- ASSERT (close (fd) == 0);
- errno = 0;
- ASSERT (fclose (f) == EOF);
- ASSERT (errno == EBADF);
+ {
+ FILE *fp = fdopen (fd, "w+");
+ ASSERT (fp != NULL);
+ ASSERT (close (fd) == 0);
+ errno = 0;
+ ASSERT (fclose (fp) == EOF);
+ ASSERT (errno == EBADF);
+ }
+
+ /* Test that fclose() sets errno if the stream was constructed with
+ an invalid file descriptor. */
+ {
+ FILE *fp = fdopen (-1, "r");
+ if (fp != NULL)
+ {
+ errno = 0;
+ ASSERT (fclose (fp) == EOF);
+ ASSERT (errno == EBADF);
+ }
+ }
+ {
+ FILE *fp = fdopen (99, "r");
+ if (fp != NULL)
+ {
+ errno = 0;
+ ASSERT (fclose (fp) == EOF);
+ ASSERT (errno == EBADF);
+ }
+ }
/* Clean up. */
ASSERT (remove (BASE) == 0);
/* Check that the FD_* macros are defined. */
int i = FD_CLOEXEC;
+/* Check that the types are all defined. */
+pid_t t1;
+off_t t2;
+mode_t t3;
+
int
main (void)
{
/* Get declarations of the Win32 API functions. */
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
+/* Get _get_osfhandle. */
+# include "msvc-nothrow.h"
#endif
#include "binary-io.h"
ASSERT (is_mode (fd + 2, O_TEXT));
ASSERT (close (fd + 2) == 0);
- /* Test F_GETFD. */
+ /* Test F_GETFD on invalid file descriptors. */
errno = 0;
ASSERT (fcntl (-1, F_GETFD) == -1);
ASSERT (errno == EBADF);
errno = 0;
ASSERT (fcntl (10000000, F_GETFD) == -1);
ASSERT (errno == EBADF);
+
+ /* Test F_GETFD, the FD_CLOEXEC bit. */
{
int result = fcntl (fd, F_GETFD);
ASSERT (0 <= result);
ASSERT (close (fd + 1) == 0);
}
+#ifdef F_SETFD
+ /* Test F_SETFD on invalid file descriptors. */
+ errno = 0;
+ ASSERT (fcntl (-1, F_SETFD, 0) == -1);
+ ASSERT (errno == EBADF);
+ errno = 0;
+ ASSERT (fcntl (fd + 1, F_SETFD, 0) == -1);
+ ASSERT (errno == EBADF);
+ errno = 0;
+ ASSERT (fcntl (10000000, F_SETFD, 0) == -1);
+ ASSERT (errno == EBADF);
+#endif
+
+#ifdef F_GETFL
+ /* Test F_GETFL on invalid file descriptors. */
+ errno = 0;
+ ASSERT (fcntl (-1, F_GETFL) == -1);
+ ASSERT (errno == EBADF);
+ errno = 0;
+ ASSERT (fcntl (fd + 1, F_GETFL) == -1);
+ ASSERT (errno == EBADF);
+ errno = 0;
+ ASSERT (fcntl (10000000, F_GETFL) == -1);
+ ASSERT (errno == EBADF);
+#endif
+
+#ifdef F_SETFL
+ /* Test F_SETFL on invalid file descriptors. */
+ errno = 0;
+ ASSERT (fcntl (-1, F_SETFL, 0) == -1);
+ ASSERT (errno == EBADF);
+ errno = 0;
+ ASSERT (fcntl (fd + 1, F_SETFL, 0) == -1);
+ ASSERT (errno == EBADF);
+ errno = 0;
+ ASSERT (fcntl (10000000, F_SETFL, 0) == -1);
+ ASSERT (errno == EBADF);
+#endif
+
+#ifdef F_GETOWN
+ /* Test F_GETOWN on invalid file descriptors. */
+ errno = 0;
+ ASSERT (fcntl (-1, F_GETOWN) == -1);
+ ASSERT (errno == EBADF);
+ errno = 0;
+ ASSERT (fcntl (fd + 1, F_GETOWN) == -1);
+ ASSERT (errno == EBADF);
+ errno = 0;
+ ASSERT (fcntl (10000000, F_GETOWN) == -1);
+ ASSERT (errno == EBADF);
+#endif
+
+#ifdef F_SETOWN
+ /* Test F_SETFL on invalid file descriptors. */
+ errno = 0;
+ ASSERT (fcntl (-1, F_SETOWN, 0) == -1);
+ ASSERT (errno == EBADF);
+ errno = 0;
+ ASSERT (fcntl (fd + 1, F_SETOWN, 0) == -1);
+ ASSERT (errno == EBADF);
+ errno = 0;
+ ASSERT (fcntl (10000000, F_SETOWN, 0) == -1);
+ ASSERT (errno == EBADF);
+#endif
+
/* Cleanup. */
ASSERT (close (fd) == 0);
ASSERT (unlink (file) == 0);
--- /dev/null
+/* Test of fdatasync() function.
+ Copyright (C) 2008-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <unistd.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (fdatasync, int, (int));
+
+#include <errno.h>
+#include <fcntl.h>
+
+#include "macros.h"
+
+int
+main (void)
+{
+ int fd;
+ const char *file = "test-fdatasync.txt";
+
+ /* Assuming stdin and stdout are ttys, fdatasync is allowed to fail, but
+ may succeed as an extension. */
+ for (fd = 0; fd < 2; fd++)
+ if (fdatasync (fd) != 0)
+ {
+ ASSERT (errno == EINVAL /* POSIX */
+ || errno == ENOTSUP /* seen on MacOS X 10.5 */
+ || errno == EBADF /* seen on AIX 7.1 */
+ || errno == EIO /* seen on mingw */
+ );
+ }
+
+ /* fdatasync must fail on invalid fd. */
+ {
+ errno = 0;
+ ASSERT (fdatasync (-1) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (fdatasync (99) == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ fd = open (file, O_WRONLY|O_CREAT|O_TRUNC, 0644);
+ ASSERT (0 <= fd);
+ ASSERT (write (fd, "hello", 5) == 5);
+ ASSERT (fdatasync (fd) == 0);
+ ASSERT (close (fd) == 0);
+
+#if 0
+ /* POSIX is self-contradictory on whether fdatasync must fail on
+ read-only file descriptors. Glibc allows it, as does our
+ implementation if fsync allows it. */
+ fd = open (file, O_RDONLY);
+ ASSERT (0 <= fd);
+ errno = 0;
+ ASSERT (fdatasync (fd) == -1);
+ ASSERT (errno == EBADF);
+ ASSERT (close (fd) == 0);
+#endif
+
+ ASSERT (unlink (file) == 0);
+
+ return 0;
+}
--- /dev/null
+/* Test opening a stream with a file descriptor.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <stdio.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (fdopen, FILE *, (int, const char *));
+
+#include <errno.h>
+
+#include "macros.h"
+
+int
+main (void)
+{
+ /* Test behaviour for invalid file descriptors. */
+ {
+ FILE *fp;
+
+ errno = 0;
+ fp = fdopen (-1, "r");
+ if (fp == NULL)
+ ASSERT (errno == EBADF);
+ else
+ fclose (fp);
+ }
+ {
+ FILE *fp;
+
+ errno = 0;
+ fp = fdopen (99, "r");
+ if (fp == NULL)
+ ASSERT (errno == EBADF);
+ else
+ fclose (fp);
+ }
+
+ return 0;
+}
ASSERT (unlink ("test-fdopendir.tmp") == 0);
/* A bad fd cannot be turned into a stream. */
- errno = 0;
- ASSERT (fdopendir (-1) == NULL);
- ASSERT (errno == EBADF);
+ {
+ errno = 0;
+ ASSERT (fdopendir (-1) == NULL);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (fdopendir (99) == NULL);
+ ASSERT (errno == EBADF);
+ }
/* This should work. */
fd = open (".", O_RDONLY);
#include "signature.h"
SIGNATURE_CHECK (fflush, int, (FILE *));
+#include <errno.h>
#include <unistd.h>
+#include "macros.h"
+
int
main (void)
{
/* Test fflush. */
f = fopen ("test-fflush.txt", "r");
+ ASSERT (f != NULL);
fd = fileno (f);
if (!f || 0 > fd || fread (buffer, 1, 5, f) != 5)
{
return 1;
}
fclose (f);
+
+ /* Test that fflush() sets errno if someone else closes the stream
+ fd behind the back of stdio. */
+ {
+ FILE *fp = fopen ("test-fflush.txt", "w");
+ ASSERT (fp != NULL);
+ fputc ('x', fp);
+ ASSERT (close (fileno (fp)) == 0);
+ errno = 0;
+ ASSERT (fflush (fp) == EOF);
+ ASSERT (errno == EBADF);
+ fclose (fp);
+ }
+
+ /* Test that fflush() sets errno if the stream was constructed with
+ an invalid file descriptor. */
+ {
+ FILE *fp = fdopen (-1, "w");
+ if (fp != NULL)
+ {
+ fputc ('x', fp);
+ errno = 0;
+ ASSERT (fflush (fp) == EOF);
+ ASSERT (errno == EBADF);
+ }
+ }
+ {
+ FILE *fp = fdopen (99, "w");
+ if (fp != NULL)
+ {
+ fputc ('x', fp);
+ errno = 0;
+ ASSERT (fflush (fp) == EOF);
+ ASSERT (errno == EBADF);
+ }
+ }
+
+ /* Clean up. */
unlink ("test-fflush.txt");
+
return 0;
}
--- /dev/null
+/* Test of fgetc() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include <stdio.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (fgetc, int, (FILE *));
+
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#include "msvc-inval.h"
+
+#include "macros.h"
+
+int
+main (int argc, char **argv)
+{
+ const char *filename = "test-fgetc.txt";
+
+ /* We don't have an fgetc() function that installs an invalid parameter
+ handler so far. So install that handler here, explicitly. */
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER \
+ && MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING
+ gl_msvc_inval_ensure_handler ();
+#endif
+
+ /* Prepare a file. */
+ {
+ const char text[] = "hello world";
+ int fd = open (filename, O_RDWR | O_CREAT | O_TRUNC, 0600);
+ ASSERT (fd >= 0);
+ ASSERT (write (fd, text, sizeof (text)) == sizeof (text));
+ ASSERT (close (fd) == 0);
+ }
+
+ /* Test that fgetc() sets errno if someone else closes the stream
+ fd behind the back of stdio. */
+ {
+ FILE *fp = fopen (filename, "r");
+ ASSERT (fp != NULL);
+ ASSERT (close (fileno (fp)) == 0);
+ errno = 0;
+ ASSERT (fgetc (fp) == EOF);
+ ASSERT (errno == EBADF);
+ ASSERT (ferror (fp));
+ fclose (fp);
+ }
+
+ /* Test that fgetc() sets errno if the stream was constructed with
+ an invalid file descriptor. */
+ {
+ FILE *fp = fdopen (-1, "r");
+ if (fp != NULL)
+ {
+ errno = 0;
+ ASSERT (fgetc (fp) == EOF);
+ ASSERT (errno == EBADF);
+ ASSERT (ferror (fp));
+ fclose (fp);
+ }
+ }
+ {
+ FILE *fp = fdopen (99, "r");
+ if (fp != NULL)
+ {
+ errno = 0;
+ ASSERT (fgetc (fp) == EOF);
+ ASSERT (errno == EBADF);
+ ASSERT (ferror (fp));
+ fclose (fp);
+ }
+ }
+
+ /* Clean up. */
+ unlink (filename);
+
+ return 0;
+}
--- /dev/null
+#!/bin/sh
+
+# Test file-has-acl on the file system of /var/tmp, which usually is a local
+# file system.
+
+if test -d /var/tmp; then
+ TMPDIR=/var/tmp
+else
+ TMPDIR=/tmp
+fi
+export TMPDIR
+
+exec "${srcdir}/test-file-has-acl.sh"
--- /dev/null
+#!/bin/sh
+
+# Test file-has-acl on the file system of the build directory, which may be
+# a local file system or NFS mounted.
+
+TMPDIR=`pwd`
+export TMPDIR
+
+exec "${srcdir}/test-file-has-acl.sh"
/* Check that 'long double' is at least as wide as 'double'. */
ASSERT (LDBL_MANT_DIG >= DBL_MANT_DIG);
-
- /* Normally, we would also assert this:
- ASSERT (LDBL_MIN_EXP <= DBL_MIN_EXP);
- but at least on powerpc64 with gcc-4.4.4, it would fail:
- $ :|gcc -dD -E -include stddef.h -|grep -E 'L?DBL_MIN_EXP'
- #define __DBL_MIN_EXP__ (-1021)
- #define __LDBL_MIN_EXP__ (-968)
- */
+ ASSERT (LDBL_MIN_EXP - LDBL_MANT_DIG <= DBL_MIN_EXP - DBL_MANT_DIG);
ASSERT (LDBL_MAX_EXP >= DBL_MAX_EXP);
/* Check the value of LDBL_DIG. */
#include "isnand-nolibm.h"
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
#include "macros.h"
ASSERT (floor (-65536.0) == -65536.0);
ASSERT (floor (-2.341e31) == -2.341e31);
/* Infinite numbers. */
- ASSERT (floor (1.0 / 0.0) == 1.0 / 0.0);
- ASSERT (floor (-1.0 / 0.0) == -1.0 / 0.0);
+ ASSERT (floor (Infinityd ()) == Infinityd ());
+ ASSERT (floor (- Infinityd ()) == - Infinityd ());
/* NaNs. */
ASSERT (isnand (floor (NaNd ())));
#include "isnanf-nolibm.h"
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
#include "macros.h"
ASSERT (my_floorf (-65536.0f) == -65536.0f);
ASSERT (my_floorf (-2.341e31f) == -2.341e31f);
/* Infinite numbers. */
- ASSERT (my_floorf (1.0f / 0.0f) == 1.0f / 0.0f);
- ASSERT (my_floorf (-1.0f / 0.0f) == -1.0f / 0.0f);
+ ASSERT (my_floorf (Infinityf ()) == Infinityf ());
+ ASSERT (my_floorf (- Infinityf ()) == - Infinityf ());
/* NaNs. */
ASSERT (isnanf (my_floorf (NaNf ())));
#include "fpucw.h"
#include "isnanl-nolibm.h"
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
#include "macros.h"
ASSERT (floorl (-65536.0L) == -65536.0L);
ASSERT (floorl (-2.341e31L) == -2.341e31L);
/* Infinite numbers. */
- ASSERT (floorl (1.0L / 0.0L) == 1.0L / 0.0L);
- ASSERT (floorl (-1.0L / 0.0L) == -1.0L / 0.0L);
+ ASSERT (floorl (Infinityl ()) == Infinityl ());
+ ASSERT (floorl (- Infinityl ()) == - Infinityl ());
/* NaNs. */
ASSERT (isnanl (floorl (NaNl ())));
--- /dev/null
+/* Test of fma().
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (fma, double, (double, double, double));
+
+#include "isnand-nolibm.h"
+#include "infinity.h"
+#include "nan.h"
+#include "macros.h"
+
+#undef INFINITY
+#undef NAN
+
+#define DOUBLE double
+#define ISNAN isnand
+#define INFINITY Infinityd ()
+#define NAN NaNd ()
+#define L_(literal) literal
+#include "test-fma1.h"
+
+int
+main ()
+{
+ test_function (fma);
+
+ return 0;
+}
--- /dev/null
+/* Test of fused multiply-add.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2011. */
+
+static void
+test_function (DOUBLE (*my_fma) (DOUBLE, DOUBLE, DOUBLE))
+{
+ volatile DOUBLE x;
+ volatile DOUBLE y;
+ volatile DOUBLE z;
+ volatile DOUBLE result;
+ volatile DOUBLE expected;
+
+ /* Combinations with NaN. */
+ /* "If x or y are NaN, a NaN shall be returned." */
+ {
+ x = NAN;
+ y = NAN;
+ z = NAN;
+ result = my_fma (x, y, z);
+ ASSERT (ISNAN (result));
+ }
+ {
+ x = NAN;
+ y = NAN;
+ z = L_(1.0);
+ result = my_fma (x, y, z);
+ ASSERT (ISNAN (result));
+ }
+ {
+ x = NAN;
+ y = L_(0.0);
+ z = NAN;
+ result = my_fma (x, y, z);
+ ASSERT (ISNAN (result));
+ }
+ {
+ x = NAN;
+ y = L_(0.0);
+ z = L_(1.0);
+ result = my_fma (x, y, z);
+ ASSERT (ISNAN (result));
+ }
+ {
+ x = L_(0.0);
+ y = NAN;
+ z = NAN;
+ result = my_fma (x, y, z);
+ ASSERT (ISNAN (result));
+ }
+ {
+ x = L_(0.0);
+ y = NAN;
+ z = L_(1.0);
+ result = my_fma (x, y, z);
+ ASSERT (ISNAN (result));
+ }
+ /* "If x*y is not 0*Inf nor Inf*0 and z is a NaN, a NaN shall be returned." */
+ {
+ x = L_(3.0);
+ y = - L_(2.0);
+ z = NAN;
+ result = my_fma (x, y, z);
+ ASSERT (ISNAN (result));
+ }
+ /* "If one of x and y is infinite, the other is zero, and z is a NaN, a NaN
+ shall be returned and a domain error may occur." */
+ {
+ x = INFINITY;
+ y = L_(0.0);
+ z = NAN;
+ result = my_fma (x, y, z);
+ ASSERT (ISNAN (result));
+ }
+ {
+ x = L_(0.0);
+ y = INFINITY;
+ z = NAN;
+ result = my_fma (x, y, z);
+ ASSERT (ISNAN (result));
+ }
+
+ /* Combinations with Infinity. */
+ /* "If x multiplied by y is an exact infinity and z is also an infinity but
+ with the opposite sign, a domain error shall occur, and either a NaN
+ (if supported), or an implementation-defined value shall be returned." */
+ {
+ x = INFINITY;
+ y = L_(3.0);
+ z = - INFINITY;
+ result = my_fma (x, y, z);
+ ASSERT (ISNAN (result));
+ }
+ {
+ x = INFINITY;
+ y = - L_(3.0);
+ z = INFINITY;
+ result = my_fma (x, y, z);
+ ASSERT (ISNAN (result));
+ }
+ {
+ x = L_(3.0);
+ y = INFINITY;
+ z = - INFINITY;
+ result = my_fma (x, y, z);
+ ASSERT (ISNAN (result));
+ }
+ {
+ x = - L_(3.0);
+ y = INFINITY;
+ z = INFINITY;
+ result = my_fma (x, y, z);
+ ASSERT (ISNAN (result));
+ }
+ /* "If one of x and y is infinite, the other is zero, and z is not a NaN, a
+ domain error shall occur, and either a NaN (if supported), or an
+ implementation-defined value shall be returned." */
+ {
+ x = INFINITY;
+ y = L_(0.0);
+ z = L_(5.0);
+ result = my_fma (x, y, z);
+ ASSERT (ISNAN (result));
+ }
+ {
+ x = L_(0.0);
+ y = INFINITY;
+ z = L_(5.0);
+ result = my_fma (x, y, z);
+ ASSERT (ISNAN (result));
+ }
+ /* Infinite results. */
+ {
+ x = - L_(2.0);
+ y = L_(3.0);
+ z = INFINITY;
+ result = my_fma (x, y, z);
+ expected = INFINITY;
+ ASSERT (result == expected);
+ }
+ {
+ x = INFINITY;
+ y = L_(3.0);
+ z = INFINITY;
+ result = my_fma (x, y, z);
+ expected = INFINITY;
+ ASSERT (result == expected);
+ }
+ {
+ x = INFINITY;
+ y = - L_(3.0);
+ z = - INFINITY;
+ result = my_fma (x, y, z);
+ expected = - INFINITY;
+ ASSERT (result == expected);
+ }
+ {
+ x = L_(3.0);
+ y = INFINITY;
+ z = INFINITY;
+ result = my_fma (x, y, z);
+ expected = INFINITY;
+ ASSERT (result == expected);
+ }
+ {
+ x = - L_(3.0);
+ y = INFINITY;
+ z = - INFINITY;
+ result = my_fma (x, y, z);
+ expected = - INFINITY;
+ ASSERT (result == expected);
+ }
+
+ /* Combinations with zero. */
+ {
+ x = L_(0.0);
+ y = L_(3.0);
+ z = L_(11.0);
+ result = my_fma (x, y, z);
+ expected = L_(11.0);
+ ASSERT (result == expected);
+ }
+ {
+ x = L_(3.0);
+ y = L_(0.0);
+ z = L_(11.0);
+ result = my_fma (x, y, z);
+ expected = L_(11.0);
+ ASSERT (result == expected);
+ }
+ {
+ x = L_(3.0);
+ y = L_(4.0);
+ z = L_(0.0);
+ result = my_fma (x, y, z);
+ expected = L_(12.0);
+ ASSERT (result == expected);
+ }
+}
--- /dev/null
+/* Test of fma().
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "float+.h"
+#include "infinity.h"
+#include "macros.h"
+
+#undef INFINITY
+
+#define DOUBLE double
+#define LDEXP ldexp
+const int MIN_EXP = DBL_MIN_EXP; /* for gdb */
+#define MIN_EXP DBL_MIN_EXP
+const int MAX_EXP = DBL_MAX_EXP; /* for gdb */
+#define MAX_EXP DBL_MAX_EXP
+const int MANT_BIT = DBL_MANT_BIT; /* for gdb */
+#define MANT_BIT DBL_MANT_BIT
+#define INFINITY Infinityd ()
+#define L_(literal) literal
+#include "test-fma2.h"
+
+int
+main ()
+{
+ test_function (fma);
+
+ return 0;
+}
--- /dev/null
+/* Test of fused multiply-add.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2011. */
+
+/* Returns 2^e as a DOUBLE. */
+#define POW2(e) \
+ LDEXP (L_(1.0), e)
+
+/* One could define XE_RANGE and YE_RANGE to 5 or 60, but this would slow down
+ the test without the expectation of catching more bugs. */
+#define XE_RANGE 0
+#define YE_RANGE 0
+
+/* Define to 1 if you want to allow the behaviour of the 'double-double'
+ implementation of 'long double' (seen on IRIX 6.5 and Linux/PowerPC).
+ This floating-point type does not follow IEEE 754. */
+#if MANT_BIT == LDBL_MANT_BIT && LDBL_MANT_BIT == 2 * DBL_MANT_BIT
+# define FORGIVE_DOUBLEDOUBLE_BUG 1
+#else
+# define FORGIVE_DOUBLEDOUBLE_BUG 0
+#endif
+
+/* Subnormal numbers appear to not work as expected on IRIX 6.5. */
+#ifdef __sgi
+# define MIN_SUBNORMAL_EXP (MIN_EXP - 1)
+#else
+# define MIN_SUBNORMAL_EXP (MIN_EXP - MANT_BIT)
+#endif
+
+/* Check rounding behaviour. */
+
+static void
+test_function (DOUBLE (*my_fma) (DOUBLE, DOUBLE, DOUBLE))
+{
+ /* Array mapping n to (-1)^n. */
+ static const DOUBLE pow_m1[] =
+ {
+ L_(1.0), - L_(1.0), L_(1.0), - L_(1.0),
+ L_(1.0), - L_(1.0), L_(1.0), - L_(1.0)
+ };
+
+ /* A product x * y that consists of two bits. */
+ {
+ volatile DOUBLE x;
+ volatile DOUBLE y;
+ volatile DOUBLE z;
+ volatile DOUBLE result;
+ volatile DOUBLE expected;
+ int xs;
+ int xe;
+ int ys;
+ int ye;
+ int ze;
+ DOUBLE sign;
+
+ for (xs = 0; xs < 2; xs++)
+ for (xe = -XE_RANGE; xe <= XE_RANGE; xe++)
+ {
+ x = pow_m1[xs] * POW2 (xe); /* (-1)^xs * 2^xe */
+
+ for (ys = 0; ys < 2; ys++)
+ for (ye = -YE_RANGE; ye <= YE_RANGE; ye++)
+ {
+ y = pow_m1[ys] * POW2 (ye); /* (-1)^ys * 2^ye */
+
+ sign = pow_m1[xs + ys];
+
+ /* Test addition (same signs). */
+ for (ze = MIN_EXP - MANT_BIT; ze <= MAX_EXP - 1;)
+ {
+ z = sign * POW2 (ze); /* (-1)^(xs+ys) * 2^ze */
+ result = my_fma (x, y, z);
+ if (xe + ye >= ze + MANT_BIT)
+ expected = sign * POW2 (xe + ye);
+ else if (xe + ye > ze - MANT_BIT)
+ expected = sign * (POW2 (xe + ye) + POW2 (ze));
+ else
+ expected = z;
+ ASSERT (result == expected);
+
+ ze++;
+ /* Shortcut some values of ze, to speed up the test. */
+ if (ze == MIN_EXP + MANT_BIT)
+ ze = - 2 * MANT_BIT - 1;
+ else if (ze == 2 * MANT_BIT)
+ ze = MAX_EXP - MANT_BIT - 1;
+ }
+
+ /* Test subtraction (opposite signs). */
+ for (ze = MIN_EXP - MANT_BIT; ze <= MAX_EXP - 1;)
+ {
+ z = - sign * POW2 (ze); /* (-1)^(xs+ys+1) * 2^ze */
+ result = my_fma (x, y, z);
+ if (xe + ye > ze + MANT_BIT)
+ expected = sign * POW2 (xe + ye);
+ else if (xe + ye >= ze)
+ expected = sign * (POW2 (xe + ye) - POW2 (ze));
+ else if (xe + ye > ze - 1 - MANT_BIT)
+ expected = - sign * (POW2 (ze) - POW2 (xe + ye));
+ else
+ expected = z;
+ ASSERT (result == expected);
+
+ ze++;
+ /* Shortcut some values of ze, to speed up the test. */
+ if (ze == MIN_EXP + MANT_BIT)
+ ze = - 2 * MANT_BIT - 1;
+ else if (ze == 2 * MANT_BIT)
+ ze = MAX_EXP - MANT_BIT - 1;
+ }
+ }
+ }
+ }
+ /* A product x * y that consists of three bits. */
+ {
+ volatile DOUBLE x;
+ volatile DOUBLE y;
+ volatile DOUBLE z;
+ volatile DOUBLE result;
+ volatile DOUBLE expected;
+ int i;
+ int xs;
+ int xe;
+ int ys;
+ int ye;
+ int ze;
+ DOUBLE sign;
+
+ for (i = 1; i <= MANT_BIT - 1; i++)
+ for (xs = 0; xs < 2; xs++)
+ for (xe = -XE_RANGE; xe <= XE_RANGE; xe++)
+ {
+ x = /* (-1)^xs * (2^xe + 2^(xe-i)) */
+ pow_m1[xs] * (POW2 (xe) + POW2 (xe - i));
+
+ for (ys = 0; ys < 2; ys++)
+ for (ye = -YE_RANGE; ye <= YE_RANGE; ye++)
+ {
+ y = /* (-1)^ys * (2^ye + 2^(ye-i)) */
+ pow_m1[ys] * (POW2 (ye) + POW2 (ye - i));
+
+ sign = pow_m1[xs + ys];
+
+ /* The exact value of x * y is
+ (-1)^(xs+ys) * (2^(xe+ye) + 2^(xe+ye-i+1) + 2^(xe+ye-2*i)) */
+
+ /* Test addition (same signs). */
+ for (ze = MIN_SUBNORMAL_EXP; ze <= MAX_EXP - 1;)
+ {
+ z = sign * POW2 (ze); /* (-1)^(xs+ys) * 2^ze */
+ result = my_fma (x, y, z);
+ if (FORGIVE_DOUBLEDOUBLE_BUG)
+ if ((xe + ye > ze
+ && xe + ye < ze + MANT_BIT
+ && i == DBL_MANT_BIT)
+ || (xe + ye == ze + DBL_MANT_BIT && i == DBL_MANT_BIT + 1)
+ || (xe + ye == ze + MANT_BIT - 1 && i == 1))
+ goto skip1;
+ if (xe + ye > ze + MANT_BIT)
+ {
+ if (2 * i > MANT_BIT)
+ expected =
+ sign * (POW2 (xe + ye)
+ + POW2 (xe + ye - i + 1));
+ else if (2 * i == MANT_BIT)
+ expected =
+ sign * (POW2 (xe + ye)
+ + POW2 (xe + ye - i + 1)
+ + POW2 (xe + ye - MANT_BIT + 1));
+ else
+ expected =
+ sign * (POW2 (xe + ye)
+ + POW2 (xe + ye - i + 1)
+ + POW2 (xe + ye - 2 * i));
+ }
+ else if (xe + ye == ze + MANT_BIT)
+ {
+ if (2 * i >= MANT_BIT)
+ expected =
+ sign * (POW2 (xe + ye)
+ + POW2 (xe + ye - i + 1)
+ + POW2 (xe + ye - MANT_BIT + 1));
+ else if (2 * i == MANT_BIT - 1)
+ /* round-to-even rounds up */
+ expected =
+ sign * (POW2 (xe + ye)
+ + POW2 (xe + ye - i + 1)
+ + POW2 (xe + ye - 2 * i + 1));
+ else
+ expected =
+ sign * (POW2 (xe + ye)
+ + POW2 (xe + ye - i + 1)
+ + POW2 (xe + ye - 2 * i));
+ }
+ else if (xe + ye > ze - MANT_BIT + 2 * i)
+ expected =
+ sign * (POW2 (ze)
+ + POW2 (xe + ye)
+ + POW2 (xe + ye - i + 1)
+ + POW2 (xe + ye - 2 * i));
+ else if (xe + ye >= ze - MANT_BIT + i)
+ expected =
+ sign * (POW2 (ze)
+ + POW2 (xe + ye)
+ + POW2 (xe + ye - i + 1));
+ else if (xe + ye == ze - MANT_BIT + i - 1)
+ {
+ if (i == 1)
+ expected =
+ sign * (POW2 (ze) + POW2 (ze - MANT_BIT + 1));
+ else
+ expected =
+ sign * (POW2 (ze)
+ + POW2 (xe + ye)
+ + POW2 (ze - MANT_BIT + 1));
+ }
+ else if (xe + ye >= ze - MANT_BIT + 1)
+ expected = sign * (POW2 (ze) + POW2 (xe + ye));
+ else if (xe + ye == ze - MANT_BIT)
+ expected =
+ sign * (POW2 (ze) + POW2 (ze - MANT_BIT + 1));
+ else if (xe + ye == ze - MANT_BIT - 1)
+ {
+ if (i == 1)
+ expected =
+ sign * (POW2 (ze) + POW2 (ze - MANT_BIT + 1));
+ else
+ expected = z;
+ }
+ else
+ expected = z;
+ ASSERT (result == expected);
+
+ skip1:
+ ze++;
+ /* Shortcut some values of ze, to speed up the test. */
+ if (ze == MIN_EXP + MANT_BIT)
+ ze = - 2 * MANT_BIT - 1;
+ else if (ze == 2 * MANT_BIT)
+ ze = MAX_EXP - MANT_BIT - 1;
+ }
+
+ /* Test subtraction (opposite signs). */
+ if (i > 1)
+ for (ze = MIN_SUBNORMAL_EXP; ze <= MAX_EXP - 1;)
+ {
+ z = - sign * POW2 (ze); /* (-1)^(xs+ys+1) * 2^ze */
+ result = my_fma (x, y, z);
+ if (FORGIVE_DOUBLEDOUBLE_BUG)
+ if ((xe + ye == ze && i == MANT_BIT - 1)
+ || (xe + ye > ze
+ && xe + ye <= ze + DBL_MANT_BIT - 1
+ && i == DBL_MANT_BIT + 1)
+ || (xe + ye >= ze + DBL_MANT_BIT - 1
+ && xe + ye < ze + MANT_BIT
+ && xe + ye == ze + i - 1)
+ || (xe + ye > ze + DBL_MANT_BIT
+ && xe + ye < ze + MANT_BIT
+ && i == DBL_MANT_BIT))
+ goto skip2;
+ if (xe + ye == ze)
+ {
+ /* maximal extinction */
+ expected =
+ sign * (POW2 (xe + ye - i + 1)
+ + POW2 (xe + ye - 2 * i));
+ }
+ else if (xe + ye == ze - 1)
+ {
+ /* significant extinction */
+ if (2 * i > MANT_BIT)
+ expected =
+ sign * (- POW2 (xe + ye)
+ + POW2 (xe + ye - i + 1));
+ else
+ expected =
+ sign * (- POW2 (xe + ye)
+ + POW2 (xe + ye - i + 1)
+ + POW2 (xe + ye - 2 * i));
+ }
+ else if (xe + ye > ze + MANT_BIT)
+ {
+ if (2 * i >= MANT_BIT)
+ expected =
+ sign * (POW2 (xe + ye)
+ + POW2 (xe + ye - i + 1));
+ else
+ expected =
+ sign * (POW2 (xe + ye)
+ + POW2 (xe + ye - i + 1)
+ + POW2 (xe + ye - 2 * i));
+ }
+ else if (xe + ye == ze + MANT_BIT)
+ {
+ if (2 * i >= MANT_BIT)
+ expected =
+ sign * (POW2 (xe + ye)
+ + POW2 (xe + ye - i + 1));
+ else if (2 * i == MANT_BIT - 1)
+ /* round-to-even rounds down */
+ expected =
+ sign * (POW2 (xe + ye)
+ + POW2 (xe + ye - i + 1));
+ else
+ /* round-to-even rounds up */
+ expected =
+ sign * (POW2 (xe + ye)
+ + POW2 (xe + ye - i + 1)
+ + POW2 (xe + ye - 2 * i));
+ }
+ else if (xe + ye >= ze - MANT_BIT + 2 * i)
+ expected =
+ sign * (- POW2 (ze)
+ + POW2 (xe + ye)
+ + POW2 (xe + ye - i + 1)
+ + POW2 (xe + ye - 2 * i));
+ else if (xe + ye >= ze - MANT_BIT + i - 1)
+ expected =
+ sign * (- POW2 (ze)
+ + POW2 (xe + ye)
+ + POW2 (xe + ye - i + 1));
+ else if (xe + ye == ze - MANT_BIT + i - 2)
+ expected =
+ sign * (- POW2 (ze)
+ + POW2 (xe + ye)
+ + POW2 (ze - MANT_BIT));
+ else if (xe + ye >= ze - MANT_BIT)
+ expected =
+ sign * (- POW2 (ze)
+ + POW2 (xe + ye));
+ else if (xe + ye == ze - MANT_BIT - 1)
+ expected =
+ sign * (- POW2 (ze)
+ + POW2 (ze - MANT_BIT));
+ else
+ expected = z;
+ ASSERT (result == expected);
+
+ skip2:
+ ze++;
+ /* Shortcut some values of ze, to speed up the test. */
+ if (ze == MIN_EXP + MANT_BIT)
+ ze = - 2 * MANT_BIT - 1;
+ else if (ze == 2 * MANT_BIT)
+ ze = MAX_EXP - MANT_BIT - 1;
+ }
+ }
+ }
+ }
+ /* TODO: Similar tests with
+ x = (-1)^xs * (2^xe - 2^(xe-i)), y = (-1)^ys * (2^ye - 2^(ye-i)) */
+ /* A product x * y that consists of one segment of bits (or, if you prefer,
+ two bits, one with positive weight and one with negative weight). */
+ {
+ volatile DOUBLE x;
+ volatile DOUBLE y;
+ volatile DOUBLE z;
+ volatile DOUBLE result;
+ volatile DOUBLE expected;
+ int i;
+ int xs;
+ int xe;
+ int ys;
+ int ye;
+ int ze;
+ DOUBLE sign;
+
+ for (i = 1; i <= MANT_BIT - 1; i++)
+ for (xs = 0; xs < 2; xs++)
+ for (xe = -XE_RANGE; xe <= XE_RANGE; xe++)
+ {
+ x = /* (-1)^xs * (2^xe + 2^(xe-i)) */
+ pow_m1[xs] * (POW2 (xe) + POW2 (xe - i));
+
+ for (ys = 0; ys < 2; ys++)
+ for (ye = -YE_RANGE; ye <= YE_RANGE; ye++)
+ {
+ y = /* (-1)^ys * (2^ye - 2^(ye-i)) */
+ pow_m1[ys] * (POW2 (ye) - POW2 (ye - i));
+
+ sign = pow_m1[xs + ys];
+
+ /* The exact value of x * y is
+ (-1)^(xs+ys) * (2^(xe+ye) - 2^(xe+ye-2*i)) */
+
+ /* Test addition (same signs). */
+ for (ze = MIN_EXP - MANT_BIT; ze <= MAX_EXP - 1;)
+ {
+ z = sign * POW2 (ze); /* (-1)^(xs+ys) * 2^ze */
+ result = my_fma (x, y, z);
+ if (FORGIVE_DOUBLEDOUBLE_BUG)
+ if ((xe + ye == ze + MANT_BIT && i > DBL_MANT_BIT)
+ || (xe + ye < ze + MANT_BIT
+ && xe + ye >= ze
+ && i == DBL_MANT_BIT)
+ || (xe + ye < ze
+ && xe + ye == ze - MANT_BIT + 2 * i))
+ goto skip3;
+ if (xe + ye > ze + MANT_BIT + 1)
+ {
+ if (2 * i > MANT_BIT)
+ expected = sign * POW2 (xe + ye);
+ else
+ expected =
+ sign * (POW2 (xe + ye)
+ - POW2 (xe + ye - 2 * i));
+ }
+ else if (xe + ye == ze + MANT_BIT + 1)
+ {
+ if (2 * i >= MANT_BIT)
+ expected = sign * POW2 (xe + ye);
+ else
+ expected =
+ sign * (POW2 (xe + ye)
+ - POW2 (xe + ye - 2 * i));
+ }
+ else if (xe + ye >= ze - MANT_BIT + 2 * i)
+ {
+ if (2 * i > MANT_BIT)
+ expected =
+ sign * (POW2 (xe + ye) + POW2 (ze));
+ else
+ expected =
+ sign * (POW2 (xe + ye)
+ - POW2 (xe + ye - 2 * i)
+ + POW2 (ze));
+ }
+ else if (xe + ye >= ze - MANT_BIT + 1)
+ expected =
+ sign * (POW2 (ze) + POW2 (xe + ye));
+ else
+ expected = z;
+ ASSERT (result == expected);
+
+ skip3:
+ ze++;
+ /* Shortcut some values of ze, to speed up the test. */
+ if (ze == MIN_EXP + MANT_BIT)
+ ze = - 2 * MANT_BIT - 1;
+ else if (ze == 2 * MANT_BIT)
+ ze = MAX_EXP - MANT_BIT - 1;
+ }
+
+ /* Test subtraction (opposite signs). */
+ if (i > 1)
+ for (ze = MIN_SUBNORMAL_EXP; ze <= MAX_EXP - 1;)
+ {
+ z = - sign * POW2 (ze); /* (-1)^(xs+ys+1) * 2^ze */
+ result = my_fma (x, y, z);
+ if (FORGIVE_DOUBLEDOUBLE_BUG)
+ if (xe + ye > ze
+ && xe + ye < ze + DBL_MANT_BIT
+ && xe + ye == ze + 2 * i - LDBL_MANT_BIT)
+ goto skip4;
+ if (xe + ye == ze)
+ {
+ /* maximal extinction */
+ expected = sign * - POW2 (xe + ye - 2 * i);
+ }
+ else if (xe + ye > ze + MANT_BIT + 1)
+ {
+ if (2 * i > MANT_BIT + 1)
+ expected = sign * POW2 (xe + ye);
+ else if (2 * i == MANT_BIT + 1)
+ expected =
+ sign * (POW2 (xe + ye)
+ - POW2 (xe + ye - MANT_BIT));
+ else
+ expected =
+ sign * (POW2 (xe + ye)
+ - POW2 (xe + ye - 2 * i));
+ }
+ else if (xe + ye == ze + MANT_BIT + 1)
+ {
+ if (2 * i > MANT_BIT)
+ expected =
+ sign * (POW2 (xe + ye)
+ - POW2 (xe + ye - MANT_BIT));
+ else if (2 * i == MANT_BIT)
+ expected =
+ sign * (POW2 (xe + ye)
+ - POW2 (xe + ye - MANT_BIT + 1));
+ else
+ expected =
+ sign * (POW2 (xe + ye)
+ - POW2 (xe + ye - 2 * i));
+ }
+ else if (xe + ye == ze + MANT_BIT)
+ {
+ if (2 * i > MANT_BIT + 1)
+ expected =
+ sign * (POW2 (xe + ye)
+ - POW2 (xe + ye - MANT_BIT));
+ else if (2 * i == MANT_BIT + 1)
+ expected =
+ sign * (POW2 (xe + ye)
+ - POW2 (xe + ye - MANT_BIT + 1));
+ else
+ expected =
+ sign * (POW2 (xe + ye)
+ - POW2 (ze)
+ - POW2 (xe + ye - 2 * i));
+ }
+ else if (xe + ye > ze - MANT_BIT + 2 * i)
+ {
+ if (2 * i > MANT_BIT)
+ expected =
+ sign * (POW2 (xe + ye) - POW2 (ze));
+ else
+ expected =
+ sign * (POW2 (xe + ye)
+ - POW2 (ze)
+ - POW2 (xe + ye - 2 * i));
+ }
+ else if (xe + ye == ze - MANT_BIT + 2 * i)
+ expected =
+ sign * (- POW2 (ze)
+ + POW2 (xe + ye)
+ - POW2 (xe + ye - 2 * i));
+ else if (xe + ye >= ze - MANT_BIT)
+ expected = sign * (- POW2 (ze) + POW2 (xe + ye));
+ else
+ expected = z;
+ ASSERT (result == expected);
+
+ skip4:
+ ze++;
+ /* Shortcut some values of ze, to speed up the test. */
+ if (ze == MIN_EXP + MANT_BIT)
+ ze = - 2 * MANT_BIT - 1;
+ else if (ze == 2 * MANT_BIT)
+ ze = MAX_EXP - MANT_BIT - 1;
+ }
+ }
+ }
+ }
+ /* TODO: Tests with denormalized results. */
+ /* Tests with temporary overflow. */
+ {
+ volatile DOUBLE x = POW2 (MAX_EXP - 1);
+ volatile DOUBLE y = POW2 (MAX_EXP - 1);
+ volatile DOUBLE z = - INFINITY;
+ volatile DOUBLE result = my_fma (x, y, z);
+ ASSERT (result == - INFINITY);
+ }
+ {
+ volatile DOUBLE x = POW2 (MAX_EXP - 1); /* 2^(MAX_EXP-1) */
+ volatile DOUBLE y = L_(2.0); /* 2^1 */
+ volatile DOUBLE z = /* -(2^MAX_EXP - 2^(MAX_EXP-MANT_BIT)) */
+ - LDEXP (POW2 (MAX_EXP - 1) - POW2 (MAX_EXP - MANT_BIT - 1), 1);
+ volatile DOUBLE result = my_fma (x, y, z);
+ if (!FORGIVE_DOUBLEDOUBLE_BUG)
+ ASSERT (result == POW2 (MAX_EXP - MANT_BIT));
+ }
+ {
+ volatile DOUBLE x = POW2 (MAX_EXP - 1); /* 2^(MAX_EXP-1) */
+ volatile DOUBLE y = L_(3.0); /* 3 */
+ volatile DOUBLE z = - LDEXP (L_(5.0), MAX_EXP - 3); /* -5*2^(MAX_EXP-3) */
+ volatile DOUBLE result = my_fma (x, y, z);
+ ASSERT (result == LDEXP (L_(7.0), MAX_EXP - 3));
+ }
+}
--- /dev/null
+/* Test of fmaf().
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (fmaf, float, (float, float, float));
+
+#include "isnanf-nolibm.h"
+#include "infinity.h"
+#include "nan.h"
+#include "macros.h"
+
+#undef INFINITY
+#undef NAN
+
+#define DOUBLE float
+#define ISNAN isnanf
+#define INFINITY Infinityf ()
+#define NAN NaNf ()
+#define L_(literal) literal##f
+#include "test-fma1.h"
+
+int
+main ()
+{
+ test_function (fmaf);
+
+ return 0;
+}
--- /dev/null
+/* Test of fmaf().
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "float+.h"
+#include "infinity.h"
+#include "macros.h"
+
+#undef INFINITY
+
+#define DOUBLE float
+#define LDEXP ldexpf
+const int MIN_EXP = FLT_MIN_EXP; /* for gdb */
+#define MIN_EXP FLT_MIN_EXP
+const int MAX_EXP = FLT_MAX_EXP; /* for gdb */
+#define MAX_EXP FLT_MAX_EXP
+const int MANT_BIT = FLT_MANT_BIT; /* for gdb */
+#define MANT_BIT FLT_MANT_BIT
+#define INFINITY Infinityf ()
+#define L_(literal) literal##f
+#include "test-fma2.h"
+
+int
+main ()
+{
+ test_function (fmaf);
+
+ return 0;
+}
--- /dev/null
+/* Test of fmal().
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (fmal, long double, (long double, long double, long double));
+
+#include "fpucw.h"
+#include "isnanl-nolibm.h"
+#include "infinity.h"
+#include "nan.h"
+#include "macros.h"
+
+#undef INFINITY
+#undef NAN
+
+#define DOUBLE long double
+#define ISNAN isnanl
+#define INFINITY Infinityl ()
+#define NAN NaNl ()
+#define L_(literal) literal##L
+#include "test-fma1.h"
+
+int
+main ()
+{
+ DECL_LONG_DOUBLE_ROUNDING
+
+ BEGIN_LONG_DOUBLE_ROUNDING ();
+
+ test_function (fmal);
+
+ return 0;
+}
--- /dev/null
+/* Test of fmal().
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "fpucw.h"
+#include "float+.h"
+#include "infinity.h"
+#include "macros.h"
+
+#undef INFINITY
+
+#define DOUBLE long double
+#define LDEXP ldexpl
+const int MIN_EXP = LDBL_MIN_EXP; /* for gdb */
+#define MIN_EXP LDBL_MIN_EXP
+const int MAX_EXP = LDBL_MAX_EXP; /* for gdb */
+#define MAX_EXP LDBL_MAX_EXP
+const int MANT_BIT = LDBL_MANT_BIT; /* for gdb */
+#define MANT_BIT LDBL_MANT_BIT
+#define INFINITY Infinityl ()
+#define L_(literal) literal##L
+#include "test-fma2.h"
+
+int
+main ()
+{
+ DECL_LONG_DOUBLE_ROUNDING
+
+ BEGIN_LONG_DOUBLE_ROUNDING ();
+
+ test_function (fmal);
+
+ return 0;
+}
--- /dev/null
+/* Test of fmodf() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010-2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (fmodf, float, (float, float));
+
+#include "macros.h"
+
+volatile float x;
+volatile float y;
+float z;
+
+int
+main ()
+{
+ /* A particular value. */
+ x = 9.245907f;
+ y = 3.141593f;
+ z = fmodf (x, y);
+ ASSERT (z >= 2.962720f && z <= 2.962722f);
+
+ return 0;
+}
/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+#include "infinity.h"
+
static void
test_function (int (*my_fprintf) (FILE *, const char *, ...))
{
my_fprintf (stdout, "%a %d\n", 0.0, 33, 44, 55);
/* Positive infinity. */
- my_fprintf (stdout, "%a %d\n", 1.0 / 0.0, 33, 44, 55);
+ my_fprintf (stdout, "%a %d\n", Infinityd (), 33, 44, 55);
/* Negative infinity. */
- my_fprintf (stdout, "%a %d\n", -1.0 / 0.0, 33, 44, 55);
+ my_fprintf (stdout, "%a %d\n", - Infinityd (), 33, 44, 55);
/* FLAG_ZERO with infinite number. */
- my_fprintf (stdout, "%010a %d\n", 1.0 / 0.0, 33, 44, 55);
+ my_fprintf (stdout, "%010a %d\n", Infinityd (), 33, 44, 55);
/* Test the support of the %f format directive. */
--- /dev/null
+/* Test of fputc() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include <stdio.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (fputc, int, (int, FILE *));
+
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#include "msvc-inval.h"
+
+#include "macros.h"
+
+int
+main (int argc, char **argv)
+{
+ const char *filename = "test-fputc.txt";
+
+ /* We don't have an fputc() function that installs an invalid parameter
+ handler so far. So install that handler here, explicitly. */
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER \
+ && MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING
+ gl_msvc_inval_ensure_handler ();
+#endif
+
+ /* Test that fputc() on an unbuffered stream sets errno if someone else
+ closes the stream fd behind the back of stdio. */
+ {
+ FILE *fp = fopen (filename, "w");
+ ASSERT (fp != NULL);
+ setvbuf (fp, NULL, _IONBF, 0);
+ ASSERT (close (fileno (fp)) == 0);
+ errno = 0;
+ ASSERT (fputc ('x', fp) == EOF);
+ ASSERT (errno == EBADF);
+ ASSERT (ferror (fp));
+ fclose (fp);
+ }
+
+ /* Test that fputc() on an unbuffered stream sets errno if the stream
+ was constructed with an invalid file descriptor. */
+ {
+ FILE *fp = fdopen (-1, "w");
+ if (fp != NULL)
+ {
+ setvbuf (fp, NULL, _IONBF, 0);
+ errno = 0;
+ ASSERT (fputc ('x', fp) == EOF);
+ ASSERT (errno == EBADF);
+ ASSERT (ferror (fp));
+ fclose (fp);
+ }
+ }
+ {
+ FILE *fp = fdopen (99, "w");
+ if (fp != NULL)
+ {
+ setvbuf (fp, NULL, _IONBF, 0);
+ errno = 0;
+ ASSERT (fputc ('x', fp) == EOF);
+ ASSERT (errno == EBADF);
+ ASSERT (ferror (fp));
+ fclose (fp);
+ }
+ }
+
+ /* Clean up. */
+ unlink (filename);
+
+ return 0;
+}
--- /dev/null
+/* Test of fread() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include <stdio.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (fread, size_t, (void *, size_t, size_t, FILE *));
+
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#include "msvc-inval.h"
+
+#include "macros.h"
+
+int
+main (int argc, char **argv)
+{
+ const char *filename = "test-fread.txt";
+
+ /* We don't have an fread() function that installs an invalid parameter
+ handler so far. So install that handler here, explicitly. */
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER \
+ && MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING
+ gl_msvc_inval_ensure_handler ();
+#endif
+
+ /* Prepare a file. */
+ {
+ const char text[] = "hello world";
+ int fd = open (filename, O_RDWR | O_CREAT | O_TRUNC, 0600);
+ ASSERT (fd >= 0);
+ ASSERT (write (fd, text, sizeof (text)) == sizeof (text));
+ ASSERT (close (fd) == 0);
+ }
+
+ /* Test that fread() sets errno if someone else closes the stream
+ fd behind the back of stdio. */
+ {
+ FILE *fp = fopen (filename, "r");
+ char buf[5];
+ ASSERT (fp != NULL);
+ ASSERT (close (fileno (fp)) == 0);
+ errno = 0;
+ ASSERT (fread (buf, 1, sizeof (buf), fp) == 0);
+ ASSERT (errno == EBADF);
+ ASSERT (ferror (fp));
+ fclose (fp);
+ }
+
+ /* Test that fread() sets errno if the stream was constructed with
+ an invalid file descriptor. */
+ {
+ FILE *fp = fdopen (-1, "r");
+ if (fp != NULL)
+ {
+ char buf[1];
+ errno = 0;
+ ASSERT (fread (buf, 1, 1, fp) == 0);
+ ASSERT (errno == EBADF);
+ ASSERT (ferror (fp));
+ fclose (fp);
+ }
+ }
+ {
+ FILE *fp = fdopen (99, "r");
+ if (fp != NULL)
+ {
+ char buf[1];
+ errno = 0;
+ ASSERT (fread (buf, 1, 1, fp) == 0);
+ ASSERT (errno == EBADF);
+ ASSERT (ferror (fp));
+ fclose (fp);
+ }
+ }
+
+ /* Clean up. */
+ unlink (filename);
+
+ return 0;
+}
#include "signature.h"
SIGNATURE_CHECK (freopen, FILE *, (char const *, char const *, FILE *));
+#include <errno.h>
+#include <unistd.h>
+
#include "macros.h"
int
main ()
{
+ const char *filename = "test-freopen.txt";
+
ASSERT (freopen ("/dev/null", "r", stdin) != NULL);
+#if 0 /* freopen (NULL, ...) is unsupported on most platforms. */
+ /* Test that freopen() sets errno if someone else closes the stream
+ fd behind the back of stdio. */
+ {
+ FILE *fp = fopen (filename, "w+");
+ ASSERT (fp != NULL);
+ ASSERT (close (fileno (fp)) == 0);
+ errno = 0;
+ ASSERT (freopen (NULL, "r", fp) == NULL);
+ perror("freopen");
+ ASSERT (errno == EBADF);
+ fclose (fp);
+ }
+
+ /* Test that freopen() sets errno if the stream was constructed with
+ an invalid file descriptor. */
+ {
+ FILE *fp = fdopen (-1, "w+");
+ if (fp != NULL)
+ {
+ errno = 0;
+ ASSERT (freopen (NULL, "r", fp) == NULL);
+ ASSERT (errno == EBADF);
+ fclose (fp);
+ }
+ }
+ {
+ FILE *fp = fdopen (99, "w+");
+ if (fp != NULL)
+ {
+ errno = 0;
+ ASSERT (freopen (NULL, "r", fp) == NULL);
+ ASSERT (errno == EBADF);
+ fclose (fp);
+ }
+ }
+#endif
+
+ /* Clean up. */
+ unlink (filename);
+
return 0;
}
#include "isnand-nolibm.h"
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
#include "macros.h"
{ /* Positive infinity. */
int exp = -9999;
double mantissa;
- x = 1.0 / 0.0;
+ x = Infinityd ();
mantissa = frexp (x, &exp);
ASSERT (mantissa == x);
}
{ /* Negative infinity. */
int exp = -9999;
double mantissa;
- x = -1.0 / 0.0;
+ x = - Infinityd ();
mantissa = frexp (x, &exp);
ASSERT (mantissa == x);
}
--- /dev/null
+/* Test of splitting a float into fraction and mantissa.
+ Copyright (C) 2007-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (frexpf, float, (float, int *));
+
+#include <float.h>
+
+#include "isnanf-nolibm.h"
+#include "minus-zero.h"
+#include "infinity.h"
+#include "nan.h"
+#include "macros.h"
+
+/* Avoid some warnings from "gcc -Wshadow".
+ This file doesn't use the exp() function. */
+#undef exp
+#define exp exponent
+
+static float
+my_ldexp (float x, int d)
+{
+ for (; d > 0; d--)
+ x *= 2.0f;
+ for (; d < 0; d++)
+ x *= 0.5f;
+ return x;
+}
+
+int
+main ()
+{
+ int i;
+ volatile float x;
+
+ { /* NaN. */
+ int exp = -9999;
+ float mantissa;
+ x = NaNf ();
+ mantissa = frexpf (x, &exp);
+ ASSERT (isnanf (mantissa));
+ }
+
+ { /* Positive infinity. */
+ int exp = -9999;
+ float mantissa;
+ x = Infinityf ();
+ mantissa = frexpf (x, &exp);
+ ASSERT (mantissa == x);
+ }
+
+ { /* Negative infinity. */
+ int exp = -9999;
+ float mantissa;
+ x = - Infinityf ();
+ mantissa = frexpf (x, &exp);
+ ASSERT (mantissa == x);
+ }
+
+ { /* Positive zero. */
+ int exp = -9999;
+ float mantissa;
+ x = 0.0f;
+ mantissa = frexpf (x, &exp);
+ ASSERT (exp == 0);
+ ASSERT (mantissa == x);
+ ASSERT (!signbit (mantissa));
+ }
+
+ { /* Negative zero. */
+ int exp = -9999;
+ float mantissa;
+ x = minus_zerof;
+ mantissa = frexpf (x, &exp);
+ ASSERT (exp == 0);
+ ASSERT (mantissa == x);
+ ASSERT (signbit (mantissa));
+ }
+
+ for (i = 1, x = 1.0f; i <= FLT_MAX_EXP; i++, x *= 2.0f)
+ {
+ int exp = -9999;
+ float mantissa = frexpf (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa == 0.5f);
+ }
+ for (i = 1, x = 1.0f; i >= FLT_MIN_EXP; i--, x *= 0.5f)
+ {
+ int exp = -9999;
+ float mantissa = frexpf (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa == 0.5f);
+ }
+ for (; i >= FLT_MIN_EXP - 100 && x > 0.0f; i--, x *= 0.5f)
+ {
+ int exp = -9999;
+ float mantissa = frexpf (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa == 0.5f);
+ }
+
+ for (i = 1, x = -1.0f; i <= FLT_MAX_EXP; i++, x *= 2.0f)
+ {
+ int exp = -9999;
+ float mantissa = frexpf (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa == -0.5f);
+ }
+ for (i = 1, x = -1.0f; i >= FLT_MIN_EXP; i--, x *= 0.5f)
+ {
+ int exp = -9999;
+ float mantissa = frexpf (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa == -0.5f);
+ }
+ for (; i >= FLT_MIN_EXP - 100 && x < 0.0f; i--, x *= 0.5f)
+ {
+ int exp = -9999;
+ float mantissa = frexpf (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa == -0.5f);
+ }
+
+ for (i = 1, x = 1.01f; i <= FLT_MAX_EXP; i++, x *= 2.0f)
+ {
+ int exp = -9999;
+ float mantissa = frexpf (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa == 0.505f);
+ }
+ for (i = 1, x = 1.01f; i >= FLT_MIN_EXP; i--, x *= 0.5f)
+ {
+ int exp = -9999;
+ float mantissa = frexpf (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa == 0.505f);
+ }
+ for (; i >= FLT_MIN_EXP - 100 && x > 0.0f; i--, x *= 0.5f)
+ {
+ int exp = -9999;
+ float mantissa = frexpf (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa >= 0.5f);
+ ASSERT (mantissa < 1.0f);
+ ASSERT (mantissa == my_ldexp (x, - exp));
+ }
+
+ for (i = 1, x = 1.73205f; i <= FLT_MAX_EXP; i++, x *= 2.0f)
+ {
+ int exp = -9999;
+ float mantissa = frexpf (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa == 0.866025f);
+ }
+ for (i = 1, x = 1.73205f; i >= FLT_MIN_EXP; i--, x *= 0.5f)
+ {
+ int exp = -9999;
+ float mantissa = frexpf (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa == 0.866025f);
+ }
+ for (; i >= FLT_MIN_EXP - 100 && x > 0.0f; i--, x *= 0.5f)
+ {
+ int exp = -9999;
+ float mantissa = frexpf (x, &exp);
+ ASSERT (exp == i || exp == i + 1);
+ ASSERT (mantissa >= 0.5f);
+ ASSERT (mantissa < 1.0f);
+ ASSERT (mantissa == my_ldexp (x, - exp));
+ }
+
+ return 0;
+}
#include "fpucw.h"
#include "isnanl-nolibm.h"
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
#include "macros.h"
{ /* Positive infinity. */
int exp = -9999;
long double mantissa;
- x = 1.0L / 0.0L;
+ x = Infinityl ();
mantissa = frexpl (x, &exp);
ASSERT (mantissa == x);
}
{ /* Negative infinity. */
int exp = -9999;
long double mantissa;
- x = -1.0L / 0.0L;
+ x = - Infinityl ();
mantissa = frexpl (x, &exp);
ASSERT (mantissa == x);
}
--- /dev/null
+/* Test of fseeko() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <stdio.h>
+
+#include <errno.h>
+#include <unistd.h>
+
+#include "macros.h"
+
+int
+main (int argc, char **argv)
+{
+ const char *filename = argv[1];
+
+ /* Test that fseeko() sets errno if someone else closes the stream
+ fd behind the back of stdio. */
+ {
+ FILE *fp = fopen (filename, "r");
+ ASSERT (fp != NULL);
+ setvbuf (fp, NULL, _IONBF, 0);
+ ASSERT (ftell (fp) == 0);
+ ASSERT (fseeko (fp, 0, SEEK_END) == 0);
+ ASSERT (ftell (fp) > 0);
+ ASSERT (close (fileno (fp)) == 0);
+ errno = 0;
+ ASSERT (fseeko (fp, 0, SEEK_SET) == -1);
+ ASSERT (errno == EBADF);
+ fclose (fp);
+ }
+
+ /* Test that fseeko() sets errno if the stream was constructed with
+ an invalid file descriptor. */
+ {
+ FILE *fp = fdopen (-1, "w");
+ if (fp != NULL)
+ {
+ errno = 0;
+ ASSERT (fseeko (fp, 0, SEEK_END) == -1);
+ ASSERT (errno == EBADF);
+ fclose (fp);
+ }
+ }
+ {
+ FILE *fp = fdopen (99, "w");
+ if (fp != NULL)
+ {
+ errno = 0;
+ ASSERT (fseeko (fp, 0, SEEK_END) == -1);
+ ASSERT (errno == EBADF);
+ fclose (fp);
+ }
+ }
+
+ return 0;
+}
--- /dev/null
+#!/bin/sh
+
+./test-fseeko4${EXEEXT} "$srcdir/test-fseeko4.sh" || exit 1
+
+exit 0
--- /dev/null
+/* Tests of fstat() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <sys/stat.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (fstat, int, (int, struct stat *));
+
+#include <errno.h>
+
+#include "macros.h"
+
+int
+main (int argc, char *argv[])
+{
+ /* Test behaviour for invalid file descriptors. */
+ {
+ struct stat statbuf;
+
+ errno = 0;
+ ASSERT (fstat (-1, &statbuf) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ struct stat statbuf;
+
+ errno = 0;
+ ASSERT (fstat (99, &statbuf) == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ return 0;
+}
/* Remove any leftovers from a previous partial run. */
ignore_value (system ("rm -rf " BASE "*"));
+ /* Test behaviour for invalid file descriptors. */
+ {
+ struct stat statbuf;
+
+ errno = 0;
+ ASSERT (fstatat (-1, "foo", &statbuf, 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ struct stat statbuf;
+
+ errno = 0;
+ ASSERT (fstatat (99, "foo", &statbuf, 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+
result = test_stat_func (do_stat, false);
ASSERT (test_lstat_func (do_lstat, false) == result);
dfd = open (".", O_RDONLY);
int fd;
const char *file = "test-fsync.txt";
- if (fsync (0) != 0)
- {
- ASSERT (errno == EINVAL /* POSIX */
- || errno == ENOTSUP /* seen on MacOS X 10.5 */
- || errno == EBADF /* seen on AIX 7.1 */
- );
- }
+ /* Assuming stdin and stdout are ttys, fsync is allowed to fail, but
+ may succeed as an extension. */
+ for (fd = 0; fd < 2; fd++)
+ if (fsync (fd) != 0)
+ {
+ ASSERT (errno == EINVAL /* POSIX */
+ || errno == ENOTSUP /* seen on MacOS X 10.5 */
+ || errno == EBADF /* seen on AIX 7.1 */
+ || errno == EIO /* seen on mingw */
+ );
+ }
+
+ /* fsync must fail on invalid fd. */
+ {
+ errno = 0;
+ ASSERT (fsync (-1) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (fsync (99) == -1);
+ ASSERT (errno == EBADF);
+ }
+
fd = open (file, O_WRONLY|O_CREAT|O_TRUNC, 0644);
ASSERT (0 <= fd);
ASSERT (write (fd, "hello", 5) == 5);
ASSERT (fsync (fd) == 0);
ASSERT (close (fd) == 0);
+
+ /* For a read-only regular file input file descriptor, fsync should
+ succeed (since at least atime changes can be synchronized). */
+ fd = open (file, O_RDONLY);
+ ASSERT (0 <= fd);
+ {
+ char buf[1];
+ ASSERT (read (fd, buf, sizeof buf) == sizeof buf);
+ }
+ ASSERT (fsync (fd) == 0);
+ ASSERT (close (fd) == 0);
+
ASSERT (unlink (file) == 0);
return 0;
--- /dev/null
+/* Test of ftello() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <stdio.h>
+
+#include <errno.h>
+#include <unistd.h>
+
+#include "macros.h"
+
+int
+main (int argc, char **argv)
+{
+ const char *filename = argv[1];
+
+ /* Test that ftello() sets errno if someone else closes the stream
+ fd behind the back of stdio. */
+ {
+ FILE *fp = fopen (filename, "r");
+ ASSERT (fp != NULL);
+ setvbuf (fp, NULL, _IONBF, 0);
+ ASSERT (close (fileno (fp)) == 0);
+ errno = 0;
+ ASSERT (ftello (fp) == (off_t)-1);
+ ASSERT (errno == EBADF);
+ fclose (fp);
+ }
+
+ /* Test that ftello() sets errno if the stream was constructed with
+ an invalid file descriptor. */
+ {
+ FILE *fp = fdopen (-1, "w");
+ if (fp != NULL)
+ {
+ errno = 0;
+ ASSERT (ftello (fp) == (off_t)-1);
+ ASSERT (errno == EBADF);
+ fclose (fp);
+ }
+ }
+ {
+ FILE *fp = fdopen (99, "w");
+ if (fp != NULL)
+ {
+ errno = 0;
+ ASSERT (ftello (fp) == (off_t)-1);
+ ASSERT (errno == EBADF);
+ fclose (fp);
+ }
+ }
+
+ return 0;
+}
--- /dev/null
+#!/bin/sh
+
+./test-ftello4${EXEEXT} "$srcdir/test-ftello4.sh" || exit 1
+
+exit 0
--- /dev/null
+/* Test truncating a file.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <unistd.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (ftruncate, int, (int, off_t));
+
+#include <errno.h>
+#include <fcntl.h>
+
+#include "macros.h"
+
+int
+main (int argc, char *argv[])
+{
+ const char *filename = argv[1];
+
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (ftruncate (-1, 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (ftruncate (99, 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ /* Test behaviour for read-only file descriptors. */
+ {
+ int fd = open (filename, O_RDONLY);
+ ASSERT (fd >= 0);
+ errno = 0;
+ ASSERT (ftruncate (fd, 0) == -1);
+ ASSERT (errno == EBADF || errno == EINVAL
+ || errno == EACCES /* seen on mingw */
+ );
+ close (fd);
+ }
+
+ return 0;
+}
--- /dev/null
+#!/bin/sh
+
+exec ./test-ftruncate${EXEEXT} "$srcdir/test-ftruncate.sh"
source. */
ASSERT (0 <= utimecmp (BASE "file", &st2, &st1, UTIMECMP_TRUNCATE_SOURCE));
if (check_ctime)
- ASSERT (st1.st_ctime < st2.st_ctime
- || (st1.st_ctime == st2.st_ctime
- && get_stat_ctime_ns (&st1) < get_stat_ctime_ns (&st2)));
+ ASSERT (ctime_compare (&st1, &st2) < 0);
{
/* On some NFS systems, the 'now' timestamp of creat or a NULL
timespec is determined by the server, but the 'now' timestamp
}
/* Invalid arguments. */
- errno = 0;
- ASSERT (func (AT_FDCWD, NULL) == -1);
- ASSERT (errno == EBADF);
- errno = 0;
- ASSERT (func (-1, NULL) == -1);
- ASSERT (errno == EBADF);
+ {
+ errno = 0;
+ ASSERT (func (AT_FDCWD, NULL) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (func (-1, NULL) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (func (99, NULL) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ int fd0 = dup (0);
+ ASSERT (0 <= fd0);
+ ASSERT (close (fd0) == 0);
+ errno = 0;
+ ASSERT (func (fd0, NULL) == -1);
+ ASSERT (errno == EBADF);
+ }
{
struct timespec ts[2] = { { Y2K, UTIME_BOGUS_POS }, { Y2K, 0 } };
errno = 0;
ASSERT (0 <= get_stat_mtime_ns (&st2));
ASSERT (get_stat_mtime_ns (&st2) < BILLION);
if (check_ctime)
- ASSERT (st1.st_ctime < st2.st_ctime
- || (st1.st_ctime == st2.st_ctime
- && get_stat_ctime_ns (&st1) < get_stat_ctime_ns (&st2)));
+ ASSERT (ctime_compare (&st1, &st2) < 0);
}
/* Play with UTIME_OMIT, UTIME_NOW. */
ASSERT (get_stat_atime_ns (&st3) <= BILLION / 2);
ASSERT (utimecmp (BASE "file", &st1, &st3, 0) <= 0);
if (check_ctime)
- ASSERT (st2.st_ctime < st3.st_ctime
- || (st2.st_ctime == st3.st_ctime
- && get_stat_ctime_ns (&st2) < get_stat_ctime_ns (&st3)));
+ ASSERT (ctime_compare (&st2, &st3) < 0);
nap ();
ts[0].tv_nsec = 0;
ts[1].tv_nsec = UTIME_OMIT;
ASSERT (st3.st_mtime == st2.st_mtime);
ASSERT (get_stat_mtime_ns (&st3) == get_stat_mtime_ns (&st2));
if (check_ctime)
- ASSERT (st3.st_ctime < st2.st_ctime
- || (st3.st_ctime == st2.st_ctime
- && get_stat_ctime_ns (&st3) < get_stat_ctime_ns (&st2)));
+ ASSERT (ctime_compare (&st3, &st2) < 0);
}
/* Cleanup. */
--- /dev/null
+/* Test of fwrite() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include <stdio.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (fwrite, size_t, (const void *, size_t, size_t, FILE *));
+
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#include "msvc-inval.h"
+
+#include "macros.h"
+
+int
+main (int argc, char **argv)
+{
+ const char *filename = "test-fwrite.txt";
+
+ /* We don't have an fwrite() function that installs an invalid parameter
+ handler so far. So install that handler here, explicitly. */
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER \
+ && MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING
+ gl_msvc_inval_ensure_handler ();
+#endif
+
+ /* Test that fwrite() on an unbuffered stream sets errno if someone else
+ closes the stream fd behind the back of stdio. */
+ {
+ FILE *fp = fopen (filename, "w");
+ char buf[5] = "world";
+ ASSERT (fp != NULL);
+ setvbuf (fp, NULL, _IONBF, 0);
+ ASSERT (close (fileno (fp)) == 0);
+ errno = 0;
+ ASSERT (fwrite (buf, 1, sizeof (buf), fp) == 0);
+ ASSERT (errno == EBADF);
+ ASSERT (ferror (fp));
+ fclose (fp);
+ }
+
+ /* Test that fwrite() on an unbuffered stream sets errno if the stream
+ was constructed with an invalid file descriptor. */
+ {
+ FILE *fp = fdopen (-1, "w");
+ if (fp != NULL)
+ {
+ char buf[5] = "world";
+ setvbuf (fp, NULL, _IONBF, 0);
+ errno = 0;
+ ASSERT (fwrite (buf, 1, sizeof (buf), fp) == 0);
+ ASSERT (errno == EBADF);
+ ASSERT (ferror (fp));
+ fclose (fp);
+ }
+ }
+ {
+ FILE *fp = fdopen (99, "w");
+ if (fp != NULL)
+ {
+ char buf[5] = "world";
+ setvbuf (fp, NULL, _IONBF, 0);
+ errno = 0;
+ ASSERT (fwrite (buf, 1, sizeof (buf), fp) == 0);
+ ASSERT (errno == EBADF);
+ ASSERT (ferror (fp));
+ fclose (fp);
+ }
+ }
+
+ /* Clean up. */
+ unlink (filename);
+
+ return 0;
+}
size_t n_chdirs = 0;
if (cwd == NULL)
- return 10;
+ return 1;
cwd_len = initial_cwd_len = strlen (cwd);
if (mkdir (DIR_NAME, S_IRWXU) < 0 || chdir (DIR_NAME) < 0)
{
if (! (errno == ERANGE || errno == ENAMETOOLONG || errno == ENOENT))
- fail = 20;
+ fail = 2;
break;
}
c = getcwd (buf, PATH_MAX);
if (!c && errno == ENOENT)
{
- fail = 11;
+ fail = 3;
break;
}
- if (c || ! (errno == ERANGE || errno == ENAMETOOLONG))
+ if (c)
{
- fail = 21;
+ fail = 4;
+ break;
+ }
+ if (! (errno == ERANGE || errno == ENAMETOOLONG))
+ {
+ fail = 5;
break;
}
}
if (! (errno == ERANGE || errno == ENOENT
|| errno == ENAMETOOLONG))
{
- fail = 22;
+ fail = 6;
break;
}
if (AT_FDCWD || errno == ERANGE || errno == ENOENT)
{
- fail = 12;
+ fail = 7;
break;
}
}
if (c && strlen (c) != cwd_len)
{
- fail = 23;
+ fail = 8;
break;
}
++n_chdirs;
int
main (int argc, char **argv)
{
- return test_abort_bug () + test_long_name ();
+ return test_abort_bug () * 10 + test_long_name ();
}
--- /dev/null
+#!/bin/sh
+
+. "${srcdir=.}/init.sh"; path_prepend_ .
+
+test-getcwd
+
+Exit $?
if (buf == NULL)
{
/* getlogin() fails when stdin is not connected to a tty. */
- ASSERT (errno == ENOTTY);
+ ASSERT (errno == ENOTTY
+ || errno == EINVAL /* seen on Linux/SPARC */
+ );
#if !defined __hpux /* On HP-UX 11.11 it fails anyway. */
ASSERT (! isatty (0));
#endif
if (err != 0)
{
/* getlogin_r() fails when stdin is not connected to a tty. */
- ASSERT (err == ENOTTY);
+ ASSERT (err == ENOTTY
+ || errno == EINVAL /* seen on Linux/SPARC */
+ );
#if !defined __hpux /* On HP-UX 11.11 it fails anyway. */
ASSERT (! isatty (0));
#endif
--- /dev/null
+/* Test getpeername() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <sys/socket.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (getpeername, int, (int, struct sockaddr *, socklen_t *));
+
+#include <errno.h>
+#include <netinet/in.h>
+
+#include "sockets.h"
+#include "macros.h"
+
+int
+main (void)
+{
+ gl_sockets_startup (SOCKETS_1_1);
+
+ /* Test behaviour for invalid file descriptors. */
+ {
+ struct sockaddr_in addr;
+ socklen_t addrlen = sizeof (addr);
+
+ errno = 0;
+ ASSERT (getpeername (-1, (struct sockaddr *) &addr, &addrlen) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ struct sockaddr_in addr;
+ socklen_t addrlen = sizeof (addr);
+
+ errno = 0;
+ ASSERT (getpeername (99, (struct sockaddr *) &addr, &addrlen) == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ return 0;
+}
--- /dev/null
+/* Test getsockname() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <sys/socket.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (getsockname, int, (int, struct sockaddr *, socklen_t *));
+
+#include <errno.h>
+#include <netinet/in.h>
+
+#include "sockets.h"
+#include "macros.h"
+
+int
+main (void)
+{
+ gl_sockets_startup (SOCKETS_1_1);
+
+ /* Test behaviour for invalid file descriptors. */
+ {
+ struct sockaddr_in addr;
+ socklen_t addrlen = sizeof (addr);
+
+ errno = 0;
+ ASSERT (getsockname (-1, (struct sockaddr *) &addr, &addrlen) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ struct sockaddr_in addr;
+ socklen_t addrlen = sizeof (addr);
+
+ errno = 0;
+ ASSERT (getsockname (99, (struct sockaddr *) &addr, &addrlen) == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ return 0;
+}
--- /dev/null
+/* Test getsockopt() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <sys/socket.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (getsockopt, int, (int, int, int, void *, socklen_t *));
+
+#include <errno.h>
+
+#include "sockets.h"
+#include "macros.h"
+
+int
+main (void)
+{
+ gl_sockets_startup (SOCKETS_1_1);
+
+ /* Test behaviour for invalid file descriptors. */
+ {
+ int value;
+ socklen_t value_len = sizeof (value);
+
+ errno = 0;
+ ASSERT (getsockopt (-1, SOL_SOCKET, SO_REUSEADDR, &value, &value_len)
+ == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ int value;
+ socklen_t value_len = sizeof (value);
+
+ errno = 0;
+ ASSERT (getsockopt (99, SOL_SOCKET, SO_REUSEADDR, &value, &value_len)
+ == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ return 0;
+}
--- /dev/null
+/* Test acquiring ownership of the slave side of a pseudo-terminal.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <stdlib.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (grantpt, int, (int));
+
+#include <errno.h>
+
+#include "macros.h"
+
+int
+main (void)
+{
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (grantpt (-1) == -1);
+ ASSERT (errno == EBADF
+ || errno == EINVAL /* seen on FreeBSD 6.4 */
+ || errno == 0 /* seen on Solaris 8 */
+ );
+ }
+ {
+ errno = 0;
+ ASSERT (grantpt (99) == -1);
+ ASSERT (errno == EBADF
+ || errno == EINVAL /* seen on FreeBSD 6.4 */
+ || errno == 0 /* seen on Solaris 8 */
+ );
+ }
+
+ return 0;
+}
--- /dev/null
+/*
+ * Copyright (C) 2011 Free Software Foundation, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <inttypes.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (imaxabs, intmax_t, (intmax_t));
+
+#include "macros.h"
+
+int
+main (void)
+{
+ {
+ intmax_t result = imaxabs (0);
+ ASSERT (result == 0);
+ }
+ {
+ intmax_t result = imaxabs (23);
+ ASSERT (result == 23);
+ }
+ {
+ intmax_t result = imaxabs (-23);
+ ASSERT (result == 23);
+ }
+
+ return 0;
+}
--- /dev/null
+/*
+ * Copyright (C) 2011 Free Software Foundation, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <inttypes.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (imaxdiv, imaxdiv_t, (intmax_t, intmax_t));
+
+#include "macros.h"
+
+int
+main (void)
+{
+ {
+ imaxdiv_t result = imaxdiv (101, 7);
+ ASSERT (result.quot = 14);
+ ASSERT (result.rem = 3);
+ }
+ {
+ imaxdiv_t result = imaxdiv (-101, 7);
+ ASSERT (result.quot = -14);
+ ASSERT (result.rem = -3);
+ }
+ {
+ imaxdiv_t result = imaxdiv (101, -7);
+ ASSERT (result.quot = -14);
+ ASSERT (result.rem = 3);
+ }
+ {
+ imaxdiv_t result = imaxdiv (-101, -7);
+ ASSERT (result.quot = 14);
+ ASSERT (result.rem = -3);
+ }
+
+ return 0;
+}
--- /dev/null
+/* Test of integer_length().
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "integer_length.h"
+
+#include <limits.h>
+
+#include "macros.h"
+
+#define NBITS (sizeof (unsigned int) * CHAR_BIT)
+
+static int
+naive (unsigned int x)
+{
+ int j;
+ for (j = NBITS - 1; j >= 0; j--)
+ if (x & (1U << j))
+ return j + 1;
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ unsigned int x;
+ int i;
+
+ for (x = 0; x <= 256; x++)
+ ASSERT (integer_length (x) == naive (x));
+ for (i = 0; i < NBITS; i++)
+ {
+ ASSERT (integer_length (1U << i) == naive (1U << i));
+ ASSERT (integer_length (1U << i) == i + 1);
+ ASSERT (integer_length (-1U << i) == NBITS);
+ }
+ for (i = 0; i < NBITS - 1; i++)
+ ASSERT (integer_length (3U << i) == i + 2);
+ for (i = 0; i < NBITS - 2; i++)
+ ASSERT (integer_length (-3U << i) == NBITS);
+ for (i = 0; i < NBITS - 2; i++)
+ {
+ ASSERT (integer_length (5U << i) == i + 3);
+ ASSERT (integer_length (7U << i) == i + 3);
+ }
+ for (i = 0; i < NBITS - 3; i++)
+ {
+ ASSERT (integer_length (-5U << i) == NBITS);
+ ASSERT (integer_length (-7U << i) == NBITS);
+ }
+ return 0;
+}
--- /dev/null
+/* Test of integer_length_l().
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "integer_length.h"
+
+#include <limits.h>
+
+#include "macros.h"
+
+#define NBITS (sizeof (unsigned long) * CHAR_BIT)
+
+static int
+naive (unsigned long x)
+{
+ int j;
+ for (j = NBITS - 1; j >= 0; j--)
+ if (x & (1UL << j))
+ return j + 1;
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ unsigned long x;
+ int i;
+
+ for (x = 0; x <= 256; x++)
+ ASSERT (integer_length_l (x) == naive (x));
+ for (i = 0; i < NBITS; i++)
+ {
+ ASSERT (integer_length_l (1UL << i) == naive (1UL << i));
+ ASSERT (integer_length_l (1UL << i) == i + 1);
+ ASSERT (integer_length_l (-1UL << i) == NBITS);
+ }
+ for (i = 0; i < NBITS - 1; i++)
+ ASSERT (integer_length_l (3UL << i) == i + 2);
+ for (i = 0; i < NBITS - 2; i++)
+ ASSERT (integer_length_l (-3UL << i) == NBITS);
+ for (i = 0; i < NBITS - 2; i++)
+ {
+ ASSERT (integer_length_l (5UL << i) == i + 3);
+ ASSERT (integer_length_l (7UL << i) == i + 3);
+ }
+ for (i = 0; i < NBITS - 3; i++)
+ {
+ ASSERT (integer_length_l (-5UL << i) == NBITS);
+ ASSERT (integer_length_l (-7UL << i) == NBITS);
+ }
+ return 0;
+}
--- /dev/null
+/* Test of integer_length_ll().
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "integer_length.h"
+
+#include <limits.h>
+
+#include "macros.h"
+
+#define NBITS (sizeof (unsigned long long) * CHAR_BIT)
+
+static int
+naive (unsigned long long x)
+{
+ int j;
+ for (j = NBITS - 1; j >= 0; j--)
+ if (x & (1ULL << j))
+ return j + 1;
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ unsigned long x;
+ int i;
+
+ for (x = 0; x <= 256; x++)
+ ASSERT (integer_length_ll (x) == naive (x));
+ for (i = 0; i < NBITS; i++)
+ {
+ ASSERT (integer_length_ll (1ULL << i) == naive (1ULL << i));
+ ASSERT (integer_length_ll (1ULL << i) == i + 1);
+ ASSERT (integer_length_ll (-1ULL << i) == NBITS);
+ }
+ for (i = 0; i < NBITS - 1; i++)
+ ASSERT (integer_length_ll (3ULL << i) == i + 2);
+ for (i = 0; i < NBITS - 2; i++)
+ ASSERT (integer_length_ll (-3ULL << i) == NBITS);
+ for (i = 0; i < NBITS - 2; i++)
+ {
+ ASSERT (integer_length_ll (5ULL << i) == i + 3);
+ ASSERT (integer_length_ll (7ULL << i) == i + 3);
+ }
+ for (i = 0; i < NBITS - 3; i++)
+ {
+ ASSERT (integer_length_ll (-5ULL << i) == NBITS);
+ ASSERT (integer_length_ll (-7ULL << i) == NBITS);
+ }
+ return 0;
+}
--- /dev/null
+/* Test of ioctl() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <sys/ioctl.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (ioctl, int, (int, int, ...));
+
+#include <errno.h>
+
+#include "macros.h"
+
+int
+main (void)
+{
+#ifdef FIONREAD
+ /* Test behaviour for invalid file descriptors. */
+ {
+ int value;
+ errno = 0;
+ ASSERT (ioctl (-1, FIONREAD, &value) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ int value;
+ errno = 0;
+ ASSERT (ioctl (99, FIONREAD, &value) == -1);
+ ASSERT (errno == EBADF);
+ }
+#endif
+
+ return 0;
+}
--- /dev/null
+/* Test isatty() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <unistd.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (isatty, int, (int));
+
+#include <errno.h>
+
+#include "macros.h"
+
+int
+main (void)
+{
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (isatty (-1) == 0);
+ ASSERT (errno == EBADF
+ || errno == 0 /* seen on Solaris 10 */
+ );
+ }
+ {
+ errno = 0;
+ ASSERT (isatty (99) == 0);
+ ASSERT (errno == EBADF
+ || errno == 0 /* seen on Solaris 10 */
+ );
+ }
+
+ return 0;
+}
#include <float.h>
#include <limits.h>
+#include "infinity.h"
#include "macros.h"
float zerof = 0.0f;
ASSERT (isfinite (-2.718e30f));
ASSERT (isfinite (-2.718e-30f));
/* Infinite values. */
- ASSERT (!isfinite (1.0f / 0.0f));
- ASSERT (!isfinite (-1.0f / 0.0f));
+ ASSERT (!isfinite (Infinityf ()));
+ ASSERT (!isfinite (- Infinityf ()));
/* Quiet NaN. */
ASSERT (!isfinite (zerof / zerof));
#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
ASSERT (isfinite (-2.718e30));
ASSERT (isfinite (-2.718e-30));
/* Infinite values. */
- ASSERT (!isfinite (1.0 / 0.0));
- ASSERT (!isfinite (-1.0 / 0.0));
+ ASSERT (!isfinite (Infinityd ()));
+ ASSERT (!isfinite (- Infinityd ()));
/* Quiet NaN. */
ASSERT (!isfinite (zerod / zerod));
#if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT
ASSERT (isfinite (-2.718e30L));
ASSERT (isfinite (-2.718e-30L));
/* Infinite values. */
- ASSERT (!isfinite (1.0L / 0.0L));
- ASSERT (!isfinite (-1.0L / 0.0L));
+ ASSERT (!isfinite (Infinityl ()));
+ ASSERT (!isfinite (- Infinityl ()));
/* Quiet NaN. */
ASSERT (!isfinite (zerol / zerol));
}
#endif
-#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
/* Representation of an 80-bit 'long double' as an initializer for a sequence
of 'unsigned int' words. */
# ifdef WORDS_BIGENDIAN
#include <float.h>
#include <limits.h>
+#include "infinity.h"
#include "macros.h"
float zerof = 0.0f;
ASSERT (!isinf (FLT_MAX));
ASSERT (!isinf (-FLT_MAX));
/* Infinite values. */
- ASSERT (isinf (1.0f / 0.0f));
- ASSERT (isinf (-1.0f / 0.0f));
+ ASSERT (isinf (Infinityf ()));
+ ASSERT (isinf (- Infinityf ()));
/* Quiet NaN. */
ASSERT (!isinf (zerof / zerof));
#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
ASSERT (!isinf (DBL_MAX));
ASSERT (!isinf (-DBL_MAX));
/* Infinite values. */
- ASSERT (isinf (1.0 / 0.0));
- ASSERT (isinf (-1.0 / 0.0));
+ ASSERT (isinf (Infinityd ()));
+ ASSERT (isinf (- Infinityd ()));
/* Quiet NaN. */
ASSERT (!isinf (zerod / zerod));
#if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT
ASSERT (!isinf (LDBL_MAX));
ASSERT (!isinf (-LDBL_MAX));
/* Infinite values. */
- ASSERT (isinf (1.0L / 0.0L));
- ASSERT (isinf (-1.0L / 0.0L));
+ ASSERT (isinf (Infinityl ()));
+ ASSERT (isinf (- Infinityl ()));
/* Quiet NaN. */
ASSERT (!isinf (zerol / zerol));
}
#endif
-#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
/* Representation of an 80-bit 'long double' as an initializer for a sequence
of 'unsigned int' words. */
# ifdef WORDS_BIGENDIAN
#include <limits.h>
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
#include "macros.h"
ASSERT (!isnan (0.0f));
ASSERT (!isnan (minus_zerof));
/* Infinite values. */
- ASSERT (!isnan (1.0f / 0.0f));
- ASSERT (!isnan (-1.0f / 0.0f));
+ ASSERT (!isnan (Infinityf ()));
+ ASSERT (!isnan (- Infinityf ()));
/* Quiet NaN. */
ASSERT (isnan (NaNf ()));
#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
ASSERT (!isnan (0.0));
ASSERT (!isnan (minus_zerod));
/* Infinite values. */
- ASSERT (!isnan (1.0 / 0.0));
- ASSERT (!isnan (-1.0 / 0.0));
+ ASSERT (!isnan (Infinityd ()));
+ ASSERT (!isnan (- Infinityd ()));
/* Quiet NaN. */
ASSERT (isnan (NaNd ()));
#if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT
ASSERT (!isnan (0.0L));
ASSERT (!isnan (minus_zerol));
/* Infinite values. */
- ASSERT (!isnan (1.0L / 0.0L));
- ASSERT (!isnan (-1.0L / 0.0L));
+ ASSERT (!isnan (Infinityl ()));
+ ASSERT (!isnan (- Infinityl ()));
/* Quiet NaN. */
ASSERT (isnan (NaNl ()));
}
#endif
-#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
/* Representation of an 80-bit 'long double' as an initializer for a sequence
of 'unsigned int' words. */
# ifdef WORDS_BIGENDIAN
#include <limits.h>
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
#include "macros.h"
ASSERT (!isnand (0.0));
ASSERT (!isnand (minus_zerod));
/* Infinite values. */
- ASSERT (!isnand (1.0 / 0.0));
- ASSERT (!isnand (-1.0 / 0.0));
+ ASSERT (!isnand (Infinityd ()));
+ ASSERT (!isnand (- Infinityd ()));
/* Quiet NaN. */
ASSERT (isnand (NaNd ()));
#if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT
#include <limits.h>
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
#include "macros.h"
ASSERT (!isnanf (0.0f));
ASSERT (!isnanf (minus_zerof));
/* Infinite values. */
- ASSERT (!isnanf (1.0f / 0.0f));
- ASSERT (!isnanf (-1.0f / 0.0f));
+ ASSERT (!isnanf (Infinityf ()));
+ ASSERT (!isnanf (- Infinityf ()));
/* Quiet NaN. */
ASSERT (isnanf (NaNf ()));
#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
#include <limits.h>
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
#include "macros.h"
ASSERT (!isnanl (0.0L));
ASSERT (!isnanl (minus_zerol));
/* Infinite values. */
- ASSERT (!isnanl (1.0L / 0.0L));
- ASSERT (!isnanl (-1.0L / 0.0L));
+ ASSERT (!isnanl (Infinityl ()));
+ ASSERT (!isnanl (- Infinityl ()));
/* Quiet NaN. */
ASSERT (isnanl (NaNl ()));
}
#endif
-#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
/* Representation of an 80-bit 'long double' as an initializer for a sequence
of 'unsigned int' words. */
# ifdef WORDS_BIGENDIAN
/* Test of ldexp() function.
- Copyright (C) 2010-2011 Free Software Foundation, Inc.
+ Copyright (C) 2007-2011 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
-/* Written by Bruno Haible <bruno@clisp.org>, 2010. */
+/* Written by Bruno Haible <bruno@clisp.org>, 2007, 2010. */
#include <config.h>
#include "signature.h"
SIGNATURE_CHECK (ldexp, double, (double, int));
+#include <float.h>
+
+#include "isnand-nolibm.h"
+#include "minus-zero.h"
+#include "infinity.h"
+#include "nan.h"
#include "macros.h"
-volatile double x;
-double y;
+#undef INFINITY
+#undef NAN
+
+#define DOUBLE double
+#define ISNAN isnand
+#define INFINITY Infinityd ()
+#define NAN NaNd ()
+#define L_(literal) literal
+#define MINUS_ZERO minus_zerod
+#define LDEXP ldexp
+#define MIN_EXP DBL_MIN_EXP
+#define MAX_EXP DBL_MAX_EXP
+#include "test-ldexp.h"
int
main ()
{
- /* A particular value. */
- x = 0.6;
- y = ldexp (x, 0);
- ASSERT (y >= 0.5999999999 && y <= 0.6000000001);
-
- x = 0.6;
- y = ldexp (x, 1);
- ASSERT (y >= 1.199999999 && y <= 1.200000001);
-
- x = 0.6;
- y = ldexp (x, -1);
- ASSERT (y >= 0.2999999999 && y <= 0.3000000001);
+ test_function ();
return 0;
}
--- /dev/null
+/* Test of ldexp*() function family.
+ Copyright (C) 2007-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007, 2010. */
+
+static void
+test_function (void)
+{
+ int i;
+ volatile DOUBLE x;
+ volatile DOUBLE y;
+
+ /* A particular value. */
+ {
+ x = L_(0.6);
+ y = LDEXP (x, 0);
+ ASSERT (y >= L_(0.5999999999) && y <= L_(0.6000000001));
+ }
+ {
+ x = L_(0.6);
+ y = LDEXP (x, 1);
+ ASSERT (y >= L_(1.199999999) && y <= L_(1.200000001));
+ }
+ {
+ x = L_(0.6);
+ y = LDEXP (x, -1);
+ ASSERT (y >= L_(0.2999999999) && y <= L_(0.3000000001));
+ }
+
+ { /* NaN. */
+ x = NAN;
+ y = LDEXP (x, 0); ASSERT (ISNAN (y));
+ y = LDEXP (x, 5); ASSERT (ISNAN (y));
+ y = LDEXP (x, -5); ASSERT (ISNAN (y));
+ }
+
+ { /* Positive infinity. */
+ x = INFINITY;
+ y = LDEXP (x, 0); ASSERT (y == x);
+ y = LDEXP (x, 5); ASSERT (y == x);
+ y = LDEXP (x, -5); ASSERT (y == x);
+ }
+
+ { /* Negative infinity. */
+ x = - INFINITY;
+ y = LDEXP (x, 0); ASSERT (y == x);
+ y = LDEXP (x, 5); ASSERT (y == x);
+ y = LDEXP (x, -5); ASSERT (y == x);
+ }
+
+ { /* Positive zero. */
+ x = L_(0.0);
+ y = LDEXP (x, 0); ASSERT (y == x); ASSERT (!signbit (x));
+ y = LDEXP (x, 5); ASSERT (y == x); ASSERT (!signbit (x));
+ y = LDEXP (x, -5); ASSERT (y == x); ASSERT (!signbit (x));
+ }
+
+ { /* Negative zero. */
+ x = MINUS_ZERO;
+ y = LDEXP (x, 0); ASSERT (y == x); ASSERT (signbit (x));
+ y = LDEXP (x, 5); ASSERT (y == x); ASSERT (signbit (x));
+ y = LDEXP (x, -5); ASSERT (y == x); ASSERT (signbit (x));
+ }
+
+ { /* Positive finite number. */
+ x = L_(1.73205);
+ y = LDEXP (x, 0); ASSERT (y == x);
+ y = LDEXP (x, 5); ASSERT (y == x * L_(32.0));
+ y = LDEXP (x, -5); ASSERT (y == x * L_(0.03125));
+ }
+
+ { /* Negative finite number. */
+ x = - L_(20.085536923187667742);
+ y = LDEXP (x, 0); ASSERT (y == x);
+ y = LDEXP (x, 5); ASSERT (y == x * L_(32.0));
+ y = LDEXP (x, -5); ASSERT (y == x * L_(0.03125));
+ }
+
+ for (i = 1, x = L_(1.73205); i <= MAX_EXP; i++, x *= L_(2.0))
+ {
+ y = LDEXP (x, 0); ASSERT (y == x);
+ {
+ volatile DOUBLE expected;
+ y = LDEXP (x, 5);
+ expected = x * L_(32.0);
+ ASSERT (y == expected);
+ }
+ y = LDEXP (x, -5); ASSERT (y == x * 0.03125L);
+ }
+ for (i = 1, x = L_(1.73205); i >= MIN_EXP; i--, x *= L_(0.5))
+ {
+ y = LDEXP (x, 0); ASSERT (y == x);
+ y = LDEXP (x, 5); ASSERT (y == x * L_(32.0));
+ if (i - 5 >= MIN_EXP)
+ {
+ y = LDEXP (x, -5); ASSERT (y == x * L_(0.03125));
+ }
+ }
+ for (; i >= LDBL_MIN_EXP - 100 && x > L_(0.0); i--, x *= L_(0.5))
+ {
+ y = LDEXP (x, 0); ASSERT (y == x);
+ y = LDEXP (x, 5); ASSERT (y == x * L_(32.0));
+ }
+}
--- /dev/null
+/* Test of ldexpf() function.
+ Copyright (C) 2007-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007, 2010. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (ldexpf, float, (float, int));
+
+#include <float.h>
+
+#include "isnanf-nolibm.h"
+#include "minus-zero.h"
+#include "infinity.h"
+#include "nan.h"
+#include "macros.h"
+
+#undef INFINITY
+#undef NAN
+
+#define DOUBLE float
+#define ISNAN isnanf
+#define INFINITY Infinityf ()
+#define NAN NaNf ()
+#define L_(literal) literal##f
+#define MINUS_ZERO minus_zerof
+#define LDEXP ldexpf
+#define MIN_EXP FLT_MIN_EXP
+#define MAX_EXP FLT_MAX_EXP
+#include "test-ldexp.h"
+
+int
+main ()
+{
+ test_function ();
+
+ return 0;
+}
#include "fpucw.h"
#include "isnanl-nolibm.h"
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
#include "macros.h"
+#undef INFINITY
+#undef NAN
+
+#define DOUBLE long double
+#define ISNAN isnanl
+#define INFINITY Infinityl ()
+#define NAN NaNl ()
+#define L_(literal) literal##L
+#define MINUS_ZERO minus_zerol
+#define LDEXP ldexpl
+#define MIN_EXP LDBL_MIN_EXP
+#define MAX_EXP LDBL_MAX_EXP
+#include "test-ldexp.h"
+
int
main ()
{
- int i;
- long double x;
- long double y;
DECL_LONG_DOUBLE_ROUNDING
BEGIN_LONG_DOUBLE_ROUNDING ();
- { /* NaN. */
- x = NaNl ();
- y = ldexpl (x, 0); ASSERT (isnanl (y));
- y = ldexpl (x, 5); ASSERT (isnanl (y));
- y = ldexpl (x, -5); ASSERT (isnanl (y));
- }
-
- { /* Positive infinity. */
- x = 1.0L / 0.0L;
- y = ldexpl (x, 0); ASSERT (y == x);
- y = ldexpl (x, 5); ASSERT (y == x);
- y = ldexpl (x, -5); ASSERT (y == x);
- }
-
- { /* Negative infinity. */
- x = -1.0L / 0.0L;
- y = ldexpl (x, 0); ASSERT (y == x);
- y = ldexpl (x, 5); ASSERT (y == x);
- y = ldexpl (x, -5); ASSERT (y == x);
- }
-
- { /* Positive zero. */
- x = 0.0L;
- y = ldexpl (x, 0); ASSERT (y == x); ASSERT (!signbit (x));
- y = ldexpl (x, 5); ASSERT (y == x); ASSERT (!signbit (x));
- y = ldexpl (x, -5); ASSERT (y == x); ASSERT (!signbit (x));
- }
-
- { /* Negative zero. */
- x = minus_zerol;
- y = ldexpl (x, 0); ASSERT (y == x); ASSERT (signbit (x));
- y = ldexpl (x, 5); ASSERT (y == x); ASSERT (signbit (x));
- y = ldexpl (x, -5); ASSERT (y == x); ASSERT (signbit (x));
- }
-
- { /* Positive finite number. */
- x = 1.73205L;
- y = ldexpl (x, 0); ASSERT (y == x);
- y = ldexpl (x, 5); ASSERT (y == x * 32.0L);
- y = ldexpl (x, -5); ASSERT (y == x * 0.03125L);
- }
-
- { /* Negative finite number. */
- x = -20.085536923187667742L;
- y = ldexpl (x, 0); ASSERT (y == x);
- y = ldexpl (x, 5); ASSERT (y == x * 32.0L);
- y = ldexpl (x, -5); ASSERT (y == x * 0.03125L);
- }
-
- for (i = 1, x = 1.73205L; i <= LDBL_MAX_EXP; i++, x *= 2.0L)
- {
- y = ldexpl (x, 0); ASSERT (y == x);
- y = ldexpl (x, 5); ASSERT (y == x * 32.0L);
- y = ldexpl (x, -5); ASSERT (y == x * 0.03125L);
- }
- for (i = 1, x = 1.73205L; i >= LDBL_MIN_EXP; i--, x *= 0.5L)
- {
- y = ldexpl (x, 0); ASSERT (y == x);
- y = ldexpl (x, 5); ASSERT (y == x * 32.0L);
- if (i - 5 >= LDBL_MIN_EXP)
- {
- y = ldexpl (x, -5); ASSERT (y == x * 0.03125L);
- }
- }
- for (; i >= LDBL_MIN_EXP - 100 && x > 0.0L; i--, x *= 0.5L)
- {
- y = ldexpl (x, 0); ASSERT (y == x);
- y = ldexpl (x, 5); ASSERT (y == x * 32.0L);
- }
+ test_function ();
return 0;
}
/* Clean up any trash from prior testsuite runs. */
ignore_value (system ("rm -rf " BASE "*"));
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (linkat (-1, "foo", AT_FDCWD, "bar", 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (linkat (99, "foo", AT_FDCWD, "bar", 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+ ASSERT (close (creat (BASE "oo", 0600)) == 0);
+ {
+ errno = 0;
+ ASSERT (linkat (AT_FDCWD, BASE "oo", -1, "bar", 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (linkat (AT_FDCWD, BASE "oo", 99, "bar", 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+ ASSERT (unlink (BASE "oo") == 0);
+
/* Test basic link functionality, without mentioning symlinks. */
result = test_link (do_link, true);
dfd1 = open (".", O_RDONLY);
--- /dev/null
+/* Test listen() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <sys/socket.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (listen, int, (int, int));
+
+#include <errno.h>
+
+#include "sockets.h"
+#include "macros.h"
+
+int
+main (void)
+{
+ gl_sockets_startup (SOCKETS_1_1);
+
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (listen (-1, 1) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (listen (99 ,1) == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ return 0;
+}
--- /dev/null
+/* Test of log10f() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010-2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (log10f, float, (float));
+
+#include "macros.h"
+
+volatile float x;
+float y;
+
+int
+main ()
+{
+ /* A particular value. */
+ x = 0.6f;
+ y = log10f (x);
+ ASSERT (y >= -0.2218488f && y <= -0.2218487f);
+
+ return 0;
+}
--- /dev/null
+/* Test of logf() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010-2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (logf, float, (float));
+
+#include "macros.h"
+
+volatile float x;
+float y;
+
+int
+main ()
+{
+ /* A particular value. */
+ x = 0.6f;
+ y = logf (x);
+ ASSERT (y >= -0.5108257f && y <= -0.5108256f);
+
+ return 0;
+}
invoking shell are not enough on HP-UX. */
close (0);
close (1);
+
errno = 0;
ASSERT (lseek (0, (off_t)0, SEEK_CUR) == -1);
ASSERT (errno == EBADF);
+
errno = 0;
ASSERT (lseek (1, (off_t)0, SEEK_CUR) == -1);
ASSERT (errno == EBADF);
+
+ /* Test behaviour for invalid file descriptors. */
+ errno = 0;
+ ASSERT (lseek (-1, (off_t)0, SEEK_CUR) == -1);
+ ASSERT (errno == EBADF);
+
+ errno = 0;
+ ASSERT (lseek (99, (off_t)0, SEEK_CUR) == -1);
+ ASSERT (errno == EBADF);
+
break;
default:
ASSERT (st2.st_atime == Y2K);
ASSERT (st2.st_mtime == Y2K);
if (check_ctime)
- ASSERT (st1.st_ctime < st2.st_ctime
- || (st1.st_ctime == st2.st_ctime
- && get_stat_ctime_ns (&st1) < get_stat_ctime_ns (&st2)));
+ ASSERT (ctime_compare (&st1, &st2) < 0);
/* Play with symlink timestamps. */
if (symlink (BASE "file", BASE "link"))
ASSERT (0 <= get_stat_mtime_ns (&st2));
ASSERT (get_stat_mtime_ns (&st2) < BILLION);
if (check_ctime)
- ASSERT (st1.st_ctime < st2.st_ctime
- || (st1.st_ctime == st2.st_ctime
- && get_stat_ctime_ns (&st1) < get_stat_ctime_ns (&st2)));
+ ASSERT (ctime_compare (&st1, &st2) < 0);
}
/* Play with UTIME_OMIT, UTIME_NOW. */
}
ASSERT (utimecmp (BASE "link", &st1, &st3, 0) <= 0);
if (check_ctime)
- ASSERT (st2.st_ctime < st3.st_ctime
- || (st2.st_ctime == st3.st_ctime
- && get_stat_ctime_ns (&st2) < get_stat_ctime_ns (&st3)));
+ ASSERT (ctime_compare (&st2, &st3) < 0);
nap ();
ts[0].tv_nsec = 0;
ts[1].tv_nsec = UTIME_OMIT;
ASSERT (st3.st_mtime == st2.st_mtime);
ASSERT (get_stat_mtime_ns (&st3) == get_stat_mtime_ns (&st2));
if (check_ctime)
- ASSERT (st3.st_ctime < st2.st_ctime
- || (st3.st_ctime == st2.st_ctime
- && get_stat_ctime_ns (&st3) < get_stat_ctime_ns (&st2)));
+ ASSERT (ctime_compare (&st3, &st2) < 0);
}
/* Symlink to directory. */
#include "signature.h"
-
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::acos, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::asin, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::atan, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::atan2, double, (double, double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::cbrt, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::copysign, double, (double, double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::cos, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::cosh, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::erf, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::erfc, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::exp, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::fabs, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::fmod, double, (double, double));
-#if GNULIB_TEST_FREXP
-SIGNATURE_CHECK (GNULIB_NAMESPACE::frexp, double, (double, int *));
+/* Signature check for a function that takes a real-floating argument.
+ Check that each overloaded function with the specified signature exists. */
+#define REAL_FLOATING_CHECK(func,\
+ rettype1, parameters1,\
+ rettype2, parameters2,\
+ rettype3, parameters3) \
+ OVERLOADED_CHECK (func, rettype1, parameters1, _1); \
+ OVERLOADED_CHECK (func, rettype2, parameters2, _2); \
+ OVERLOADED_CHECK (func, rettype3, parameters3, _3)
+#define OVERLOADED_CHECK(func, rettype, parameters, suffix) \
+ static rettype (* _GL_UNUSED signature_check_ ## func ## suffix) parameters \
+ = static_cast<rettype(*)parameters>(func)
+
+
+/* Keep these checks in the same order as math.in.h! */
+
+#if GNULIB_TEST_ACOSF
+SIGNATURE_CHECK (GNULIB_NAMESPACE::acosf, float, (float));
#endif
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::hypot, double, (double, double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::j0, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::j1, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::jn, double, (int, double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::ldexp, double, (double, int));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::lgamma, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::log10, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::log1p, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::logb, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::log, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::modf, double, (double, double *));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::nextafter, double, (double, double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::pow, double, (double, double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::remainder, double, (double, double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::rint, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::sin, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::sinh, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::sqrt, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::tan, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::tanh, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::y0, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::y1, double, (double));
-//SIGNATURE_CHECK (GNULIB_NAMESPACE::yn, double, (int, double));
-
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::acos, double, (double));
#if GNULIB_TEST_ACOSL
SIGNATURE_CHECK (GNULIB_NAMESPACE::acosl, long double, (long double));
#endif
+#if GNULIB_TEST_ASINF
+SIGNATURE_CHECK (GNULIB_NAMESPACE::asinf, float, (float));
+#endif
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::asin, double, (double));
#if GNULIB_TEST_ASINL
SIGNATURE_CHECK (GNULIB_NAMESPACE::asinl, long double, (long double));
#endif
+#if GNULIB_TEST_ATANF
+SIGNATURE_CHECK (GNULIB_NAMESPACE::atanf, float, (float));
+#endif
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::atan, double, (double));
#if GNULIB_TEST_ATANL
SIGNATURE_CHECK (GNULIB_NAMESPACE::atanl, long double, (long double));
#endif
+#if GNULIB_TEST_ATAN2F
+SIGNATURE_CHECK (GNULIB_NAMESPACE::atan2f, float, (float, float));
+#endif
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::atan2, double, (double, double));
+
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::cbrt, double, (double));
+
#if GNULIB_TEST_CEILF
SIGNATURE_CHECK (GNULIB_NAMESPACE::ceilf, float, (float));
#endif
-
#if GNULIB_TEST_CEIL
SIGNATURE_CHECK (GNULIB_NAMESPACE::ceil, double, (double));
#endif
-
#if GNULIB_TEST_CEILL
SIGNATURE_CHECK (GNULIB_NAMESPACE::ceill, long double, (long double));
#endif
+#if GNULIB_TEST_COPYSIGNF
+SIGNATURE_CHECK (GNULIB_NAMESPACE::copysignf, float, (float, float));
+#endif
+#if GNULIB_TEST_COPYSIGN
+SIGNATURE_CHECK (GNULIB_NAMESPACE::copysign, double, (double, double));
+#endif
+#if GNULIB_TEST_COPYSIGNL
+SIGNATURE_CHECK (GNULIB_NAMESPACE::copysignl, long double,
+ (long double, long double));
+#endif
+
+#if GNULIB_TEST_COSF
+SIGNATURE_CHECK (GNULIB_NAMESPACE::cosf, float, (float));
+#endif
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::cos, double, (double));
#if GNULIB_TEST_COSL
SIGNATURE_CHECK (GNULIB_NAMESPACE::cosl, long double, (long double));
#endif
+#if GNULIB_TEST_COSHF
+SIGNATURE_CHECK (GNULIB_NAMESPACE::coshf, float, (float));
+#endif
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::cosh, double, (double));
+
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::erf, double, (double));
+
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::erfc, double, (double));
+
+#if GNULIB_TEST_EXPF
+SIGNATURE_CHECK (GNULIB_NAMESPACE::expf, float, (float));
+#endif
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::exp, double, (double));
#if GNULIB_TEST_EXPL
SIGNATURE_CHECK (GNULIB_NAMESPACE::expl, long double, (long double));
#endif
+#if GNULIB_TEST_FABSF
+SIGNATURE_CHECK (GNULIB_NAMESPACE::fabsf, float, (float));
+#endif
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::fabs, double, (double));
+
#if GNULIB_TEST_FLOORF
SIGNATURE_CHECK (GNULIB_NAMESPACE::floorf, float, (float));
#endif
-
#if GNULIB_TEST_FLOOR
SIGNATURE_CHECK (GNULIB_NAMESPACE::floor, double, (double));
#endif
-
#if GNULIB_TEST_FLOORL
SIGNATURE_CHECK (GNULIB_NAMESPACE::floorl, long double, (long double));
#endif
+#if GNULIB_TEST_FMODF
+SIGNATURE_CHECK (GNULIB_NAMESPACE::fmodf, float, (float, float));
+#endif
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::fmod, double, (double, double));
+
+#if GNULIB_TEST_FREXPF
+SIGNATURE_CHECK (GNULIB_NAMESPACE::frexpf, float, (float, int *));
+#endif
+#if GNULIB_TEST_FREXP
+SIGNATURE_CHECK (GNULIB_NAMESPACE::frexp, double, (double, int *));
+#endif
#if GNULIB_TEST_FREXPL
SIGNATURE_CHECK (GNULIB_NAMESPACE::frexpl, long double, (long double, int *));
#endif
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::hypot, double, (double, double));
+
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::j0, double, (double));
+
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::j1, double, (double));
+
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::jn, double, (int, double));
+
+#if GNULIB_TEST_LDEXPF
+SIGNATURE_CHECK (GNULIB_NAMESPACE::ldexpf, float, (float, int));
+#endif
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::ldexp, double, (double, int));
#if GNULIB_TEST_LDEXPL
SIGNATURE_CHECK (GNULIB_NAMESPACE::ldexpl, long double, (long double, int));
#endif
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::lgamma, double, (double));
+
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::log10, double, (double));
+
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::log1p, double, (double));
+
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::logb, double, (double));
+
+#if GNULIB_TEST_LOGF
+SIGNATURE_CHECK (GNULIB_NAMESPACE::logf, float, (float));
+#endif
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::log, double, (double));
#if GNULIB_TEST_LOGL
SIGNATURE_CHECK (GNULIB_NAMESPACE::logl, long double, (long double));
#endif
+#if GNULIB_TEST_LOG10F
+SIGNATURE_CHECK (GNULIB_NAMESPACE::log10f, float, (float));
+#endif
+
+#if GNULIB_TEST_MODFF
+SIGNATURE_CHECK (GNULIB_NAMESPACE::modff, float, (float, float *));
+#endif
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::modf, double, (double, double *));
+
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::nextafter, double, (double, double));
+
+#if GNULIB_TEST_POWF
+SIGNATURE_CHECK (GNULIB_NAMESPACE::powf, float, (float, float));
+#endif
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::pow, double, (double, double));
+
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::remainder, double, (double, double));
+
+#if GNULIB_TEST_RINTF
+SIGNATURE_CHECK (GNULIB_NAMESPACE::rintf, float, (float));
+#endif
+#if GNULIB_TEST_RINT
+SIGNATURE_CHECK (GNULIB_NAMESPACE::rint, double, (double));
+#endif
+#if GNULIB_TEST_RINTL
+SIGNATURE_CHECK (GNULIB_NAMESPACE::rintl, long double, (long double));
+#endif
+
#if GNULIB_TEST_ROUNDF
SIGNATURE_CHECK (GNULIB_NAMESPACE::roundf, float, (float));
#endif
-
#if GNULIB_TEST_ROUND
SIGNATURE_CHECK (GNULIB_NAMESPACE::round, double, (double));
#endif
-
#if GNULIB_TEST_ROUNDL
SIGNATURE_CHECK (GNULIB_NAMESPACE::roundl, long double, (long double));
#endif
+#if GNULIB_TEST_SINF
+SIGNATURE_CHECK (GNULIB_NAMESPACE::sinf, float, (float));
+#endif
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::sin, double, (double));
#if GNULIB_TEST_SINL
SIGNATURE_CHECK (GNULIB_NAMESPACE::sinl, long double, (long double));
#endif
+#if GNULIB_TEST_SINHF
+SIGNATURE_CHECK (GNULIB_NAMESPACE::sinhf, float, (float));
+#endif
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::sinh, double, (double));
+
+#if GNULIB_TEST_SQRTF
+SIGNATURE_CHECK (GNULIB_NAMESPACE::sqrtf, float, (float));
+#endif
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::sqrt, double, (double));
#if GNULIB_TEST_SQRTL
SIGNATURE_CHECK (GNULIB_NAMESPACE::sqrtl, long double, (long double));
#endif
+#if GNULIB_TEST_TANF
+SIGNATURE_CHECK (GNULIB_NAMESPACE::tanf, float, (float));
+#endif
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::tan, double, (double));
#if GNULIB_TEST_TANL
SIGNATURE_CHECK (GNULIB_NAMESPACE::tanl, long double, (long double));
#endif
+#if GNULIB_TEST_TANHF
+SIGNATURE_CHECK (GNULIB_NAMESPACE::tanhf, float, (float));
+#endif
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::tanh, double, (double));
+
#if GNULIB_TEST_TRUNCF
SIGNATURE_CHECK (GNULIB_NAMESPACE::truncf, float, (float));
#endif
-
#if GNULIB_TEST_TRUNC
SIGNATURE_CHECK (GNULIB_NAMESPACE::trunc, double, (double));
#endif
-
#if GNULIB_TEST_TRUNCL
SIGNATURE_CHECK (GNULIB_NAMESPACE::truncl, long double, (long double));
#endif
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::y0, double, (double));
+
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::y1, double, (double));
+
+//SIGNATURE_CHECK (GNULIB_NAMESPACE::yn, double, (int, double));
+
+#if GNULIB_TEST_ISFINITE
+# ifdef isfinite
+# error "isfinite should not be a macro in C++"
+# endif
+REAL_FLOATING_CHECK (isfinite, int, (float), int, (double), int, (long double));
+#endif
+
+#if GNULIB_TEST_ISINF
+# ifdef isinf
+# error "isinf should not be a macro in C++"
+# endif
+REAL_FLOATING_CHECK (isinf, int, (float), int, (double), int, (long double));
+#endif
+
+#if GNULIB_TEST_ISNAN
+# ifdef isnan
+# error "isnan should not be a macro in C++"
+# endif
+REAL_FLOATING_CHECK (isnan, int, (float), int, (double), int, (long double));
+#endif
+
+#if GNULIB_TEST_SIGNBIT
+# ifdef signbit
+# error "signbit should not be a macro in C++"
+# endif
+REAL_FLOATING_CHECK (signbit, int, (float), int, (double), int, (long double));
+#endif
+
int
main ()
/* Clean up any trash from prior testsuite runs. */
ignore_value (system ("rm -rf " BASE "*"));
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (mkdirat (-1, "foo", 0700) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (mkdirat (99, "foo", 0700) == -1);
+ ASSERT (errno == EBADF);
+ }
+
/* Test basic mkdir functionality. */
result = test_mkdir (do_mkdir, false);
dfd = open (".", O_RDONLY);
struct stat st;
test_func func = funcs[i];
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (func (-1, "foo", 0600) == -1);
+ ASSERT (errno == EBADF
+ || errno == ENOSYS /* seen on mingw */
+ );
+ }
+ {
+ errno = 0;
+ ASSERT (func (99, "foo", 0600) == -1);
+ ASSERT (errno == EBADF
+ || errno == ENOSYS /* seen on mingw */
+ );
+ }
+
/* Create fifo while cwd is '.', then stat it from '..'. */
- ASSERT (func (AT_FDCWD, BASE "fifo", 0600) == 0);
- errno = 0;
- ASSERT (func (dfd, BASE "fifo", 0600) == -1);
- ASSERT (errno == EEXIST);
- ASSERT (chdir ("..") == 0);
- errno = 0;
- ASSERT (fstatat (AT_FDCWD, BASE "fifo", &st, 0) == -1);
- ASSERT (errno == ENOENT);
- memset (&st, 0, sizeof st);
- ASSERT (fstatat (dfd, BASE "fifo", &st, 0) == 0);
- ASSERT (S_ISFIFO (st.st_mode));
- ASSERT (unlinkat (dfd, BASE "fifo", 0) == 0);
+ if (func (AT_FDCWD, BASE "fifo", 0600) != 0)
+ ASSERT (errno == ENOSYS); /* seen on native Windows */
+ else
+ {
+ errno = 0;
+ ASSERT (func (dfd, BASE "fifo", 0600) == -1);
+ ASSERT (errno == EEXIST);
+ ASSERT (chdir ("..") == 0);
+ errno = 0;
+ ASSERT (fstatat (AT_FDCWD, BASE "fifo", &st, 0) == -1);
+ ASSERT (errno == ENOENT);
+ memset (&st, 0, sizeof st);
+ ASSERT (fstatat (dfd, BASE "fifo", &st, 0) == 0);
+ ASSERT (S_ISFIFO (st.st_mode));
+ ASSERT (unlinkat (dfd, BASE "fifo", 0) == 0);
+ }
/* Create fifo while cwd is '..', then stat it from '.'. */
- ASSERT (func (dfd, BASE "fifo", 0600) == 0);
- ASSERT (fchdir (dfd) == 0);
- errno = 0;
- ASSERT (func (AT_FDCWD, BASE "fifo", 0600) == -1);
- ASSERT (errno == EEXIST);
- memset (&st, 0, sizeof st);
- ASSERT (fstatat (AT_FDCWD, BASE "fifo", &st, AT_SYMLINK_NOFOLLOW) == 0);
- ASSERT (S_ISFIFO (st.st_mode));
- memset (&st, 0, sizeof st);
- ASSERT (fstatat (dfd, BASE "fifo", &st, AT_SYMLINK_NOFOLLOW) == 0);
- ASSERT (S_ISFIFO (st.st_mode));
- ASSERT (unlink (BASE "fifo") == 0);
+ if (func (dfd, BASE "fifo", 0600) != 0)
+ ASSERT (errno == ENOSYS); /* seen on native Windows */
+ else
+ {
+ ASSERT (fchdir (dfd) == 0);
+ errno = 0;
+ ASSERT (func (AT_FDCWD, BASE "fifo", 0600) == -1);
+ ASSERT (errno == EEXIST);
+ memset (&st, 0, sizeof st);
+ ASSERT (fstatat (AT_FDCWD, BASE "fifo", &st, AT_SYMLINK_NOFOLLOW)
+ == 0);
+ ASSERT (S_ISFIFO (st.st_mode));
+ memset (&st, 0, sizeof st);
+ ASSERT (fstatat (dfd, BASE "fifo", &st, AT_SYMLINK_NOFOLLOW) == 0);
+ ASSERT (S_ISFIFO (st.st_mode));
+ ASSERT (unlink (BASE "fifo") == 0);
+ }
}
ASSERT (close (dfd) == 0);
/* A particular negative value. */
x = -5.972406760;
y = modf (x, &z);
- ASSERT (y >= -0.972406761 && y <= 0.972406759);
+ ASSERT (y >= -0.972406761 && y <= -0.972406759);
ASSERT (z == -5.0);
return 0;
--- /dev/null
+/* Test of modff() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010-2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (modff, float, (float, float *));
+
+#include "macros.h"
+
+volatile float x;
+float y;
+float z;
+
+int
+main ()
+{
+ /* A particular positive value. */
+ x = 5.972407f;
+ y = modff (x, &z);
+ ASSERT (y >= 0.972406f && y <= 0.972408f);
+ ASSERT (z == 5.0f);
+
+ /* A particular negative value. */
+ x = -5.972407f;
+ y = modff (x, &z);
+ ASSERT (y >= -0.972408f && y <= -0.972406f);
+ ASSERT (z == -5.0f);
+
+ return 0;
+}
Platform PIPE_DATA_BLOCK_SIZE
Linux >= 63489
+ Linux/SPARC >= 126977
+ Linux/IA-64, Linux/MIPS >= 253953
FreeBSD, OpenBSD, MacOS X >= 65537
AIX >= 32769
HP-UX >= 8193
Cygwin >= 65537
native Win32 >= 4097 (depends on the _pipe argument)
*/
-#if defined __osf__
+#if defined __osf__ || (defined __linux__ && (defined __ia64__ || defined __mips__))
# define PIPE_DATA_BLOCK_SIZE 270000
+#elif defined __linux__ && defined __sparc__
+# define PIPE_DATA_BLOCK_SIZE 140000
#else
# define PIPE_DATA_BLOCK_SIZE 70000
#endif
Cygwin 1.7.x >= 163838 (depends on circumstances)
native Win32 >= 66294401
*/
-#define SOCKET_DATA_BLOCK_SIZE 1000000
+#if defined __OpenBSD__
+# define SOCKET_DATA_BLOCK_SIZE 100000
+#else
+# define SOCKET_DATA_BLOCK_SIZE 1000000
+#endif
/* On Linux, MacOS X, Cygwin 1.5.x, native Win32,
sockets have very large buffers in the kernel, so that write() calls
set_program_name (argv[0]);
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (openat (-1, "foo", O_RDONLY) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (openat (99, "foo", O_RDONLY) == -1);
+ ASSERT (errno == EBADF);
+ }
+
/* Basic checks. */
result = test_open (do_open, false);
dfd = open (".", O_RDONLY);
#define LOG(str, now, res) (void) 0
#endif
-static const char* const day_table[] =
+static const char *const day_table[] =
{
"SUNDAY",
"MONDAY",
NULL
};
+
+#if ! HAVE_TM_GMTOFF
+/* Shift A right by B bits portably, by dividing A by 2**B and
+ truncating towards minus infinity. A and B should be free of side
+ effects, and B should be in the range 0 <= B <= INT_BITS - 2, where
+ INT_BITS is the number of useful bits in an int. GNU code can
+ assume that INT_BITS is at least 32.
+
+ ISO C99 says that A >> B is implementation-defined if A < 0. Some
+ implementations (e.g., UNICOS 9.0 on a Cray Y-MP EL) don't shift
+ right in the usual way when A < 0, so SHR falls back on division if
+ ordinary A >> B doesn't seem to be the usual signed shift. */
+#define SHR(a, b) \
+ (-1 >> 1 == -1 \
+ ? (a) >> (b) \
+ : (a) / (1 << (b)) - ((a) % (1 << (b)) < 0))
+
+#define TM_YEAR_BASE 1900
+
+/* Yield the difference between *A and *B,
+ measured in seconds, ignoring leap seconds.
+ The body of this function is taken directly from the GNU C Library;
+ see src/strftime.c. */
+static long int
+tm_diff (struct tm const *a, struct tm const *b)
+{
+ /* Compute intervening leap days correctly even if year is negative.
+ Take care to avoid int overflow in leap day calculations. */
+ int a4 = SHR (a->tm_year, 2) + SHR (TM_YEAR_BASE, 2) - ! (a->tm_year & 3);
+ int b4 = SHR (b->tm_year, 2) + SHR (TM_YEAR_BASE, 2) - ! (b->tm_year & 3);
+ int a100 = a4 / 25 - (a4 % 25 < 0);
+ int b100 = b4 / 25 - (b4 % 25 < 0);
+ int a400 = SHR (a100, 2);
+ int b400 = SHR (b100, 2);
+ int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400);
+ long int ayear = a->tm_year;
+ long int years = ayear - b->tm_year;
+ long int days = (365 * years + intervening_leap_days
+ + (a->tm_yday - b->tm_yday));
+ return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour))
+ + (a->tm_min - b->tm_min))
+ + (a->tm_sec - b->tm_sec));
+}
+#endif /* ! HAVE_TM_GMTOFF */
+
+static long
+gmt_offset (time_t s)
+{
+ long gmtoff;
+
+#if !HAVE_TM_GMTOFF
+ struct tm tm_local = *localtime (&s);
+ struct tm tm_gmt = *gmtime (&s);
+
+ gmtoff = tm_diff (&tm_local, &tm_gmt);
+#else
+ gmtoff = localtime (&s)->tm_gmtoff;
+#endif
+
+ return gmtoff;
+}
+
int
main (int argc _GL_UNUSED, char **argv)
{
struct timespec result;
struct timespec result2;
+ struct timespec expected;
struct timespec now;
const char *p;
int i;
+ long gmtoff;
+ time_t ref_time = 1304250918;
set_program_name (argv[0]);
+ gmtoff = gmt_offset (ref_time);
+
+
+ /* ISO 8601 extended date and time of day representation,
+ 'T' separator, local time zone */
+ p = "2011-05-01T11:55:18";
+ expected.tv_sec = ref_time - gmtoff;
+ expected.tv_nsec = 0;
+ ASSERT (parse_datetime (&result, p, 0));
+ LOG (p, expected, result);
+ ASSERT (expected.tv_sec == result.tv_sec
+ && expected.tv_nsec == result.tv_nsec);
+
+ /* ISO 8601 extended date and time of day representation,
+ ' ' separator, local time zone */
+ p = "2011-05-01 11:55:18";
+ expected.tv_sec = ref_time - gmtoff;
+ expected.tv_nsec = 0;
+ ASSERT (parse_datetime (&result, p, 0));
+ LOG (p, expected, result);
+ ASSERT (expected.tv_sec == result.tv_sec
+ && expected.tv_nsec == result.tv_nsec);
+
+
+ /* ISO 8601, extended date and time of day representation,
+ 'T' separator, UTC */
+ p = "2011-05-01T11:55:18Z";
+ expected.tv_sec = ref_time;
+ expected.tv_nsec = 0;
+ ASSERT (parse_datetime (&result, p, 0));
+ LOG (p, expected, result);
+ ASSERT (expected.tv_sec == result.tv_sec
+ && expected.tv_nsec == result.tv_nsec);
+
+ /* ISO 8601, extended date and time of day representation,
+ ' ' separator, UTC */
+ p = "2011-05-01 11:55:18Z";
+ expected.tv_sec = ref_time;
+ expected.tv_nsec = 0;
+ ASSERT (parse_datetime (&result, p, 0));
+ LOG (p, expected, result);
+ ASSERT (expected.tv_sec == result.tv_sec
+ && expected.tv_nsec == result.tv_nsec);
+
+
+ /* ISO 8601 extended date and time of day representation,
+ 'T' separator, w/UTC offset */
+ p = "2011-05-01T11:55:18-07:00";
+ expected.tv_sec = 1304276118;
+ expected.tv_nsec = 0;
+ ASSERT (parse_datetime (&result, p, 0));
+ LOG (p, expected, result);
+ ASSERT (expected.tv_sec == result.tv_sec
+ && expected.tv_nsec == result.tv_nsec);
+
+ /* ISO 8601 extended date and time of day representation,
+ ' ' separator, w/UTC offset */
+ p = "2011-05-01 11:55:18-07:00";
+ expected.tv_sec = 1304276118;
+ expected.tv_nsec = 0;
+ ASSERT (parse_datetime (&result, p, 0));
+ LOG (p, expected, result);
+ ASSERT (expected.tv_sec == result.tv_sec
+ && expected.tv_nsec == result.tv_nsec);
+
+
+ /* ISO 8601 extended date and time of day representation,
+ 'T' separator, w/hour only UTC offset */
+ p = "2011-05-01T11:55:18-07";
+ expected.tv_sec = 1304276118;
+ expected.tv_nsec = 0;
+ ASSERT (parse_datetime (&result, p, 0));
+ LOG (p, expected, result);
+ ASSERT (expected.tv_sec == result.tv_sec
+ && expected.tv_nsec == result.tv_nsec);
+
+ /* ISO 8601 extended date and time of day representation,
+ ' ' separator, w/hour only UTC offset */
+ p = "2011-05-01 11:55:18-07";
+ expected.tv_sec = 1304276118;
+ expected.tv_nsec = 0;
+ ASSERT (parse_datetime (&result, p, 0));
+ LOG (p, expected, result);
+ ASSERT (expected.tv_sec == result.tv_sec
+ && expected.tv_nsec == result.tv_nsec);
+
+
now.tv_sec = 4711;
now.tv_nsec = 1267;
p = "now";
ASSERT (!parse_datetime (&result, p, &now));
p = "UTC+4:00 tomorrow ago";
ASSERT (!parse_datetime (&result, p, &now));
+ p = "UTC+4:00 tomorrow hence";
+ ASSERT (!parse_datetime (&result, p, &now));
p = "UTC+4:00 40 now ago";
ASSERT (!parse_datetime (&result, p, &now));
p = "UTC+4:00 last tomorrow";
LOG (p, now, result2);
ASSERT (result.tv_sec == result2.tv_sec
&& result.tv_nsec == result2.tv_nsec);
+ p = "UTC+400 1 day hence";
+ ASSERT (parse_datetime (&result2, p, &now));
+ LOG (p, now, result2);
+ ASSERT (result.tv_sec == result2.tv_sec
+ && result.tv_nsec == result2.tv_nsec);
now.tv_sec = 4711;
now.tv_nsec = 1267;
p = "UTC+400 yesterday";
/* Get declarations of the Win32 API functions. */
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
+/* Get _get_osfhandle. */
+# include "msvc-nothrow.h"
#endif
#include "binary-io.h"
/* Get declarations of the Win32 API functions. */
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
+/* Get _get_osfhandle. */
+# include "msvc-nothrow.h"
#endif
#include "binary-io.h"
--- /dev/null
+/* Test of posix_openpt function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Eric Blake <eblake@redhat.com>, 2011. */
+
+#include <config.h>
+
+#include <stdlib.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (posix_openpt, int, (int));
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#if defined __sun || defined __hpux /* Solaris, HP-UX */
+# include <stropts.h>
+#endif
+
+#include "macros.h"
+
+int
+main (void)
+{
+ int master;
+ int slave;
+ char *name;
+
+ /* Open the master of a pseudo-terminal pair. */
+ master = posix_openpt (O_RDWR | O_NOCTTY);
+ if (master < 0 && errno == ENOSYS)
+ {
+ fputs ("skipping: platform lacks pty support\n", stderr);
+ return 77;
+ }
+
+ ASSERT (0 <= master);
+ name = ptsname (master);
+ ASSERT (name);
+ ASSERT (grantpt (master) == 0);
+ ASSERT (unlockpt (master) == 0);
+ slave = open (name, O_RDWR);
+ ASSERT (0 <= slave);
+
+#if defined __sun || defined __hpux /* Solaris, HP-UX */
+ ASSERT (ioctl (slave, I_PUSH, "ptem") == 0);
+ ASSERT (ioctl (slave, I_PUSH, "ldterm") == 0);
+# if defined __sun
+ ASSERT (ioctl (slave, I_PUSH, "ttcompat") == 0);
+# endif
+#endif
+
+ ASSERT (isatty (slave));
+
+ /* Close the master side before the slave side gets closed.
+ This is necessary on MacOS X 10.4.11. */
+ ASSERT (close (master) == 0);
+ ASSERT (close (slave) == 0);
+
+ return 0;
+}
--- /dev/null
+/* Test posix_spawn_file_actions_addclose() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <spawn.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (posix_spawn_file_actions_addclose, int,
+ (posix_spawn_file_actions_t *, int));
+
+#include <errno.h>
+
+#include "macros.h"
+
+int
+main (void)
+{
+ posix_spawn_file_actions_t actions;
+
+ ASSERT (posix_spawn_file_actions_init (&actions) == 0);
+
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (posix_spawn_file_actions_addclose (&actions, -1) == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (posix_spawn_file_actions_addclose (&actions, 10000000) == EBADF);
+ }
+
+ return 0;
+}
--- /dev/null
+/* Test posix_spawn_file_actions_adddup2() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <spawn.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (posix_spawn_file_actions_adddup2, int,
+ (posix_spawn_file_actions_t *, int, int));
+
+#include <errno.h>
+
+#include "macros.h"
+
+int
+main (void)
+{
+ posix_spawn_file_actions_t actions;
+
+ ASSERT (posix_spawn_file_actions_init (&actions) == 0);
+
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (posix_spawn_file_actions_adddup2 (&actions, -1, 2) == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (posix_spawn_file_actions_adddup2 (&actions, 10000000, 2) == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (posix_spawn_file_actions_adddup2 (&actions, 2, -1) == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (posix_spawn_file_actions_adddup2 (&actions, 2, 10000000) == EBADF);
+ }
+
+ return 0;
+}
--- /dev/null
+/* Test posix_spawn_file_actions_addopen() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <spawn.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (posix_spawn_file_actions_addopen, int,
+ (posix_spawn_file_actions_t *, int,
+ const char *, int, mode_t));
+
+#include <errno.h>
+#include <fcntl.h>
+
+#include "macros.h"
+
+int
+main (void)
+{
+ posix_spawn_file_actions_t actions;
+
+ ASSERT (posix_spawn_file_actions_init (&actions) == 0);
+
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (posix_spawn_file_actions_addopen (&actions, -1,
+ "foo", 0, O_RDONLY)
+ == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (posix_spawn_file_actions_addopen (&actions, 10000000,
+ "foo", 0, O_RDONLY)
+ == EBADF);
+ }
+
+ return 0;
+}
main ()
{
/* A particular value. */
- z = pow (243.0, 1.2);
+ x = 243.0;
+ y = 1.2;
+ z = pow (x, y);
ASSERT (z >= 728.9999999 && z <= 729.0000001);
return 0;
--- /dev/null
+/* Test of powf() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010-2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (powf, float, (float, float));
+
+#include "macros.h"
+
+volatile float x;
+volatile float y;
+float z;
+
+int
+main ()
+{
+ /* A particular value. */
+ x = 243.0f;
+ y = 1.2f;
+ z = powf (x, y);
+ ASSERT (z >= 728.999f && z <= 729.001f);
+
+ return 0;
+}
ASSERT (errno == ESPIPE);
}
+ /* Test behaviour for invalid file descriptors. */
+ {
+ char byte;
+ errno = 0;
+ ASSERT (pread (-1, &byte, 1, 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ char byte;
+ errno = 0;
+ ASSERT (pread (99, &byte, 1, 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+
return 0;
}
}
/* Test whether __attribute__ (__format__ (...)) still works. */
-#if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)) && !__STRICT_ANSI__
+#if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)) && !defined __STRICT_ANSI__
extern int func1 (char *, size_t, const char *, ...)
__attribute__ ((__format__ (__printf__, 3, 4)));
extern int func2 (char *, size_t, const char *, ...)
/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+#include "infinity.h"
+
static void
test_function (int (*my_printf) (const char *, ...))
{
my_printf ("%a %d\n", 0.0, 33, 44, 55);
/* Positive infinity. */
- my_printf ("%a %d\n", 1.0 / 0.0, 33, 44, 55);
+ my_printf ("%a %d\n", Infinityd (), 33, 44, 55);
/* Negative infinity. */
- my_printf ("%a %d\n", -1.0 / 0.0, 33, 44, 55);
+ my_printf ("%a %d\n", - Infinityd (), 33, 44, 55);
/* FLAG_ZERO with infinite number. */
/* "0000000inf 33" is not a valid result; see
<http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
- my_printf ("%010a %d\n", 1.0 / 0.0, 33, 44, 55);
+ my_printf ("%010a %d\n", Infinityd (), 33, 44, 55);
/* Test the support of the %f format directive. */
SIGNATURE_CHECK (ptsname, char *, (int));
#include <fcntl.h>
+#include <signal.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int
main (void)
{
+#if HAVE_DECL_ALARM
+ /* Declare failure if test takes too long, by using default abort
+ caused by SIGALRM. */
+ signal (SIGALRM, SIG_DFL);
+ alarm (5);
+#endif
+
{
int fd;
char *result;
--- /dev/null
+/* Test of ptsname_r(3).
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <stdlib.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (ptsname_r, int, (int, char *, size_t));
+
+#include <errno.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/stat.h>
+
+#include "same-inode.h"
+
+#include "macros.h"
+
+/* Compare two slave names.
+ On some systems, there are hard links in the /dev/ directory.
+ For example, on OSF/1 5.1,
+ /dev/ttyp0 == /dev/pts/0
+ /dev/ttyp9 == /dev/pts/9
+ /dev/ttypa == /dev/pts/10
+ /dev/ttype == /dev/pts/14
+ */
+static int
+same_slave (const char *slave_name1, const char *slave_name2)
+{
+ struct stat statbuf1;
+ struct stat statbuf2;
+
+ return (strcmp (slave_name1, slave_name2) == 0
+ || (stat (slave_name1, &statbuf1) >= 0
+ && stat (slave_name2, &statbuf2) >= 0
+ && SAME_INODE (statbuf1, statbuf2)));
+}
+
+static char *
+null_ptr (void)
+{
+ return NULL;
+}
+
+static void
+test_errors (int fd, const char *slave)
+{
+ char buffer[256];
+ size_t len;
+ size_t buflen_max;
+ size_t buflen;
+ int result;
+
+ len = strlen (slave);
+ buflen_max = len + 5;
+ if (buflen_max > sizeof buffer)
+ buflen_max = sizeof buffer;
+ for (buflen = 0; buflen <= buflen_max; buflen++)
+ {
+ memset (buffer, 'X', sizeof buffer);
+ errno = 0;
+ result = ptsname_r (fd, buffer, buflen);
+ if (buflen > len)
+ {
+ ASSERT (result == 0);
+ ASSERT (buffer[0] == '/');
+ }
+ else
+ {
+ ASSERT (result != 0);
+ ASSERT (result == errno);
+ ASSERT (errno == ERANGE);
+ ASSERT (buffer[0] == 'X');
+ }
+ }
+
+ errno = 0;
+ result = ptsname_r (fd, null_ptr (), 0);
+ ASSERT (result != 0);
+ ASSERT (result == errno);
+ ASSERT (errno == EINVAL);
+}
+
+int
+main (void)
+{
+#if HAVE_DECL_ALARM
+ /* Declare failure if test takes too long, by using default abort
+ caused by SIGALRM. */
+ signal (SIGALRM, SIG_DFL);
+ alarm (5);
+#endif
+
+ {
+ char buffer[256];
+ int result;
+
+ errno = 0;
+ result = ptsname_r (-1, buffer, sizeof buffer);
+ ASSERT (result != 0);
+ ASSERT (result == errno);
+ ASSERT (errno == EBADF || errno == ENOTTY);
+ }
+
+ {
+ int fd;
+ char buffer[256];
+ int result;
+
+ /* Open the controlling tty of the current process. */
+ fd = open ("/dev/tty", O_RDONLY);
+ if (fd < 0)
+ {
+ fprintf (stderr, "Skipping test: cannot open controlling tty\n");
+ return 77;
+ }
+
+ result = ptsname_r (fd, buffer, sizeof buffer);
+ /* The result is usually NULL, because /dev/tty is a slave, not a
+ master. */
+ if (result == 0)
+ {
+ ASSERT (memcmp (buffer, "/dev/", 5) == 0);
+ }
+
+ close (fd);
+ }
+
+#if defined __sun
+ /* Solaris has BSD-style /dev/pty[p-r][0-9a-f] files, but the function
+ ptsname() does not work on them. */
+ {
+ int fd;
+ char buffer[256];
+ int result;
+
+ /* Open the controlling tty of the current process. */
+ fd = open ("/dev/ptmx", O_RDWR | O_NOCTTY);
+ if (fd < 0)
+ {
+ fprintf (stderr, "Skipping test: cannot open pseudo-terminal\n");
+ return 77;
+ }
+
+ result = ptsname_r (fd, buffer, sizeof buffer);
+ ASSERT (result == 0);
+ ASSERT (memcmp (buffer, "/dev/pts/", 9) == 0);
+
+ test_errors (fd, buffer);
+
+ close (fd);
+ }
+
+#else
+
+ /* Try various master names of MacOS X: /dev/pty[p-w][0-9a-f] */
+ {
+ int char1;
+ int char2;
+
+ for (char1 = 'p'; char1 <= 'w'; char1++)
+ for (char2 = '0'; char2 <= 'f'; (char2 == '9' ? char2 = 'a' : char2++))
+ {
+ char master_name[32];
+ int fd;
+
+ sprintf (master_name, "/dev/pty%c%c", char1, char2);
+ fd = open (master_name, O_RDONLY);
+ if (fd >= 0)
+ {
+ char buffer[256];
+ int result;
+ char slave_name[32];
+
+ result = ptsname_r (fd, buffer, sizeof buffer);
+ ASSERT (result == 0);
+ sprintf (slave_name, "/dev/tty%c%c", char1, char2);
+ ASSERT (same_slave (buffer, slave_name));
+
+ test_errors (fd, buffer);
+
+ close (fd);
+ }
+ }
+ }
+
+ /* Try various master names of *BSD: /dev/pty[p-sP-S][0-9a-v] */
+ {
+ int upper;
+ int char1;
+ int char2;
+
+ for (upper = 0; upper <= 1; upper++)
+ for (char1 = (upper ? 'P' : 'p'); char1 <= (upper ? 'S' : 's'); char1++)
+ for (char2 = '0'; char2 <= 'v'; (char2 == '9' ? char2 = 'a' : char2++))
+ {
+ char master_name[32];
+ int fd;
+
+ sprintf (master_name, "/dev/pty%c%c", char1, char2);
+ fd = open (master_name, O_RDONLY);
+ if (fd >= 0)
+ {
+ char buffer[256];
+ int result;
+ char slave_name[32];
+
+ result = ptsname_r (fd, buffer, sizeof buffer);
+ ASSERT (result == 0);
+ sprintf (slave_name, "/dev/tty%c%c", char1, char2);
+ ASSERT (same_slave (buffer, slave_name));
+
+ test_errors (fd, buffer);
+
+ close (fd);
+ }
+ }
+ }
+
+#endif
+
+ return 0;
+}
ASSERT (close (fd) == 0);
ASSERT (strcmp ("W1W3W5W7W9",buf) == 0);
}
+
+ /* Test behaviour for invalid file descriptors. */
+ {
+ char byte = 'x';
+ errno = 0;
+ ASSERT (pwrite (-1, &byte, 1, 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ char byte = 'x';
+ errno = 0;
+ ASSERT (pwrite (99, &byte, 1, 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+
return 0;
}
--- /dev/null
+/* Test raising a signal.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <signal.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (raise, int, (int));
+
+#include <stdlib.h>
+
+#include "macros.h"
+
+/* It is safe to use _Noreturn here: exit() never returns, and GCC knows that
+ exit() is a non-returning function, even on platforms where its declaration
+ in <stdlib.h> does not have the 'noreturn' attribute. */
+static _Noreturn void
+handler (int sig)
+{
+ exit (0);
+}
+
+int
+main (void)
+{
+ /* Test behaviour for invalid argument. */
+ ASSERT (raise (-1) != 0);
+ ASSERT (raise (199) != 0);
+
+ /* Test behaviour for SIGINT. */
+ ASSERT (signal (SIGINT, handler) != SIG_ERR);
+
+ raise (SIGINT);
+
+ /* We should not get here, because the handler takes away the control. */
+ exit (1);
+}
--- /dev/null
+/* Test the read() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <unistd.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (read, ssize_t, (int, void *, size_t));
+
+#include <errno.h>
+#include <fcntl.h>
+#include <string.h>
+
+#include "macros.h"
+
+int
+main (void)
+{
+ const char *filename = "test-read.tmp";
+ int fd;
+
+ /* Create a file with a simple contents. */
+ fd = open (filename, O_CREAT | O_WRONLY, 0600);
+ ASSERT (fd >= 0);
+ ASSERT (write (fd, "Hello World", 11) == 11);
+ ASSERT (close (fd) == 0);
+
+ /* Read from the middle of the file. */
+ fd = open (filename, O_RDONLY);
+ ASSERT (fd >= 0);
+ ASSERT (lseek (fd, 6, SEEK_SET) == 6);
+ {
+ char buf[10];
+ ssize_t ret = read (fd, buf, 10);
+ ASSERT (ret == 5);
+ ASSERT (memcmp (buf, "World", 5) == 0);
+ }
+ ASSERT (close (fd) == 0);
+
+ /* Test behaviour for invalid file descriptors. */
+ {
+ char byte;
+ errno = 0;
+ ASSERT (read (-1, &byte, 1) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ char byte;
+ errno = 0;
+ ASSERT (read (99, &byte, 1) == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ /* Clean up. */
+ unlink (filename);
+
+ return 0;
+}
/* Remove any leftovers from a previous partial run. */
ignore_value (system ("rm -rf " BASE "*"));
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (readlinkat (-1, "foo", buf, sizeof buf) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (readlinkat (99, "foo", buf, sizeof buf) == -1);
+ ASSERT (errno == EBADF);
+ }
+
/* Perform same checks as counterpart functions. */
result = test_readlink (do_readlink, false);
dfd = openat (AT_FDCWD, ".", O_RDONLY);
--- /dev/null
+/* Test the recv() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <sys/socket.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (recv, ssize_t, (int, void *, size_t, int));
+
+#include <errno.h>
+
+#include "sockets.h"
+#include "macros.h"
+
+int
+main (void)
+{
+ gl_sockets_startup (SOCKETS_1_1);
+
+ /* Test behaviour for invalid file descriptors. */
+ {
+ char byte;
+ errno = 0;
+ ASSERT (recv (-1, &byte, 1, 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ char byte;
+ errno = 0;
+ ASSERT (recv (99, &byte, 1, 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ return 0;
+}
--- /dev/null
+/* Test the recvfrom() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <sys/socket.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (recvfrom, ssize_t,
+ (int, void *, size_t, int,
+ struct sockaddr *, socklen_t *));
+
+#include <errno.h>
+#include <netinet/in.h>
+
+#include "sockets.h"
+#include "macros.h"
+
+int
+main (void)
+{
+ gl_sockets_startup (SOCKETS_1_1);
+
+ /* Test behaviour for invalid file descriptors. */
+ {
+ char byte;
+ struct sockaddr_in addr;
+ socklen_t addrlen = sizeof (addr);
+
+ errno = 0;
+ ASSERT (recvfrom (-1, &byte, 1, 0, (struct sockaddr *) &addr, &addrlen)
+ == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ char byte;
+ struct sockaddr_in addr;
+ socklen_t addrlen = sizeof (addr);
+
+ errno = 0;
+ ASSERT (recvfrom (99, &byte, 1, 0, (struct sockaddr *) &addr, &addrlen)
+ == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ return 0;
+}
errno = 0;
ASSERT (func (BASE "dir2", BASE "dir/.") == -1);
ASSERT (errno == EINVAL || errno == EBUSY || errno == EISDIR
- || errno == ENOTEMPTY);
+ || errno == ENOTEMPTY || errno == EEXIST);
}
{
errno = 0;
errno = 0;
ASSERT (func (BASE "dir2", BASE "dir/.//") == -1);
ASSERT (errno == EINVAL || errno == EBUSY || errno == EISDIR
- || errno == ENOTEMPTY);
+ || errno == ENOTEMPTY || errno == EEXIST);
}
{
errno = 0;
/* Clean up any trash from prior testsuite runs. */
ignore_value (system ("rm -rf " BASE "*"));
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (renameat (-1, "foo", AT_FDCWD, "bar") == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (renameat (99, "foo", AT_FDCWD, "bar") == -1);
+ ASSERT (errno == EBADF);
+ }
+ ASSERT (close (creat (BASE "oo", 0600)) == 0);
+ {
+ errno = 0;
+ ASSERT (renameat (AT_FDCWD, BASE "oo", -1, "bar") == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (renameat (AT_FDCWD, BASE "oo", 99, "bar") == -1);
+ ASSERT (errno == EBADF);
+ }
+ ASSERT (unlink (BASE "oo") == 0);
+
/* Test basic rename functionality, using current directory. */
result = test_rename (do_rename, false);
dfd1 = open (".", O_RDONLY);
errno = 0;
ASSERT (renameat (dfd, BASE "sub2", dfd, BASE "sub1/.") == -1);
ASSERT (errno == EINVAL || errno == EISDIR || errno == EBUSY
- || errno == ENOTEMPTY);
+ || errno == ENOTEMPTY || errno == EEXIST);
errno = 0;
ASSERT (renameat (dfd, BASE "sub2/.", dfd, BASE "sub1") == -1);
ASSERT (errno == EINVAL || errno == EBUSY || errno == EEXIST);
#include "signature.h"
SIGNATURE_CHECK (rint, double, (double));
-#include "macros.h"
+#include <float.h>
+#include <stdio.h>
-volatile double x;
-double y;
+#include "isnand-nolibm.h"
+#include "minus-zero.h"
+#include "infinity.h"
+#include "nan.h"
+#include "macros.h"
int
main ()
{
- /* Assume round-to-nearest rounding (the default in IEEE 754). */
-
- x = 2.1;
- y = rint (x);
- ASSERT (y == 2.0);
-
- x = -2.1;
- y = rint (x);
- ASSERT (y == -2.0);
-
- x = 2.7;
- y = rint (x);
- ASSERT (y == 3.0);
-
- x = -2.7;
- y = rint (x);
- ASSERT (y == -3.0);
-
- x = 2.5;
- y = rint (x);
- ASSERT (y == 2.0);
-
- x = 3.5;
- y = rint (x);
- ASSERT (y == 4.0);
-
- return 0;
+ /* Consider the current rounding mode, cf.
+ <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/float.h.html> */
+ if (FLT_ROUNDS == 1)
+ {
+ /* The current rounding mode is round-to-nearest
+ (the default in IEEE 754). */
+
+ /* Zero. */
+ ASSERT (rint (0.0) == 0.0);
+ ASSERT (rint (minus_zerod) == 0.0);
+ /* Positive numbers. */
+ ASSERT (rint (0.3) == 0.0);
+ ASSERT (rint (0.5) == 0.0); /* unlike round() */
+ ASSERT (rint (0.7) == 1.0);
+ ASSERT (rint (1.0) == 1.0);
+ ASSERT (rint (1.5) == 2.0);
+ ASSERT (rint (1.999) == 2.0);
+ ASSERT (rint (2.0) == 2.0);
+ ASSERT (rint (2.1) == 2.0);
+ ASSERT (rint (2.5) == 2.0); /* unlike round() */
+ ASSERT (rint (2.7) == 3.0);
+ ASSERT (rint (65535.999) == 65536.0);
+ ASSERT (rint (65536.0) == 65536.0);
+ ASSERT (rint (65536.001) == 65536.0);
+ ASSERT (rint (2.341e31) == 2.341e31);
+ /* Negative numbers. */
+ ASSERT (rint (-0.3) == 0.0);
+ ASSERT (rint (-0.5) == 0.0); /* unlike round() */
+ ASSERT (rint (-0.7) == -1.0);
+ ASSERT (rint (-1.0) == -1.0);
+ ASSERT (rint (-1.5) == -2.0);
+ ASSERT (rint (-1.999) == -2.0);
+ ASSERT (rint (-2.0) == -2.0);
+ ASSERT (rint (-2.1) == -2.0);
+ ASSERT (rint (-2.5) == -2.0); /* unlike round() */
+ ASSERT (rint (-2.7) == -3.0);
+ ASSERT (rint (-65535.999) == -65536.0);
+ ASSERT (rint (-65536.0) == -65536.0);
+ ASSERT (rint (-65536.001) == -65536.0);
+ ASSERT (rint (-2.341e31) == -2.341e31);
+ /* Infinite numbers. */
+ ASSERT (rint (Infinityd ()) == Infinityd ());
+ ASSERT (rint (- Infinityd ()) == - Infinityd ());
+ /* NaNs. */
+ ASSERT (isnand (rint (NaNd ())));
+
+ return 0;
+ }
+ else
+ {
+ fputs ("Skipping test: non-standard rounding mode\n", stderr);
+ return 77;
+ }
}
--- /dev/null
+/* Test of rintf() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (rintf, float, (float));
+
+#include <float.h>
+#include <stdio.h>
+
+#include "isnanf-nolibm.h"
+#include "minus-zero.h"
+#include "infinity.h"
+#include "nan.h"
+#include "macros.h"
+
+int
+main ()
+{
+ /* Consider the current rounding mode, cf.
+ <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/float.h.html> */
+ if (FLT_ROUNDS == 1)
+ {
+ /* The current rounding mode is round-to-nearest
+ (the default in IEEE 754). */
+
+ /* Zero. */
+ ASSERT (rintf (0.0f) == 0.0f);
+ ASSERT (rintf (minus_zerof) == 0.0f);
+ /* Positive numbers. */
+ ASSERT (rintf (0.3f) == 0.0f);
+ ASSERT (rintf (0.5f) == 0.0f); /* unlike roundf() */
+ ASSERT (rintf (0.7f) == 1.0f);
+ ASSERT (rintf (1.0f) == 1.0f);
+ ASSERT (rintf (1.5f) == 2.0f);
+ ASSERT (rintf (1.999f) == 2.0f);
+ ASSERT (rintf (2.0f) == 2.0f);
+ ASSERT (rintf (2.1f) == 2.0f);
+ ASSERT (rintf (2.5f) == 2.0f); /* unlike roundf() */
+ ASSERT (rintf (2.7f) == 3.0f);
+ ASSERT (rintf (65535.99f) == 65536.0f);
+ ASSERT (rintf (65536.0f) == 65536.0f);
+ ASSERT (rintf (65536.01f) == 65536.0f);
+ ASSERT (rintf (2.341e31f) == 2.341e31f);
+ /* Negative numbers. */
+ ASSERT (rintf (-0.3f) == 0.0f);
+ ASSERT (rintf (-0.5f) == 0.0f); /* unlike roundf() */
+ ASSERT (rintf (-0.7f) == -1.0f);
+ ASSERT (rintf (-1.0f) == -1.0f);
+ ASSERT (rintf (-1.5f) == -2.0f);
+ ASSERT (rintf (-1.999f) == -2.0f);
+ ASSERT (rintf (-2.0f) == -2.0f);
+ ASSERT (rintf (-2.1f) == -2.0f);
+ ASSERT (rintf (-2.5f) == -2.0f); /* unlike roundf() */
+ ASSERT (rintf (-2.7f) == -3.0f);
+ ASSERT (rintf (-65535.99f) == -65536.0f);
+ ASSERT (rintf (-65536.0f) == -65536.0f);
+ ASSERT (rintf (-65536.01f) == -65536.0f);
+ ASSERT (rintf (-2.341e31f) == -2.341e31f);
+ /* Infinite numbers. */
+ ASSERT (rintf (Infinityf ()) == Infinityf ());
+ ASSERT (rintf (- Infinityf ()) == - Infinityf ());
+ /* NaNs. */
+ ASSERT (isnanf (rintf (NaNf ())));
+
+ return 0;
+ }
+ else
+ {
+ fputs ("Skipping test: non-standard rounding mode\n", stderr);
+ return 77;
+ }
+}
--- /dev/null
+/* Test of rintl() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (rintl, long double, (long double));
+
+#include <float.h>
+#include <stdio.h>
+
+#include "fpucw.h"
+#include "isnanl-nolibm.h"
+#include "minus-zero.h"
+#include "infinity.h"
+#include "nan.h"
+#include "macros.h"
+
+int
+main ()
+{
+ DECL_LONG_DOUBLE_ROUNDING
+
+ BEGIN_LONG_DOUBLE_ROUNDING ();
+
+ /* Consider the current rounding mode, cf.
+ <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/float.h.html> */
+ if (FLT_ROUNDS == 1)
+ {
+ /* The current rounding mode is round-to-nearest
+ (the default in IEEE 754). */
+
+ /* Zero. */
+ ASSERT (rintl (0.0L) == 0.0L);
+ ASSERT (rintl (minus_zerol) == 0.0L);
+ /* Positive numbers. */
+ ASSERT (rintl (0.3L) == 0.0L);
+ ASSERT (rintl (0.5L) == 0.0L); /* unlike roundl() */
+ ASSERT (rintl (0.7L) == 1.0L);
+ ASSERT (rintl (1.0L) == 1.0L);
+ ASSERT (rintl (1.5L) == 2.0L);
+ ASSERT (rintl (1.999L) == 2.0L);
+ ASSERT (rintl (2.0L) == 2.0L);
+ ASSERT (rintl (2.1L) == 2.0L);
+ ASSERT (rintl (2.5L) == 2.0L); /* unlike roundl() */
+ ASSERT (rintl (2.7L) == 3.0L);
+ ASSERT (rintl (65535.999L) == 65536.0L);
+ ASSERT (rintl (65536.0L) == 65536.0L);
+ ASSERT (rintl (65536.001L) == 65536.0L);
+ ASSERT (rintl (2.341e31L) == 2.341e31L);
+ /* Negative numbers. */
+ ASSERT (rintl (-0.3L) == 0.0L);
+ ASSERT (rintl (-0.5L) == 0.0L); /* unlike roundl() */
+ ASSERT (rintl (-0.7L) == -1.0L);
+ ASSERT (rintl (-1.0L) == -1.0L);
+ ASSERT (rintl (-1.5L) == -2.0L);
+ ASSERT (rintl (-1.999L) == -2.0L);
+ ASSERT (rintl (-2.0L) == -2.0L);
+ ASSERT (rintl (-2.1L) == -2.0L);
+ ASSERT (rintl (-2.5L) == -2.0L); /* unlike roundl() */
+ ASSERT (rintl (-2.7L) == -3.0L);
+ ASSERT (rintl (-65535.999L) == -65536.0L);
+ ASSERT (rintl (-65536.0L) == -65536.0L);
+ ASSERT (rintl (-65536.001L) == -65536.0L);
+ ASSERT (rintl (-2.341e31L) == -2.341e31L);
+ /* Infinite numbers. */
+ ASSERT (rintl (Infinityl ()) == Infinityl ());
+ ASSERT (rintl (- Infinityl ()) == - Infinityl ());
+ /* NaNs. */
+ ASSERT (isnanl (rintl (NaNl ())));
+
+ return 0;
+ }
+ else
+ {
+ fputs ("Skipping test: non-standard rounding mode\n", stderr);
+ return 77;
+ }
+}
#include "isnand-nolibm.h"
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
#include "macros.h"
ASSERT (round (-65536.001) == -65536.0);
ASSERT (round (-2.341e31) == -2.341e31);
/* Infinite numbers. */
- ASSERT (round (1.0 / 0.0) == 1.0 / 0.0);
- ASSERT (round (-1.0 / 0.0) == -1.0 / 0.0);
+ ASSERT (round (Infinityd ()) == Infinityd ());
+ ASSERT (round (- Infinityd ()) == - Infinityd ());
/* NaNs. */
ASSERT (isnand (round (NaNd ())));
#include "isnanf-nolibm.h"
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
#include "macros.h"
ASSERT (roundf (-65536.01f) == -65536.0f);
ASSERT (roundf (-2.341e31f) == -2.341e31f);
/* Infinite numbers. */
- ASSERT (roundf (1.0 / 0.0f) == 1.0 / 0.0f);
- ASSERT (roundf (-1.0 / 0.0f) == -1.0 / 0.0f);
+ ASSERT (roundf (Infinityf ()) == Infinityf ());
+ ASSERT (roundf (- Infinityf ()) == - Infinityf ());
/* NaNs. */
ASSERT (isnanf (roundf (NaNf ())));
#include "fpucw.h"
#include "isnanl-nolibm.h"
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
#include "macros.h"
ASSERT (roundl (-65536.001L) == -65536.0L);
ASSERT (roundl (-2.341e31L) == -2.341e31L);
/* Infinite numbers. */
- ASSERT (roundl (1.0 / 0.0L) == 1.0 / 0.0L);
- ASSERT (roundl (-1.0 / 0.0L) == -1.0 / 0.0L);
+ ASSERT (roundl (Infinityl ()) == Infinityl ());
+ ASSERT (roundl (- Infinityl ()) == - Infinityl ());
/* NaNs. */
ASSERT (isnanl (roundl (NaNl ())));
int count2;
count1 = acl (file1, GETACLCNT, 0, NULL);
+ if (count1 < 0 && errno == ENOSYS) /* Can happen on Solaris 10 with ZFS */
+ count1 = 0;
count2 = acl (file2, GETACLCNT, 0, NULL);
+ if (count2 < 0 && errno == ENOSYS) /* Can happen on Solaris 10 with ZFS */
+ count2 = 0;
if (count1 < 0)
{
aclent_t *entries2 = XNMALLOC (count2, aclent_t);
int i;
- if (acl (file1, GETACL, count1, entries1) < count1)
+ if (count1 > 0 && acl (file1, GETACL, count1, entries1) < count1)
{
fprintf (stderr, "error retrieving the ACLs of file %s\n", file1);
fflush (stderr);
abort ();
}
- if (acl (file2, GETACL, count2, entries2) < count1)
+ if (count2 > 0 && acl (file2, GETACL, count2, entries2) < count1)
{
fprintf (stderr, "error retrieving the ACLs of file %s\n", file2);
fflush (stderr);
type1.u64 = ACL_ANY;
if (aclx_get (file1, 0, &type1, acl1, &aclsize1, &mode1) < 0)
{
- fprintf (stderr, "error accessing the ACLs of file %s\n", file1);
- fflush (stderr);
- abort ();
- }
- if (aclx_printStr (text1, &textsize1, acl1, aclsize1, type1, file1, 0) < 0)
- {
- fprintf (stderr, "cannot convert the ACLs of file %s to text\n", file1);
- fflush (stderr);
- abort ();
+ if (errno == ENOSYS)
+ text1[0] = '\0';
+ else
+ {
+ fprintf (stderr, "error accessing the ACLs of file %s\n", file1);
+ fflush (stderr);
+ abort ();
+ }
}
+ else
+ if (aclx_printStr (text1, &textsize1, acl1, aclsize1, type1, file1, 0) < 0)
+ {
+ fprintf (stderr, "cannot convert the ACLs of file %s to text\n", file1);
+ fflush (stderr);
+ abort ();
+ }
/* The docs say that type2 being 0 is equivalent to ACL_ANY, but it is not
true, in AIX 5.3. */
type2.u64 = ACL_ANY;
if (aclx_get (file2, 0, &type2, acl2, &aclsize2, &mode2) < 0)
{
- fprintf (stderr, "error accessing the ACLs of file %s\n", file2);
- fflush (stderr);
- abort ();
- }
- if (aclx_printStr (text2, &textsize2, acl2, aclsize2, type2, file2, 0) < 0)
- {
- fprintf (stderr, "cannot convert the ACLs of file %s to text\n", file2);
- fflush (stderr);
- abort ();
+ if (errno == ENOSYS)
+ text2[0] = '\0';
+ else
+ {
+ fprintf (stderr, "error accessing the ACLs of file %s\n", file2);
+ fflush (stderr);
+ abort ();
+ }
}
+ else
+ if (aclx_printStr (text2, &textsize2, acl2, aclsize2, type2, file2, 0) < 0)
+ {
+ fprintf (stderr, "cannot convert the ACLs of file %s to text\n", file2);
+ fflush (stderr);
+ abort ();
+ }
if (strcmp (text1, text2) != 0)
{
/* Check that the SCHED_* macros are defined and compile-time constants. */
int b[] = { SCHED_FIFO, SCHED_RR, SCHED_OTHER };
+/* Check that the types are all defined. */
+pid_t t1;
+
static int f1;
int
#endif
+/* Test select(2) on invalid file descriptors. */
+
+static int
+do_select_bad_fd (int fd, int ev, struct timeval *timeout, select_fn my_select)
+{
+ fd_set rfds, wfds, xfds;
+
+ FD_ZERO (&rfds);
+ FD_ZERO (&wfds);
+ FD_ZERO (&xfds);
+ if (ev & SEL_IN)
+ FD_SET (fd, &rfds);
+ if (ev & SEL_OUT)
+ FD_SET (fd, &wfds);
+ if (ev & SEL_EXC)
+ FD_SET (fd, &xfds);
+ return my_select (fd + 1, &rfds, &wfds, &xfds, timeout);
+ /* In this case, when fd is invalid, on some platforms, the bit for fd
+ is left alone in the fd_set, whereas on other platforms it is cleared.
+ So, don't check the bit for fd here. */
+}
+
+static int
+do_select_bad_fd_nowait (int fd, int ev, select_fn my_select)
+{
+ struct timeval tv0;
+ tv0.tv_sec = 0;
+ tv0.tv_usec = 0;
+ return do_select_bad_fd (fd, ev, &tv0, my_select);
+}
+
+static void
+test_bad_fd (select_fn my_select)
+{
+ /* This tests fails on OSF/1 and native Windows, even with fd = 16. */
+#if !(defined __osf__ || defined WIN32_NATIVE)
+ int fd;
+
+ /* On Linux, MacOS X, *BSD, values of fd like 99 or 399 are discarded
+ by the kernel early and therefore do *not* lead to EBADF, as required
+ by POSIX. */
+# if defined __linux__ || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __OpenBSD__ || defined __NetBSD__
+ fd = 16;
+# else
+ fd = 99;
+# endif
+
+ if (do_select_bad_fd_nowait (fd, SEL_IN, my_select) == 0 || errno != EBADF)
+ failed ("invalid fd among rfds");
+ if (do_select_bad_fd_nowait (fd, SEL_OUT, my_select) == 0 || errno != EBADF)
+ failed ("invalid fd among wfds");
+ if (do_select_bad_fd_nowait (fd, SEL_EXC, my_select) == 0 || errno != EBADF)
+ failed ("invalid fd among xfds");
+#endif
+}
+
+
/* Test select(2) for unconnected nonblocking sockets. */
static void
static int
test_function (select_fn my_select)
{
- int result;
+ int result = 0;
#ifdef INTERACTIVE
printf ("Please press Enter\n");
test (test_tty, "TTY", my_select);
#endif
- result = test (test_connect_first, my_select, "Unconnected socket test");
+ result += test (test_bad_fd, my_select, "Invalid fd test");
+ result += test (test_connect_first, my_select, "Unconnected socket test");
result += test (test_socket_pair, my_select, "Connected sockets test");
result += test (test_accept_first, my_select, "General socket test with fork");
result += test (test_pipe, my_select, "Pipe test");
--- /dev/null
+/* Test the send() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <sys/socket.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (send, ssize_t, (int, const void *, size_t, int));
+
+#include <errno.h>
+
+#include "sockets.h"
+#include "macros.h"
+
+int
+main (void)
+{
+ gl_sockets_startup (SOCKETS_1_1);
+
+ /* Test behaviour for invalid file descriptors. */
+ {
+ char byte = 'x';
+ errno = 0;
+ ASSERT (send (-1, &byte, 1, 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ char byte = 'x';
+ errno = 0;
+ ASSERT (send (99, &byte, 1, 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ return 0;
+}
--- /dev/null
+/* Test the sendto() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <sys/socket.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (sendto, ssize_t,
+ (int, const void *, size_t, int,
+ const struct sockaddr *, socklen_t));
+
+#include <errno.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+#include "sockets.h"
+#include "macros.h"
+
+int
+main (void)
+{
+ gl_sockets_startup (SOCKETS_1_1);
+
+ /* Test behaviour for invalid file descriptors. */
+ {
+ struct sockaddr_in addr;
+
+ addr.sin_family = AF_INET;
+ inet_pton (AF_INET, "127.0.0.1", &addr.sin_addr);
+ addr.sin_port = htons (80);
+ {
+ char byte = 'x';
+ errno = 0;
+ ASSERT (sendto (-1, &byte, 1, 0,
+ (const struct sockaddr *) &addr, sizeof (addr))
+ == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ char byte = 'x';
+ errno = 0;
+ ASSERT (sendto (99, &byte, 1, 0,
+ (const struct sockaddr *) &addr, sizeof (addr))
+ == -1);
+ ASSERT (errno == EBADF);
+ }
+ }
+
+ return 0;
+}
--- /dev/null
+#!/bin/sh
+
+# Test set-mode-acl on the file system of /var/tmp, which usually is a local
+# file system.
+
+if test -d /var/tmp; then
+ TMPDIR=/var/tmp
+else
+ TMPDIR=/tmp
+fi
+export TMPDIR
+
+exec "${srcdir}/test-set-mode-acl.sh"
--- /dev/null
+#!/bin/sh
+
+# Test set-mode-acl on the file system of the build directory, which may be
+# a local file system or NFS mounted.
+
+TMPDIR=`pwd`
+export TMPDIR
+
+exec "${srcdir}/test-set-mode-acl.sh"
--- /dev/null
+/* Test setsockopt() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <sys/socket.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (setsockopt, int, (int, int, int, const void *, socklen_t));
+
+#include <errno.h>
+
+#include "sockets.h"
+#include "macros.h"
+
+int
+main (void)
+{
+ gl_sockets_startup (SOCKETS_1_1);
+
+ /* Test behaviour for invalid file descriptors. */
+ {
+ int value = 1;
+
+ errno = 0;
+ ASSERT (setsockopt (-1, SOL_SOCKET, SO_REUSEADDR, &value, sizeof (value))
+ == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ int value = 1;
+
+ errno = 0;
+ ASSERT (setsockopt (99, SOL_SOCKET, SO_REUSEADDR, &value, sizeof (value))
+ == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ return 0;
+}
--- /dev/null
+/* Test the shutdown() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <sys/socket.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (shutdown, int, (int, int));
+
+#include <errno.h>
+
+#include "sockets.h"
+#include "macros.h"
+
+int
+main (void)
+{
+ gl_sockets_startup (SOCKETS_1_1);
+
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (shutdown (-1, SHUT_RD) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (shutdown (99, SHUT_RD) == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ return 0;
+}
+++ /dev/null
-/* Test of <signal.h> substitute in C++ mode.
- Copyright (C) 2010-2011 Free Software Foundation, Inc.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-/* Written by Bruno Haible <bruno@clisp.org>, 2010. */
-
-#define GNULIB_NAMESPACE gnulib
-#include <config.h>
-
-#include <signal.h>
-
-#include "signature.h"
-
-
-#if GNULIB_TEST_PTHREAD_SIGMASK
-SIGNATURE_CHECK (GNULIB_NAMESPACE::pthread_sigmask, int,
- (int, const sigset_t *, sigset_t *));
-#endif
-
-#if GNULIB_TEST_SIGPROCMASK
-SIGNATURE_CHECK (GNULIB_NAMESPACE::sigismember, int, (const sigset_t *, int));
-SIGNATURE_CHECK (GNULIB_NAMESPACE::sigemptyset, int, (sigset_t *));
-SIGNATURE_CHECK (GNULIB_NAMESPACE::sigaddset, int, (sigset_t *, int));
-SIGNATURE_CHECK (GNULIB_NAMESPACE::sigdelset, int, (sigset_t *, int));
-SIGNATURE_CHECK (GNULIB_NAMESPACE::sigfillset, int, (sigset_t *));
-SIGNATURE_CHECK (GNULIB_NAMESPACE::sigpending, int, (sigset_t *));
-SIGNATURE_CHECK (GNULIB_NAMESPACE::sigprocmask, int,
- (int, const sigset_t *, sigset_t *));
-SIGNATURE_CHECK (GNULIB_NAMESPACE::signal,
- _gl_function_taking_int_returning_void_t,
- (int, _gl_function_taking_int_returning_void_t));
-SIGNATURE_CHECK (GNULIB_NAMESPACE::raise, int, (int));
-#endif
-
-#if GNULIB_TEST_SIGACTION
-SIGNATURE_CHECK (GNULIB_NAMESPACE::sigaction, int,
- (int, const struct sigaction *, struct sigaction *));
-#endif
-
-
-int
-main ()
-{
-}
+++ /dev/null
-/* Test of <signal.h> substitute in C++ mode.
- Copyright (C) 2010-2011 Free Software Foundation, Inc.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#define GNULIB_NAMESPACE gnulib
-#include <config.h>
-
-#include <csignal>
--- /dev/null
+/* Test of <signal.h> substitute in C++ mode.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010. */
+
+#define GNULIB_NAMESPACE gnulib
+#include <config.h>
+
+#include <signal.h>
+
+#include "signature.h"
+
+
+#if GNULIB_TEST_PTHREAD_SIGMASK
+SIGNATURE_CHECK (GNULIB_NAMESPACE::pthread_sigmask, int,
+ (int, const sigset_t *, sigset_t *));
+#endif
+
+#if GNULIB_TEST_RAISE
+SIGNATURE_CHECK (GNULIB_NAMESPACE::raise, int, (int));
+#endif
+
+#if GNULIB_TEST_SIGPROCMASK
+SIGNATURE_CHECK (GNULIB_NAMESPACE::sigismember, int, (const sigset_t *, int));
+SIGNATURE_CHECK (GNULIB_NAMESPACE::sigemptyset, int, (sigset_t *));
+SIGNATURE_CHECK (GNULIB_NAMESPACE::sigaddset, int, (sigset_t *, int));
+SIGNATURE_CHECK (GNULIB_NAMESPACE::sigdelset, int, (sigset_t *, int));
+SIGNATURE_CHECK (GNULIB_NAMESPACE::sigfillset, int, (sigset_t *));
+SIGNATURE_CHECK (GNULIB_NAMESPACE::sigpending, int, (sigset_t *));
+SIGNATURE_CHECK (GNULIB_NAMESPACE::sigprocmask, int,
+ (int, const sigset_t *, sigset_t *));
+SIGNATURE_CHECK (GNULIB_NAMESPACE::signal,
+ _gl_function_taking_int_returning_void_t,
+ (int, _gl_function_taking_int_returning_void_t));
+SIGNATURE_CHECK (GNULIB_NAMESPACE::raise, int, (int));
+#endif
+
+#if GNULIB_TEST_SIGACTION
+SIGNATURE_CHECK (GNULIB_NAMESPACE::sigaction, int,
+ (int, const struct sigaction *, struct sigaction *));
+#endif
+
+
+int
+main ()
+{
+}
--- /dev/null
+/* Test of <signal.h> substitute in C++ mode.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#define GNULIB_NAMESPACE gnulib
+#include <config.h>
+
+#include <csignal>
--- /dev/null
+/* Test of <signal.h> substitute.
+ Copyright (C) 2009-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Eric Blake <ebb9@byu.net>, 2009. */
+
+#include <config.h>
+
+#include <signal.h>
+
+/* Check for required types. */
+struct
+{
+ size_t a;
+ uid_t b;
+ volatile sig_atomic_t c;
+ sigset_t d;
+ pid_t e;
+#if 0
+ /* Not guaranteed by gnulib. */
+ pthread_t f;
+ struct timespec g;
+#endif
+} s;
+
+/* Check that NSIG is defined. */
+int nsig = NSIG;
+
+int
+main (void)
+{
+ switch (0)
+ {
+ /* The following are guaranteed by C. */
+ case 0:
+ case SIGABRT:
+ case SIGFPE:
+ case SIGILL:
+ case SIGINT:
+ case SIGSEGV:
+ case SIGTERM:
+ /* The following is guaranteed by gnulib. */
+#if GNULIB_SIGPIPE || defined SIGPIPE
+ case SIGPIPE:
+#endif
+ /* Ensure no conflict with other standardized names. */
+#ifdef SIGALRM
+ case SIGALRM:
+#endif
+ /* On Haiku, SIGBUS is mistakenly equal to SIGSEGV. */
+#if defined SIGBUS && SIGBUS != SIGSEGV
+ case SIGBUS:
+#endif
+#ifdef SIGCHLD
+ case SIGCHLD:
+#endif
+#ifdef SIGCONT
+ case SIGCONT:
+#endif
+#ifdef SIGHUP
+ case SIGHUP:
+#endif
+#ifdef SIGKILL
+ case SIGKILL:
+#endif
+#ifdef SIGQUIT
+ case SIGQUIT:
+#endif
+#ifdef SIGSTOP
+ case SIGSTOP:
+#endif
+#ifdef SIGTSTP
+ case SIGTSTP:
+#endif
+#ifdef SIGTTIN
+ case SIGTTIN:
+#endif
+#ifdef SIGTTOU
+ case SIGTTOU:
+#endif
+#ifdef SIGUSR1
+ case SIGUSR1:
+#endif
+#ifdef SIGUSR2
+ case SIGUSR2:
+#endif
+#ifdef SIGSYS
+ case SIGSYS:
+#endif
+#ifdef SIGTRAP
+ case SIGTRAP:
+#endif
+#ifdef SIGURG
+ case SIGURG:
+#endif
+#ifdef SIGVTALRM
+ case SIGVTALRM:
+#endif
+#ifdef SIGXCPU
+ case SIGXCPU:
+#endif
+#ifdef SIGXFSZ
+ case SIGXFSZ:
+#endif
+ /* SIGRTMIN and SIGRTMAX need not be compile-time constants. */
+#if 0
+# ifdef SIGRTMIN
+ case SIGRTMIN:
+# endif
+# ifdef SIGRTMAX
+ case SIGRTMAX:
+# endif
+#endif
+ ;
+ }
+ return s.a + s.b + s.c + s.e;
+}
+++ /dev/null
-/* Test of <signal.h> substitute.
- Copyright (C) 2009-2011 Free Software Foundation, Inc.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-/* Written by Eric Blake <ebb9@byu.net>, 2009. */
-
-#include <config.h>
-
-#include <signal.h>
-
-/* Check for required types. */
-struct
-{
- size_t a;
- uid_t b;
- volatile sig_atomic_t c;
- sigset_t d;
- pid_t e;
-#if 0
- /* Not guaranteed by gnulib. */
- pthread_t f;
- struct timespec g;
-#endif
-} s;
-
-/* Check that NSIG is defined. */
-int nsig = NSIG;
-
-int
-main (void)
-{
- switch (0)
- {
- /* The following are guaranteed by C. */
- case 0:
- case SIGABRT:
- case SIGFPE:
- case SIGILL:
- case SIGINT:
- case SIGSEGV:
- case SIGTERM:
- /* The following is guaranteed by gnulib. */
-#if GNULIB_SIGPIPE || defined SIGPIPE
- case SIGPIPE:
-#endif
- /* Ensure no conflict with other standardized names. */
-#ifdef SIGALRM
- case SIGALRM:
-#endif
- /* On Haiku, SIGBUS is mistakenly equal to SIGSEGV. */
-#if defined SIGBUS && SIGBUS != SIGSEGV
- case SIGBUS:
-#endif
-#ifdef SIGCHLD
- case SIGCHLD:
-#endif
-#ifdef SIGCONT
- case SIGCONT:
-#endif
-#ifdef SIGHUP
- case SIGHUP:
-#endif
-#ifdef SIGKILL
- case SIGKILL:
-#endif
-#ifdef SIGQUIT
- case SIGQUIT:
-#endif
-#ifdef SIGSTOP
- case SIGSTOP:
-#endif
-#ifdef SIGTSTP
- case SIGTSTP:
-#endif
-#ifdef SIGTTIN
- case SIGTTIN:
-#endif
-#ifdef SIGTTOU
- case SIGTTOU:
-#endif
-#ifdef SIGUSR1
- case SIGUSR1:
-#endif
-#ifdef SIGUSR2
- case SIGUSR2:
-#endif
-#ifdef SIGSYS
- case SIGSYS:
-#endif
-#ifdef SIGTRAP
- case SIGTRAP:
-#endif
-#ifdef SIGURG
- case SIGURG:
-#endif
-#ifdef SIGVTALRM
- case SIGVTALRM:
-#endif
-#ifdef SIGXCPU
- case SIGXCPU:
-#endif
-#ifdef SIGXFSZ
- case SIGXFSZ:
-#endif
- /* SIGRTMIN and SIGRTMAX need not be compile-time constants. */
-#if 0
-# ifdef SIGRTMIN
- case SIGRTMIN:
-# endif
-# ifdef SIGRTMAX
- case SIGRTMAX:
-# endif
-#endif
- ;
- }
- return s.a + s.b + s.c + s.e;
-}
#include <limits.h>
#include "minus-zero.h"
+#include "infinity.h"
#include "macros.h"
float zerof = 0.0f;
else
ASSERT (!signbit (minus_zerof));
/* Infinite values. */
- ASSERT (!signbit (1.0f / 0.0f));
- ASSERT (signbit (-1.0f / 0.0f));
+ ASSERT (!signbit (Infinityf ()));
+ ASSERT (signbit (- Infinityf ()));
/* Quiet NaN. */
(void) signbit (zerof / zerof);
#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
else
ASSERT (!signbit (minus_zerod));
/* Infinite values. */
- ASSERT (!signbit (1.0 / 0.0));
- ASSERT (signbit (-1.0 / 0.0));
+ ASSERT (!signbit (Infinityd ()));
+ ASSERT (signbit (- Infinityd ()));
/* Quiet NaN. */
(void) signbit (zerod / zerod);
#if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT
else
ASSERT (!signbit (minus_zerol));
/* Infinite values. */
- ASSERT (!signbit (1.0L / 0.0L));
- ASSERT (signbit (-1.0L / 0.0L));
+ ASSERT (!signbit (Infinityl ()));
+ ASSERT (signbit (- Infinityl ()));
/* Quiet NaN. */
(void) signbit (zerol / zerol);
#if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT
--- /dev/null
+/* Test of sinf() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010-2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (sinf, float, (float));
+
+#include "macros.h"
+
+volatile float x;
+float y;
+
+int
+main ()
+{
+ /* A particular value. */
+ x = 0.6f;
+ y = sinf (x);
+ ASSERT (y >= 0.5646424f && y <= 0.5646426f);
+
+ return 0;
+}
--- /dev/null
+/* Test of sinhf() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010-2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (sinhf, float, (float));
+
+#include "macros.h"
+
+volatile float x;
+float y;
+
+int
+main ()
+{
+ /* A particular value. */
+ x = 0.6f;
+ y = sinhf (x);
+ ASSERT (y >= 0.6366535f && y <= 0.6366537f);
+
+ return 0;
+}
/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
/* The SGI MIPS floating-point format does not distinguish 0.0 and -0.0. */
{ /* Positive infinity. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%a %d", 1.0 / 0.0, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%a %d", Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, "inf 33") == 0);
ASSERT (retval == strlen (result));
}
{ /* Negative infinity. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%a %d", -1.0 / 0.0, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%a %d", - Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, "-inf 33") == 0);
ASSERT (retval == strlen (result));
}
{ /* FLAG_ZERO with infinite number. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%010a %d", 1.0 / 0.0, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%010a %d", Infinityd (), 33, 44, 55);
/* "0000000inf 33" is not a valid result; see
<http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
ASSERT (strcmp (result, " inf 33") == 0);
{ /* Positive infinity. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%La %d", 1.0L / 0.0L, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%La %d", Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, "inf 33") == 0);
ASSERT (retval == strlen (result));
}
{ /* Negative infinity. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%La %d", -1.0L / 0.0L, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%La %d", - Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, "-inf 33") == 0);
ASSERT (retval == strlen (result));
}
&& strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (retval == strlen (result));
}
-#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
{ /* Quiet NaN. */
static union { unsigned int word[4]; long double value; } x =
{ LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
{ /* FLAG_ZERO with infinite number. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%010La %d", 1.0L / 0.0L, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%010La %d", Infinityl (), 33, 44, 55);
/* "0000000inf 33" is not a valid result; see
<http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
ASSERT (strcmp (result, " inf 33") == 0);
{ /* Positive infinity. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%f %d", 1.0 / 0.0, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%f %d", Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Negative infinity. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%f %d", -1.0 / 0.0, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%f %d", - Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* FLAG_ZERO with infinite number. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%015f %d", -1.0 / 0.0, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%015f %d", - Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Positive infinity. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%Lf %d", 1.0L / 0.0L, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%Lf %d", Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Negative infinity. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%Lf %d", -1.0L / 0.0L, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%Lf %d", - Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
ASSERT (retval == strlen (result));
&& strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (retval == strlen (result));
}
-#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
{ /* Quiet NaN. */
static union { unsigned int word[4]; long double value; } x =
{ LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
{ /* FLAG_ZERO with infinite number. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%015Lf %d", -1.0L / 0.0L, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%015Lf %d", - Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Positive infinity. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%F %d", 1.0 / 0.0, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%F %d", Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, "INF 33") == 0
|| strcmp (result, "INFINITY 33") == 0);
ASSERT (retval == strlen (result));
{ /* Negative infinity. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%F %d", -1.0 / 0.0, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%F %d", - Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, "-INF 33") == 0
|| strcmp (result, "-INFINITY 33") == 0);
ASSERT (retval == strlen (result));
{ /* FLAG_ZERO with infinite number. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%015F %d", -1.0 / 0.0, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%015F %d", - Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, " -INF 33") == 0
|| strcmp (result, " -INFINITY 33") == 0);
ASSERT (retval == strlen (result));
{ /* Positive infinity. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%LF %d", 1.0L / 0.0L, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%LF %d", Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, "INF 33") == 0
|| strcmp (result, "INFINITY 33") == 0);
ASSERT (retval == strlen (result));
{ /* Negative infinity. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%LF %d", -1.0L / 0.0L, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%LF %d", - Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, "-INF 33") == 0
|| strcmp (result, "-INFINITY 33") == 0);
ASSERT (retval == strlen (result));
{ /* FLAG_ZERO with infinite number. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%015LF %d", -1.0L / 0.0L, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%015LF %d", - Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, " -INF 33") == 0
|| strcmp (result, " -INFINITY 33") == 0);
ASSERT (retval == strlen (result));
{ /* Positive infinity. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%e %d", 1.0 / 0.0, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%e %d", Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Negative infinity. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%e %d", -1.0 / 0.0, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%e %d", - Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* FLAG_ZERO with infinite number. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%015e %d", -1.0 / 0.0, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%015e %d", - Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Positive infinity. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%Le %d", 1.0L / 0.0L, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%Le %d", Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Negative infinity. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%Le %d", -1.0L / 0.0L, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%Le %d", - Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
ASSERT (retval == strlen (result));
&& strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (retval == strlen (result));
}
-#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
{ /* Quiet NaN. */
static union { unsigned int word[4]; long double value; } x =
{ LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
{ /* FLAG_ZERO with infinite number. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%015Le %d", -1.0L / 0.0L, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%015Le %d", - Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Positive infinity. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%g %d", 1.0 / 0.0, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%g %d", Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Negative infinity. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%g %d", -1.0 / 0.0, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%g %d", - Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* FLAG_ZERO with infinite number. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%015g %d", -1.0 / 0.0, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%015g %d", - Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Positive infinity. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%Lg %d", 1.0L / 0.0L, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%Lg %d", Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Negative infinity. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%Lg %d", -1.0L / 0.0L, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%Lg %d", - Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
ASSERT (retval == strlen (result));
&& strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (retval == strlen (result));
}
-#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
{ /* Quiet NaN. */
static union { unsigned int word[4]; long double value; } x =
{ LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
{ /* FLAG_ZERO with infinite number. */
char result[100];
int retval =
- my_snprintf (result, sizeof (result), "%015Lg %d", -1.0L / 0.0L, 33, 44, 55);
+ my_snprintf (result, sizeof (result), "%015Lg %d", - Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
ASSERT (retval == strlen (result));
/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
/* The SGI MIPS floating-point format does not distinguish 0.0 and -0.0. */
{ /* Positive infinity. */
char result[1000];
int retval =
- my_sprintf (result, "%a %d", 1.0 / 0.0, 33, 44, 55);
+ my_sprintf (result, "%a %d", Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, "inf 33") == 0);
ASSERT (retval == strlen (result));
}
{ /* Negative infinity. */
char result[1000];
int retval =
- my_sprintf (result, "%a %d", -1.0 / 0.0, 33, 44, 55);
+ my_sprintf (result, "%a %d", - Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, "-inf 33") == 0);
ASSERT (retval == strlen (result));
}
{ /* FLAG_ZERO with infinite number. */
char result[1000];
int retval =
- my_sprintf (result, "%010a %d", 1.0 / 0.0, 33, 44, 55);
+ my_sprintf (result, "%010a %d", Infinityd (), 33, 44, 55);
/* "0000000inf 33" is not a valid result; see
<http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
ASSERT (strcmp (result, " inf 33") == 0);
{ /* Positive infinity. */
char result[1000];
int retval =
- my_sprintf (result, "%La %d", 1.0L / 0.0L, 33, 44, 55);
+ my_sprintf (result, "%La %d", Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, "inf 33") == 0);
ASSERT (retval == strlen (result));
}
{ /* Negative infinity. */
char result[1000];
int retval =
- my_sprintf (result, "%La %d", -1.0L / 0.0L, 33, 44, 55);
+ my_sprintf (result, "%La %d", - Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, "-inf 33") == 0);
ASSERT (retval == strlen (result));
}
&& strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (retval == strlen (result));
}
-#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
{ /* Quiet NaN. */
static union { unsigned int word[4]; long double value; } x =
{ LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
{ /* FLAG_ZERO with infinite number. */
char result[1000];
int retval =
- my_sprintf (result, "%010La %d", 1.0L / 0.0L, 33, 44, 55);
+ my_sprintf (result, "%010La %d", Infinityl (), 33, 44, 55);
/* "0000000inf 33" is not a valid result; see
<http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
ASSERT (strcmp (result, " inf 33") == 0);
{ /* Positive infinity. */
char result[1000];
int retval =
- my_sprintf (result, "%f %d", 1.0 / 0.0, 33, 44, 55);
+ my_sprintf (result, "%f %d", Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Negative infinity. */
char result[1000];
int retval =
- my_sprintf (result, "%f %d", -1.0 / 0.0, 33, 44, 55);
+ my_sprintf (result, "%f %d", - Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* FLAG_ZERO with infinite number. */
char result[1000];
int retval =
- my_sprintf (result, "%015f %d", -1.0 / 0.0, 33, 44, 55);
+ my_sprintf (result, "%015f %d", - Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Positive infinity. */
char result[1000];
int retval =
- my_sprintf (result, "%Lf %d", 1.0L / 0.0L, 33, 44, 55);
+ my_sprintf (result, "%Lf %d", Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Negative infinity. */
char result[1000];
int retval =
- my_sprintf (result, "%Lf %d", -1.0L / 0.0L, 33, 44, 55);
+ my_sprintf (result, "%Lf %d", - Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
ASSERT (retval == strlen (result));
&& strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (retval == strlen (result));
}
-#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
{ /* Quiet NaN. */
static union { unsigned int word[4]; long double value; } x =
{ LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
{ /* FLAG_ZERO with infinite number. */
char result[1000];
int retval =
- my_sprintf (result, "%015Lf %d", -1.0L / 0.0L, 33, 44, 55);
+ my_sprintf (result, "%015Lf %d", - Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Positive infinity. */
char result[1000];
int retval =
- my_sprintf (result, "%F %d", 1.0 / 0.0, 33, 44, 55);
+ my_sprintf (result, "%F %d", Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, "INF 33") == 0
|| strcmp (result, "INFINITY 33") == 0);
ASSERT (retval == strlen (result));
{ /* Negative infinity. */
char result[1000];
int retval =
- my_sprintf (result, "%F %d", -1.0 / 0.0, 33, 44, 55);
+ my_sprintf (result, "%F %d", - Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, "-INF 33") == 0
|| strcmp (result, "-INFINITY 33") == 0);
ASSERT (retval == strlen (result));
{ /* FLAG_ZERO with infinite number. */
char result[1000];
int retval =
- my_sprintf (result, "%015F %d", -1.0 / 0.0, 33, 44, 55);
+ my_sprintf (result, "%015F %d", - Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, " -INF 33") == 0
|| strcmp (result, " -INFINITY 33") == 0);
ASSERT (retval == strlen (result));
{ /* Positive infinity. */
char result[1000];
int retval =
- my_sprintf (result, "%LF %d", 1.0L / 0.0L, 33, 44, 55);
+ my_sprintf (result, "%LF %d", Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, "INF 33") == 0
|| strcmp (result, "INFINITY 33") == 0);
ASSERT (retval == strlen (result));
{ /* Negative infinity. */
char result[1000];
int retval =
- my_sprintf (result, "%LF %d", -1.0L / 0.0L, 33, 44, 55);
+ my_sprintf (result, "%LF %d", - Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, "-INF 33") == 0
|| strcmp (result, "-INFINITY 33") == 0);
ASSERT (retval == strlen (result));
{ /* FLAG_ZERO with infinite number. */
char result[1000];
int retval =
- my_sprintf (result, "%015LF %d", -1.0L / 0.0L, 33, 44, 55);
+ my_sprintf (result, "%015LF %d", - Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, " -INF 33") == 0
|| strcmp (result, " -INFINITY 33") == 0);
ASSERT (retval == strlen (result));
{ /* Positive infinity. */
char result[1000];
int retval =
- my_sprintf (result, "%e %d", 1.0 / 0.0, 33, 44, 55);
+ my_sprintf (result, "%e %d", Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Negative infinity. */
char result[1000];
int retval =
- my_sprintf (result, "%e %d", -1.0 / 0.0, 33, 44, 55);
+ my_sprintf (result, "%e %d", - Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* FLAG_ZERO with infinite number. */
char result[1000];
int retval =
- my_sprintf (result, "%015e %d", -1.0 / 0.0, 33, 44, 55);
+ my_sprintf (result, "%015e %d", - Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Positive infinity. */
char result[1000];
int retval =
- my_sprintf (result, "%Le %d", 1.0L / 0.0L, 33, 44, 55);
+ my_sprintf (result, "%Le %d", Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Negative infinity. */
char result[1000];
int retval =
- my_sprintf (result, "%Le %d", -1.0L / 0.0L, 33, 44, 55);
+ my_sprintf (result, "%Le %d", - Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
ASSERT (retval == strlen (result));
&& strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (retval == strlen (result));
}
-#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
{ /* Quiet NaN. */
static union { unsigned int word[4]; long double value; } x =
{ LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
{ /* FLAG_ZERO with infinite number. */
char result[1000];
int retval =
- my_sprintf (result, "%015Le %d", -1.0L / 0.0L, 33, 44, 55);
+ my_sprintf (result, "%015Le %d", - Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Positive infinity. */
char result[1000];
int retval =
- my_sprintf (result, "%g %d", 1.0 / 0.0, 33, 44, 55);
+ my_sprintf (result, "%g %d", Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Negative infinity. */
char result[1000];
int retval =
- my_sprintf (result, "%g %d", -1.0 / 0.0, 33, 44, 55);
+ my_sprintf (result, "%g %d", - Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* FLAG_ZERO with infinite number. */
char result[1000];
int retval =
- my_sprintf (result, "%015g %d", -1.0 / 0.0, 33, 44, 55);
+ my_sprintf (result, "%015g %d", - Infinityd (), 33, 44, 55);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Positive infinity. */
char result[1000];
int retval =
- my_sprintf (result, "%Lg %d", 1.0L / 0.0L, 33, 44, 55);
+ my_sprintf (result, "%Lg %d", Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
ASSERT (retval == strlen (result));
{ /* Negative infinity. */
char result[1000];
int retval =
- my_sprintf (result, "%Lg %d", -1.0L / 0.0L, 33, 44, 55);
+ my_sprintf (result, "%Lg %d", - Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
ASSERT (retval == strlen (result));
&& strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (retval == strlen (result));
}
-#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
{ /* Quiet NaN. */
static union { unsigned int word[4]; long double value; } x =
{ LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
{ /* FLAG_ZERO with infinite number. */
char result[1000];
int retval =
- my_sprintf (result, "%015Lg %d", -1.0L / 0.0L, 33, 44, 55);
+ my_sprintf (result, "%015Lg %d", - Infinityl (), 33, 44, 55);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
ASSERT (retval == strlen (result));
--- /dev/null
+/* Test of sqrtf() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010-2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (sqrtf, float, (float));
+
+#include "macros.h"
+
+volatile float x;
+float y;
+
+int
+main ()
+{
+ /* A particular value. */
+ x = 0.6f;
+ y = sqrtf (x);
+ ASSERT (y >= 0.7745966f && y <= 0.7745967f);
+
+ return 0;
+}
--- /dev/null
+/* Test of <stdalign.h>.
+ Copyright 2009-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Paul Eggert, inspired by Bruno Haible's test-alignof.c. */
+
+#include <config.h>
+
+#include <stdalign.h>
+
+#include <stddef.h>
+#include <stdint.h>
+
+#include "verify.h"
+
+#include "macros.h"
+
+typedef long double longdouble;
+typedef struct { char a[1]; } struct1;
+typedef struct { char a[2]; } struct2;
+typedef struct { char a[3]; } struct3;
+typedef struct { char a[4]; } struct4;
+
+verify (__alignof_is_defined == 1);
+#ifndef alignof
+# error "alignof is not a macro"
+#endif
+
+#if __alignas_is_defined
+verify (__alignas_is_defined == 1);
+# ifndef alignas
+# error "alignas is not a macro"
+# endif
+/* mingw can go up only to 8. 8 is all that GNU Emacs needs, so let's
+ limit the test to 8 for now. */
+# define TEST_ALIGNMENT 8
+#else
+# define _Alignas(alignment)
+# define alignas(alignment)
+# define TEST_ALIGNMENT 1
+#endif
+
+#define CHECK_STATIC(type) \
+ typedef struct { char slot1; type slot2; } type##_helper; \
+ verify (alignof (type) == offsetof (type##_helper, slot2)); \
+ verify (_Alignof (type) == alignof (type)); \
+ const int type##_alignment = alignof (type); \
+ type alignas (TEST_ALIGNMENT) static_##type##_alignas; \
+ type _Alignas (TEST_ALIGNMENT) static_##type##_Alignas
+
+#define CHECK_ALIGNED(var) ASSERT ((uintptr_t) &(var) % TEST_ALIGNMENT == 0)
+
+CHECK_STATIC (char);
+CHECK_STATIC (short);
+CHECK_STATIC (int);
+CHECK_STATIC (long);
+#ifdef INT64_MAX
+CHECK_STATIC (int64_t);
+#endif
+CHECK_STATIC (float);
+CHECK_STATIC (double);
+/* CHECK_STATIC (longdouble); */
+CHECK_STATIC (struct1);
+CHECK_STATIC (struct2);
+CHECK_STATIC (struct3);
+CHECK_STATIC (struct4);
+
+int
+main ()
+{
+#if defined __SUNPRO_C
+ /* Avoid a test failure due to Sun Studio Developer Bug Report #2125432. */
+ fputs ("Skipping test: known Sun C compiler bug\n", stderr);
+ return 77;
+#else
+ CHECK_ALIGNED (static_char_alignas);
+ CHECK_ALIGNED (static_char_Alignas);
+ CHECK_ALIGNED (static_short_alignas);
+ CHECK_ALIGNED (static_short_Alignas);
+ CHECK_ALIGNED (static_int_alignas);
+ CHECK_ALIGNED (static_int_Alignas);
+ CHECK_ALIGNED (static_long_alignas);
+ CHECK_ALIGNED (static_long_Alignas);
+# ifdef INT64_MAX
+ CHECK_ALIGNED (static_int64_t_alignas);
+ CHECK_ALIGNED (static_int64_t_Alignas);
+# endif
+ CHECK_ALIGNED (static_float_alignas);
+ CHECK_ALIGNED (static_float_Alignas);
+ CHECK_ALIGNED (static_double_alignas);
+ CHECK_ALIGNED (static_double_Alignas);
+ /* CHECK_ALIGNED (static_longdouble_alignas); */
+ /* CHECK_ALIGNED (static_longdouble_Alignas); */
+ CHECK_ALIGNED (static_struct1_alignas);
+ CHECK_ALIGNED (static_struct1_Alignas);
+ CHECK_ALIGNED (static_struct2_alignas);
+ CHECK_ALIGNED (static_struct2_Alignas);
+ CHECK_ALIGNED (static_struct3_alignas);
+ CHECK_ALIGNED (static_struct3_Alignas);
+ CHECK_ALIGNED (static_struct4_alignas);
+ CHECK_ALIGNED (static_struct4_Alignas);
+ return 0;
+#endif
+}
SIGNATURE_CHECK (GNULIB_NAMESPACE::fclose, int, (FILE *));
#endif
+#if GNULIB_TEST_FDOPEN
+SIGNATURE_CHECK (GNULIB_NAMESPACE::fdopen, FILE *, (int, const char *));
+#endif
+
#if GNULIB_TEST_FFLUSH
SIGNATURE_CHECK (GNULIB_NAMESPACE::fflush, int, (FILE *));
#endif
--- /dev/null
+/*
+ * Copyright (C) 2011 Free Software Foundation, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <inttypes.h>
+
+#include "signature.h"
+#ifndef strtoimax
+SIGNATURE_CHECK (strtoimax, intmax_t, (const char *, char **, int));
+#endif
+
+#include <errno.h>
+
+#include "macros.h"
+
+int
+main (void)
+{
+ /* Subject sequence empty or invalid. */
+ {
+ const char input[] = "";
+ char *ptr;
+ intmax_t result;
+ errno = 0;
+ result = strtoimax (input, &ptr, 10);
+ ASSERT (result == 0);
+ ASSERT (ptr == input);
+ ASSERT (errno == 0 || errno == EINVAL);
+ }
+ {
+ const char input[] = " ";
+ char *ptr;
+ intmax_t result;
+ errno = 0;
+ result = strtoimax (input, &ptr, 10);
+ ASSERT (result == 0);
+ ASSERT (ptr == input);
+ ASSERT (errno == 0 || errno == EINVAL);
+ }
+ {
+ const char input[] = " +";
+ char *ptr;
+ intmax_t result;
+ errno = 0;
+ result = strtoimax (input, &ptr, 10);
+ ASSERT (result == 0);
+ ASSERT (ptr == input);
+ ASSERT (errno == 0 || errno == EINVAL);
+ }
+ {
+ const char input[] = " -";
+ char *ptr;
+ intmax_t result;
+ errno = 0;
+ result = strtoimax (input, &ptr, 10);
+ ASSERT (result == 0);
+ ASSERT (ptr == input);
+ ASSERT (errno == 0 || errno == EINVAL);
+ }
+
+ /* Simple integer values. */
+ {
+ const char input[] = "0";
+ char *ptr;
+ intmax_t result;
+ errno = 0;
+ result = strtoimax (input, &ptr, 10);
+ ASSERT (result == 0);
+ ASSERT (ptr == input + 1);
+ ASSERT (errno == 0);
+ }
+ {
+ const char input[] = "+0";
+ char *ptr;
+ intmax_t result;
+ errno = 0;
+ result = strtoimax (input, &ptr, 10);
+ ASSERT (result == 0);
+ ASSERT (ptr == input + 2);
+ ASSERT (errno == 0);
+ }
+ {
+ const char input[] = "-0";
+ char *ptr;
+ intmax_t result;
+ errno = 0;
+ result = strtoimax (input, &ptr, 10);
+ ASSERT (result == 0);
+ ASSERT (ptr == input + 2);
+ ASSERT (errno == 0);
+ }
+ {
+ const char input[] = "23";
+ char *ptr;
+ intmax_t result;
+ errno = 0;
+ result = strtoimax (input, &ptr, 10);
+ ASSERT (result == 23);
+ ASSERT (ptr == input + 2);
+ ASSERT (errno == 0);
+ }
+ {
+ const char input[] = " 23";
+ char *ptr;
+ intmax_t result;
+ errno = 0;
+ result = strtoimax (input, &ptr, 10);
+ ASSERT (result == 23);
+ ASSERT (ptr == input + 3);
+ ASSERT (errno == 0);
+ }
+ {
+ const char input[] = "+23";
+ char *ptr;
+ intmax_t result;
+ errno = 0;
+ result = strtoimax (input, &ptr, 10);
+ ASSERT (result == 23);
+ ASSERT (ptr == input + 3);
+ ASSERT (errno == 0);
+ }
+ {
+ const char input[] = "-23";
+ char *ptr;
+ intmax_t result;
+ errno = 0;
+ result = strtoimax (input, &ptr, 10);
+ ASSERT (result == -23);
+ ASSERT (ptr == input + 3);
+ ASSERT (errno == 0);
+ }
+
+ return 0;
+}
--- /dev/null
+/*
+ * Copyright (C) 2011 Free Software Foundation, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <inttypes.h>
+
+#include "signature.h"
+#ifndef strtoumax
+SIGNATURE_CHECK (strtoumax, uintmax_t, (const char *, char **, int));
+#endif
+
+#include <errno.h>
+
+#include "macros.h"
+
+int
+main (void)
+{
+ /* Subject sequence empty or invalid. */
+ {
+ const char input[] = "";
+ char *ptr;
+ uintmax_t result;
+ errno = 0;
+ result = strtoumax (input, &ptr, 10);
+ ASSERT (result == 0);
+ ASSERT (ptr == input);
+ ASSERT (errno == 0 || errno == EINVAL);
+ }
+ {
+ const char input[] = " ";
+ char *ptr;
+ uintmax_t result;
+ errno = 0;
+ result = strtoumax (input, &ptr, 10);
+ ASSERT (result == 0);
+ ASSERT (ptr == input);
+ ASSERT (errno == 0 || errno == EINVAL);
+ }
+ {
+ const char input[] = " +";
+ char *ptr;
+ uintmax_t result;
+ errno = 0;
+ result = strtoumax (input, &ptr, 10);
+ ASSERT (result == 0);
+ ASSERT (ptr == input);
+ ASSERT (errno == 0 || errno == EINVAL);
+ }
+ {
+ const char input[] = " -";
+ char *ptr;
+ uintmax_t result;
+ errno = 0;
+ result = strtoumax (input, &ptr, 10);
+ ASSERT (result == 0);
+ ASSERT (ptr == input);
+ ASSERT (errno == 0 || errno == EINVAL);
+ }
+
+ /* Simple integer values. */
+ {
+ const char input[] = "0";
+ char *ptr;
+ uintmax_t result;
+ errno = 0;
+ result = strtoumax (input, &ptr, 10);
+ ASSERT (result == 0);
+ ASSERT (ptr == input + 1);
+ ASSERT (errno == 0);
+ }
+ {
+ const char input[] = "+0";
+ char *ptr;
+ uintmax_t result;
+ errno = 0;
+ result = strtoumax (input, &ptr, 10);
+ ASSERT (result == 0);
+ ASSERT (ptr == input + 2);
+ ASSERT (errno == 0);
+ }
+ {
+ const char input[] = "-0";
+ char *ptr;
+ uintmax_t result;
+ errno = 0;
+ result = strtoumax (input, &ptr, 10);
+ ASSERT (result == 0);
+ ASSERT (ptr == input + 2);
+ ASSERT (errno == 0);
+ }
+ {
+ const char input[] = "23";
+ char *ptr;
+ uintmax_t result;
+ errno = 0;
+ result = strtoumax (input, &ptr, 10);
+ ASSERT (result == 23);
+ ASSERT (ptr == input + 2);
+ ASSERT (errno == 0);
+ }
+ {
+ const char input[] = " 23";
+ char *ptr;
+ uintmax_t result;
+ errno = 0;
+ result = strtoumax (input, &ptr, 10);
+ ASSERT (result == 23);
+ ASSERT (ptr == input + 3);
+ ASSERT (errno == 0);
+ }
+ {
+ const char input[] = "+23";
+ char *ptr;
+ uintmax_t result;
+ errno = 0;
+ result = strtoumax (input, &ptr, 10);
+ ASSERT (result == 23);
+ ASSERT (ptr == input + 3);
+ ASSERT (errno == 0);
+ }
+ {
+ const char input[] = "-23";
+ char *ptr;
+ uintmax_t result;
+ errno = 0;
+ result = strtoumax (input, &ptr, 10);
+ ASSERT (result == - (uintmax_t) 23);
+ ASSERT (ptr == input + 3);
+ ASSERT (errno == 0);
+ }
+
+ return 0;
+}
/* Remove any leftovers from a previous partial run. */
ignore_value (system ("rm -rf " BASE "*"));
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (symlinkat ("foo", -1, "bar") == -1);
+ ASSERT (errno == EBADF
+ || errno == ENOSYS /* seen on mingw */
+ );
+ }
+ {
+ errno = 0;
+ ASSERT (symlinkat ("foo", 99, "bar") == -1);
+ ASSERT (errno == EBADF
+ || errno == ENOSYS /* seen on mingw */
+ );
+ }
+
/* Perform same checks as counterpart functions. */
result = test_symlink (do_symlink, false);
dfd = openat (AT_FDCWD, ".", O_RDONLY);
/* Check that the 'socklen_t' type is defined. */
socklen_t t1;
+/* Check that the 'size_t' and 'ssize_t' types are defined. */
+size_t t2;
+ssize_t t3;
+
/* Check that 'struct iovec' is defined. */
struct iovec io;
(int, char const *, mode_t, int));
#endif
+#if GNULIB_TEST_FSTAT
SIGNATURE_CHECK (GNULIB_NAMESPACE::fstat, int, (int, struct stat *));
+#endif
#if GNULIB_TEST_FSTATAT
SIGNATURE_CHECK (GNULIB_NAMESPACE::fstatat, int,
int a[] =
{
S_IFMT,
- S_IFBLK, S_IFCHR, S_IFDIR, S_IFIFO, S_IFREG,
-#ifdef S_IFLNK /* missing on mingw and djgpp */
+#ifdef S_IFBLK /* missing on MSVC */
+ S_IFBLK,
+#endif
+ S_IFCHR, S_IFDIR, S_IFIFO, S_IFREG,
+#ifdef S_IFLNK /* missing on native Windows and DJGPP */
S_IFLNK,
#endif
-#ifdef S_IFSOCK /* missing on mingw and djgpp */
+#ifdef S_IFSOCK /* missing on native Windows and DJGPP */
S_IFSOCK,
#endif
S_IRWXU, S_IRUSR, S_IWUSR, S_IXUSR,
verify (S_IRWXG == (S_IRGRP | S_IWGRP | S_IXGRP));
verify (S_IRWXO == (S_IROTH | S_IWOTH | S_IXOTH));
+#ifdef S_IFBLK
verify (S_ISBLK (S_IFBLK));
+#endif
verify (!S_ISBLK (S_IFCHR));
verify (!S_ISBLK (S_IFDIR));
verify (!S_ISBLK (S_IFIFO));
verify (!S_ISBLK (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISCHR (S_IFBLK));
+#endif
verify (S_ISCHR (S_IFCHR));
verify (!S_ISCHR (S_IFDIR));
verify (!S_ISCHR (S_IFIFO));
verify (!S_ISCHR (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISDIR (S_IFBLK));
+#endif
verify (!S_ISDIR (S_IFCHR));
verify (S_ISDIR (S_IFDIR));
verify (!S_ISDIR (S_IFIFO));
verify (!S_ISDIR (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISFIFO (S_IFBLK));
+#endif
verify (!S_ISFIFO (S_IFCHR));
verify (!S_ISFIFO (S_IFDIR));
verify (S_ISFIFO (S_IFIFO));
verify (!S_ISFIFO (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISREG (S_IFBLK));
+#endif
verify (!S_ISREG (S_IFCHR));
verify (!S_ISREG (S_IFDIR));
verify (!S_ISREG (S_IFIFO));
verify (!S_ISREG (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISLNK (S_IFBLK));
+#endif
verify (!S_ISLNK (S_IFCHR));
verify (!S_ISLNK (S_IFDIR));
verify (!S_ISLNK (S_IFIFO));
verify (!S_ISLNK (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISSOCK (S_IFBLK));
+#endif
verify (!S_ISSOCK (S_IFCHR));
verify (!S_ISSOCK (S_IFDIR));
verify (!S_ISSOCK (S_IFIFO));
verify (S_ISSOCK (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISDOOR (S_IFBLK));
+#endif
verify (!S_ISDOOR (S_IFCHR));
verify (!S_ISDOOR (S_IFDIR));
verify (!S_ISDOOR (S_IFIFO));
verify (!S_ISDOOR (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISMPB (S_IFBLK));
+#endif
verify (!S_ISMPB (S_IFCHR));
verify (!S_ISMPB (S_IFDIR));
verify (!S_ISMPB (S_IFIFO));
verify (!S_ISMPB (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISNAM (S_IFBLK));
+#endif
verify (!S_ISNAM (S_IFCHR));
verify (!S_ISNAM (S_IFDIR));
verify (!S_ISNAM (S_IFIFO));
verify (!S_ISNAM (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISNWK (S_IFBLK));
+#endif
verify (!S_ISNWK (S_IFCHR));
verify (!S_ISNWK (S_IFDIR));
verify (!S_ISNWK (S_IFIFO));
verify (!S_ISNWK (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISPORT (S_IFBLK));
+#endif
verify (!S_ISPORT (S_IFCHR));
verify (!S_ISPORT (S_IFDIR));
verify (!S_ISPORT (S_IFIFO));
verify (!S_ISPORT (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISCTG (S_IFBLK));
+#endif
verify (!S_ISCTG (S_IFCHR));
verify (!S_ISCTG (S_IFDIR));
verify (!S_ISCTG (S_IFIFO));
verify (!S_ISCTG (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISOFD (S_IFBLK));
+#endif
verify (!S_ISOFD (S_IFCHR));
verify (!S_ISOFD (S_IFDIR));
verify (!S_ISOFD (S_IFIFO));
verify (!S_ISOFD (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISOFL (S_IFBLK));
+#endif
verify (!S_ISOFL (S_IFCHR));
verify (!S_ISOFL (S_IFDIR));
verify (!S_ISOFL (S_IFIFO));
verify (!S_ISOFL (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISWHT (S_IFBLK));
+#endif
verify (!S_ISWHT (S_IFCHR));
verify (!S_ISWHT (S_IFDIR));
verify (!S_ISWHT (S_IFIFO));
/* Check the existence of some types. */
nlink_t t1;
+off_t t2;
+mode_t t3;
-struct timespec t2;
+struct timespec st;
int
main (void)
--- /dev/null
+/* Test of <sys/types.h> substitute in C++ mode.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2011. */
+
+#define GNULIB_NAMESPACE gnulib
+#include <config.h>
+
+#include <sys/types.h>
+
+
+int
+main ()
+{
+}
--- /dev/null
+/* Test of <sys/types.h> substitute.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2011. */
+
+#include <config.h>
+
+#include <sys/types.h>
+
+/* Check that the types are all defined. */
+pid_t t1;
+size_t t2;
+ssize_t t3;
+off_t t4;
+mode_t t5;
+
+int
+main (void)
+{
+ return 0;
+}
--- /dev/null
+/* Test of tanf() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010-2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (tanf, float, (float));
+
+#include "macros.h"
+
+volatile float x;
+float y;
+
+int
+main ()
+{
+ /* A particular value. */
+ x = 0.6f;
+ y = tanf (x);
+ ASSERT (y >= 0.6841368f && y <= 0.6841369f);
+
+ return 0;
+}
--- /dev/null
+/* Test of tanhf() function.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010-2011. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (tanhf, float, (float));
+
+#include "macros.h"
+
+volatile float x;
+float y;
+
+int
+main ()
+{
+ /* A particular value. */
+ x = 0.6f;
+ y = tanhf (x);
+ ASSERT (y >= 0.5370495f && y <= 0.5370497f);
+
+ return 0;
+}
#include <termios.h>
+/* Check that the types are all defined. */
+pid_t t1;
+
int
main (void)
{
#include "verify.h"
-struct timespec a;
+/* Check that the types are all defined. */
+struct timespec t1;
+#if 0
+/* POSIX:2008 does not require pid_t in <time.h> unconditionally, and indeed
+ it's missing on MacOS X 10.5, FreeBSD 6.4, OpenBSD 4.9, mingw. */
+pid_t t2;
+#endif
/* Check that NULL can be passed through varargs as a pointer type,
per POSIX 2008. */
#include "isnand-nolibm.h"
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
#include "macros.h"
ASSERT (trunc (-65536.0) == -65536.0);
ASSERT (trunc (-2.341e31) == -2.341e31);
/* Infinite numbers. */
- ASSERT (trunc (1.0 / 0.0) == 1.0 / 0.0);
- ASSERT (trunc (-1.0 / 0.0) == -1.0 / 0.0);
+ ASSERT (trunc (Infinityd ()) == Infinityd ());
+ ASSERT (trunc (- Infinityd ()) == - Infinityd ());
/* NaNs. */
ASSERT (isnand (trunc (NaNd ())));
#include "isnanf-nolibm.h"
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
#include "macros.h"
ASSERT (truncf (-65536.0f) == -65536.0f);
ASSERT (truncf (-2.341e31f) == -2.341e31f);
/* Infinite numbers. */
- ASSERT (truncf (1.0f / 0.0f) == 1.0f / 0.0f);
- ASSERT (truncf (-1.0f / 0.0f) == -1.0f / 0.0f);
+ ASSERT (truncf (Infinityf ()) == Infinityf ());
+ ASSERT (truncf (- Infinityf ()) == - Infinityf ());
/* NaNs. */
ASSERT (isnanf (truncf (NaNf ())));
#include "fpucw.h"
#include "isnanl-nolibm.h"
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
#include "macros.h"
ASSERT (truncl (-65536.0L) == -65536.0L);
ASSERT (truncl (-2.341e31L) == -2.341e31L);
/* Infinite numbers. */
- ASSERT (truncl (1.0L / 0.0L) == 1.0L / 0.0L);
- ASSERT (truncl (-1.0L / 0.0L) == -1.0L / 0.0L);
+ ASSERT (truncl (Infinityl ()) == Infinityl ());
+ ASSERT (truncl (- Infinityl ()) == - Infinityl ());
/* NaNs. */
ASSERT (isnanl (truncl (NaNl ())));
ASSERT (ttyname_r (fd, buf, sizeof (buf)) == 0);
ASSERT (memcmp (buf, "/dev/", 5) == 0);
+ /* Test behaviour for invalid file descriptors. */
+ {
+ int err = ttyname_r (-1, buf, sizeof (buf));
+ ASSERT (err == EBADF
+ || err == ENOTTY /* seen on FreeBSD 6.4 */
+ );
+ }
+ {
+ int err = ttyname_r (99, buf, sizeof (buf));
+ ASSERT (err == EBADF
+ || err == ENOTTY /* seen on FreeBSD 6.4 */
+ );
+ }
+
return 0;
}
#include "signature.h"
+#if GNULIB_TEST_CHDIR
+SIGNATURE_CHECK (GNULIB_NAMESPACE::chdir, int, (const char *));
+#endif
+
#if GNULIB_TEST_CHOWN
SIGNATURE_CHECK (GNULIB_NAMESPACE::chown, int, (const char *, uid_t, gid_t));
#endif
SIGNATURE_CHECK (GNULIB_NAMESPACE::close, int, (int));
#endif
+#if GNULIB_TEST_DUP
SIGNATURE_CHECK (GNULIB_NAMESPACE::dup, int, (int));
+#endif
#if GNULIB_TEST_DUP2
SIGNATURE_CHECK (GNULIB_NAMESPACE::dup2, int, (int, int));
(int, char const *, uid_t, gid_t, int));
#endif
+#if GNULIB_TEST_FDATASYNC
+SIGNATURE_CHECK (GNULIB_NAMESPACE::fdatasync, int, (int));
+#endif
+
#if GNULIB_TEST_FSYNC
SIGNATURE_CHECK (GNULIB_NAMESPACE::fsync, int, (int));
#endif
/* Remove any leftovers from a previous partial run. */
ignore_value (system ("rm -rf " BASE "*"));
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (unlinkat (-1, "foo", 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (unlinkat (99, "foo", 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+
result1 = test_rmdir_func (rmdirat, false);
result2 = test_unlink_func (unlinker, false);
ASSERT (result1 == result2);
--- /dev/null
+/* Test unlocking of the slave side of a pseudo-terminal.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <stdlib.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (unlockpt, int, (int));
+
+#include <errno.h>
+
+#include "macros.h"
+
+int
+main (void)
+{
+ /* Test behaviour for invalid file descriptors. */
+#if !defined __NetBSD__ /* known bug on NetBSD 5.1 */
+ {
+ errno = 0;
+ ASSERT (unlockpt (-1) == -1);
+ ASSERT (errno == EBADF
+ || errno == EINVAL /* seen on FreeBSD 6.4 */
+ );
+ }
+ {
+ errno = 0;
+ ASSERT (unlockpt (99) == -1);
+ ASSERT (errno == EBADF
+ || errno == EINVAL /* seen on FreeBSD 6.4 */
+ );
+ }
+#endif
+
+ return 0;
+}
EOF
UPDATE_COPYRIGHT_YEAR=2009 \
- update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
+ update-copyright $TMP.? 1> $TMP-stdout 2> $TMP-stderr
compare /dev/null $TMP-stdout || exit 1
compare - $TMP-stderr <<EOF || exit 1
$TMP.4: warning: copyright statement not found
EOF
UPDATE_COPYRIGHT_YEAR=2010 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
- update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
+ update-copyright $TMP.? 1> $TMP-stdout 2> $TMP-stderr
compare /dev/null $TMP-stdout || exit 1
compare - $TMP-stderr <<EOF || exit 1
$TMP.4: warning: copyright statement not found
EOF
UPDATE_COPYRIGHT_YEAR=2010 UPDATE_COPYRIGHT_FORCE=1 \
- update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
+ update-copyright $TMP.? 1> $TMP-stdout 2> $TMP-stderr
compare /dev/null $TMP-stdout || exit 1
compare - $TMP-stderr <<EOF || exit 1
$TMP.4: warning: copyright statement not found
# define check_ctime 1
# endif
+/* Compare two st_ctime values. Return -1, 0 or 1, respectively
+ when A's st_ctime is smaller than, equal to or greater than B's. */
+static inline int
+ctime_compare (struct stat const *a, struct stat const *b)
+{
+ if (a->st_ctime < b->st_ctime)
+ return -1;
+ else if (b->st_ctime < a->st_ctime)
+ return 1;
+ else if (get_stat_ctime_ns (a) < get_stat_ctime_ns (b))
+ return -1;
+ else if (get_stat_ctime_ns (b) < get_stat_ctime_ns (a))
+ return 1;
+ else
+ return 0;
+}
+
#endif /* GL_TEST_UTIMENS_COMMON */
ASSERT (stat (BASE "file", &st2) == 0);
ASSERT (0 <= utimecmp (BASE "file", &st2, &st1, UTIMECMP_TRUNCATE_SOURCE));
if (check_ctime)
- ASSERT (st1.st_ctime < st2.st_ctime
- || (st1.st_ctime == st2.st_ctime
- && get_stat_ctime_ns (&st1) < get_stat_ctime_ns (&st2)));
+ ASSERT (ctime_compare (&st1, &st2) < 0);
{
/* On some NFS systems, the 'now' timestamp of creat or a NULL
timespec is determined by the server, but the 'now' timestamp
ASSERT (0 <= get_stat_mtime_ns (&st2));
ASSERT (get_stat_mtime_ns (&st2) < BILLION);
if (check_ctime)
- ASSERT (st1.st_ctime < st2.st_ctime
- || (st1.st_ctime == st2.st_ctime
- && get_stat_ctime_ns (&st1) < get_stat_ctime_ns (&st2)));
+ ASSERT (ctime_compare (&st1, &st2) < 0);
}
/* Play with UTIME_OMIT, UTIME_NOW. */
/* See comment above about this utimecmp call. */
ASSERT (0 <= utimecmp (BASE "file", &st3, &st1, UTIMECMP_TRUNCATE_SOURCE));
if (check_ctime)
- ASSERT (st2.st_ctime < st3.st_ctime
- || (st2.st_ctime == st3.st_ctime
- && get_stat_ctime_ns (&st2) < get_stat_ctime_ns (&st3)));
+ ASSERT (ctime_compare (&st2, &st3) < 0);
nap ();
ts[0].tv_nsec = 0;
ts[1].tv_nsec = UTIME_OMIT;
ASSERT (st3.st_mtime == st2.st_mtime);
ASSERT (get_stat_mtime_ns (&st3) == get_stat_mtime_ns (&st2));
if (check_ctime)
- ASSERT (st3.st_ctime < st2.st_ctime
- || (st3.st_ctime == st2.st_ctime
- && get_stat_ctime_ns (&st3) < get_stat_ctime_ns (&st2)));
+ ASSERT (ctime_compare (&st3, &st2) < 0);
}
/* Make sure this dereferences symlinks. */
/* Clean up any trash from prior testsuite runs. */
ignore_value (system ("rm -rf " BASE "*"));
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (utimensat (-1, "foo", NULL, 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (utimensat (99, "foo", NULL, 0) == -1);
+ ASSERT (errno == EBADF);
+ }
+
/* Basic tests. */
result1 = test_utimens (do_utimensat, true);
result2 = test_lutimens (do_lutimensat, result1 == 0);
#include "macros.h"
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
/* The SGI MIPS floating-point format does not distinguish 0.0 and -0.0. */
{ /* Positive infinity. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%a %d", 1.0 / 0.0, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%a %d", Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "inf 33") == 0);
ASSERT (length == strlen (result));
{ /* Negative infinity. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%a %d", -1.0 / 0.0, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%a %d", - Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "-inf 33") == 0);
ASSERT (length == strlen (result));
{ /* FLAG_ZERO with infinite number. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%010a %d", 1.0 / 0.0, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%010a %d", Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
/* "0000000inf 33" is not a valid result; see
<http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
{ /* Positive infinity. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%La %d", 1.0L / 0.0L, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%La %d", Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "inf 33") == 0);
ASSERT (length == strlen (result));
{ /* Negative infinity. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%La %d", -1.0L / 0.0L, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%La %d", - Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "-inf 33") == 0);
ASSERT (length == strlen (result));
ASSERT (length == strlen (result));
free (result);
}
-#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
{ /* Quiet NaN. */
static union { unsigned int word[4]; long double value; } x =
{ LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
{ /* FLAG_ZERO with infinite number. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%010La %d", 1.0L / 0.0L, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%010La %d", Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
/* "0000000inf 33" is not a valid result; see
<http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
{ /* Positive infinity. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%f %d", 1.0 / 0.0, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%f %d", Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
{ /* Negative infinity. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%f %d", -1.0 / 0.0, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%f %d", - Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
{ /* FLAG_ZERO with infinite number. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%015f %d", -1.0 / 0.0, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%015f %d", - Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
{ /* Positive infinity. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%Lf %d", 1.0L / 0.0L, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%Lf %d", Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
{ /* Negative infinity. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%Lf %d", -1.0L / 0.0L, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%Lf %d", - Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
ASSERT (length == strlen (result));
free (result);
}
-#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
{ /* Quiet NaN. */
static union { unsigned int word[4]; long double value; } x =
{ LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
{ /* FLAG_ZERO with infinite number. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%015Lf %d", -1.0L / 0.0L, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%015Lf %d", - Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
{ /* Positive infinity. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%F %d", 1.0 / 0.0, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%F %d", Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "INF 33") == 0
|| strcmp (result, "INFINITY 33") == 0);
{ /* Negative infinity. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%F %d", -1.0 / 0.0, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%F %d", - Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "-INF 33") == 0
|| strcmp (result, "-INFINITY 33") == 0);
{ /* FLAG_ZERO with infinite number. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%015F %d", -1.0 / 0.0, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%015F %d", - Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, " -INF 33") == 0
|| strcmp (result, " -INFINITY 33") == 0);
{ /* Positive infinity. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%LF %d", 1.0L / 0.0L, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%LF %d", Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "INF 33") == 0
|| strcmp (result, "INFINITY 33") == 0);
{ /* Negative infinity. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%LF %d", -1.0L / 0.0L, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%LF %d", - Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "-INF 33") == 0
|| strcmp (result, "-INFINITY 33") == 0);
{ /* FLAG_ZERO with infinite number. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%015LF %d", -1.0L / 0.0L, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%015LF %d", - Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, " -INF 33") == 0
|| strcmp (result, " -INFINITY 33") == 0);
{ /* Positive infinity. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%e %d", 1.0 / 0.0, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%e %d", Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
{ /* Negative infinity. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%e %d", -1.0 / 0.0, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%e %d", - Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
{ /* FLAG_ZERO with infinite number. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%015e %d", -1.0 / 0.0, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%015e %d", - Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
{ /* Positive infinity. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%Le %d", 1.0L / 0.0L, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%Le %d", Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
{ /* Negative infinity. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%Le %d", -1.0L / 0.0L, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%Le %d", - Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
ASSERT (length == strlen (result));
free (result);
}
-#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
{ /* Quiet NaN. */
static union { unsigned int word[4]; long double value; } x =
{ LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
{ /* FLAG_ZERO with infinite number. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%015Le %d", -1.0L / 0.0L, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%015Le %d", - Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
{ /* Positive infinity. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%g %d", 1.0 / 0.0, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%g %d", Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
{ /* Negative infinity. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%g %d", -1.0 / 0.0, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%g %d", - Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
{ /* FLAG_ZERO with infinite number. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%015g %d", -1.0 / 0.0, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%015g %d", - Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
{ /* Positive infinity. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%Lg %d", 1.0L / 0.0L, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%Lg %d", Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
{ /* Negative infinity. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%Lg %d", -1.0L / 0.0L, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%Lg %d", - Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
ASSERT (length == strlen (result));
free (result);
}
-#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
{ /* Quiet NaN. */
static union { unsigned int word[4]; long double value; } x =
{ LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
{ /* FLAG_ZERO with infinite number. */
size_t length;
char *result =
- my_asnprintf (NULL, &length, "%015Lg %d", -1.0L / 0.0L, 33, 44, 55);
+ my_asnprintf (NULL, &length, "%015Lg %d", - Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
#include "macros.h"
#include "minus-zero.h"
+#include "infinity.h"
#include "nan.h"
/* The SGI MIPS floating-point format does not distinguish 0.0 and -0.0. */
{ /* Positive infinity. */
char *result;
int retval =
- my_asprintf (&result, "%a %d", 1.0 / 0.0, 33, 44, 55);
+ my_asprintf (&result, "%a %d", Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "inf 33") == 0);
ASSERT (retval == strlen (result));
{ /* Negative infinity. */
char *result;
int retval =
- my_asprintf (&result, "%a %d", -1.0 / 0.0, 33, 44, 55);
+ my_asprintf (&result, "%a %d", - Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "-inf 33") == 0);
ASSERT (retval == strlen (result));
{ /* FLAG_ZERO with infinite number. */
char *result;
int retval =
- my_asprintf (&result, "%010a %d", 1.0 / 0.0, 33, 44, 55);
+ my_asprintf (&result, "%010a %d", Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
/* "0000000inf 33" is not a valid result; see
<http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
{ /* Positive infinity. */
char *result;
int retval =
- my_asprintf (&result, "%La %d", 1.0L / 0.0L, 33, 44, 55);
+ my_asprintf (&result, "%La %d", Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "inf 33") == 0);
ASSERT (retval == strlen (result));
{ /* Negative infinity. */
char *result;
int retval =
- my_asprintf (&result, "%La %d", -1.0L / 0.0L, 33, 44, 55);
+ my_asprintf (&result, "%La %d", - Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "-inf 33") == 0);
ASSERT (retval == strlen (result));
ASSERT (retval == strlen (result));
free (result);
}
-#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
{ /* Quiet NaN. */
static union { unsigned int word[4]; long double value; } x =
{ LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
{ /* FLAG_ZERO with infinite number. */
char *result;
int retval =
- my_asprintf (&result, "%010La %d", 1.0L / 0.0L, 33, 44, 55);
+ my_asprintf (&result, "%010La %d", Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
/* "0000000inf 33" is not a valid result; see
<http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
{ /* Positive infinity. */
char *result;
int retval =
- my_asprintf (&result, "%f %d", 1.0 / 0.0, 33, 44, 55);
+ my_asprintf (&result, "%f %d", Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
{ /* Negative infinity. */
char *result;
int retval =
- my_asprintf (&result, "%f %d", -1.0 / 0.0, 33, 44, 55);
+ my_asprintf (&result, "%f %d", - Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
{ /* FLAG_ZERO with infinite number. */
char *result;
int retval =
- my_asprintf (&result, "%015f %d", -1.0 / 0.0, 33, 44, 55);
+ my_asprintf (&result, "%015f %d", - Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
{ /* Positive infinity. */
char *result;
int retval =
- my_asprintf (&result, "%Lf %d", 1.0L / 0.0L, 33, 44, 55);
+ my_asprintf (&result, "%Lf %d", Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
{ /* Negative infinity. */
char *result;
int retval =
- my_asprintf (&result, "%Lf %d", -1.0L / 0.0L, 33, 44, 55);
+ my_asprintf (&result, "%Lf %d", - Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
ASSERT (retval == strlen (result));
free (result);
}
-#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
{ /* Quiet NaN. */
static union { unsigned int word[4]; long double value; } x =
{ LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
{ /* FLAG_ZERO with infinite number. */
char *result;
int retval =
- my_asprintf (&result, "%015Lf %d", -1.0L / 0.0L, 33, 44, 55);
+ my_asprintf (&result, "%015Lf %d", - Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
{ /* Positive infinity. */
char *result;
int retval =
- my_asprintf (&result, "%F %d", 1.0 / 0.0, 33, 44, 55);
+ my_asprintf (&result, "%F %d", Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "INF 33") == 0
|| strcmp (result, "INFINITY 33") == 0);
{ /* Negative infinity. */
char *result;
int retval =
- my_asprintf (&result, "%F %d", -1.0 / 0.0, 33, 44, 55);
+ my_asprintf (&result, "%F %d", - Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "-INF 33") == 0
|| strcmp (result, "-INFINITY 33") == 0);
{ /* FLAG_ZERO with infinite number. */
char *result;
int retval =
- my_asprintf (&result, "%015F %d", -1.0 / 0.0, 33, 44, 55);
+ my_asprintf (&result, "%015F %d", - Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, " -INF 33") == 0
|| strcmp (result, " -INFINITY 33") == 0);
{ /* Positive infinity. */
char *result;
int retval =
- my_asprintf (&result, "%LF %d", 1.0L / 0.0L, 33, 44, 55);
+ my_asprintf (&result, "%LF %d", Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "INF 33") == 0
|| strcmp (result, "INFINITY 33") == 0);
{ /* Negative infinity. */
char *result;
int retval =
- my_asprintf (&result, "%LF %d", -1.0L / 0.0L, 33, 44, 55);
+ my_asprintf (&result, "%LF %d", - Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "-INF 33") == 0
|| strcmp (result, "-INFINITY 33") == 0);
{ /* FLAG_ZERO with infinite number. */
char *result;
int retval =
- my_asprintf (&result, "%015LF %d", -1.0L / 0.0L, 33, 44, 55);
+ my_asprintf (&result, "%015LF %d", - Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, " -INF 33") == 0
|| strcmp (result, " -INFINITY 33") == 0);
{ /* Positive infinity. */
char *result;
int retval =
- my_asprintf (&result, "%e %d", 1.0 / 0.0, 33, 44, 55);
+ my_asprintf (&result, "%e %d", Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
{ /* Negative infinity. */
char *result;
int retval =
- my_asprintf (&result, "%e %d", -1.0 / 0.0, 33, 44, 55);
+ my_asprintf (&result, "%e %d", - Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
{ /* FLAG_ZERO with infinite number. */
char *result;
int retval =
- my_asprintf (&result, "%015e %d", -1.0 / 0.0, 33, 44, 55);
+ my_asprintf (&result, "%015e %d", - Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
{ /* Positive infinity. */
char *result;
int retval =
- my_asprintf (&result, "%Le %d", 1.0L / 0.0L, 33, 44, 55);
+ my_asprintf (&result, "%Le %d", Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
{ /* Negative infinity. */
char *result;
int retval =
- my_asprintf (&result, "%Le %d", -1.0L / 0.0L, 33, 44, 55);
+ my_asprintf (&result, "%Le %d", - Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
ASSERT (retval == strlen (result));
free (result);
}
-#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
{ /* Quiet NaN. */
static union { unsigned int word[4]; long double value; } x =
{ LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
{ /* FLAG_ZERO with infinite number. */
char *result;
int retval =
- my_asprintf (&result, "%015Le %d", -1.0L / 0.0L, 33, 44, 55);
+ my_asprintf (&result, "%015Le %d", - Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
{ /* Positive infinity. */
char *result;
int retval =
- my_asprintf (&result, "%g %d", 1.0 / 0.0, 33, 44, 55);
+ my_asprintf (&result, "%g %d", Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
{ /* Negative infinity. */
char *result;
int retval =
- my_asprintf (&result, "%g %d", -1.0 / 0.0, 33, 44, 55);
+ my_asprintf (&result, "%g %d", - Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
{ /* FLAG_ZERO with infinite number. */
char *result;
int retval =
- my_asprintf (&result, "%015g %d", -1.0 / 0.0, 33, 44, 55);
+ my_asprintf (&result, "%015g %d", - Infinityd (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
{ /* Positive infinity. */
char *result;
int retval =
- my_asprintf (&result, "%Lg %d", 1.0L / 0.0L, 33, 44, 55);
+ my_asprintf (&result, "%Lg %d", Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "inf 33") == 0
|| strcmp (result, "infinity 33") == 0);
{ /* Negative infinity. */
char *result;
int retval =
- my_asprintf (&result, "%Lg %d", -1.0L / 0.0L, 33, 44, 55);
+ my_asprintf (&result, "%Lg %d", - Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "-inf 33") == 0
|| strcmp (result, "-infinity 33") == 0);
ASSERT (retval == strlen (result));
free (result);
}
-#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
{ /* Quiet NaN. */
static union { unsigned int word[4]; long double value; } x =
{ LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
{ /* FLAG_ZERO with infinite number. */
char *result;
int retval =
- my_asprintf (&result, "%015Lg %d", -1.0L / 0.0L, 33, 44, 55);
+ my_asprintf (&result, "%015Lg %d", - Infinityl (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, " -inf 33") == 0
|| strcmp (result, " -infinity 33") == 0);
--- /dev/null
+/* Test of vdprintf() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <stdio.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (vdprintf, int, (int, const char *, va_list));
+
+#include <errno.h>
+
+#include "macros.h"
+
+static int
+my_dprintf (int fd, const char *format, ...)
+{
+ va_list args;
+ int ret;
+
+ va_start (args, format);
+ ret = vdprintf (fd, format, args);
+ va_end (args);
+ return ret;
+}
+
+int
+main (int argc, char *argv[])
+{
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (my_dprintf (-1, "test") == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (my_dprintf (99, "test") == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ return 0;
+}
--- /dev/null
+/* Test the write() function.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <unistd.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (write, ssize_t, (int, const void *, size_t));
+
+#include <errno.h>
+#include <fcntl.h>
+#include <string.h>
+
+#include "macros.h"
+
+int
+main (void)
+{
+ const char *filename = "test-write.tmp";
+ int fd;
+
+ /* Create a file with a simple contents. */
+ fd = open (filename, O_CREAT | O_WRONLY, 0600);
+ ASSERT (fd >= 0);
+ ASSERT (write (fd, "Hello World", 11) == 11);
+ ASSERT (close (fd) == 0);
+
+ /* Write into the middle of the file. */
+ fd = open (filename, O_WRONLY);
+ ASSERT (fd >= 0);
+ ASSERT (lseek (fd, 6, SEEK_SET) == 6);
+ ASSERT (write (fd, "fascination", 11) == 11);
+
+ /* Verify the contents of the file. */
+ {
+ char buf[64];
+ int rfd = open (filename, O_RDONLY);
+ ASSERT (rfd >= 0);
+ ASSERT (read (rfd, buf, sizeof (buf)) == 17);
+ ASSERT (close (rfd) == 0);
+ ASSERT (memcmp (buf, "Hello fascination", 17) == 0);
+ }
+
+ ASSERT (close (fd) == 0);
+
+ /* Test behaviour for invalid file descriptors. */
+ {
+ char byte = 'x';
+ errno = 0;
+ ASSERT (write (-1, &byte, 1) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ char byte = 'x';
+ errno = 0;
+ ASSERT (write (99, &byte, 1) == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ /* Clean up. */
+ unlink (filename);
+
+ return 0;
+}
# Some projects override e.g., _autoreconf here.
-include $(srcdir)/cfg.mk
-include $(srcdir)/maint.mk
# Allow cfg.mk to override these.
_build-aux ?= build-aux
_autoreconf ?= autoreconf -v
+include $(srcdir)/maint.mk
+
# Ensure that $(VERSION) is up to date for dist-related targets, but not
# for others: rerunning autoreconf and recompiling everything isn't cheap.
_have-git-version-gen := \
# The package can override .DEFAULT_GOAL to run actions like autoreconf.
-include ./cfg.mk
+
+# Allow cfg.mk to override these.
+_build-aux ?= build-aux
+_autoreconf ?= autoreconf -v
+
include ./maint.mk
ifeq ($(.DEFAULT_GOAL),abort-due-to-no-makefile)
* start from a clean, up-to-date git directory.
- git checkout master; git pull
-
-* Run ./configure && make maintainer-clean
+ make -k maintainer-clean || { ./configure && make maintainer-clean; }
+ git checkout master
+ git pull origin master
* Ensure that the desired versions of autoconf, automake, etc.
are in your PATH. See the buildreq list in bootstrap.conf for
* Ensure that you've pushed all changes that belong in the release
and that the NixOS/Hydra autobuilder is reporting all is well:
- http://hydra.nixos.org/jobset/gnu/@PACKAGE@-master
-
-* Run bootstrap one last time. This downloads any new translations:
+ http://hydra.nixos.org/jobset/gnu/@PACKAGE@-master
- ./bootstrap
+* Run "./bootstrap && ./configure". This downloads any new translations:
* Pre-release testing:
- Ensure that make check syntax-check succeeds.
+ Ensure that "make check syntax-check" succeeds.
* Run "make distcheck"
# ME := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
ME := maint.mk
-# Override this in cfg.mk if you use a non-standard build-aux directory.
-build_aux ?= $(srcdir)/build-aux
+# Diagnostic for continued use of deprecated variable.
+# Remove in 2013
+ifneq ($(build_aux),)
+ $(error "$(ME): \
+set $$(_build-aux) relative to $$(srcdir) instead of $$(build_aux)")
+endif
# Do not save the original name or timestamp in the .tar.gz file.
# Use --rsyncable if available.
GIT = git
VC = $(GIT)
-VC_LIST = $(build_aux)/vc-list-files -C $(srcdir)
+VC_LIST = $(srcdir)/$(_build-aux)/vc-list-files -C $(srcdir)
# You can override this variable in cfg.mk to set your own regexp
# matching files to ignore.
endef
sc_avoid_if_before_free:
- @$(build_aux)/useless-if-before-free \
+ @$(srcdir)/$(_build-aux)/useless-if-before-free \
$(useless_free_options) \
$$($(VC_LIST_EXCEPT) | grep -v useless-if-before-free) && \
{ echo '$(ME): found useless "if" before "free" above' 1>&2; \
# Prohibit the inclusion of stddef.h without an actual use.
sc_prohibit_stddef_without_use:
@h='stddef.h' \
- re='\<($(_stddef_syms_re)) *\(' \
+ re='\<($(_stddef_syms_re))\>' \
+ $(_sc_header_without_use)
+
+_de1 = dirfd|(close|(fd)?open|read|rewind|seek|tell)dir(64)?(_r)?
+_de2 = (versionsort|struct dirent|getdirentries|alphasort|scandir(at)?)(64)?
+_de3 = MAXNAMLEN|DIR|ino_t|d_ino|d_fileno|d_namlen
+_dirent_syms_re = $(_de1)|$(_de2)|$(_de3)
+# Prohibit the inclusion of dirent.h without an actual use.
+sc_prohibit_dirent_without_use:
+ @h='dirent.h' \
+ re='\<($(_dirent_syms_re))\>' \
$(_sc_header_without_use)
# Prohibit the inclusion of verify.h without an actual use.
# Perl -lne code to extract "significant" cpp-defined symbols from a
# gnulib header file, eliminating a few common false-positives.
+# The exempted names below are defined only conditionally in gnulib,
+# and hence sometimes must/may be defined in application code.
gl_extract_significant_defines_ = \
/^\# *define ([^_ (][^ (]*)(\s*\(|\s+\w+)/\
&& $$2 !~ /(?:rpl_|_used_without_)/\
- && $$1 !~ /^(?:NSIG)$$/\
+ && $$1 !~ /^(?:NSIG|ENODATA)$$/\
&& $$1 !~ /^(?:SA_RESETHAND|SA_RESTART)$$/\
and print $$1
gen_h=$(gl_generated_headers_); \
(cd $(gnulib_dir)/lib; \
for f in *.in.h $(gl_other_headers_); do \
- perl -lne '$(gl_extract_significant_defines_)' $$f; \
+ test -f $$f \
+ && perl -lne '$(gl_extract_significant_defines_)' $$f; \
done; \
) | sort -u \
| sed 's/^/^ *# *(define|undef) */;s/$$/\\>/'
halt=$(msg) \
$(_sc_search_regexp)
-# Check that `make alpha' will not fail at the end of the process.
+# Check that `make alpha' will not fail at the end of the process,
+# i.e., when pkg-M.N.tar.xz already exists (either in "." or in ../release)
+# and is read-only.
writable-files:
- if test -d $(release_archive_dir); then :; else \
- for file in $(distdir).tar.gz \
- $(release_archive_dir)/$(distdir).tar.gz; do \
- test -e $$file || continue; \
- test -w $$file \
- || { echo ERROR: $$file is not writable; fail=1; }; \
+ if test -d $(release_archive_dir); then \
+ for file in $(DIST_ARCHIVES); do \
+ for p in ./ $(release_archive_dir)/; do \
+ test -e $$p$$file || continue; \
+ test -w $$p$$file \
+ || { echo ERROR: $$p$$file is not writable; fail=1; }; \
+ done; \
done; \
test "$$fail" && exit 1 || : ; \
+ else :; \
fi
v_etc_file = $(gnulib_dir)/lib/version-etc.c
1>&2; exit 1; } || :; \
fi
+# BRE regex of file contents to identify a test script.
+_test_script_regex ?= \<init\.sh\>
+
+# In tests, use "compare expected actual", not the reverse.
+sc_prohibit_reversed_compare_failure:
+ @prohibit='\<compare [^ ]+ ([^ ]*exp|/dev/null)' \
+ containing='$(_test_script_regex)' \
+ halt='reversed compare arguments' \
+ $(_sc_search_regexp)
+
# #if HAVE_... will evaluate to false for any non numeric string.
# That would be flagged by using -Wundef, however gnulib currently
# tests many undefined macros, and so we can't enable that option.
# If it's not already specified, derive the GPG key ID from
# the signed tag we've just applied to mark this release.
gpg_key_ID ?= \
- $$(git cat-file tag v$(VERSION) > .ann-sig \
- && gpgv .ann-sig - < /dev/null 2>&1 \
- | sed -n '/.*key ID \([0-9A-F]*\)/s//\1/p'; rm -f .ann-sig)
+ $$(git cat-file tag v$(VERSION) \
+ | gpgv --status-fd 1 --keyring /dev/null - - 2>/dev/null \
+ | sed -n '/^\[GNUPG:\] ERRSIG /{s///;s/ .*//p;q}')
translation_project_ ?= coordinator@translationproject.org
endif
announcement: NEWS ChangeLog $(rel-files)
- @$(build_aux)/announce-gen \
+ @$(srcdir)/$(_build-aux)/announce-gen \
--mail-headers='$(announcement_mail_headers_)' \
--release-type=$(RELEASE_TYPE) \
--package=$(PACKAGE) \
emit_upload_commands:
@echo =====================================
@echo =====================================
- @echo "$(build_aux)/gnupload $(GNUPLOADFLAGS) \\"
+ @echo "$(srcdir)/$(_build-aux)/gnupload $(GNUPLOADFLAGS) \\"
@echo " --to $(gnu_rel_host):$(upload_dest_dir_) \\"
@echo " $(rel-files)"
@echo '# send the ~/announce-$(my_distdir) e-mail'
@echo =====================================
define emit-commit-log
- printf '%s\n' 'post-release administrivia' '' \
- '* NEWS: Add header line for next release.' \
- '* .prev-version: Record previous version.' \
+ printf '%s\n' 'maint: post-release administrivia' '' \
+ '* NEWS: Add header line for next release.' \
+ '* .prev-version: Record previous version.' \
'* cfg.mk (old_NEWS_hash): Auto-update.'
endef
@test -z "$(manual_title)" \
&& { echo define manual_title in cfg.mk 1>&2; exit 1; } || :
@cd '$(srcdir)/doc'; \
- $(SHELL) ../build-aux/gendocs.sh $(gendocs_options_) \
+ $(SHELL) ../$(_build-aux)/gendocs.sh $(gendocs_options_) \
-o '$(abs_builddir)/doc/manual' \
--email $(PACKAGE_BUGREPORT) $(PACKAGE) \
"$(PACKAGE_NAME) - $(manual_title)"
update-copyright:
grep -l -w Copyright \
$$(export VC_LIST_EXCEPT_DEFAULT=COPYING && $(VC_LIST_EXCEPT)) \
- | $(update-copyright-env) xargs $(build_aux)/$@
+ | $(update-copyright-env) xargs $(srcdir)/$(_build-aux)/$@
# This tight_scope test is skipped with a warning if $(_gl_TS_headers) is not
# overridden and $(_gl_TS_dir)/Makefile.am does not mention noinst_HEADERS.
ALL_RECURSIVE_TARGETS += sc_tight_scope
sc_tight_scope: tight-scope.mk
- @if ! grep '^ *export _gl_TS_headers *=' $(srcdir)/cfg.mk \
+ @fail=0; \
+ if ! grep '^ *export _gl_TS_headers *=' $(srcdir)/cfg.mk \
> /dev/null \
&& ! grep -w noinst_HEADERS $(srcdir)/$(_gl_TS_dir)/Makefile.am \
> /dev/null 2>&1; then \
-f $(abs_top_builddir)/$< \
_gl_tight_scope \
|| fail=1; \
- fi
- @rm -f $<
+ fi; \
+ rm -f $<; \
+ exit $$fail
tight-scope.mk: $(ME)
@rm -f $@ $@-t
- @perl -ne '/^# TS-start/.../^# TS-end/ and print' $(ME) > $@-t
+ @perl -ne '/^# TS-start/.../^# TS-end/ and print' $(srcdir)/$(ME) > $@-t
@chmod a=r $@-t && mv $@-t $@
ifeq (a,b)