[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
stpncpy: allow stpncpy to be defined as a macro
From: |
Bruno Haible |
Subject: |
stpncpy: allow stpncpy to be defined as a macro |
Date: |
Mon, 16 Aug 2010 02:10:00 +0200 |
User-agent: |
KMail/1.9.9 |
Hi,
Jeremy Huddleston recently reported a build failure of gettext on some
not-yet-released FreeBSD based system, due to the gnulib stpncpy module.
On that system, stpncpy is defined as a "complex macro", causing
1) the gl_FUNC_STPNCPY macro to think that stpncpy does not work,
2) the string.h replacement to redeclare it, leading to a build failure.
I'm committing this patch which will fix problem 2 and likely also fix
problem 1.
2010-08-15 Bruno Haible <address@hidden>
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 <address@hidden>.
--- lib/string.in.h.orig Mon Aug 16 01:56:33 2010
+++ lib/string.in.h Mon Aug 16 01:56:10 2010
@@ -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 *,
--- m4/stpncpy.m4.orig Mon Aug 16 01:56:33 2010
+++ m4/stpncpy.m4 Sun Aug 15 13:30:28 2010
@@ -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];
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- stpncpy: allow stpncpy to be defined as a macro,
Bruno Haible <=