changeset 13558:263949fe34ae

stpncpy: Allow stpncpy to be defined as a macro.
author Bruno Haible <bruno@clisp.org>
date Mon, 16 Aug 2010 02:09:11 +0200
parents 8db1bc2a38a3
children 3c81a57b5a1d
files ChangeLog lib/string.in.h m4/stpncpy.m4
diffstat 3 files changed, 13 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2010-08-15  Bruno Haible  <bruno@clisp.org>
+
+	stpncpy: Allow stpncpy to be defined as a macro.
+	* m4/stpncpy.m4 (gl_FUNC_STPNCPY): Don't attempt to redeclare stpncpy
+	if it's already correctly declared.
+	* lib/string.in.h (stpncpy): Undefine before redefining.
+	Reported by Jeremy Huddleston <jeremyhu@macports.org>.
+
 2010-08-14  Bruno Haible  <bruno@clisp.org>
 
 	Rename module 'memxfrm' to 'amemxfrm'.
--- a/lib/string.in.h
+++ b/lib/string.in.h
@@ -233,6 +233,7 @@
 #if @GNULIB_STPNCPY@
 # if @REPLACE_STPNCPY@
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef stpncpy
 #   define stpncpy rpl_stpncpy
 #  endif
 _GL_FUNCDECL_RPL (stpncpy, char *,
--- a/m4/stpncpy.m4
+++ b/m4/stpncpy.m4
@@ -1,4 +1,4 @@
-# stpncpy.m4 serial 11
+# stpncpy.m4 serial 12
 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,6 +25,7 @@
   dnl   in AIX:     dest + max(0,n-1)
   dnl Only the glibc return value is useful in practice.
 
+  AC_CHECK_DECLS_ONCE([stpncpy])
   AC_CHECK_FUNCS_ONCE([stpncpy])
   if test $ac_cv_func_stpncpy = yes; then
     AC_CACHE_CHECK([for working stpncpy], [gl_cv_func_stpncpy], [
@@ -32,7 +33,9 @@
 #include <stdlib.h>
 #include <string.h> /* for strcpy */
 /* The stpncpy prototype is missing in <string.h> on AIX 4.  */
+#if !HAVE_DECL_STPNCPY
 extern char *stpncpy (char *dest, const char *src, size_t n);
+#endif
 int main () {
   const char *src = "Hello";
   char dest[10];