[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
strerror_r-posix on MSVC
From: |
Bruno Haible |
Subject: |
strerror_r-posix on MSVC |
Date: |
Fri, 23 Sep 2011 00:16:54 +0200 |
User-agent: |
KMail/1.13.6 (Linux/2.6.37.6-0.5-desktop; KDE/4.6.0; x86_64; ; ) |
The module 'strerror_r-posix' leads to a link error on MSVC, because it
uses snprintf() which does not exist on this platform.
The simplest solution would be to add a dependency to 'snprintf'. But that
would drag in vasnprintf.c, which is really overkill for the simple use of
snprintf() here. The simple and buggy _snprintf does it as well.
2011-09-22 Bruno Haible <address@hidden>
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.
--- lib/strerror_r.c.orig Fri Sep 23 00:11:32 2011
+++ lib/strerror_r.c Fri Sep 23 00:07:08 2011
@@ -86,6 +86,12 @@
#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
--- m4/strerror_r.m4.orig Fri Sep 23 00:11:32 2011
+++ m4/strerror_r.m4 Fri Sep 23 00:04:21 2011
@@ -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 @@
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
--
In memoriam Martha Corey <http://en.wikipedia.org/wiki/Martha_Corey>
- strerror_r-posix on MSVC,
Bruno Haible <=