This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Rely on C89 snprintf()
authorAaron Crane <arc@cpan.org>
Thu, 12 Oct 2017 15:35:52 +0000 (17:35 +0200)
committerAaron Crane <arc@cpan.org>
Sat, 21 Oct 2017 15:51:58 +0000 (16:51 +0100)
19 files changed:
Configure
Cross/config.sh-arm-linux
Cross/config.sh-arm-linux-n770
NetWare/config.wc
Porting/Glossary
Porting/config.sh
Porting/config_H
config_h.SH
configure.com
perl.h
plan9/config_sh.sample
symbian/config.sh
uconfig.h
uconfig.sh
uconfig64.sh
win32/config.ce
win32/config.vc
win32/config_H.gc
win32/config_H.vc

index 7dba1da..81b72a9 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -809,8 +809,6 @@ d_signbit=''
 d_sigprocmask=''
 d_sigsetjmp=''
 usesitecustomize=''
-d_snprintf=''
-d_vsnprintf=''
 d_sockatmark=''
 d_sockatmarkproto=''
 d_ip_mreq=''
@@ -18786,71 +18784,6 @@ set d_sigsetjmp
 eval $setvar
 $rm_try
 
-: see if snprintf exists
-set snprintf d_snprintf
-eval $inlibc
-
-: see if vsnprintf exists
-set vsnprintf d_vsnprintf
-eval $inlibc
-
-case "$d_snprintf-$d_vsnprintf" in
-"$define-$define")
-    $cat <<EOM
-Checking whether your snprintf() and vsnprintf() work okay...
-EOM
-    $cat >try.c <<'EOCP'
-/* v?snprintf testing logic courtesy of Russ Allbery.
- * According to C99:
- * - if the buffer is too short it still must be \0-terminated
- * - if the buffer is too short the potentially required length
- *   must be returned and not -1
- * - if the buffer is NULL the potentially required length
- *   must be returned and not -1 or core dump
- */
-#include <stdio.h>
-#include <stdarg.h>
-
-char buf[2];
-
-int test (char *format, ...)
-{
-    va_list args;
-    int count;
-
-    va_start (args, format);
-    count = vsnprintf (buf, sizeof buf, format, args);
-    va_end (args);
-    return count;
-}
-
-int main ()
-{
-    return ((test ("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0'
-             && snprintf (NULL, 0, "%s", "abcd") == 4) ? 0 : 1);
-}
-EOCP
-    set try
-    if eval $compile; then
-       `$run ./try`
-       case "$?" in
-       0) echo "Your snprintf() and vsnprintf() seem to be working okay." ;;
-       *) cat <<EOM >&4
-Your snprintf() and snprintf() don't seem to be working okay.
-EOM
-          d_snprintf="$undef"
-          d_vsnprintf="$undef"
-          ;;
-       esac
-    else
-       echo "(I can't seem to compile the test program--assuming they don't)"
-       d_snprintf="$undef"
-       d_vsnprintf="$undef"
-    fi
-    $rm_try
-    ;;
-esac
-
 : see if sockatmark exists
 set sockatmark d_sockatmark
 eval $inlibc
@@ -24812,7 +24745,6 @@ d_sigprocmask='$d_sigprocmask'
 d_sigsetjmp='$d_sigsetjmp'
 d_sin6_scope_id='$d_sin6_scope_id'
 d_sitearch='$d_sitearch'
-d_snprintf='$d_snprintf'
 d_sockaddr_in6='$d_sockaddr_in6'
 d_sockaddr_sa_len='$d_sockaddr_sa_len'
 d_sockatmark='$d_sockatmark'
@@ -24906,7 +24838,6 @@ d_void_closedir='$d_void_closedir'
 d_voidsig='$d_voidsig'
 d_voidtty='$d_voidtty'
 d_vprintf='$d_vprintf'
-d_vsnprintf='$d_vsnprintf'
 d_wait4='$d_wait4'
 d_waitpid='$d_waitpid'
 d_wcscmp='$d_wcscmp'
index 51fca47..a8c322d 100644 (file)
@@ -531,7 +531,6 @@ d_sigprocmask='define'
 d_sigsetjmp='define'
 d_sin6_scope_id='undef'
 d_sitearch='define'
-d_snprintf='undef'
 d_sockaddr_in6='undef'
 d_sockaddr_sa_len='undef'
 d_sockatmark='undef'
@@ -625,7 +624,6 @@ d_void_closedir='undef'
 d_voidsig='define'
 d_voidtty=''
 d_vprintf='define'
-d_vsnprintf='define'
 d_wait4='define'
 d_waitpid='define'
 d_wcscmp='undef'
index 1739595..b0278a5 100644 (file)
@@ -416,7 +416,6 @@ d_signbit='define'
 d_sigprocmask='define'
 d_sigsetjmp='define'
 d_sitearch='define'
-d_snprintf='undef'
 d_sockatmark='undef'
 d_sockatmarkproto='undef'
 d_socket='define'
@@ -497,7 +496,6 @@ d_void_closedir='undef'
 d_voidsig='define'
 d_voidtty=''
 d_vprintf='define'
-d_vsnprintf='define'
 d_wait4='define'
 d_waitpid='define'
 d_wcstombs='define'
index 31593db..c66b498 100644 (file)
@@ -521,7 +521,6 @@ d_sigprocmask='undef'
 d_sigsetjmp='undef'
 d_sin6_scope_id='undef'
 d_sitearch='undef'
-d_snprintf='undef'
 d_sockaddr_in6='undef'
 d_sockaddr_sa_len='undef'
 d_sockatmark='undef'
@@ -614,7 +613,6 @@ d_void_closedir='undef'
 d_voidsig='define'
 d_voidtty=''
 d_vprintf='define'
-d_vsnprintf='undef'
 d_wait4='undef'
 d_waitpid='define'
 d_wcscmp='undef'
index 1e1deab..62bb5ab 100644 (file)
@@ -2441,11 +2441,6 @@ d_sitearch (sitearch.U):
        of architecture-dependent library files for $package.  If
        $sitearch is the same as $archlib, then this is set to undef.
 
-d_snprintf (d_snprintf.U):
-       This variable conditionally defines the HAS_SNPRINTF symbol, which
-       indicates to the C program that the snprintf () library function
-       is available.
-
 d_sockaddr_in6 (d_socket.U):
        This variable conditionally defines the HAS_SOCKADDR_IN6 symbol, which
        indicates the availability of a struct sockaddr_in6.
@@ -2853,11 +2848,6 @@ d_vprintf (d_vprintf.U):
        indicates to the C program that the vprintf() routine is available
        to printf with a pointer to an argument list.
 
-d_vsnprintf (d_snprintf.U):
-       This variable conditionally defines the HAS_VSNPRINTF symbol, which
-       indicates to the C program that the vsnprintf () library function
-       is available.
-
 d_wait4 (d_wait4.U):
        This variable conditionally defines the HAS_WAIT4 symbol, which
        indicates the wait4() routine is available.
index 61b921c..df8d2d6 100644 (file)
@@ -544,7 +544,6 @@ d_sigprocmask='define'
 d_sigsetjmp='define'
 d_sin6_scope_id='define'
 d_sitearch='define'
-d_snprintf='define'
 d_sockaddr_in6='define'
 d_sockaddr_sa_len='define'
 d_sockatmark='define'
@@ -638,7 +637,6 @@ d_void_closedir='undef'
 d_voidsig='define'
 d_voidtty=''
 d_vprintf='define'
-d_vsnprintf='define'
 d_wait4='define'
 d_waitpid='define'
 d_wcscmp='define'
index 255303e..6954758 100644 (file)
 /*#define      USE_SITECUSTOMIZE               / **/
 #endif
 
-/* HAS_SNPRINTF:
- *     This symbol, if defined, indicates that the snprintf () library
- *     function is available for use.
- */
-/* HAS_VSNPRINTF:
- *     This symbol, if defined, indicates that the vsnprintf () library
- *     function is available for use.
- */
-#define HAS_SNPRINTF   /**/
-#define HAS_VSNPRINTF  /**/
-
 /* HAS_SOCKATMARK:
  *     This symbol, if defined, indicates that the sockatmark routine is
  *     available to test whether a socket is at the out-of-band mark.
index e2ff49d..259a2ed 100755 (executable)
@@ -3427,17 +3427,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #$usesitecustomize     USE_SITECUSTOMIZE               /**/
 #endif
 
-/* HAS_SNPRINTF:
- *     This symbol, if defined, indicates that the snprintf () library
- *     function is available for use.
- */
-/* HAS_VSNPRINTF:
- *     This symbol, if defined, indicates that the vsnprintf () library
- *     function is available for use.
- */
-#$d_snprintf HAS_SNPRINTF      /**/
-#$d_vsnprintf HAS_VSNPRINTF    /**/
-
 /* HAS_SOCKATMARK:
  *     This symbol, if defined, indicates that the sockatmark routine is
  *     available to test whether a socket is at the out-of-band mark.
index f3048b8..38a1fb2 100644 (file)
@@ -5289,8 +5289,6 @@ $  endif
 $  d_setgrent = "define"
 $  d_ttyname_r = "define"
 $  ttyname_r_proto = "1"
-$  d_snprintf = "define"
-$  d_vsnprintf = "define"
 $!
 $! VMS V7.3-2 powered options
 $! We know that it is only available for V7.3-2 and later on 64 bit platforms.
@@ -6470,7 +6468,6 @@ $ WC "d_void_closedir='define'"
 $ WC "d_voidsig='undef'"
 $ WC "d_voidtty='" + "'"
 $ WC "d_vprintf='define'"
-$ WC "d_vsnprintf='" + d_vsnprintf + "'"
 $ WC "d_wait4='" + d_wait4 + "'"
 $ WC "d_waitpid='define'"
 $ WC "d_wcscmp='define'"
@@ -6965,7 +6962,6 @@ $ WC "d_setnetent_r='undef'"
 $ WC "d_setprotoent_r='undef'"
 $ WC "d_setpwent_r='undef'"
 $ WC "d_setservent_r='undef'"
-$ WC "d_snprintf='" + d_snprintf + "'"
 $ WC "d_srand48_r='undef'"
 $ WC "d_srandom_r='undef'"
 $ WC "d_strerror_l='undef'"
diff --git a/perl.h b/perl.h
index e94d5bd..1790fd5 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -1501,7 +1501,7 @@ EXTERN_C char *crypt(const char *, const char *);
 #  define my_snprintf Perl_my_snprintf
 #  define PERL_MY_SNPRINTF_GUARDED
 #else
-#if defined(HAS_SNPRINTF) && defined(HAS_C99_VARIADIC_MACROS) && !(defined(DEBUGGING) && !defined(PERL_USE_GCC_BRACE_GROUPS)) && !defined(PERL_GCC_PEDANTIC)
+#if defined(HAS_C99_VARIADIC_MACROS) && !(defined(DEBUGGING) && !defined(PERL_USE_GCC_BRACE_GROUPS)) && !defined(PERL_GCC_PEDANTIC)
 #  ifdef PERL_USE_GCC_BRACE_GROUPS
 #      define my_snprintf(buffer, max, ...) ({ int len = snprintf(buffer, max, __VA_ARGS__); PERL_SNPRINTF_CHECK(len, max, snprintf); len; })
 #      define PERL_MY_SNPRINTF_GUARDED
index f35bb1f..a9e89bb 100644 (file)
@@ -531,7 +531,6 @@ d_sigprocmask='define'
 d_sigsetjmp='define'
 d_sin6_scope_id='undef'
 d_sitearch='define'
-d_snprintf='undef'
 d_sockaddr_in6='undef'
 d_sockaddr_sa_len='undef'
 d_sockatmark='undef'
@@ -624,7 +623,6 @@ d_void_closedir='undef'
 d_voidsig='define'
 d_voidtty=''
 d_vprintf='define'
-d_vsnprintf='undef'
 d_wait4='undef'
 d_waitpid='define'
 d_wcscmp='undef'
index 90980d7..0e04e65 100644 (file)
@@ -479,7 +479,6 @@ d_sin6_scope_id='undef'
 d_sitearch='define'
 d_sitecustomize='undef'
 d_sitecustomize='undef'
-d_snprintf='undef'
 d_sockaddr_in6='undef'
 d_sockaddr_sa_len='undef'
 d_sockatmark='undef'
@@ -572,7 +571,6 @@ d_void_closedir='undef'
 d_voidsig='undef'
 d_voidtty=''
 d_vprintf='define'
-d_vsnprintf='undef'
 d_wait4='undef'
 d_waitpid='undef'
 d_wcscmp='undef'
index 125994b..d94f635 100644 (file)
--- a/uconfig.h
+++ b/uconfig.h
 /*#define      USE_SITECUSTOMIZE               / **/
 #endif
 
-/* HAS_SNPRINTF:
- *     This symbol, if defined, indicates that the snprintf () library
- *     function is available for use.
- */
-/* HAS_VSNPRINTF:
- *     This symbol, if defined, indicates that the vsnprintf () library
- *     function is available for use.
- */
-/*#define HAS_SNPRINTF / **/
-/*#define HAS_VSNPRINTF        / **/
-
 /* HAS_SOCKATMARK:
  *     This symbol, if defined, indicates that the sockatmark routine is
  *     available to test whether a socket is at the out-of-band mark.
 #endif
 
 /* Generated from:
- * de64a83defbfab2e684766a378e7304e30db7e2e8545430f86e0239f6850ac8a config_h.SH
- * 034e09d42cd2ce87573eb1bd11b7169cb5a57d0d0741d379d39c1f3c4fc2f24e uconfig.sh
+ * 6473cc944f55c251c871ab2c2b621b94505098ecf710a1d9c1ff2f6ce914ed61 config_h.SH
+ * ba39162e41cd92a8c139a8885eacd1a562aedede9bc007a19118da3c09fbc3ac uconfig.sh
  * ex: set ro: */
index 616eab6..4710a1d 100644 (file)
@@ -470,7 +470,6 @@ d_sigprocmask='undef'
 d_sigsetjmp='undef'
 d_sin6_scope_id='undef'
 d_sitearch='undef'
-d_snprintf='undef'
 d_sockaddr_in6='undef'
 d_sockaddr_sa_len='undef'
 d_sockatmark='undef'
@@ -563,7 +562,6 @@ d_void_closedir='undef'
 d_voidsig='undef'
 d_voidtty=''
 d_vprintf='define'
-d_vsnprintf='undef'
 d_wait4='undef'
 d_waitpid='undef'
 d_wcscmp='undef'
index 0842bad..fbc956b 100644 (file)
@@ -471,7 +471,6 @@ d_sigprocmask='undef'
 d_sigsetjmp='undef'
 d_sin6_scope_id='undef'
 d_sitearch='undef'
-d_snprintf='undef'
 d_sockaddr_in6='undef'
 d_sockaddr_sa_len='undef'
 d_sockatmark='undef'
@@ -564,7 +563,6 @@ d_void_closedir='undef'
 d_voidsig='undef'
 d_voidtty=''
 d_vprintf='define'
-d_vsnprintf='undef'
 d_wait4='undef'
 d_waitpid='undef'
 d_wcscmp='undef'
index 8ae0159..4bf7f84 100644 (file)
@@ -519,7 +519,6 @@ d_sigprocmask='undef'
 d_sigsetjmp='undef'
 d_sin6_scope_id='undef'
 d_sitearch='define'
-d_snprintf='undef'
 d_sockaddr_in6='undef'
 d_sockaddr_sa_len='undef'
 d_sockatmark='undef'
@@ -612,7 +611,6 @@ d_void_closedir='undef'
 d_voidsig='define'
 d_voidtty=''
 d_vprintf='define'
-d_vsnprintf='undef'
 d_wait4='undef'
 d_waitpid='define'
 d_wcscmp='undef'
index f0dc118..351e871 100644 (file)
@@ -519,7 +519,6 @@ d_sigprocmask='undef'
 d_sigsetjmp='undef'
 d_sin6_scope_id='define'
 d_sitearch='define'
-d_snprintf='define'
 d_sockaddr_in6='undef'
 d_sockaddr_sa_len='undef'
 d_sockatmark='undef'
@@ -613,7 +612,6 @@ d_void_closedir='undef'
 d_voidsig='define'
 d_voidtty=''
 d_vprintf='define'
-d_vsnprintf='define'
 d_wait4='undef'
 d_waitpid='define'
 d_wcscmp='define'
index ddb834b..574dfd8 100644 (file)
 /*#define      USE_SITECUSTOMIZE               / **/
 #endif
 
-/* HAS_SNPRINTF:
- *     This symbol, if defined, indicates that the snprintf () library
- *     function is available for use.
- */
-/* HAS_VSNPRINTF:
- *     This symbol, if defined, indicates that the vsnprintf () library
- *     function is available for use.
- */
-#define HAS_SNPRINTF   /**/
-#define HAS_VSNPRINTF  /**/
-
 /* HAS_SOCKATMARK:
  *     This symbol, if defined, indicates that the sockatmark routine is
  *     available to test whether a socket is at the out-of-band mark.
index 0eb1f8a..a8871e7 100644 (file)
 /*#define      USE_SITECUSTOMIZE               / **/
 #endif
 
-/* HAS_SNPRINTF:
- *     This symbol, if defined, indicates that the snprintf () library
- *     function is available for use.
- */
-/* HAS_VSNPRINTF:
- *     This symbol, if defined, indicates that the vsnprintf () library
- *     function is available for use.
- */
-#define HAS_SNPRINTF   /**/
-#define HAS_VSNPRINTF  /**/
-
 /* HAS_SOCKATMARK:
  *     This symbol, if defined, indicates that the sockatmark routine is
  *     available to test whether a socket is at the out-of-band mark.