1
0
mirror of https://git.savannah.gnu.org/git/gnulib.git synced 2025-08-08 17:22:05 +03:00

dprintf-gnu: New module.

* m4/dprintf-posix.m4 (gl_FUNC_DPRINTF_IS_POSIX): New macro,
extracted from gl_FUNC_DPRINTF_POSIX.
(gl_FUNC_DPRINTF_POSIX): Require it. Invoke
gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS.
* m4/dprintf-gnu.m4: New file, based on m4/dprintf-posix.m4.
* modules/dprintf-gnu: New file, based on modules/vasnprintf-gnu.
* doc/posix-functions/dprintf.texi: Mention the new module.
This commit is contained in:
Bruno Haible
2023-03-24 12:04:20 +01:00
parent a8fa5b6d61
commit 75e6308183
5 changed files with 88 additions and 21 deletions

View File

@@ -1,3 +1,14 @@
2023-03-24 Bruno Haible <bruno@clisp.org>
dprintf-gnu: New module.
* m4/dprintf-posix.m4 (gl_FUNC_DPRINTF_IS_POSIX): New macro,
extracted from gl_FUNC_DPRINTF_POSIX.
(gl_FUNC_DPRINTF_POSIX): Require it. Invoke
gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS.
* m4/dprintf-gnu.m4: New file, based on m4/dprintf-posix.m4.
* modules/dprintf-gnu: New file, based on modules/vasnprintf-gnu.
* doc/posix-functions/dprintf.texi: Mention the new module.
2023-03-24 Bruno Haible <bruno@clisp.org> 2023-03-24 Bruno Haible <bruno@clisp.org>
vdprintf-gnu: Add tests. vdprintf-gnu: Add tests.

View File

@@ -4,16 +4,16 @@
POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/dprintf.html} POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/dprintf.html}
Gnulib module: dprintf or dprintf-posix Gnulib module: dprintf or dprintf-posix or dprintf-gnu
Portability problems fixed by either Gnulib module @code{dprintf} or @code{dprintf-posix}: Portability problems fixed by either Gnulib module @code{dprintf} or @code{dprintf-posix} or @code{dprintf-gnu}:
@itemize @itemize
@item @item
This function is missing on many non-glibc platforms: This function is missing on many non-glibc platforms:
Mac OS X 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.3, Cygwin 1.5.x, mingw, MSVC 14. Mac OS X 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.3, Cygwin 1.5.x, mingw, MSVC 14.
@end itemize @end itemize
Portability problems fixed by Gnulib module @code{dprintf-posix}: Portability problems fixed by either Gnulib module @code{dprintf-posix} or @code{dprintf-gnu}:
@itemize @itemize
@item @item
printf @code{"%f"}, @code{"%e"}, @code{"%g"} of Infinity and NaN yields an printf @code{"%f"}, @code{"%e"}, @code{"%g"} of Infinity and NaN yields an
@@ -50,6 +50,13 @@ wide character argument on some platforms:
glibc 2.35, FreeBSD 13.1, NetBSD 9.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others. glibc 2.35, FreeBSD 13.1, NetBSD 9.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others.
@end itemize @end itemize
Portability problems fixed by Gnulib module @code{dprintf-gnu}:
@itemize
@item
This function does not support the @samp{B} directive on some platforms:
glibc 2.34, FreeBSD 13.1, NetBSD 9.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others.
@end itemize
Portability problems not fixed by Gnulib: Portability problems not fixed by Gnulib:
@itemize @itemize
@item @item

25
m4/dprintf-gnu.m4 Normal file
View File

@@ -0,0 +1,25 @@
# dprintf-gnu.m4 serial 1
dnl Copyright (C) 2023 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_DPRINTF_GNU],
[
AC_REQUIRE([gl_FUNC_DPRINTF_IS_POSIX])
AC_REQUIRE([gl_PRINTF_DIRECTIVE_UPPERCASE_B])
gl_cv_func_dprintf_gnu=no
if test $gl_cv_func_dprintf_posix = yes; then
case "$gl_cv_func_printf_directive_uppercase_b" in
*yes)
# dprintf exists and is already POSIX compliant and GNU compatible.
gl_cv_func_dprintf_gnu=yes
;;
esac
fi
if test $gl_cv_func_dprintf_gnu = no; then
gl_PREREQ_VASNPRINTF_WITH_GNU_EXTRAS
gl_REPLACE_VASNPRINTF
gl_REPLACE_DPRINTF
fi
])

View File

@@ -1,10 +1,22 @@
# dprintf-posix.m4 serial 5 # dprintf-posix.m4 serial 6
dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it, dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved. dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN([gl_FUNC_DPRINTF_POSIX], AC_DEFUN([gl_FUNC_DPRINTF_POSIX],
[
AC_REQUIRE([gl_FUNC_DPRINTF_IS_POSIX])
if test $gl_cv_func_dprintf_posix = no; then
gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS
gl_REPLACE_VASNPRINTF
gl_REPLACE_DPRINTF
fi
])
dnl Test whether dprintf exists and is POSIX compliant.
dnl Result is gl_cv_func_dprintf_posix.
AC_DEFUN([gl_FUNC_DPRINTF_IS_POSIX],
[ [
AC_REQUIRE([gl_PRINTF_SIZES_C99]) AC_REQUIRE([gl_PRINTF_SIZES_C99])
AC_REQUIRE([gl_PRINTF_LONG_DOUBLE]) AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
@@ -93,21 +105,4 @@ AC_DEFUN([gl_FUNC_DPRINTF_POSIX],
;; ;;
esac esac
fi fi
if test $gl_cv_func_dprintf_posix = no; then
gl_PREREQ_VASNPRINTF_LONG_DOUBLE
gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE
gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE
gl_PREREQ_VASNPRINTF_DIRECTIVE_A
gl_PREREQ_VASNPRINTF_DIRECTIVE_B
gl_PREREQ_VASNPRINTF_DIRECTIVE_F
gl_PREREQ_VASNPRINTF_DIRECTIVE_LS
gl_PREREQ_VASNPRINTF_DIRECTIVE_LC
gl_PREREQ_VASNPRINTF_FLAG_GROUPING
gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
gl_PREREQ_VASNPRINTF_FLAG_ZERO
gl_PREREQ_VASNPRINTF_PRECISION
gl_PREREQ_VASNPRINTF_ENOMEM
gl_REPLACE_VASNPRINTF
gl_REPLACE_DPRINTF
fi
]) ])

29
modules/dprintf-gnu Normal file
View File

@@ -0,0 +1,29 @@
Description:
POSIX and GNU compatible dprintf() function: print formatted output to a file
descriptor
Comment:
This module should not be used as a dependency from a test module,
otherwise when this module occurs as a tests-related module, it will
have side effects on the compilation of the 'vasnprintf' module, if
that module occurs among the main modules in lib/.
Files:
m4/dprintf-gnu.m4
Depends-on:
dprintf-posix
configure.ac:
gl_FUNC_DPRINTF_GNU
Makefile.am:
Include:
<stdio.h>
License:
LGPL
Maintainer:
all