+2010-04-03 Bruno Haible <bruno@clisp.org>
+
+ stpncpy: Fix C++ test error on mingw.
+ * lib/string.in.h (stpncpy): Use modern idiom.
+ * m4/stpncpy.m4 (gl_FUNC_STPNCPY): Distinguish the case that the
+ function is missing and that it needs to be replaced.
+ * m4/string_h.m4 (gl_HEADER_STRING_H_DEFAULTS): Initialize
+ REPLACE_STPNCPY.
+ * modules/string (Makefile.am): Replace REPLACE_STPNCPY.
+
2010-04-03 Bruno Haible <bruno@clisp.org>
sys_stat: Fix C++ test error on mingw.
/* Copy no more than N bytes of SRC to DST, returning a pointer past the
last non-NUL byte written into DST. */
#if @GNULIB_STPNCPY@
-# if ! @HAVE_STPNCPY@
+# if @REPLACE_STPNCPY@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# define stpncpy rpl_stpncpy
# endif
(char *restrict __dst, char const *restrict __src,
size_t __n));
# else
+# if ! @HAVE_STPNCPY@
+_GL_FUNCDECL_SYS (stpncpy, char *,
+ (char *restrict __dst, char const *restrict __src,
+ size_t __n)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
_GL_CXXALIAS_SYS (stpncpy, char *,
(char *restrict __dst, char const *restrict __src,
size_t __n));
-# stpncpy.m4 serial 10
+# stpncpy.m4 serial 11
dnl Copyright (C) 2002-2003, 2005-2007, 2009-2010 Free Software Foundation,
dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl in AIX: dest + max(0,n-1)
dnl Only the glibc return value is useful in practice.
- AC_CACHE_CHECK([for working stpncpy], [gl_cv_func_stpncpy], [
- AC_TRY_RUN([
+ AC_CHECK_FUNCS_ONCE([stpncpy])
+ if test $ac_cv_func_stpncpy = yes; then
+ AC_CACHE_CHECK([for working stpncpy], [gl_cv_func_stpncpy], [
+ AC_TRY_RUN([
#include <stdlib.h>
#include <string.h> /* for strcpy */
/* The stpncpy prototype is missing in <string.h> on AIX 4. */
if (stpncpy (dest, src, 7) != dest + 5) exit(1);
exit(0);
}
-], gl_cv_func_stpncpy=yes, gl_cv_func_stpncpy=no,
- [AC_EGREP_CPP([Thanks for using GNU], [
+], [gl_cv_func_stpncpy=yes], [gl_cv_func_stpncpy=no],
+ [AC_EGREP_CPP([Thanks for using GNU], [
#include <features.h>
#ifdef __GNU_LIBRARY__
Thanks for using GNU
#endif
-], gl_cv_func_stpncpy=yes, gl_cv_func_stpncpy=no)])])
-
- if test $gl_cv_func_stpncpy = yes; then
- AC_DEFINE([HAVE_STPNCPY], [1],
- [Define if you have the stpncpy() function and it works.])
+], [gl_cv_func_stpncpy=yes], [gl_cv_func_stpncpy=no])
+ ])
+ ])
+ if test $gl_cv_func_stpncpy = yes; then
+ AC_DEFINE([HAVE_STPNCPY], [1],
+ [Define if you have the stpncpy() function and it works.])
+ else
+ REPLACE_STPNCPY=1
+ AC_LIBOBJ([stpncpy])
+ gl_PREREQ_STPNCPY
+ fi
else
HAVE_STPNCPY=0
AC_LIBOBJ([stpncpy])
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 13
+# serial 14
# Written by Paul Eggert.
HAVE_STRVERSCMP=1; AC_SUBST([HAVE_STRVERSCMP])
REPLACE_MEMCHR=0; AC_SUBST([REPLACE_MEMCHR])
REPLACE_MEMMEM=0; AC_SUBST([REPLACE_MEMMEM])
+ REPLACE_STPNCPY=0; AC_SUBST([REPLACE_STPNCPY])
REPLACE_STRDUP=0; AC_SUBST([REPLACE_STRDUP])
REPLACE_STRSTR=0; AC_SUBST([REPLACE_STRSTR])
REPLACE_STRCASESTR=0; AC_SUBST([REPLACE_STRCASESTR])
-e 's|@''HAVE_DECL_STRERROR''@|$(HAVE_DECL_STRERROR)|g' \
-e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
-e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
+ -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \
-e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \
-e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
-e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \