stpncpy: Allow stpncpy to be defined as a macro.
authorBruno Haible <bruno@clisp.org>
Mon, 16 Aug 2010 00:09:11 +0000 (02:09 +0200)
committerBruno Haible <bruno@clisp.org>
Mon, 16 Aug 2010 00:09:24 +0000 (02:09 +0200)
ChangeLog
lib/string.in.h
m4/stpncpy.m4

index d86bbc3..86de94d 100644 (file)
--- 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'.
index fb73770..bb6aa58 100644 (file)
@@ -233,6 +233,7 @@ _GL_WARN_ON_USE (stpcpy, "stpcpy is unportable - "
 #if @GNULIB_STPNCPY@
 # if @REPLACE_STPNCPY@
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef stpncpy
 #   define stpncpy rpl_stpncpy
 #  endif
 _GL_FUNCDECL_RPL (stpncpy, char *,
index d2344ac..158cc08 100644 (file)
@@ -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 @@ AC_DEFUN([gl_FUNC_STPNCPY],
   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 @@ AC_DEFUN([gl_FUNC_STPNCPY],
 #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];