From: Bruno Haible Date: Thu, 22 Sep 2011 22:13:29 +0000 (+0200) Subject: strerror_r-posix: Avoid a link error on MSVC. X-Git-Tag: v0.1~1783 X-Git-Url: http://erislabs.net/gitweb/?a=commitdiff_plain;h=4fe7feb99cf3e3a8edcd048fe9b322c854134f8a;p=gnulib.git strerror_r-posix: Avoid a link error on MSVC. * m4/strerror_r.m4 (gl_PREREQ_STRERROR_R): Check for snprintf. * lib/strerror_r.c (snprintf): Define to _snprintf if it doesn't exist. --- diff --git a/ChangeLog b/ChangeLog index 3af8904e0..9c713cd8e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2011-09-22 Bruno Haible + strerror_r-posix: Avoid a link error on MSVC. + * m4/strerror_r.m4 (gl_PREREQ_STRERROR_R): Check for snprintf. + * lib/strerror_r.c (snprintf): Define to _snprintf if it doesn't exist. + +2011-09-22 Bruno Haible + select: Avoid link errors on MSVC. * m4/select.m4 (gl_FUNC_SELECT): Determine LIB_SELECT. * modules/select (Link): Replace $(LIBSOCKET) with $(LIB_SELECT). diff --git a/lib/strerror_r.c b/lib/strerror_r.c index 2b3f1f267..7fd90b708 100644 --- a/lib/strerror_r.c +++ b/lib/strerror_r.c @@ -86,6 +86,12 @@ gl_lock_define_initialized(static, strerror_lock) #endif +/* On MSVC, there is no snprintf() function, just a _snprintf(). + It is of lower quality, but sufficient for the simple use here. */ +#if !HAVE_SNPRINTF +# define snprintf _snprintf +#endif + /* Copy as much of MSG into BUF as possible, without corrupting errno. Return 0 if MSG fit in BUFLEN, otherwise return ERANGE. */ static int diff --git a/m4/strerror_r.m4 b/m4/strerror_r.m4 index 0c5cc6968..1d4a653d2 100644 --- a/m4/strerror_r.m4 +++ b/m4/strerror_r.m4 @@ -1,4 +1,4 @@ -# strerror_r.m4 serial 13 +# strerror_r.m4 serial 14 dnl Copyright (C) 2002, 2007-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -43,6 +43,7 @@ AC_DEFUN([gl_PREREQ_STRERROR_R], [ dnl glibc >= 2.3.4 and cygwin 1.7.9 have a function __xpg_strerror_r. AC_CHECK_FUNCS_ONCE([__xpg_strerror_r]) AC_CHECK_FUNCS_ONCE([catgets]) + AC_CHECK_FUNCS_ONCE([snprintf]) ]) # Detect if strerror_r works, but without affecting whether a replacement