1
0
mirror of https://git.savannah.gnu.org/git/gnulib.git synced 2025-08-08 17:22:05 +03:00

stpncpy: Fix C++ test error on mingw.

This commit is contained in:
Bruno Haible
2010-04-03 13:21:17 +02:00
parent 759d93d57c
commit f550ae27cb
5 changed files with 38 additions and 12 deletions

View File

@@ -1,3 +1,13 @@
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.

View File

@@ -222,7 +222,7 @@ _GL_WARN_ON_USE (stpcpy, "stpcpy is unportable - "
/* 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
@@ -234,6 +234,12 @@ _GL_CXXALIAS_RPL (stpncpy, char *,
(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));

View File

@@ -1,4 +1,4 @@
# 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
@@ -25,8 +25,10 @@ AC_DEFUN([gl_FUNC_STPNCPY],
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. */
@@ -45,17 +47,23 @@ int main () {
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])

View File

@@ -5,7 +5,7 @@
# 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.
@@ -95,6 +95,7 @@ AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
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])

View File

@@ -79,6 +79,7 @@ string.h: string.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
-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' \