[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
new module 'snprintf-posix'
From: |
Bruno Haible |
Subject: |
new module 'snprintf-posix' |
Date: |
Wed, 7 Mar 2007 02:58:34 +0100 |
User-agent: |
KMail/1.5.4 |
Here's the full POSIX snprintf() replacement.
2007-03-06 Bruno Haible <address@hidden>
* modules/snprintf-posix: New file.
* m4/snprintf-posix.m4: New file.
* m4/snprintf.m4 (gl_REPLACE_SNPRINTF): New macro, extracted from
gl_FUNC_SNPRINTF.
(gl_FUNC_SNPRINTF): Invoke it.
* m4/stdio_h.m4 (gl_STDIO_H_DEFAULTS): Set also REPLACE_SNPRINTF.
* lib/stdio_.h (snprintf): Define as a replacement if REPLACE_SNPRINTF
is set.
* modules/stdio (Makefile.am): Substitute also REPLACE_SNPRINTF.
=============================== modules/snprintf-posix =========================
Description:
POSIX compatible snprintf() function: print formatted output to a fixed length
string
Files:
m4/snprintf-posix.m4
m4/printf.m4
Depends-on:
snprintf
vasnprintf
isnan-nolibm
isnanl-nolibm
printf-frexp
printf-frexpl
configure.ac:
gl_FUNC_SNPRINTF_POSIX
Makefile.am:
Include:
<stdio.h>
License:
LGPL
Maintainer:
Bruno Haible
================================ m4/snprintf-posix.m4 ==========================
# snprintf-posix.m4 serial 1
dnl Copyright (C) 2007 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_SNPRINTF_POSIX],
[
AC_REQUIRE([gl_EOVERFLOW])
AC_REQUIRE([gl_PRINTF_SIZES_C99])
AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
AC_REQUIRE([gl_PRINTF_POSITIONS])
gl_cv_func_snprintf_posix=no
AC_CHECK_FUNCS([snprintf])
if test $ac_cv_func_snprintf = yes; then
gl_SNPRINTF_TRUNCATION_C99
gl_SNPRINTF_RETVAL_C99
gl_SNPRINTF_DIRECTIVE_N
if expr "$gl_cv_func_printf_sizes_c99" : ".*yes" > /dev/null \
&& expr "$gl_cv_func_printf_directive_a" : ".*yes" > /dev/null \
&& expr "$gl_cv_func_printf_directive_n" : ".*yes" > /dev/null \
&& expr "$gl_cv_func_printf_positions" : ".*yes" > /dev/null \
&& expr "$gl_cv_func_snprintf_truncation_c99" : ".*yes" > /dev/null \
&& expr "$gl_cv_func_snprintf_retval_c99" : ".*yes" > /dev/null \
&& expr "$gl_cv_func_snprintf_directive_n" : ".*yes" > /dev/null; then
# snprintf exists and is already POSIX compliant.
gl_cv_func_snprintf_posix=yes
fi
fi
if test $gl_cv_func_snprintf_posix = no; then
if ! expr "$gl_cv_func_printf_directive_a" : ".*yes" > /dev/null; then
AC_DEFINE([NEED_PRINTF_DIRECTIVE_A], 1,
[Define if the vasnprintf implementation needs special code for
the 'a' and 'A' directives.])
fi
gl_REPLACE_VASNPRINTF
gl_REPLACE_SNPRINTF
fi
])
================================================================================
*** m4/snprintf.m4 21 Feb 2007 02:19:34 -0000 1.4
--- m4/snprintf.m4 7 Mar 2007 01:54:47 -0000
***************
*** 1,4 ****
! # snprintf.m4 serial 3
dnl Copyright (C) 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
--- 1,4 ----
! # snprintf.m4 serial 4
dnl Copyright (C) 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
***************
*** 7,17 ****
AC_DEFUN([gl_FUNC_SNPRINTF],
[
AC_REQUIRE([gl_STDIO_H_DEFAULTS])
! AC_REPLACE_FUNCS(snprintf)
! AC_CHECK_DECLS_ONCE(snprintf)
if test $ac_cv_have_decl_snprintf = no; then
HAVE_DECL_SNPRINTF=0
fi
gl_PREREQ_SNPRINTF
])
--- 7,28 ----
AC_DEFUN([gl_FUNC_SNPRINTF],
[
AC_REQUIRE([gl_STDIO_H_DEFAULTS])
! AC_CHECK_FUNCS([snprintf])
! if test $ac_cv_func_snprintf = no; then
! gl_REPLACE_SNPRINTF
! fi
! AC_CHECK_DECLS_ONCE([snprintf])
if test $ac_cv_have_decl_snprintf = no; then
HAVE_DECL_SNPRINTF=0
fi
+ ])
+
+ AC_DEFUN([gl_REPLACE_SNPRINTF],
+ [
+ AC_LIBOBJ([snprintf])
+ if test $ac_cv_func_snprintf = yes; then
+ REPLACE_SNPRINTF=1
+ fi
gl_PREREQ_SNPRINTF
])
*** m4/stdio_h.m4 7 Mar 2007 01:51:15 -0000 1.2
--- m4/stdio_h.m4 7 Mar 2007 01:54:47 -0000
***************
*** 24,29 ****
--- 24,30 ----
GNULIB_SNPRINTF=0; AC_SUBST([GNULIB_SNPRINTF])
GNULIB_VSNPRINTF=0; AC_SUBST([GNULIB_VSNPRINTF])
dnl Assume proper GNU behavior unless another module says otherwise.
+ REPLACE_SNPRINTF=0; AC_SUBST([REPLACE_SNPRINTF])
HAVE_DECL_SNPRINTF=1; AC_SUBST([HAVE_DECL_SNPRINTF])
REPLACE_VSNPRINTF=0; AC_SUBST([REPLACE_VSNPRINTF])
HAVE_DECL_VSNPRINTF=1; AC_SUBST([HAVE_DECL_VSNPRINTF])
*** lib/stdio_.h 7 Mar 2007 01:51:15 -0000 1.3
--- lib/stdio_.h 7 Mar 2007 01:54:47 -0000
***************
*** 41,47 ****
#if @GNULIB_SNPRINTF@
! # if address@hidden@
extern int snprintf (char *str, size_t size, const char *format, ...);
# endif
#elif defined GNULIB_POSIXCHECK
--- 41,50 ----
#if @GNULIB_SNPRINTF@
! # if @REPLACE_SNPRINTF@
! # define snprintf rpl_snprintf
! # endif
! # if @REPLACE_SNPRINTF@ || address@hidden@
extern int snprintf (char *str, size_t size, const char *format, ...);
# endif
#elif defined GNULIB_POSIXCHECK
*** modules/stdio 7 Mar 2007 01:51:15 -0000 1.2
--- modules/stdio 7 Mar 2007 01:54:47 -0000
***************
*** 23,28 ****
--- 23,29 ----
sed -e 's|@''ABSOLUTE_STDIO_H''@|$(ABSOLUTE_STDIO_H)|g' \
-e 's|@''GNULIB_SNPRINTF''@|$(GNULIB_SNPRINTF)|g' \
-e 's|@''GNULIB_VSNPRINTF''@|$(GNULIB_VSNPRINTF)|g' \
+ -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \
-e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \
-e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \
-e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \
- new module 'snprintf-posix',
Bruno Haible <=