lib/stdio.in.h


Log

Author Commit Date CI Message
Pádraig Brady 7b089321 2025-01-01T09:24:36 maint: run 'make update-copyright'
Bruno Haible ff96fd7c 2024-12-24T11:19:49 stdio: Support several gnulib-tool invocations better. * lib/stdio.in.h: Test _GL_SKIP_GNULIB_STDIO_H. (_GL_ALREADY_INCLUDING_STDIO_H): Rename to a macro that depends on GUARD_PREFIX. * lib/fopen.c: Set _GL_SKIP_GNULIB_STDIO_H instead of _GL_ALREADY_INCLUDING_STDIO_H. * lib/freopen.c: Likewise.
Paul Eggert cf96562f 2024-09-16T09:45:36 Don’t port July [[...]] changes to C89 Yesterday’s changes to port to C17 and earlier were intrusive, since they twice replaced one macro with two. Revert the macro definitions to what they were before yesterday, and instead change callers so that they always have four arguments even if the last one is empty. Although this change requires C99 or later, that’s safe nowadays. Suggested by Bruno Haible in: https://lists.gnu.org/r/bug-gnulib/2024-09/msg00079.html * lib/c++defs.h (_GL_FUNCDECL_RPL, _GL_FUNCDECL_SYS): Revert yesterday’s changes. All callers changed. Add comments explaining the required comma before missing attrs.
Paul Eggert 4531edcf 2024-09-15T21:20:15 Port July changes for [[...]] to C17 The July 30 changes to _GL_FUNCDECL_RPL etc. to support use of attributes in bracket syntax used a C23 preprocessor feature that is a common extension to C17 and earlier, but which doesn’t work when compiled with stricter C17-and-earlier compilers. The feature is using ‘#define f(a, ...) b’ and calling ‘f’ with only one arg. Port back to C17 and earlier. Problem discovered with IBM XL C/C++ for AIX, V12.1 (5765-J02, 5725-C72) on cfarm111. * lib/c++defs.h (_GL_FUNCDECL_RPL): Turn this into two macros _GL_FUNCDECL_RPL and _GL_FUNCATTR_RPL. The first macro is for functions without attributes, the second one for functions with attributes. All uses changed. (_GL_FUNCDECL_SYS): Likewise, turn this into _GL_FUNCDECL_SYS and _GL_FUNCATTR_SYS.
Bruno Haible 348857d0 2024-08-27T21:40:15 Improve support for clang on Windows. * lib/c++defs.h (_GL_CXXALIASWARN_2): Treat clang like gcc 4.2. * lib/stdio.in.h (fwrite, fwrite_unlocked): Likewise. * lib/warn-on-use.h (_GL_WARN_ON_USE, _GL_WARN_ON_USE_CXX): Likewise. * lib/libc-config.h (__GNUC_PREREQ): Override glibc's definition to handle clang in disguise.
Bruno Haible 61720eb1 2024-08-27T16:20:16 Explicitly exclude clang when we test for a GCC version >= 4.3. Rationale: clang can disguise as any possible GCC version. * m4/gnulib-common.m4 (gl_CC_GNULIB_WARNINGS): When testing __GNUC__, exclude clang. * lib/_Noreturn.h (_Noreturn): Likewise. * lib/aligned-malloc.h (aligned_free, aligned_malloc): Likewise. * lib/base32.h: Likewise. * lib/base64.h: Likewise. * lib/dfa.c (FALLTHROUGH): Likewise. * lib/dirent.in.h (_GL_ATTRIBUTE_DEALLOC, opendir, fdopendir): Likewise. * lib/intprops-internal.h: Likewise. * lib/jit/cache.h (clear_cache): Likewise. * lib/malloc.in.h (memalign): Likewise. * lib/mcel.h: Likewise. * lib/regex.h: Likewise. * lib/stddef.in.h (_GL_HAS_BUILTIN_UNREACHABLE): Likewise. * lib/stdio.in.h (_GL_ATTRIBUTE_DEALLOC, fdopen, fopen, popen, tmpfile): Likewise. * lib/stdlib.in.h (_GL_ATTRIBUTE_DEALLOC, aligned_alloc, calloc, canonicalize_file_name, malloc, realloc): Likewise. * lib/string.in.h (_GL_ATTRIBUTE_DEALLOC, strdup, strndup): Likewise. * lib/verify.h: Likewise. * lib/wchar.in.h (_GL_ATTRIBUTE_DEALLOC, wcsdup): Likewise. * lib/xalloc-oversized.h (xalloc_oversized): Likewise. * lib/fenv-private.h (_FPU_GETCW, _FPU_SETCW, _FPU_GETFPSR, _FPU_SETFPSR): When testing __GNUC__, exclude clang. Use different builtins for clang. * lib/hamt.h (GL_HAMT_THREAD_SAFE): When testing __GNUC__, exclude clang. Enable for clang >= 4. * lib/astrxfrm.c: Use _GL_GNUC_PREREQ. * lib/readutmp.c: Likewise. * lib/strftime.c: Likewise. * tests/test-asyncsafe-linked_list-strong.c: Likewise. * tests/test-asyncsafe-linked_list-weak.c: Likewise. * tests/test-c-strtod-mt.c: Likewise. * tests/test-c-strtof-mt.c: Likewise. * tests/test-c-strtold-mt.c: Likewise. * tests/test-gmtime_r-mt.c: Likewise. * tests/test-intprops.c: Likewise. * tests/test-limits-h.c: Likewise. * tests/test-localtime_r-mt.c: Likewise. * tests/test-memrchr.c: Likewise. * tests/test-nl_langinfo-mt.c: Likewise. * tests/test-setlocale_null-mt-all.c: Likewise. * tests/test-setlocale_null-mt-one.c: Likewise. * tests/test-statat.c: Likewise. * tests/test-xvasprintf.c: Likewise.
Bruno Haible e9508205 2024-08-27T00:19:14 Fix some of the warnings from a clang that masquerades as gcc 13. * lib/c-stack.c: Use _GL_GNUC_PREREQ to test for the gcc version. * lib/canonicalize.c: Likewise. * lib/diffseq.h: Likewise. * lib/file-has-acl.c: Likewise. * lib/freopen-safer.c: Likewise. * lib/getndelim2.c: Likewise. * lib/mini-gmp-gnulib.c: Likewise. * lib/propername.c: Likewise. * lib/quotearg.c: Likewise. * lib/savedir.c: Likewise. * lib/vasnprintf.c: Likewise. * tests/test-argmatch.c: Likewise. * tests/test-dup2.c: Likewise. * tests/test-explicit_bzero.c: Likewise. * tests/test-fcntl.c: Likewise. * tests/test-fopen.h: Likewise. * tests/test-getdtablesize.c: Likewise. * tests/test-getgroups.c: Likewise. * tests/test-listen.c: Likewise. * tests/test-localename.c: Likewise. * tests/test-memset_explicit.c: Likewise. * tests/test-open.h: Likewise. * tests/test-perror2.c: Likewise. * tests/test-select.h: Likewise. * lib/stdio.in.h (_GL_ATTRIBUTE_SPEC_PRINTF_STANDARD): Don't use gnu_printf with clang. * lib/string-buffer.h: Likewise. * lib/textstyle.in.h: Likewise.
Bruno Haible d86d4527 2024-08-21T23:22:26 stdio: Fix compilation error in C++ mode on Linux/riscv64 with musl. * lib/stdio.in.h (fpurge): Disable _GL_CXXALIASWARN invocation on non-glibc systems.
Bruno Haible 513ef326 2024-07-30T19:22:40 Reenable use of attributes in bracket syntax [[...]] (regr. yesterday). * m4/gnulib-common.m4 (gl_COMMON_BODY): Add more comments. Don't define _GL_BRACKET_USABLE. * lib/c++defs.h (_GL_EXTERN_C_FUNC): New macro. (_GL_FUNCDECL_RPL, _GL_FUNCDECL_RPL_1, _GL_FUNCDECL_SYS): Expect the attributes in an optional 4th argument. Expand them before the return type. * lib/arpa_inet.in.h: Update all _GL_FUNCDECL_RPL and _GL_FUNCDECL_SYS invocations. * lib/dirent.in.h: Likewise. * lib/error.in.h: Likewise. * lib/fcntl.in.h: Likewise. * lib/fnmatch.in.h: Likewise. * lib/glob.in.h: Likewise. * lib/iconv.in.h: Likewise. * lib/inttypes.in.h: Likewise. * lib/locale.in.h: Likewise. * lib/malloc.in.h: Likewise. * lib/math.in.h: Likewise. * lib/monetary.in.h: Likewise. * lib/netdb.in.h: Likewise. * lib/pthread.in.h: Likewise. * lib/search.in.h: Likewise. * lib/signal.in.h: Likewise. * lib/spawn.in.h: Likewise. * lib/stdio.in.h: Likewise. * lib/stdlib.in.h: Likewise. * lib/string.in.h: Likewise. * lib/sys_random.in.h: Likewise. * lib/sys_resource.in.h: Likewise. * lib/sys_socket.in.h: Likewise. * lib/sys_stat.in.h: Likewise. * lib/sys_time.in.h: Likewise. * lib/threads.in.h: Likewise. * lib/time.in.h: Likewise. * lib/uchar.in.h: Likewise. * lib/unistd.in.h: Likewise. * lib/utime.in.h: Likewise. * lib/wchar.in.h: Likewise. * lib/wctype.in.h: Likewise. * lib/c-vasprintf.h (c_aszprintf, c_vaszprintf, c_asprintf, c_vasprintf): Move _GL_ATTRIBUTE_NODISCARD back to the beginning of the declaration.
Bruno Haible b865c4eb 2024-07-30T02:46:41 Use attribute [[nodiscard]] wherever glibc uses __wur. * lib/malloc.in.h (memalign): Mark with _GL_ATTRIBUTE_NODISCARD. * lib/stdio.in.h (fdopen, fgets, fopen, fread, freopen, fscanf, ftell, ftello, getdelim, getline, popen, scanf, tmpfile, vfscanf, vscanf): Likewise. * lib/stdlib.in.h (aligned_alloc, atoll, calloc, canonicalize_file_name, getsubopt, malloc, mkdtemp, mkostemp, mkostemps, mkstemp, mkstemps, posix_memalign, posix_openpt, ptsname, realloc, reallocarray, realpath, rpmatch, secure_getenv): Likewise. * lib/sys_random.in.h (getrandom): Likewise. * lib/sys_stat.in.h (fchmodat): Likewise. * lib/unistd.in.h (chown, dup, faccessat, fchdir, fchownat, ftruncate, getcwd, getdomainname, getentropy, getgroups, lchown, link, linkat, pipe, pipe2, pread, pwrite, read, readlink, readlinkat, sethostname, symlink, symlinkat, truncate, ttyname_r, write): Likewise.
Bruno Haible 24a82188 2024-07-30T02:02:43 Avoid g++ "warning: attributes are not permitted in this position". * m4/gnulib-common.m4 (gl_COMMON_BODY): Add more comments. Define _GL_BRACKET_USABLE. Use it for _GL_ATTRIBUTE_DEPRECATED, _GL_ATTRIBUTE_MAYBE_UNUSED, _GL_ATTRIBUTE_NODISCARD, _GL_ATTRIBUTE_REPRODUCIBLE, _GL_ATTRIBUTE_UNSEQUENCED. * lib/stdio.in.h (aszprintf, vaszprintf, asprintf, vasprintf): Move _GL_ATTRIBUTE_NODISCARD to the same position as the other attributes. * lib/c-vasprintf.h (c_aszprintf, c_vaszprintf, c_asprintf, c_vasprintf): Likewise.
Bruno Haible 83b3ee9a 2024-07-29T21:59:44 Fix misspelling of __clang_major__. * lib/cdefs.h (__THROW, __THROWNL, __NTH, __NTHNL): Fix misspelled macro name. * m4/gnulib-common.m4 (gl_COMMON_BODY): Likewise. * lib/malloc.in.h (_GL_ATTRIBUTE_NOTHROW): Likewise. * lib/stddef.in.h (_GL_ATTRIBUTE_NOTHROW): Likewise. * lib/stdio.in.h (_GL_ATTRIBUTE_NOTHROW): Likewise. * lib/stdlib.in.h (_GL_ATTRIBUTE_NOTHROW): Likewise. * lib/string.in.h (_GL_ATTRIBUTE_NOTHROW): Likewise. * lib/sys_stat.in.h (_GL_ATTRIBUTE_NOTHROW): Likewise. * lib/wchar.in.h (_GL_ATTRIBUTE_NOTHROW): Likewise.
Bruno Haible d859f9ea 2024-07-29T17:31:13 vasprintf, c-vasprintf: Remind users to consider the return value. * lib/stdio.in.h (aszprintf, vaszprintf, asprintf, vasprintf): Mark with _GL_ATTRIBUTE_NODISCARD. * lib/c-vasprintf.h (c_aszprintf, c_vaszprintf, c_asprintf, c_vasprintf): Likewise.
Bruno Haible b861c3ac 2024-06-30T21:00:47 printf-posix: Document properly. * lib/stdio.in.h (printf): Add specification. * lib/vprintf.c (printf): Remove specification.
Bruno Haible b11765b6 2024-06-30T20:58:29 zprintf: New module. * lib/stdio.in.h (zprintf): New declaration. * lib/zprintf.c: New file, based on lib/vzprintf.c. * m4/stdio_h.m4 (gl_STDIO_H_REQUIRE_DEFAULTS): Initialize GNULIB_ZPRINTF. * modules/stdio (Makefile.am): Substitute GNULIB_ZPRINTF. * modules/zprintf: New file.
Bruno Haible 9128857a 2024-06-30T20:15:58 vprintf-posix: Document properly. * lib/stdio.in.h (vprintf): Add specification. * lib/vprintf.c (vprintf): Remove specification.
Bruno Haible 439f2f25 2024-06-30T20:00:58 vzprintf: New module. * lib/stdio.in.h (vzprintf): New declaration. * lib/vzprintf.c: New file, based on lib/vprintf.c. * m4/stdio_h.m4 (gl_STDIO_H_REQUIRE_DEFAULTS): Initialize GNULIB_VZPRINTF. * modules/stdio (Makefile.am): Substitute GNULIB_VZPRINTF. * modules/vzprintf: New file.
Bruno Haible c05c76f1 2024-06-30T19:47:26 fprintf-posix: Use vfzprintf. * lib/stdio.in.h (fprintf): Add specification. * lib/fprintf.c: Don't include <stdlib.h>, vasnprintf.h. Include intprops.h. (fprintf): Implement based on vfzprintf. * modules/fprintf-posix (Depends-on): Add vfzprintf, intprops. Remove vasnprintf, free-posix.
Bruno Haible 70eef26a 2024-06-30T19:40:35 fzprintf: New module. * lib/stdio.in.h (fzprintf): New declaration. * lib/fzprintf.c: New file, based on lib/vfzprintf.c. * m4/stdio_h.m4 (gl_STDIO_H_REQUIRE_DEFAULTS): Initialize GNULIB_FZPRINTF. * modules/stdio (Makefile.am): Substitute GNULIB_FZPRINTF. * modules/fzprintf: New file.
Bruno Haible 8a398871 2024-06-30T18:45:25 vfprintf-posix: Use vfzprintf. * lib/stdio.in.h (vfprintf): Add specification. * lib/vfprintf.c: Don't include <stdlib.h>, vasnprintf.h. Include intprops.h. (vfprintf): Implement based on vfzprintf. * modules/vfprintf-posix (Depends-on): Add vfzprintf, intprops. Remove vasnprintf, free-posix.
Bruno Haible 133fc37f 2024-06-30T18:31:56 vfzprintf: New module. * lib/stdio.in.h (vfzprintf): New declaration. * lib/vfzprintf.c: New file, based on lib/vfprintf.c and lib/vdzprintf.c. * m4/stdio_h.m4 (gl_STDIO_H_REQUIRE_DEFAULTS): Initialize GNULIB_VFZPRINTF. * modules/stdio (Makefile.am): Substitute GNULIB_VFZPRINTF. * modules/vfzprintf: New file.
Bruno Haible f320c3a5 2024-06-30T17:18:35 dprintf: Use vdzprintf. * lib/stdio.in.h (dprintf): Add specification. * lib/dprintf.c: Don't include <stdlib.h>, full-write.h, vasnprintf.h. Include intprops.h. (dprintf): Implement based on vdzprintf. * modules/dprintf (Depends-on): Add vdzprintf, intprops. Remove vasnprintf, free-posix, full-write.
Bruno Haible 248ce289 2024-06-30T17:17:14 dzprintf: New module. * lib/stdio.in.h (dzprintf): New declaration. * lib/dzprintf.c: New file, based on lib/vdzprintf.c. * m4/stdio_h.m4 (gl_STDIO_H_REQUIRE_DEFAULTS): Initialize GNULIB_DZPRINTF. * modules/stdio (Makefile.am): Substitute GNULIB_DZPRINTF. * modules/dzprintf: New file.
Bruno Haible 3a40fb5e 2024-06-30T17:15:28 vdprintf: Use vdzprintf. * lib/stdio.in.h (vdprintf): Add specification. * lib/vdprintf.c: Don't include <stdlib.h>, full-write.h, vasnprintf.h. Include intprops.h. (vdprintf): Implement based on vdzprintf. * modules/vdprintf (Depends-on): Add vdzprintf, intprops. Remove vasnprintf, free-posix, full-write.
Bruno Haible 95d9b651 2024-06-30T17:09:24 vdzprintf: New module. * lib/stdio.in.h (vdzprintf): New declaration. * lib/vdzprintf.c: New file, based on lib/vdprintf.c. * m4/stdio_h.m4 (gl_STDIO_H_REQUIRE_DEFAULTS): Initialize GNULIB_VDZPRINTF. * modules/stdio (Makefile.am): Substitute GNULIB_VDZPRINTF. * modules/vdzprintf: New file.
Bruno Haible 9118630e 2024-06-30T01:32:24 Global rename *zs[n]printf -> *s[n]zprintf. * lib/aszprintf.c: Renamed from lib/azsprintf.c. * lib/c-aszprintf.c: Renamed from lib/c-azsprintf.c. * lib/c-vaszprintf.c: Renamed from lib/c-vazsprintf.c. * lib/c-vsnzprintf.c: Renamed from lib/c-vzsnprintf.c. * lib/c-snzprintf.c: Renamed from lib/c-zsnprintf.c. * lib/vaszprintf.c: Renamed from lib/vazsprintf.c. * lib/vsnzprintf.c: Renamed from lib/vzsnprintf.c. * lib/vszprintf.c: Renamed from lib/vzsprintf.c. * lib/snzprintf.c: Renamed from lib/zsnprintf.c. * lib/szprintf.c: Renamed from lib/zsprintf.c. * tests/test-c-vaszprintf-gnu.c: Renamed from tests/test-c-vazsprintf-gnu.c. * tests/test-c-vaszprintf-gnu.sh: Renamed from tests/test-c-vazsprintf-gnu.sh. * tests/test-c-vsnzprintf-gnu.c: Renamed from tests/test-c-vzsnprintf-gnu.c. * tests/test-c-vsnzprintf-gnu.sh: Renamed from tests/test-c-vzsnprintf-gnu.sh. * tests/test-c-snzprintf-gnu.c: Renamed from tests/test-c-zsnprintf-gnu.c. * tests/test-c-snzprintf-gnu.sh: Renamed from tests/test-c-zsnprintf-gnu.sh. * tests/test-vaszprintf-gnu.c: Renamed from tests/test-vazsprintf-gnu.c. * tests/test-vaszprintf-gnu.h: Renamed from tests/test-vazsprintf-gnu.h. * tests/test-vaszprintf-posix.c: Renamed from tests/test-vazsprintf-posix.c. * tests/test-vsnzprintf-gnu.c: Renamed from tests/test-vzsnprintf-gnu.c. * tests/test-vsnzprintf-posix.c: Renamed from tests/test-vzsnprintf-posix.c. * tests/test-vszprintf-gnu.c: Renamed from tests/test-vzsprintf-gnu.c. * tests/test-vszprintf-posix.c: Renamed from tests/test-vzsprintf-posix.c. * tests/test-snzprintf-gnu.c: Renamed from tests/test-zsnprintf-gnu.c. * tests/test-snzprintf-gnu.h: Renamed from tests/test-zsnprintf-gnu.h. * tests/test-snzprintf-posix.c: Renamed from tests/test-zsnprintf-posix.c. * tests/test-snzprintf-posix.h: Renamed from tests/test-zsnprintf-posix.h. * tests/test-szprintf-gnu.c: Renamed from tests/test-zsprintf-gnu.c. * tests/test-szprintf-gnu.h: Renamed from tests/test-zsprintf-gnu.h. * tests/test-szprintf-posix.c: Renamed from tests/test-zsprintf-posix.c. * tests/test-szprintf-posix.h: Renamed from tests/test-zsprintf-posix.h. * modules/c-vaszprintf: Renamed from modules/c-vazsprintf. * modules/c-vaszprintf-gnu: Renamed from modules/c-vazsprintf-gnu. * modules/c-vaszprintf-gnu-tests: Renamed from modules/c-vazsprintf-gnu-tests. * modules/c-vsnzprintf: Renamed from modules/c-vzsnprintf. * modules/c-vsnzprintf-gnu: Renamed from modules/c-vzsnprintf-gnu. * modules/c-vsnzprintf-gnu-tests: Renamed from modules/c-vzsnprintf-gnu-tests. * modules/c-snzprintf: Renamed from modules/c-zsnprintf. * modules/c-snzprintf-gnu: Renamed from modules/c-zsnprintf-gnu. * modules/c-snzprintf-gnu-tests: Renamed from modules/c-zsnprintf-gnu-tests. * modules/vaszprintf: Renamed from modules/vazsprintf. * modules/vaszprintf-gnu: Renamed from modules/vazsprintf-gnu. * modules/vaszprintf-gnu-tests: Renamed from modules/vazsprintf-gnu-tests. * modules/vaszprintf-posix: Renamed from modules/vazsprintf-posix. * modules/vaszprintf-posix-tests: Renamed from modules/vazsprintf-posix-tests. * modules/vsnzprintf: Renamed from modules/vzsnprintf. * modules/vsnzprintf-gnu: Renamed from modules/vzsnprintf-gnu. * modules/vsnzprintf-gnu-tests: Renamed from modules/vzsnprintf-gnu-tests. * modules/vsnzprintf-posix: Renamed from modules/vzsnprintf-posix. * modules/vsnzprintf-posix-tests: Renamed from modules/vzsnprintf-posix-tests. * modules/vszprintf: Renamed from modules/vzsprintf. * modules/vszprintf-gnu: Renamed from modules/vzsprintf-gnu. * modules/vszprintf-gnu-tests: Renamed from modules/vzsprintf-gnu-tests. * modules/vszprintf-posix: Renamed from modules/vzsprintf-posix. * modules/vszprintf-posix-tests: Renamed from modules/vzsprintf-posix-tests. * modules/snzprintf: Renamed from modules/zsnprintf. * modules/snzprintf-gnu: Renamed from modules/zsnprintf-gnu. * modules/snzprintf-gnu-tests: Renamed from modules/zsnprintf-gnu-tests. * modules/snzprintf-posix: Renamed from modules/zsnprintf-posix. * modules/snzprintf-posix-tests: Renamed from modules/zsnprintf-posix-tests. * modules/szprintf: Renamed from modules/zsprintf. * modules/szprintf-gnu: Renamed from modules/zsprintf-gnu. * modules/szprintf-gnu-tests: Renamed from modules/zsprintf-gnu-tests. * modules/szprintf-posix: Renamed from modules/zsprintf-posix. * modules/szprintf-posix-tests: Renamed from modules/zsprintf-posix-tests. All function names updated. * lib/stdio.in.h, m4/stdio_h.m4, modules/stdio: Update module indicator names.
Bruno Haible b216546a 2024-06-22T21:31:46 obstack-zprintf: New module. * lib/stdio.in.h (obstack_zprintf, obstack_vzprintf): New declarations. (obstack_printf, obstack_vprintf): Tweak comment. * lib/obstack_printf.c: Parameterize. (RESULT_TYPE, OBSTACK_PRINTF, OBSTACK_VPRINTF): New macros. * lib/obstack_zprintf.c: New file. * m4/stdio_h.m4 (gl_STDIO_H_REQUIRE_DEFAULTS): Initialize GNULIB_OBSTACK_ZPRINTF. * modules/stdio (Makefile.am): Substitute GNULIB_OBSTACK_ZPRINTF. * modules/obstack-zprintf: New file.
Bruno Haible cf5774e9 2024-06-22T12:17:02 vazsprintf: New module. * lib/stdio.in.h (azsprintf, vazsprintf): New declarations. * lib/vazsprintf.c: New file, based on lib/vasprintf.c. * lib/azsprintf.c: New file, based on lib/asprintf.c. * m4/stdio_h.m4 (gl_STDIO_H_REQUIRE_DEFAULTS): Initialize GNULIB_VAZSPRINTF. * modules/stdio (Makefile.am): Substitute GNULIB_VAZSPRINTF. * modules/vazsprintf: New file.
Bruno Haible 8a31e064 2024-06-22T12:16:30 sprintf-posix: Use vzsprintf. * lib/stdio.in.h (sprintf): Move specification to here. * lib/sprintf.c: Don't include <stdlib.h>, vasnprintf.h. Include <stdint.h>. (sprintf): Implement based on vzsprintf. * modules/sprintf-posix (Depends-on): Add vzsprintf. Remove vasnprintf.
Bruno Haible f89f459b 2024-06-22T12:16:24 zsprintf: New module. * lib/stdio.in.h (zsprintf): New declaration, based on lib/sprintf.c. * lib/zsprintf.c: New file, based on lib/sprintf.c. * m4/stdio_h.m4 (gl_STDIO_H_REQUIRE_DEFAULTS): Initialize GNULIB_ZSPRINTF. * modules/stdio (Makefile.am): Substitute GNULIB_ZSPRINTF. * modules/zsprintf: New file.
Bruno Haible 587920f9 2024-06-22T12:16:06 vsprintf-posix: Use vzsprintf. * lib/stdio.in.h (vsprintf): Move specification to here. * lib/vsprintf.c: Don't include <stdlib.h>, vasnprintf.h. (SIZE_MAX): Remove macro. (vsprintf): Implement based on vzsprintf. * modules/vsprintf-posix (Depends-on): Add vzsprintf. Remove vasnprintf.
Bruno Haible 058db602 2024-06-22T12:16:00 vzsprintf: New module. * lib/stdio.in.h (vzsprintf): New declaration, based on lib/vsprintf.c. * lib/vzsprintf.c: New file, based on lib/vsprintf.c. * m4/stdio_h.m4 (gl_STDIO_H_REQUIRE_DEFAULTS): Initialize GNULIB_VZSPRINTF. * modules/stdio (Makefile.am): Substitute GNULIB_VZSPRINTF. * modules/vzsprintf: New file.
Bruno Haible fdcddac1 2024-06-22T12:15:38 snprintf: Use vzsnprintf. * lib/stdio.in.h (snprintf): Move specification to here. * lib/snprintf.c: Don't include <stdlib.h>, <string.h>, vasnprintf.h. Include <stdint.h>. (snprintf): Implement based on vzsnprintf. * modules/snprintf (Depends-on): Add stdint, vzsnprintf. Remove vasnprintf.
Bruno Haible c85fa7f8 2024-06-22T12:15:32 zsnprintf: New module. * lib/stdio.in.h (zsnprintf): New declaration, based on lib/snprintf.c. * lib/zsnprintf.c: New file, based on lib/snprintf.c. * m4/stdio_h.m4 (gl_STDIO_H_REQUIRE_DEFAULTS): Initialize GNULIB_ZSNPRINTF. * modules/stdio (Makefile.am): Substitute GNULIB_ZSNPRINTF. * modules/zsnprintf: New file.
Bruno Haible 7a34ce4c 2024-06-22T12:14:52 vsnprintf: Use vzsnprintf. * lib/stdio.in.h (vsnprintf): Move specification to here. * lib/vsnprintf.c: Don't include <stdlib.h>, <string.h>, vasnprintf.h. Include <stdint.h>. (vsnprintf): Implement based on vzsnprintf. * modules/vsnprintf (Depends-on): Add stdint, vzsnprintf. Remove vasnprintf.
Bruno Haible 599f3ed9 2024-06-22T12:14:41 vzsnprintf: New module. * lib/stdio.in.h (vzsnprintf): New declaration, based on lib/vsnprintf.c. * lib/vzsnprintf.c: New file, based on lib/vsnprintf.c. * m4/stdio_h.m4 (gl_STDIO_H_REQUIRE_DEFAULTS): Initialize GNULIB_VZSNPRINTF. * modules/stdio (Makefile.am): Substitute GNULIB_VZSNPRINTF. * modules/vzsnprintf: New file.
Bruno Haible 13496d1e 2024-04-27T19:51:53 fcntl-h, stdio, unistd: Ensure off64_t is defined on all platforms. * lib/fcntl.in.h: Update comment regarding off64_t. * lib/stdio.in.h: Likewise. * lib/unistd.in.h: Likewise. * tests/test-fcntl-h.c: Verify that off64_t is defined. * tests/test-stdio.c: Likewise. * tests/test-unistd.c: Likewise. * doc/posix-headers/fcntl.texi: Mention the off64_t workaround. * doc/posix-headers/stdio.texi: Likewise. * doc/posix-headers/unistd.texi: Likewise. * doc/posix-headers/aio.texi: Mention the problem with off64_t.
Bruno Haible 44dc586d 2024-04-18T00:21:18 stdio, utime-h: Fix more linkage errors when using C++. * lib/stdio.in.h (rpl_fwrite, rpl_fwrite_unlocked): Use _GL_EXTERN_C instead of extern. * lib/utime.in.h (_gl_utimens_windows): Likewise.
Simon Josefsson 5b92dd0a 2024-01-01T10:31:48 maint: run 'make update-copyright'
Paul Eggert 96b7ae24 2023-11-10T22:33:49 stdio: fix port to older macOS * lib/stdio.in.h: It’s pre macOS 13, not pre macOS 10.13. Problem reported by Sevan Janiyan in: https://lists.gnu.org/r/bug-gnulib/2023-11/msg00066.html et seq.
Paul Eggert 2dd1a798 2023-11-09T10:50:30 stdio: port better to older macOS * lib/stdio.in.h: Do not define _POSIX_C_SOURCE on older macOS, as it is not needed and defining it causes other problems. Problem reported by Sevan Janiyan in: https://mail.gnu.org/r/bug-gnulib/2023-11/msg00039.html
Bruno Haible afd0db41 2023-09-10T23:33:41 Fix clang errors "different exception specifier" (regr. 2023-09-04). * lib/malloc.in.h (memalign): Don't use _GL_ATTRIBUTE_NOTHROW on platforms other than glibc systems. * lib/stdio.in.h (fdopen): Likewise. * lib/stdlib.in.h (aligned_alloc, calloc, canonicalize_file_name, malloc, realloc): Likewise. * lib/string.in.h (strdup, strndup): Likewise. * lib/sys_stat.in.h (getumask): Likewise. * lib/wchar.in.h (wcsdup): Likewise.
Bruno Haible 0b61e454 2023-09-04T19:22:21 Fix some g++ warnings "has a different exception specifier". * m4/gnulib-common.m4 (gl_COMMON_BODY): Make _GL_ATTRIBUTE_NOTHROW effective in C++ mode. * lib/attribute.h (ATTRIBUTE_NOTHROW): Add a comment. * lib/malloc.in.h (_GL_ATTRIBUTE_NOTHROW): Provide fallback definition. (memalign): Invoke _GL_FUNCDECL_SYS with _GL_ATTRIBUTE_NOTHROW. * lib/stdio.in.h (_GL_ATTRIBUTE_NOTHROW): Provide fallback definition. (fdopen): Invoke _GL_FUNCDECL_SYS with _GL_ATTRIBUTE_NOTHROW. * lib/stdlib.in.h (_GL_ATTRIBUTE_NOTHROW): Provide fallback definition. (aligned_alloc, calloc, canonicalize_file_name, malloc, realloc): Invoke _GL_FUNCDECL_SYS with _GL_ATTRIBUTE_NOTHROW. * lib/string.in.h (_GL_ATTRIBUTE_NOTHROW): Provide fallback definition. (strdup, strndup): Invoke _GL_FUNCDECL_SYS with _GL_ATTRIBUTE_NOTHROW. * lib/sys_stat.in.h (_GL_ATTRIBUTE_NOTHROW): Provide fallback definition. (getumask): Invoke _GL_FUNCDECL_SYS with _GL_ATTRIBUTE_NOTHROW. * lib/wchar.in.h (_GL_ATTRIBUTE_NOTHROW): Provide fallback definition. (wcsdup): Invoke _GL_FUNCDECL_SYS with _GL_ATTRIBUTE_NOTHROW.
Paul Eggert 76402405 2023-05-13T21:47:10 stdio: use _GL_ATTRIBUTE_MALLOC * lib/stdio.in.h (fdopen, fopen, popen, tmpfile): Declare with _GL_ATTRIBUTE_MALLOC, for consistency with glibc, and so that building the fopen module with ‘gcc -O2 -Wsuggest-attribute=malloc -Wsystem-headers -Werror’ does not fail with “stdio.h: In function ‘rpl_fopen’: stdio.h:970:1: error: function might be candidate for attribute ‘malloc’ [-Werror=suggest-attribute=malloc]”, a problem I noticed on both Fedora 38 and Ubuntu 23.04. sigsegv: Add tentative support for Hurd/x86_64. Reported by Samuel Thibault <samuel.thibault@ens-lyon.org>.
Bruno Haible dcba8542 2023-04-13T22:17:02 Adjust comments in <config.h> reminders. * lib/*.in.h: In the comments, mention also HAVE_RAW_DECL_*. * Makefile (sc_check_config_h_reminder): Search also for HAVE_RAW_DECL_.
Bruno Haible 8ad7bc67 2023-04-12T14:49:29 Add more reminders to include <config.h>. * m4/gnulib-common.m4 (gl_COMMON): In config.h, define _GL_CONFIG_H_INCLUDED. * lib/acl-internal.h: Test _GL_CONFIG_H_INCLUDED instead of _GL_INLINE_HEADER_BEGIN. * lib/alignalloc.h: Likewise. * lib/argp-fmtstream.h: Likewise. * lib/argp.h: Likewise. * lib/binary-io.h: Likewise. * lib/bitrotate.h: Likewise. * lib/c-ctype.h: Likewise. * lib/count-leading-zeros.h: Likewise. * lib/count-one-bits.h: Likewise. * lib/count-trailing-zeros.h: Likewise. * lib/eealloc.h: Likewise. * lib/execinfo.in.h: Likewise. * lib/gethrxtime.h: Likewise. * lib/gl_list.h: Likewise. * lib/gl_map.h: Likewise. * lib/gl_omap.h: Likewise. * lib/gl_openssl.h: Likewise. * lib/gl_oset.h: Likewise. * lib/gl_set.h: Likewise. * lib/gl_xlist.h: Likewise. * lib/gl_xmap.h: Likewise. * lib/gl_xomap.h: Likewise. * lib/gl_xoset.h: Likewise. * lib/gl_xset.h: Likewise. * lib/gl_xsublist.h: Likewise. * lib/glthread/cond.h: Likewise. * lib/hamt.h: Likewise. * lib/ialloc.h: Likewise. * lib/math.in.h: Likewise. * lib/mbchar.h: Likewise. * lib/mbfile.h: Likewise. * lib/mbiter.h: Likewise. * lib/mbuiter.h: Likewise. * lib/openat.h: Likewise. * lib/pipe-filter-aux.h: Likewise. * lib/priv-set.h: Likewise. * lib/safe-alloc.h: Likewise. * lib/savewd.h: Likewise. * lib/se-context.in.h: Likewise. * lib/se-label.in.h: Likewise. * lib/se-selinux.in.h: Likewise. * lib/sig-handler.h: Likewise. * lib/stat-time.h: Likewise. * lib/string-desc-quotearg.h: Likewise. * lib/string-desc.h: Likewise. * lib/sys_socket.in.h: Likewise. * lib/timespec.h: Likewise. * lib/u64.h: Likewise. * lib/uchar.in.h: Likewise. * lib/unistd.in.h: Likewise. * lib/utimens.h: Likewise. * lib/wctype.in.h: Likewise. * lib/xalloc.h: Likewise. * lib/xbinary-io.h: Likewise. * lib/xsize.h: Likewise. * lib/xstring-desc.h: Likewise. * lib/xtime.h: Likewise. * lib/acl.h: Check that config.h was already included. * lib/alignof.h: Likewise. * lib/argmatch.h: Likewise. * lib/argv-iter.h: Likewise. * lib/arpa_inet.in.h: Likewise. * lib/attribute.h: Likewise. * lib/backupfile.h: Likewise. * lib/base32.h: Likewise. * lib/base64.h: Likewise. * lib/basename-lgpl.h: Likewise. * lib/bitset.h: Likewise. * lib/bitsetv.h: Likewise. * lib/c-snprintf.h: Likewise. * lib/c-stack.h: Likewise. * lib/c-strcase.h: Likewise. * lib/c-vasnprintf.h: Likewise. * lib/c-vasprintf.h: Likewise. * lib/c-vsnprintf.h: Likewise. * lib/c-xvasprintf.h: Likewise. * lib/canon-host.h: Likewise. * lib/canonicalize.h: Likewise. * lib/clean-temp.h: Likewise. * lib/concat-filename.h: Likewise. * lib/ctype.in.h: Likewise. * lib/dfa.h: Likewise. * lib/di-set.h: Likewise. * lib/dirent-safer.h: Likewise. * lib/dirent.in.h: Likewise. * lib/dirname.h: Likewise. * lib/eloop-threshold.h: Likewise. * lib/error.in.h: Likewise. * lib/exclude.h: Likewise. * lib/fatal-signal.h: Likewise. * lib/fcntl.in.h: Likewise. * lib/file-type.h: Likewise. * lib/filenamecat.h: Likewise. * lib/filevercmp.h: Likewise. * lib/flexmember.h: Likewise. * lib/fnmatch.in.h: Likewise. * lib/fpending.h: Likewise. * lib/freadable.h: Likewise. * lib/freadahead.h: Likewise. * lib/freading.h: Likewise. * lib/fts_.h: Likewise. * lib/fwritable.h: Likewise. * lib/fwriting.h: Likewise. * lib/gc.h: Likewise. * lib/get_progname_of.h: Likewise. * lib/glob.in.h: Likewise. * lib/glthread/thread.h: Likewise. * lib/hash-pjw-bare.h: Likewise. * lib/hash-pjw.h: Likewise. * lib/hash-triple.h: Likewise. * lib/hash.h: Likewise. * lib/i-ring.h: Likewise. * lib/iconv.in.h: Likewise. * lib/ino-map.h: Likewise. * lib/inttostr.h: Likewise. * lib/inttypes.in.h: Likewise. * lib/javaversion.h: Likewise. * lib/langinfo.in.h: Likewise. * lib/locale.in.h: Likewise. * lib/localename.h: Likewise. * lib/malloc.in.h: Likewise. * lib/malloca.h: Likewise. * lib/memcasecmp.h: Likewise. * lib/memchr2.h: Likewise. * lib/memcmp2.h: Likewise. * lib/modechange.h: Likewise. * lib/monetary.in.h: Likewise. * lib/mountlist.h: Likewise. * lib/netdb.in.h: Likewise. * lib/obstack.h: Likewise. * lib/opendirat.h: Likewise. * lib/pagealign_alloc.h: Likewise. * lib/pipe-filter.h: Likewise. * lib/poll.in.h: Likewise. * lib/pthread.in.h: Likewise. * lib/pty.in.h: Likewise. * lib/quotearg.h: Likewise. * lib/read-file.h: Likewise. * lib/readline.h: Likewise. * lib/readutmp.h: Likewise. * lib/regex-quote.h: Likewise. * lib/relocatable.h: Likewise. * lib/savedir.h: Likewise. * lib/sched.in.h: Likewise. * lib/search.in.h: Likewise. * lib/sh-quote.h: Likewise. * lib/signal.in.h: Likewise. * lib/sigpipe-die.h: Likewise. * lib/sockets.h: Likewise. * lib/spawn.in.h: Likewise. * lib/ssfmalloc.h: Likewise. * lib/stack.h: Likewise. * lib/stdalign.in.h: Likewise. * lib/stdarg.in.h: Likewise. * lib/stddef.in.h: Likewise. * lib/stdio-safer.h: Likewise. * lib/stdio.in.h: Likewise. * lib/stdlib.in.h: Likewise. * lib/stdnoreturn.in.h: Likewise. * lib/strerror-override.h: Likewise. * lib/striconv.h: Likewise. * lib/striconveh.h: Likewise. * lib/striconveha.h: Likewise. * lib/string-buffer.h: Likewise. * lib/string.in.h: Likewise. * lib/strings.in.h: Likewise. * lib/strnlen1.h: Likewise. * lib/sys_file.in.h: Likewise. * lib/sys_ioctl.in.h: Likewise. * lib/sys_random.in.h: Likewise. * lib/sys_resource.in.h: Likewise. * lib/sys_select.in.h: Likewise. * lib/sys_stat.in.h: Likewise. * lib/sys_time.in.h: Likewise. * lib/sys_times.in.h: Likewise. * lib/sys_utsname.in.h: Likewise. * lib/sys_wait.in.h: Likewise. * lib/system-quote.h: Likewise. * lib/term-style-control.h: Likewise. * lib/termios.in.h: Likewise. * lib/textstyle.in.h: Likewise. * lib/threads.in.h: Likewise. * lib/time.in.h: Likewise. * lib/trim.h: Likewise. * lib/utime.in.h: Likewise. * lib/utmp.in.h: Likewise. * lib/vasnprintf.h: Likewise. * lib/verror.h: Likewise. * lib/version-etc.h: Likewise. * lib/wchar.in.h: Likewise. * lib/windows-spawn.h: Likewise. * lib/windows-thread.h: Likewise. * lib/xgetcwd.h: Likewise. * lib/xgetdomainname.h: Likewise. * lib/xgethostname.h: Likewise. * lib/xmalloca.h: Likewise. * lib/xmemdup0.h: Likewise. * lib/xprintf.h: Likewise. * lib/xreadlink.h: Likewise. * lib/xstriconv.h: Likewise. * lib/xstriconveh.h: Likewise. * lib/xstrndup.h: Likewise. * lib/xstrtol-error.h: Likewise. * lib/xvasprintf.h: Likewise. * Makefile (config_h_MACROS*): New variables. (sc_check_config_h_reminder): New rule.
Bruno Haible 54505494 2023-04-08T00:19:35 stdio: Fix the value of _PRINTF_NAN_LEN_MAX on OpenBSD. * lib/stdio.in.h (_PRINTF_NAN_LEN_MAX): Define to 4 on OpenBSD.
Bruno Haible c33d7e3b 2023-04-07T23:42:41 stdio: Fix compilation error in C++ mode on macOS. * lib/stdio.in.h (getw, putw): Repeat the declaration even if the function is already supposed to be declared.
Bruno Haible eb8da36e 2023-03-25T19:36:31 stdio: ISO C 23: Define _PRINTF_NAN_LEN_MAX. * lib/stdio.in.h (_PRINTF_NAN_LEN_MAX): New macro. * m4/stdio_h.m4 (gl_STDIO_H): Invoke gl_MUSL_LIBC. * modules/stdio (Files): Add m4/musl.m4. * tests/test-stdio.c: Check that _PRINTF_NAN_LEN_MAX is defined. Include nan.h, macros.h. (main): Check the value of _PRINTF_NAN_LEN_MAX. * modules/stdio-tests (Files): Add tests/nan.h, tests/macros.h, m4/exponentd.m4. (configure.ac): Invoke gl_DOUBLE_EXPONENT_LOCATION.
Paul Eggert b1d7d87c 2023-03-05T16:25:49 stdio: suppress macOS 13 sprintf warnings * lib/stdio.in.h (_POSIX_C_SOURCE, _GL_DEFINED__POSIX_C_SOURCE): Suppress deprecation warnings for sprintf and vsprintf that were introduced in macOS 13. These are not useful for Gnulib itself, and are more likely than not to be merely an annoyance for Gnulib-using code.
Bruno Haible 3dfb8192 2023-01-22T12:22:31 Resolve conflicts for functions introduced in Android API level 21. * m4/dprintf.m4 (gl_REPLACE_DPRINTF): Conditionally set REPLACE_DPRINTF. * lib/stdio.in.h (dprintf): Disable _GL_CXXALIASWARN invocation on non-glibc systems.
Bruno Haible 8148edea 2023-01-22T02:22:22 Resolve conflicts for functions introduced in Android API level 18. * m4/getdelim.m4 (gl_FUNC_GETDELIM): Conditionally set REPLACE_GETDELIM. * m4/getline.m4 (gl_FUNC_GETLINE): Conditionally set REPLACE_GETLINE. * lib/stdio.in.h (getdelim, getline): Disable _GL_CXXALIASWARN invocation on non-glibc systems.
Bruno Haible 3c92fb8e 2023-01-03T17:14:33 stdio: Fix error in C++ mode on Android, due to putw. * lib/stdio.in.h (putw): Don't declare in the C++ namespace if putw is not declared. * m4/stdio_h.m4 (gl_STDIO_H): Test whether putw is declared. (gl_STDIO_H_DEFAULTS): Initialize HAVE_DECL_PUTW. * modules/stdio (Makefile.am): Substitute HAVE_DECL_PUTW. * doc/glibc-functions/putw.texi: Update regarding Android.
Bruno Haible 7f15a26e 2023-01-03T17:11:19 stdio: Fix error in C++ mode on Android, due to getw. * lib/stdio.in.h (getw): Don't declare in the C++ namespace if getw is not declared. * m4/stdio_h.m4 (gl_STDIO_H): Test whether getw is declared. (gl_STDIO_H_DEFAULTS): Initialize HAVE_DECL_GETW. * modules/stdio (Makefile.am): Substitute HAVE_DECL_GETW.
Simon Josefsson 32a72f45 2023-01-01T01:14:21 maint: run 'make update-copyright'
Bruno Haible a690f1be 2022-01-03T16:17:18 fopen-gnu: Allow use as dependency from test modules. * m4/fopen.m4 (gl_FUNC_FOPEN_GNU): Set REPLACE_FOPEN_FOR_FOPEN_GNU instead of REPLACE_FOPEN. * m4/stdio_h.m4 (gl_STDIO_H_REQUIRE_DEFAULTS): Initialize the fopen-gnu module indicator. (gl_STDIO_H_DEFAULTS): Initialize REPLACE_FOPEN_FOR_FOPEN_GNU. * modules/stdio (Makefile.am): Substitute GNULIB_FOPEN_GNU, REPLACE_FOPEN_FOR_FOPEN_GNU. * modules/fopen-gnu (Depends-on): Add more dependencies. (configure.ac): Test REPLACE_FOPEN_FOR_FOPEN_GNU instead of REPLACE_FOPEN. * lib/stdio.in.h (fopen): Test REPLACE_FOPEN, REPLACE_FOPEN_FOR_FOPEN_GNU, and the respective module indicators instead of just REPLACE_FOPEN.
Paul Eggert eec12c00 2022-01-01T09:43:19 maint: run 'make update-copyright'
Bruno Haible 354f27fe 2021-08-22T23:54:40 Make generated .in.h files as standalone as possible. Reported by Jan Engelhardt <jengelh@inai.de>. * lib/stdlib.in.h (_GL_ATTRIBUTE_DEALLOC, _GL_ATTRIBUTE_DEALLOC_FREE, _GL_ATTRIBUTE_MALLOC): Add fallback definitions. * lib/dirent.in.h (_GL_ATTRIBUTE_DEALLOC, _GL_ATTRIBUTE_MALLOC): Add fallback definitions. * lib/stdio.in.h (_GL_ATTRIBUTE_DEALLOC): Add fallback definition. * lib/math.in.h (_GL_ATTRIBUTE_CONST): Add fallback definition. * lib/pthread.in.h (_GL_ATTRIBUTE_PURE): Add fallback definition. * lib/threads.in.h (_GL_ATTRIBUTE_PURE): Likewise. * lib/uchar.in.h (_GL_ATTRIBUTE_PURE): Likewise. * lib/string.in.h (_GL_ATTRIBUTE_PURE): Move definition, for consistency with the other *.in.h files. * lib/se-context.in.h (_GL_ATTRIBUTE_MAYBE_UNUSED): Add fallback definition. * lib/se-label.in.h (_GL_ATTRIBUTE_MAYBE_UNUSED): Likewise. * lib/se-selinux.in.h (_GL_ATTRIBUTE_MAYBE_UNUSED): Likewise. * lib/textstyle.in.h: Use _GL_ATTRIBUTE_MAYBE_UNUSED instead of _GL_UNUSED. (_GL_ATTRIBUTE_SPEC_PRINTF_STANDARD, _GL_ATTRIBUTE_MAYBE_UNUSED): Add fallback definitions.
Bruno Haible 09917a44 2021-08-08T18:27:56 stdio: Improve GCC 11 allocation-deallocation checking. * lib/stdio.in.h (fdopen, fopen, tmpfile): For GCC >= 11: Declare nearly always. (popen): For GCC >= 11: Declare also when the platform already declares the function or when the module 'popen' is not in use.
Bruno Haible a2dcb11b 2021-08-07T18:17:55 stdio: Improve GCC 11 allocation-deallocation checking. * lib/stdio.in.h (fdopen, fopen, tmpfile): Declare that deallocation must happen through 'fclose'. (popen): Declare that deallocation must happen through 'pclose'. * lib/stdio-safer.h (fopen_safer, tmpfile_safer): Declare that deallocation must happen through 'fclose'. (popen_safer): Declare that deallocation must happen through 'pclose'. (freopen_safer): Declare that arguments must be non-NULL.
Bruno Haible 7f7c3c1e 2021-06-20T03:23:41 stdio: Improve conflict resolution between gnulib and libintl.h. * lib/stdio.in.h (GNULIB_overrides_snprintf, GNULIB_overrides_sprintf, GNULIB_overrides_asprintf, GNULIB_overrides_vasprintf, GNULIB_overrides_vsnprintf, GNULIB_overrides_vsprintf): New macros.
Bruno Haible 5ffa1440 2021-06-04T20:55:41 Put LGPLv2+ notices in source files where appropriate. * lib/**.{h,c,gperf}: Use LGPLv2+ notice whenever the module description says so.
Bruno Haible af26171a 2021-05-22T22:14:28 stdio: Fix compilation error on DragonFly BSD. * lib/stdio.in.h (fcloseall): Treat DragonFly BSD like FreeBSD.
Paul Eggert 4b948321 2021-01-01T07:28:52 maint: run 'make update-copyright'
Bruno Haible 52c7413a 2020-12-25T13:48:17 Make it possible to turn off each of the Windows oldnames workarounds. * lib/fcntl.in.h (creat, open): Conditionalize each of the Windows oldnames workarounds through a GNULIB_MDA_<func> symbol. * lib/math.in.h (j0, j1, jn, y0, y1, yn): Likewise. * lib/search.in.h (lfind, lsearch): Likewise. * lib/stdio.in.h (fcloseall, fdopen, fileno, getw, putw, tempnam): Likewise. * lib/stdlib.in.h (ecvt, fcvt, gcvt, mktemp, putenv): Likewise. * lib/string.in.h (memccpy, strdup): Likewise. * lib/sys_stat.in.h (chmod, umask): Likewise. * lib/time.in.h (tzset): Likewise. * lib/unistd.in.h (access, chdir, close, dup, dup2, execl, execle, execlp, execv, execve, execvp, execvpe, getcwd, getpid, isatty, lseek, read, rmdir, swab, unlink, write): Likewise. * lib/utime.in.h (utime): Likewise. * lib/wchar.in.h (wcsdup): Likewise. * m4/fcntl_h.m4 (gl_FCNTL_H_DEFAULTS): Initialize these GNULIB_MDA_<func> symbols. * m4/math_h.m4 (gl_MATH_H_DEFAULTS): Likewise. * m4/search_h.m4 (gl_SEARCH_H_DEFAULTS): Likewise. * m4/stdio_h.m4 (gl_STDIO_H_DEFAULTS): Likewise. * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Likewise. * m4/string_h.m4 (gl_HEADER_STRING_H_DEFAULTS): Likewise. * m4/sys_stat_h.m4 (gl_SYS_STAT_H_DEFAULTS): Likewise. * m4/time_h.m4 (gl_HEADER_TIME_H_DEFAULTS): Likewise. * m4/unistd_h.m4 (gl_UNISTD_H_DEFAULTS): Likewise. * m4/utime_h.m4 (gl_UTIME_H_DEFAULTS): Likewise. * m4/wchar_h.m4 (gl_WCHAR_H_DEFAULTS): Likewise. * modules/fcntl-h (Makefile.am): Substitute these GNULIB_MDA_<func> symbols. * modules/math (Makefile.am): Likewise. * modules/search (Makefile.am): Likewise. * modules/stdio (Makefile.am): Likewise. * modules/stdlib (Makefile.am): Likewise. * modules/string (Makefile.am): Likewise. * modules/sys_stat (Makefile.am): Likewise. * modules/time (Makefile.am): Likewise. * modules/unistd (Makefile.am): Likewise. * modules/utime-h (Makefile.am): Likewise. * modules/wchar (Makefile.am): Likewise.
Bruno Haible 5b6ea851 2020-12-06T16:43:36 Do the Windows oldnames workaround through the C++ GNULIB_NAMESPACE. Reported by Daniel R. Hurtmans <Daniel.Hurtmans@ulb.ac.be> in <https://lists.gnu.org/archive/html/bug-gnulib/2020-12/msg00029.html>. * lib/c++defs.h (_GL_CXXALIAS_MDA_CAST): New macro. * lib/fcntl.in.h (creat, open): In C++ mode, when GNULIB_NAMESPACE is defined: 1. Define a symbol in this namespace. 2. Don't redirect using a preprocessor #define. * lib/math.in.h (j0, j1, jn, y0, y1, yn): Likewise. * lib/search.in.h (lfind, lsearch): Likewise. * lib/stdio.in.h (fcloseall, fdopen, fileno, getw, putw, tempnam): Likewise. * lib/stdlib.in.h (ecvt, fcvt, gcvt, mktemp, putenv): Likewise. * lib/string.in.h (memccpy, strdup): Likewise. * lib/sys_stat.in.h (chmod, umask): Likewise. * lib/time.in.h (tzset): Likewise. * lib/unistd.in.h (access, chdir, close, dup, dup2, execl, execle, execlp, execv, execve, execvp, execvpe, getcwd, getpid, isatty, lseek, read, rmdir, swab, unlink, write): Likewise. * lib/utime.in.h (utime): Likewise. * lib/wchar.in.h (wcsdup): Likewise. * m4/stdio_h.m4 (gl_STDIO_H_DEFAULTS): Initialize HAVE_DECL_FCLOSEALL. (gl_STDIO_H): Set HAVE_DECL_FCLOSEALL. * modules/stdio (Makefile.am): Substitute HAVE_DECL_FCLOSEALL. * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Initialize HAVE_DECL_ECVT, HAVE_DECL_FCVT, HAVE_DECL_GCVT. (gl_STDLIB_H): Set HAVE_DECL_ECVT, HAVE_DECL_FCVT, HAVE_DECL_GCVT. * modules/stdlib (Makefile.am): Substitute HAVE_DECL_ECVT, HAVE_DECL_FCVT, HAVE_DECL_GCVT. * m4/unistd_h.m4 (gl_UNISTD_H_DEFAULTS): Initialize HAVE_DECL_EXECVPE. (gl_UNISTD_H): Set HAVE_DECL_EXECVPE. * modules/unistd (Makefile.am): Substitute HAVE_DECL_EXECVPE. * m4/wchar_h.m4 (gl_WCHAR_H_DEFAULTS): Initialize HAVE_DECL_WCSDUP. (gl_WCHAR_H): Set HAVE_DECL_WCSDUP. * modules/wchar (Makefile.am): Substitute HAVE_DECL_WCSDUP.
Bruno Haible 387d654c 2020-11-24T01:32:51 Use the correct printf format attribute for mingw. Reported by Reuben Thomas <rrt@sc3d.org> in <https://lists.gnu.org/archive/html/bug-gnulib/2020-11/msg00133.html>. * modules/vfprintf-posix (configure.ac): Define GNULIB_VFPRINTF_POSIX. * modules/vprintf-posix (configure.ac): Define GNULIB_VPRINTF_POSIX. * lib/stdio.in.h (_GL_ATTRIBUTE_SPEC_PRINTF_STANDARD, _GL_ATTRIBUTE_SPEC_PRINTF_SYSTEM): New macros. (_GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD): Renamed from _GL_ATTRIBUTE_FORMAT_PRINTF. Use _GL_ATTRIBUTE_SPEC_PRINTF_STANDARD. (_GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM): Use _GL_ATTRIBUTE_SPEC_PRINTF_SYSTEM. * modules/vasnprintf (Depends-on): Add stdio. * lib/vasnprintf.h: Include <stdio.h>. (asnprintf, vasnprintf): Use the standard printf format attribute. * modules/xvasprintf (Depends-on): Add stdio. * lib/xvasprintf.h: Include <stdio.h>. (xasprintf, xvasprintf): Use the standard printf format attribute. * modules/xprintf (Depends-on): List stdio first. * lib/xprintf.h (xprintf, xvprintf): Use a printf format attribute that depends on GNULIB_VPRINTF_POSIX. (xfprintf, xvfprintf): Use a printf format attribute that depends on GNULIB_VFPRINTF_POSIX. * modules/c-vasnprintf (Depends-on): Add stdio. * lib/c-vasnprintf.h: Include <stdio.h>. (c_vasnprintf): Use the standard printf format attribute. * modules/c-vasprintf (Depends-on): Add stdio. * lib/c-vasprintf.h: Include <stdio.h>. (c_asprintf, c_vasprintf): Use the standard printf format attribute. * modules/c-vsnprintf (Depends-on): Add stdio. * lib/c-vsnprintf.h: Include <stdio.h>. (c_vsnprintf): Use the standard printf format attribute. * modules/c-snprintf (Depends-on): Add stdio. * lib/c-snprintf.h: Include <stdio.h>. (c_snprintf): Use the standard printf format attribute. * modules/c-xvasprintf (Depends-on): Add stdio. * lib/c-xvasprintf.h: Include <stdio.h>. (c_xasprintf, c_xvasprintf): Use the standard printf format attribute. * modules/error (Depends-on): Depend on stdio always. * lib/error.h: Include <stdio.h>. (_GL_ATTRIBUTE_SPEC_PRINTF): Remove macro. (error, error_at_line): Use a printf format attribute that depends on GNULIB_VFPRINTF_POSIX. * lib/error.c (_GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD): Renamed from _GL_ATTRIBUTE_FORMAT_PRINTF. * modules/verror (Depends-on): Add stdio. * lib/verror.h: Include <stdio.h>. Don't include "error.h". (verror, verror_at_line): Use the standard printf format attribute. * lib/verror.c: Include "error.h". * modules/argp (Depends-on): Add stdio. * lib/argp.h (argp_error, __argp_error, argp_failure, __argp_failure): Use a printf format attribute that depends on GNULIB_VFPRINTF_POSIX. * modules/libtextstyle-optional (Depends-on): Add stdio. * lib/textstyle.in.h (ostream_printf, ostream_vprintf): Use the standard printf format attribute. * tests/test-nonblocking-misc.h (dbgfprintf): Use the standard printf format attribute.
Bruno Haible 7ed8aabb 2020-08-16T18:47:47 stdio: Don't break attribute 'scanf' on clang. * lib/stdio.in.h (scanf): Treat clang like GCC.
Bruno Haible 937f11ec 2020-08-16T13:00:35 Fix "warning: 'format' attribute argument not supported: rpl_printf". * lib/stdio.in.h (printf): Treat clang like GCC.
Bruno Haible 9b281978 2020-08-16T13:00:17 Fix "warning: attribute declaration must precede definition" with clang. * lib/math.in.h (acosl, asinl, atanl, ceill, cosl, expl, fabsf, fabsl, floorl, fmodl, frexpf, frexpl, hypotf, hypotl, ldexpf, ldexpl, logl, log10l, modfl, sinl, sqrtl, tanl): Disable _GL_CXXALIASWARN invocation on non-glibc systems. * lib/netdb.in.h (gai_strerror): Likewise. * lib/stdio.in.h (snprintf, vfscanf, vscanf, vsnprintf): Likewise. * lib/sys_stat.in.h (fstat): Likewise. * lib/utime.in.h (utime): Likewise.
Bruno Haible d4c637e5 2020-08-15T16:54:17 Support compiling without -loldnames on native Windows. * m4/gnulib-common.m4 (GL_MDA_DEFINES, _GL_MDA_DEFINES): New macros. * m4/chown.m4 (AC_FUNC_CHOWN): In the test programs, use GL_MDA_DEFINES. (gl_FUNC_CHOWN, gl_FUNC_CHOWN_FOLLOWS_SYMLINK): Likewise. * m4/dup.m4 (gl_FUNC_DUP): Likewise. * m4/dup2.m4 (gl_FUNC_DUP2): Likewise. * m4/fchdir.m4 (gl_FUNC_FCHDIR): Likewise. * m4/fchmodat.m4 (gl_FUNC_FCHMODAT): Likewise. * m4/fchownat.m4 (gl_FUNC_FCHOWNAT_EMPTY_FILENAME_BUG): Likewise. * m4/fcntl-o.m4 (gl_FCNTL_O_FLAGS): Likewise. * m4/fcntl.m4 (gl_FUNC_FCNTL): Likewise. * m4/fdopen.m4 (gl_FUNC_FDOPEN): Likewise. * m4/fdopendir.m4 (gl_FUNC_FDOPENDIR): Likewise. * m4/fflush.m4 (gl_FUNC_FFLUSH_STDIN): Likewise. * m4/fopen.m4 (gl_FUNC_FOPEN_GNU): Likewise. * m4/freopen.m4 (gl_FUNC_FREOPEN): Likewise. * m4/futimens.m4 (gl_FUNC_FUTIMENS): Likewise. * m4/getcwd-abort-bug.m4 (gl_FUNC_GETCWD_ABORT_BUG): Likewise. * m4/getcwd-path-max.m4 (gl_FUNC_GETCWD_PATH_MAX): Likewise. * m4/getcwd.m4 (gl_FUNC_GETCWD_NULL, gl_FUNC_GETCWD_SIGNATURE): Likewise. * m4/getdtablesize.m4 (gl_FUNC_GETDTABLESIZE): Likewise. * m4/linkat.m4 (gl_FUNC_LINKAT): Likewise. * m4/lseek.m4 (gl_FUNC_LSEEK): Likewise. * m4/mkdir.m4 (gl_FUNC_MKDIR): Likewise. * m4/mkstemp.m4 (gl_FUNC_MKSTEMP): Likewise. * m4/mktime.m4 (gl_FUNC_MKTIME_WORKS): Likewise. * m4/open-slash.m4 (gl_OPEN_TRAILING_SLASH_BUG): Likewise. * m4/poll.m4 (gl_FUNC_POLL): Likewise. * m4/posix_spawn.m4 (gl_POSIX_SPAWN_WORKS): Likewise. * m4/pread.m4 (gl_FUNC_PREAD): Likewise. * m4/pselect.m4 (gl_FUNC_PSELECT): Likewise. * m4/pthread_sigmask.m4 (gl_FUNC_PTHREAD_SIGMASK): Likewise. * m4/ptsname_r.m4 (gl_PREREQ_PTSNAME_R): Likewise. * m4/putenv.m4 (gl_FUNC_PUTENV): Likewise. * m4/pwrite.m4 (gl_FUNC_PWRITE): Likewise. * m4/rename.m4 (gl_FUNC_RENAME): Likewise. * m4/rmdir-errno.m4 (gl_FUNC_RMDIR_NOTEMPTY): Likewise. * m4/rmdir.m4 (gl_FUNC_RMDIR): Likewise. * m4/select.m4 (gl_FUNC_SELECT): Likewise. * m4/setenv.m4 (gl_FUNC_UNSETENV): Likewise. * m4/strncat.m4 (gl_FUNC_STRNCAT): Likewise. * m4/ttyname_r.m4 (gl_FUNC_TTYNAME_R): Likewise. * m4/unlink-busy.m4 (gl_FUNC_UNLINK_BUSY_TEXT): Likewise. * m4/unlink.m4 (gl_FUNC_UNLINK): Likewise. * m4/utimens.m4 (gl_UTIMENS): Likewise. * m4/utimensat.m4 (gl_FUNC_UTIMENSAT): Likewise. * m4/utimes.m4 (gl_FUNC_UTIMES): Likewise. * m4/canonicalize.m4 (gl_CANONICALIZE_LGPL): On native Windows, don't test for getcwd. * m4/utime.m4 (gl_FUNC_UTIME): On native Windows, don't test for utime. * m4/wcsdup.m4 (gl_FUNC_WCSDUP): To test for wcsdup, use a test program with GL_MDA_DEFINES. * lib/c++defs.h (_GL_CXXALIAS_MDA): New macro. * lib/fcntl.in.h (creat, open): On native Windows, use the underscore- prefixed symbol. * lib/search.in.h (lfind, lsearch): Likewise. * lib/stdio.in.h (fcloseall, fdopen, fileno, getw, putw, tempnam): Likewise. * lib/stdlib.in.h (ecvt, fcvt, gcvt, mktemp, putenv): Likewise. * lib/string.in.h (memccpy, strdup): Likewise. * lib/sys_stat.in.h (chmod, umask): Likewise. * lib/time.in.h (tzset): Likewise. * lib/unistd.in.h (access, chdir, close, dup, dup2, execl, execle, execlp, execv, execve, execvp, execvpe, getcwd, getpid, isatty, lseek, read, rmdir, swab, unlink, write): Likewise. * lib/utime.in.h (utime): Likewise. * lib/wchar.in.h (wcsdup): Likewise. * lib/math.in.h (j0, j1, jn, y0, y1, yn): Likewise. (isfinite, isinf, isnan, signbit): On native Windows, don't define as an rpl_-prefixed macro. * lib/canonicalize-lgpl.c (__getcwd): On native Windows, use _getcwd. * lib/close.c (close_nothrow): On native Windows, use _close. * lib/creat.c (orig_creat): On native Windows, use _creat. * lib/dup.c (dup_nothrow): On native Windows, use _dup. * lib/dup2.c (dup2_nothrow): Use _dup2. * lib/fdopen.c (fdopen_nothrow): On native Windows, use _fdopen. * lib/getcwd-lgpl.c: On native Windows, use _getcwd. * lib/getcwd.c (getcwd_nothrow): Use _getcwd also on mingw. * lib/open.c (orig_open): On native Windows, use _open. * lib/read.c (read_nothrow): Use _read. * lib/rmdir.c: On native Windows, use _rmdir. * lib/unlink.c: On native Windows, use _unlink. * lib/write.c (write_nothrow): Use _write. * lib/sys_select.in.h (close): With clang, don't attach a warning on an undefined symbol. * lib/sys_socket.in.h (close): Likewise. * lib/sys_time.in.h (close): Likewise. * tests/test-spawn-pipe-child.c: On native Windows, use _fdopen.
Bruno Haible 01b5720b 2020-08-11T01:53:13 Use many __attribute__s with clang. * m4/gnulib-common.m4 (_Noreturn): Use __attribute__ __noreturn__ also on clang. * lib/cdefs.h (__glibc_clang_has_attribute, __glibc_clang_has_builtin): New macros. (__THROW, __THROWNL, __NTH, __NTHNL): Use __attribute__ __nothrow__ also on clang. (__warndecl, __warnattr, __errordecl): Use __attribute__ __diagnose_if__ also on older clang versions. (__attribute__): Don't define to empty on clang. (__attribute_malloc__): Use __attribute__ __malloc__ also on clang. (__attribute_pure__): Use __attribute__ __pure__ also on clang. (__attribute_const__): Use __attribute__ __const__ also on clang. (__attribute_used__): Use __attribute__ __used__ also on clang. (__attribute_noinline__): Use __attribute__ __noinline__ also on clang. (__attribute_deprecated__): Use __attribute__ __deprecated__ also on clang. (__attribute_format_arg__): Use __attribute__ __format_arg__ also on clang. (__attribute_format_strfmon__): Use __attribute__ __format__ __strfmon__ also on clang. (__nonnull): Use __attribute__ __nonnull__ also on clang. (__attribute_warn_unused_result__): Use __attribute__ __warn_unused_result__ also on clang. (__always_inline): Use __attribute__ __always_inline__ also on clang. (__attribute_artificial__): Use __attribute__ __artificial__ also on clang >= 7. (__glibc_unlikely, __glibc_likely): Use __builtin_expect also on older clang versions. (_Noreturn): Don't redefine on clang >= 3.5. * lib/arg-nonnull.h (_GL_ARG_NONNULL): Use __attribute__ __nonnull__ also on clang. * lib/dirent.in.h (_GL_ATTRIBUTE_PURE): Use __attribute__ __pure__ also on clang. * lib/stdlib.in.h (_GL_ATTRIBUTE_PURE): Likewise. * lib/string.in.h (_GL_ATTRIBUTE_PURE): Likewise. * lib/wchar.in.h (_GL_ATTRIBUTE_PURE): Likewise. * lib/stdio.in.h (_GL_ATTRIBUTE_FORMAT): Use __attribute__ __format__ also on clang. * lib/monetary.in.h (_GL_ATTRIBUTE_FORMAT): Likewise. * lib/textstyle.in.h (ostream_printf, ostream_vprintf): Likewise. * lib/unitypes.in.h (_UC_ATTRIBUTE_CONST): Use __attribute__ __const__ also on clang. (_UC_ATTRIBUTE_PURE): Use __attribute__ __pure__ also on clang. * lib/noreturn.h (_GL_NORETURN_FUNC, _GL_NORETURN_FUNCPTR): Use __attribute__ __noreturn__ also on clang. * lib/obstack.h (__attribute_noreturn__): Likewise. * lib/file-set.h (record_file): Use __attribute__ __nonnull__ also on clang. * lib/argp-help.c (hol_entry_long_iterate): Use __attribute__ always_inline also on clang. * tests/test-printf-posix.c (func1, func2, func3, func4): Test also on clang.
Bruno Haible e75f9249 2020-05-09T12:58:23 stdio, monetary: Don't redefine _GL_ATTRIBUTE_FORMAT. * lib/stdio.in.h (_GL_ATTRIBUTE_FORMAT): Don't override the definition that usually comes from m4/gnulib-common.m4. * lib/monetary.in.h (_GL_ATTRIBUTE_FORMAT): Likewise.
Bruno Haible 182afcba 2020-02-22T20:57:30 Use 'restrict' in all POSIX function declarations. * lib/iconv.in.h (iconv): Use 'restrict'. * lib/inttypes.in.h (strtoimax, strtoumax): Likewise. * lib/monetary.in.h (strfmon_l): Likewise. * lib/pthread.in.h (pthread_create, pthread_mutex_init, pthread_mutexattr_gettype, pthread_mutexattr_getrobust, pthread_mutex_timedlock, pthread_rwlock_init, pthread_rwlock_timedrdlock, pthread_rwlock_timedwrlock, pthread_cond_init, pthread_cond_wait, pthread_cond_timedwait): Likewise. * lib/search.in.h (tdelete): Likewise. * lib/signal.in.h (pthread_sigmask, sigprocmask): Likewise. * lib/stdio.in.h (dprintf, fgets, fopen, fprintf, fputs, fread, freopen, fscanf, fwrite, getdelim, getline, printf, scanf, snprintf, sprintf, vdprintf, vfprintf, vfscanf, vprintf, vscanf, vsnprintf, vsprintf): Likewise. * lib/stdlib.in.h (mbtowc, realpath, strtod, strtold, strtoll, strtoull): Likewise. * lib/string.in.h (strncat): Likewise. * lib/sys_socket.in.h (accept, getpeername, getsockname, getsockopt, recvfrom): Likewise. * lib/sys_stat.in.h (fstatat, lstat, stat): Likewise. * lib/time.in.h (strftime): Likewise. * lib/unistd.in.h (readlink, readlinkat): Likewise. * lib/wchar.in.h (mbrtowc, mbrlen, mbsrtowcs, mbsnrtowcs, wcrtomb, wcsrtombs, wcsnrtombs, wmemcpy, wcscpy, wcpcpy, wcsncpy, wcpncpy, wcscat, wcsncat, wcsxfrm, wcsstr, wcstok, wcsftime): Likewise. * m4/iconv_h.m4 (gl_ICONV_H): Require AC_C_RESTRICT. * m4/inttypes.m4 (gl_INTTYPES_INCOMPLETE): Likewise. * m4/monetary_h.m4 (gl_MONETARY_H): Likewise. * m4/search_h.m4 (gl_SEARCH_H): Likewise. * m4/signal_h.m4 (gl_SIGNAL_H): Likewise. * m4/stdio_h.m4 (gl_STDIO_H): Likewise. * m4/stdlib_h.m4 (gl_STDLIB_H): Likewise. * m4/sys_socket_h.m4 (gl_HEADER_SYS_SOCKET): Likewise. * m4/sys_stat_h.m4 (gl_HEADER_SYS_STAT_H): Likewise. * m4/unistd_h.m4 (gl_UNISTD_H): Likewise. * m4/wchar_h.m4 (gl_WCHAR_H): Likewise. * m4/string_h.m4 (gl_HEADER_STRING_H_BODY): Make consistent with the other *_h.m4 files. * m4/time_h.m4 (gl_HEADER_TIME_H): Likewise.
Paul Eggert 2cdc1baf 2020-01-01T00:00:18 maint: Run 'make update-copyright'
Bruno Haible 253f29d8 2019-12-09T03:02:08 Fix compilation errors in C++ mode on Haiku. * lib/stdio.in.h (vdprintf): Disable _GL_CXXALIASWARN invocation on non-glibc systems. * lib/spawn.in.h (posix_spawnattr_getschedpolicy, posix_spawnattr_setschedpolicy, posix_spawnattr_getschedparam, posix_spawnattr_setschedparam): Likewise. * lib/stdlib.in.h (random, initstate_r, setstate_r): Use _GL_CXXALIAS_SYS_CAST instead of _GL_CXXALIAS_SYS. * lib/unistd.in.h (usleep): Likewise.
Bruno Haible 98d37180 2019-11-21T11:44:12 Disable many _GL_CXXALIASWARN on all platforms other than glibc systems. Reported by Christian Biesinger <cbiesinger@google.com> in <https://lists.gnu.org/archive/html/bug-gnulib/2019-11/msg00066.html>. * lib/fnmatch.in.h (fnmatch): Disable _GL_CXXALIASWARN invocation on non-glibc systems. * lib/locale.in.h (localeconv, setlocale): Likewise. * lib/math.in.h (cbrt, ceil, copysign, exp2, expm1, floor, fma, fmod, frexp, hypot, ilogb, log, log10, log1p, log2, logb, modf, remainder, rint, round, trunc): Likewise. * lib/monetary.in.h (strfmon_l): Likewise. * lib/pthread.in.h (pthread_mutexattr_getrobust, pthread_mutexattr_setrobust, pthread_mutex_lock, pthread_spin_init, pthread_spin_lock, pthread_spin_trylock, pthread_spin_unlock, pthread_spin_destroy): Likewise. * lib/signal.in.h (raise, signal): Likewise. * lib/stdio.in.h (fclose, fflush, fgetc, fgets, fopen, fprintf, fputc, fputs, fread, freopen, fscanf, fseek, ftell, fwrite, getc, getchar, perror, printf, putc, putchar, puts, remove, rename, scanf, sprintf, tmpfile, vfprintf, vprintf, vsprintf): Likewise. * lib/stdlib.in.h (calloc, malloc, mbtowc, realloc, strtod, wctomb): Likewise. * lib/string.in.h (memchr, strncat, strpbrk, strstr, strerror): Likewise. * lib/time.in.h (mktime, localtime, ctime, strftime): Likewise. * lib/wchar.in.h (btowc, wctob, mbsinit, mbrtowc, mbrlen, mbsrtowcs, wcrtomb, wcsrtombs, wmemchr, wmemcmp, wmemcpy, wmemmove, wmemset, wcslen, wcscpy, wcsncpy, wcscat, wcsncat, wcscmp, wcsncmp, wcscoll, wcsxfrm, wcschr, wcsrchr, wcscspn, wcsspn, wcspbrk, wcsstr, wcstok, wcsftime): Likewise. * lib/wctype.in.h (iswblank, wctrans, towctrans): Likewise.
Bruno Haible 1f9ed399 2019-01-25T00:03:12 renameat: Fix compilation error on Android 4.3. * lib/stdio.in.h: Include <sys/stat.h> when module 'renameat' is in use. * doc/posix-functions/renameat.texi: Mention the issue.
Paul Eggert e6633650 2019-01-01T00:25:11 maint: Run 'make update-copyright'
Bruno Haible 44b65c48 2018-05-03T23:09:42 Simplify code. Drop support for Borland C++ on Windows. Reported by Gisle Vanem <gisle.vanem@gmail.com>. * lib/accept4.c: Simplify 'defined _WIN32 || defined __WIN32__' to just 'defined _WIN32'. * lib/canonicalize-lgpl.c: Likewise. * lib/classpath.c: Likewise. * lib/clean-temp.c: Likewise. * lib/csharpexec.c: Likewise. * lib/ctime.c: Likewise. * lib/dosname.h: Likewise. * lib/dup2.c: Likewise. * lib/errno.in.h: Likewise. * lib/error.c: Likewise. * lib/euidaccess.c: Likewise. * lib/execute.c: Likewise. * lib/fcntl.in.h: Likewise. * lib/fcntl.c: Likewise. * lib/filename.h: Likewise. * lib/findprog.c: Likewise. * lib/flock.c: Likewise. * lib/fopen.c: Likewise. * lib/freopen.c: Likewise. * lib/fstat.c: Likewise. * lib/fsync.c: Likewise. * lib/gc-gnulib.c: Likewise. * lib/get-rusage-data.c: Likewise. * lib/getaddrinfo.c: Likewise. * lib/getdelim.c: Likewise. * lib/getdtablesize.c: Likewise. * lib/gethostname.c: Likewise. * lib/getlogin.c: Likewise. * lib/getlogin_r.c: Likewise. * lib/getopt.c: Likewise. * lib/getpagesize.c: Likewise. * lib/getpass.c: Likewise. * lib/getrusage.c: Likewise. * lib/gettimeofday.c: Likewise. * lib/glob.c: Likewise. * lib/inttypes.in.h: Likewise. * lib/isapipe.c: Likewise. * lib/javaexec.c: Likewise. * lib/link.c: Likewise. * lib/localcharset.c: Likewise. * lib/localename.h: Likewise. * lib/localename.c: Likewise. * lib/localtime.c: Likewise. * lib/lseek.c: Likewise. * lib/mbsinit.c: Likewise. * lib/mkdir.c: Likewise. * lib/msvc-nothrow.h: Likewise. * lib/nanosleep.c: Likewise. * lib/nl_langinfo.c: Likewise. * lib/nonblocking.c: Likewise. * lib/nproc.c: Likewise. * lib/open.c: Likewise. * lib/openpty.c: Likewise. * lib/pathmax.h: Likewise. * lib/pipe-filter-aux.c: Likewise. * lib/pipe-filter-gi.c: Likewise. * lib/pipe-filter-ii.c: Likewise. * lib/pipe.c: Likewise. * lib/pipe2.c: Likewise. * lib/poll.c: Likewise. * lib/popen.c: Likewise. * lib/posix_openpt.c: Likewise. * lib/printf-parse.c: Likewise. * lib/progreloc.c: Likewise. * lib/putenv.c: Likewise. * lib/read.c: Likewise. * lib/relocatable.c: Likewise. * lib/rename.c: Likewise. * lib/same-inode.h: Likewise. * lib/secure_getenv.c: Likewise. * lib/select.c: Likewise. * lib/sethostname.c: Likewise. * lib/setlocale.c: Likewise. * lib/sigaction.c: Likewise. * lib/sigprocmask.c: Likewise. * lib/sleep.c: Likewise. * lib/spawn-pipe.h: Likewise. * lib/spawn-pipe.c: Likewise. * lib/spawni.c: Likewise. * lib/stat-time.h: Likewise. * lib/stat-w32.c: Likewise. * lib/stat.c: Likewise. * lib/stdio.in.h: Likewise. * lib/stdio-impl.h: Likewise. * lib/stdio-read.c: Likewise. * lib/stdio-write.c: Likewise. * lib/stdlib.in.h: Likewise. * lib/strerror_r.c: Likewise. * lib/strftime-fixes.c: Likewise. * lib/sys_stat.in.h: Likewise. * lib/sys_types.in.h: Likewise. * lib/sys_wait.in.h : Likewise. * lib/system-quote.h: Likewise. * lib/system-quote.c: Likewise. * lib/tmpdir.c: Likewise. * lib/tzset.c: Likewise. * lib/uname.c: Likewise. * lib/unistd.in.h: Likewise. * lib/utime.in.h: Likewise. * lib/utime.c: Likewise. * lib/utimecmp.c: Likewise. * lib/utimens.c: Likewise. * lib/vasnprintf.c: Likewise. * lib/vma-iter.h: Likewise. * lib/vma-iter.c: Likewise. * lib/wait-process.c: Likewise. * lib/wcsftime.c: Likewise. * lib/wctype.in.h: Likewise. * lib/write.c: Likewise. * tests/nap.h: Likewise. * tests/test-cloexec.c: Likewise. * tests/test-dup-safer.c: Likewise. * tests/test-dup2.c: Likewise. * tests/test-dup3.c: Likewise. * tests/test-fcntl.c: Likewise. * tests/test-get-rusage-data.c: Likewise. * tests/test-getaddrinfo.c: Likewise. * tests/test-getlogin.h: Likewise. * tests/test-isatty.c: Likewise. * tests/test-localename.c: Likewise. * tests/test-mbrtowc-w32.c: Likewise. * tests/test-nonblocking.c: Likewise. * tests/test-nonblocking-pipe-main.c: Likewise. * tests/test-nonblocking-socket-main.c: Likewise. * tests/test-nonblocking-socket.h: Likewise. * tests/test-pipe.c: Likewise. * tests/test-pipe2.c: Likewise. * tests/test-poll.c: Likewise. * tests/test-pthread_sigmask1.c: Likewise. * tests/test-select.h: Likewise. * tests/test-sethostname2.c: Likewise. * tests/test-sigprocmask.c: Likewise. * tests/test-spawn-pipe-child.c: Likewise. * tests/test-stat-time.c: Likewise. * tests/test-system-quote-main.c: Likewise. * tests/test-utimens-common.h: Likewise. * tests/test-wcrtomb-w32.c: Likewise. * m4/csharpexec.m4 (gt_CSHARPEXEC): Likewise. * m4/getcwd.m4 (gl_FUNC_GETCWD_NULL): Likewise. * m4/javacomp.m4 (gt_JAVACOMP): Likewise. * m4/javaexec.m4 (gt_JAVAEXEC): Likewise. * m4/locale-ar.m4 (gt_LOCALE_AR): Likewise. * m4/locale-fr.m4 (gt_LOCALE_FR, gt_LOCALE_FR_UTF8): Likewise. * m4/locale-ja.m4 (gt_LOCALE_JA): Likewise. * m4/locale-tr.m4 (gt_LOCALE_TR_UTF8): Likewise. * m4/locale-zh.m4 (gt_LOCALE_ZH_CN): Likewise. * m4/malloc.m4 (gl_CHECK_MALLOC_POSIX): Likewise. * m4/nocrash.m4 (GL_NOCRASH): Likewise. * m4/pathmax.m4 (gl_PATHMAX_SNIPPET): Likewise. * m4/ptsname_r.m4 (gl_PREREQ_PTSNAME_R): Likewise. * m4/stdio_h.m4 (gl_STDIO_H): Likewise. * m4/tmpfile.m4 (gl_FUNC_TMPFILE): Likewise. * m4/unistd_h.m4 (gl_UNISTD_H): Likewise.
Paul Eggert 281b825e 2018-01-01T00:57:25 maint: Run 'make update-copyright'
Jim Meyering 2a3dbe99 2017-11-12T09:13:30 maint: shorten https://lists.gnu.org/archive/html/... links Each /archive/html/ part can be replace with /r/. Run this to induce the change: git grep -l archive/html|xargs perl -pi -e 's,/archive/html/,/r/,g' * ChangeLog: Perform that substitution. * Makefile: Likewise. * STATUS-libposix: Likewise. * build-aux/bootstrap: Likewise. * doc/maintain.texi: Likewise. * gnulib-tool: Likewise. * lib/allocator.h: Likewise. * lib/argp-ba.c: Likewise. * lib/argp-pv.c: Likewise. * lib/canon-host.c: Likewise. * lib/canonicalize-lgpl.c: Likewise. * lib/float.in.h: Likewise. * lib/fstat.c: Likewise. * lib/getdelim.c: Likewise. * lib/getprogname.c: Likewise. * lib/glthread/thread.h: Likewise. * lib/intprops.h: Likewise. * lib/mbsrtowcs-state.c: Likewise. * lib/safe-read.c: Likewise. * lib/signal.in.h: Likewise. * lib/stat.c: Likewise. * lib/stdbool.in.h: Likewise. * lib/stdio-impl.h: Likewise. * lib/stdio.in.h: Likewise. * lib/sysexits.in.h: Likewise. * lib/timespec.h: Likewise. * lib/wcsrtombs-state.c: Likewise. * m4/alloca.m4: Likewise. * m4/extern-inline.m4: Likewise. * m4/fstatat.m4: Likewise. * m4/gnulib-common.m4: Likewise. * m4/lib-ignore.m4: Likewise. * m4/printf.m4: Likewise. * m4/regex.m4: Likewise. * m4/stat-size.m4: Likewise. * m4/std-gnu11.m4: Likewise. * m4/stdbool.m4: Likewise. * m4/sys_types_h.m4: Likewise. * m4/threadlib.m4: Likewise. * m4/vararrays.m4: Likewise. * pygnulib/GLImport.py: Likewise. * tests/test-exp.h: Likewise. * tests/test-exp2.h: Likewise. * tests/test-expm1.h: Likewise. * tests/test-fflush2.c: Likewise. * tests/test-getopt_long.h: Likewise. * tests/test-intprops.c: Likewise. * tests/test-log.h: Likewise. * tests/test-log10.h: Likewise. * tests/test-log1p.h: Likewise. * tests/test-log2.h: Likewise. * tests/test-printf-posix.h: Likewise. * tests/test-regex.c: Likewise. * tests/test-snprintf-posix.h: Likewise. * tests/test-sprintf-posix.h: Likewise. * tests/test-stdalign.c: Likewise. * tests/test-stdbool.c: Likewise. * tests/test-vasnprintf-posix.c: Likewise. * tests/test-vasprintf-posix.c: Likewise. * top/maint.mk: Likewise.
Bruno Haible 03eac9d3 2017-09-14T00:35:56 all: Replace many more http URLs by https URLs. Update stale URLs. * users.txt: Remove mention of 'newts'. * lib/localename.c: Update comment about LANG_SOTHO.
Paul Eggert ca35d468 2017-09-13T00:48:18 all: prefer https: URLs
Bruno Haible 13d3759b 2017-08-15T22:03:48 renameat: Ensure declaration in <stdio.h> on NetBSD. * lib/stdio.in.h: Include <unistd,h> also on NetBSD. * doc/posix-functions/renameat.texi: Mention this problem.
Paul Eggert a3fd683d 2017-01-01T02:59:23 version-etc: new year * build-aux/gendocs.sh (version): * doc/gendocs_template: * doc/gendocs_template_min: * doc/gnulib.texi: * lib/version-etc.c (COPYRIGHT_YEAR): Update copyright dates by hand in templates and the like. * all files: Run 'make update-copyright'.
Bruno Haible 5b60c835 2016-12-17T14:16:50 Avoid redefinition errors on MSVC. * lib/stdio.in.h: Include <stdlib.h> and <io.h> when necessary. * lib/unistd.in.h: Include <stdio.h> when necessary.
Paul Eggert 71090a2a 2016-01-01T00:56:19 version-etc: new year * build-aux/gendocs.sh (version): * doc/gendocs_template: * doc/gendocs_template_min: * doc/gnulib.texi: * lib/version-etc.c (COPYRIGHT_YEAR): Update copyright dates by hand in templates and the like. * all files: Run 'make update-copyright'.
Jonathan Perkin d6176702 2015-06-04T12:10:34 stdio: Don't redefine gets when using C++ We've hit this failure a few times in pkgsrc with packages which embed gnulib, an example being the latest gnutls: ../../src/gl/stdio.h:1034:1: error: 'char* gets(char*)' conflicts with a previous declaration _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); ^ /opt/tools/gcc49/lib/gcc/x86_64-sun-solaris2.11/4.9.2/include-fixed/iso/stdio_iso.h:259:14: note: previous declaration 'char* std::gets(char*)' extern char *gets(char *); ^ Full build log is here: http://us-east.manta.joyent.com/pkgsrc/public/reports/upstream-trunk32/20150602.2233/gnutls-3.3.15/build.log We've fixed it a few different ways over time: https://github.com/joyent/pkgsrc/blob/joyent/release/2015Q1/devel/m4/patches/patch-lib_stdio.in.h https://github.com/joyent/pkgsrc/blob/joyent/release/2015Q1/math/octave/patches/patch-libgnu_stdio.in.h https://github.com/joyent/pkgsrc/blob/joyent/release/2015Q1/security/gnutls/patches/patch-gl_stdio.in.h but the cleanest fix appears to be the last, so I am proposing it here for inclusion upstream. Message-Id: <20150604111034.GG66573@joyent.com> Signed-off-by: Eric Blake <eblake@redhat.com>
Eric Blake ca563b43 2015-01-05T14:08:27 stdio: fix use of PRIdMAX on modern mingw Commit cf88e56ab broke the use of PRIdMAX and friends on modern mingw64 installations. Basically, when requesting _USE_MINGW_ANSI_STDIO, not only does mingw turn on support for %lld, it also rewrites <inttypes.h> to provide PRIdMAX as "lld" instead of "I64d" (but only when <stdio.h> is also included). But if a user is NOT using the gnulib printf module, gnulib's <stdio.h> was still giving printf() the system printf attribute, which causes the compiler to then complain about an unknown %lld specifier, even though we know we don't need to use the non-standard %I64d. So this patch adds a configure-time probe that should work with older gcc (which does not differentiate between printf flavors) and older mingw (where _USE_MINGW_ANSI_STDIO has no impact on behavior), while fixing the mismatch in flavors on modern systems. * m4/stdio_h.m4 (gl_STDIO_H): Probe for printf flavor via inttypes. * lib/stdio.in.h (_GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM): Use result to work with modern mingw. Signed-off-by: Eric Blake <eblake@redhat.com>
Paul Eggert b9bfe784 2015-01-01T01:38:23 version-etc: new year * doc/gnulib.texi: * lib/version-etc.c (COPYRIGHT_YEAR): Update copyright date. * all files: Run 'make update-copyright'.
Eric Blake 1276a2c5 2014-01-01T00:04:40 maint: update copyright I ran 'make update-copyright'. Signed-off-by: Eric Blake <eblake@redhat.com>
Paul Eggert 6f3c76e0 2013-09-19T13:25:43 stdio: OS X port of putc_unlocked + extern inline * lib/stdio.in.h (putc_unlocked): #undef on problematic Apple platforms. * doc/posix-functions/putc_unlocked.texi: * doc/posix-functions/putchar_unlocked.texi: Document this portability problem.
Paul Eggert 6dd07e3d 2013-05-15T15:52:42 stdio: use __REDIRECT for fwrite, fwrite_unlocked * lib/stdio.in.h (fwrite): When working around bug 11959, use __REDIRECT rather than '#define fwrite(...) ... fwrite (...) ...'. This is a more-targeted way to fix the -Wunused-value issue with clang, and it works with GCC too. Problem with targeting reported by Eric Blake in <http://lists.gnu.org/archive/html/bug-gnulib/2013-05/msg00067.html>. (fwrite_unlocked): Treat like fwrite. I ran into this issue while debugging the fwrite issue.
Paul Eggert f506f97b 2013-05-15T00:30:43 stdio: port --enable-gcc-warnings to clang * lib/stdio.in.h (fwrite) [__clang__]: Ignore -Wunused-value entirely, since the GCC workaround for fwrite does not pacify clang.
Paul Eggert e728a1be 2013-01-03T10:11:25 fwrite: silence __wur only for older glibc versions * lib/stdio.in.h (fwrite): Limit workaround to glibc 2.4 through 2.15. This will help us remove this workaround some time in the far future.
Eric Blake 61c7b1e3 2013-01-03T09:51:44 fwrite: silence __wur without using inline The libvirt folks reported[1] a link error of multiple rpl_fwrite definitions that hits only when optimization and FORTIFY_SOURCE are both enabled, due to improper use of inline. But since that particular use of rpl_fwrite exists only to work around a spurious gcc warning on some versions of glibc, we can use gcc extensions to acheive the same effect without using inline. This approach copies from ignore-value.h. [1] https://lists.gnu.org/archive/html/bug-gnulib/2013-01/msg00014.html * lib/stdio.in.h (fwrite): Limit warn_unused_result workaround to just gcc, and in a way that avoids inline issues. * modules/stdio (Depends-on): Drop extern-inline. Signed-off-by: Eric Blake <eblake@redhat.com>
Eric Blake 9fc81090 2013-01-01T00:50:58 maint: update all copyright year number ranges Run "make update-copyright". Compare to commit 1602f0a from last year. Signed-off-by: Eric Blake <eblake@redhat.com>
Paul Eggert 01d0ac74 2012-11-20T22:25:06 stdio: better 'inline' * lib/stdio.c: New file. * lib/stdio.in.h (_GL_STDIO_INLINE): New macro. Replace all uses of 'static inline' with it. Use _GL_INLINE_HEADER_BEGIN, _GL_INLINE_HEADER_END. * m4/stdio_h.m4 (gl_STDIO_H): Do not require AC_C_INLINE. * modules/stdio (Files, lib_SOURCES): Add lib/stdio.c. (Depends-on): Add extern-inline.
Bruno Haible 3f3d9b41 2012-04-14T23:27:45 Large File Support for native Windows platforms. * m4/largefile.m4 (gl_LARGEFILE): New macro. * modules/largefile (configure.ac): Require gl_LARGEFILE. * lib/sys_types.in.h (off_t) [WINDOWS_64_BIT_OFF_T]: Define to a 64-bit type. * m4/sys_types_h.m4 (gl_SYS_TYPES_H): Set WINDOWS_64_BIT_OFF_T. * modules/sys_types (Makefile.am): Substitute WINDOWS_64_BIT_OFF_T. * doc/posix-headers/sys_types.texi: Mention the effect of the 'largefile' module. * lib/fcntl.in.h: Add comments about off_t. * modules/fcntl-h (Depends-on): Add sys_types. * lib/unistd.in.h [WINDOWS_64_BIT_OFF_T]: Include <sys/types.h>. (ftruncate): Replace it if REPLACE_FTRUNCATE is 1. * m4/unistd_h.m4 (gl_UNISTD_H): Require gl_SYS_TYPES_H. (gl_UNISTD_H_DEFAULTS): Initialize REPLACE_FTRUNCATE. * modules/unistd (Depends-on): Add sys_types. (Makefile.am): Substitute WINDOWS_64_BIT_OFF_T, REPLACE_FTRUNCATE. * lib/lseek.c (rpl_lseek) [_GL_WINDOWS_64_BIT_OFF_T]: Use _lseeki64 instead of lseek. * m4/lseek.m4 (gl_FUNC_LSEEK): Require gl_SYS_TYPES_H. Set REPLACE_LSEEK if WINDOWS_64_BIT_OFF_T is 1. * modules/lseek (Depends-on): Add sys_types. * lib/ftruncate.c: Put under GPLv3+. Include <windows.h>, msvc-nothrow.h. (SetFileSize): New function. (ftruncate) [_GL_WINDOWS_64_BIT_OFF_T]: New implementation. * m4/ftruncate.m4 (gl_FUNC_FTRUNCATE): Set REPLACE_FTRUNCATE on Windows if Large File Support is requested. * modules/ftruncate (configure.ac): Consider REPLACE_FTRUNCATE. (Depends-on): Add sys_types, msvc-nothrow. Update conditions. * lib/stdio.in.h: Add comments about off_t. * modules/stdio (Depends-on): Add sys_types. * lib/ftello.c [_GL_WINDOWS_64_BIT_OFF_T]: Use _ftelli64 or ftello64 instead of ftello. * m4/ftello.m4 (gl_FUNC_FTELLO): Require gl_SYS_TYPES_H. Set REPLACE_FTELLO if WINDOWS_64_BIT_OFF_T is 1. (gl_PREREQ_FTELLO): New macro. * modules/ftello (Depends-on): Add sys_types. (configure.ac): Incoke gl_PREREQ_FTELLO. * lib/fseeko.c [_GL_WINDOWS_64_BIT_OFF_T]: Use _fseeki64 or fseeko64 instead of fseeko. * m4/fseeko.m4 (gl_FUNC_FSEEKO): Require gl_SYS_TYPES_H. Set REPLACE_FSEEKO if WINDOWS_64_BIT_OFF_T is 1. (gl_PREREQ_FSEEKO): New macro. * modules/fseeko (Depends-on): Add sys_types. (configure.ac): Invoke gl_PREREQ_FSEEKO. * lib/sys_stat.in.h: Add comments about off_t. (stat, fstat) [WINDOWS_64_BIT_ST_SIZE]: Define to variants that use a 64-bit integer for st_size in 'struct stat'. * m4/sys_stat_h.m4 (gl_HEADER_SYS_STAT_H): Set WINDOWS_64_BIT_ST_SIZE. Define _GL_WINDOWS_64_BIT_ST_SIZE. * modules/sys_stat (Depends-on): Add sys_types. (Makefile.am): Substitute WINDOWS_64_BIT_ST_SIZE. * lib/stat.c (stat) [_GL_WINDOWS_64_BIT_ST_SIZE]: Define to _stati64 instead of stat or _stat. * lib/fstat.c [_GL_WINDOWS_64_BIT_ST_SIZE]: Use _fstati64 and 'struct _stati64' instead of fstat and 'struct stat'. * m4/fstat.m4 (gl_FUNC_FSTAT): Require gl_HEADER_SYS_STAT_H. Set REPLACE_FSTAT if WINDOWS_64_BIT_ST_SIZE is 1. Reported by Ray Satiro <raysatiro@yahoo.com>.