diff options
author | Jim Meyering <jim@meyering.net> | 2006-06-10 09:01:41 +0000 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 2006-06-10 09:01:41 +0000 |
commit | a8ee9bcfb33a47600b2a5edb9a277fde1739ce7e (patch) | |
tree | ed7ce6566f3f174c4bd9fd636ec33d99ad08783f /m4 | |
parent | 82f9a230aa018ff6a31d258d955703846415c37b (diff) | |
download | coreutils-a8ee9bcfb33a47600b2a5edb9a277fde1739ce7e.tar.xz |
Apply this change from gnulib:
2006-05-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
Bruno Haible <bruno@clisp.org>
* strndup.m4 (gl_FUNC_STRNDUP): Replace the AC_REPLACE_FUNCS with a
check for the declaration of strnlen and a run test that exposes the
AIX 5.1 strnlen bug. In the failure case, #define strndup to
rpl_strndup.
Diffstat (limited to 'm4')
-rw-r--r-- | m4/ChangeLog | 12 | ||||
-rw-r--r-- | m4/strndup.m4 | 36 |
2 files changed, 44 insertions, 4 deletions
diff --git a/m4/ChangeLog b/m4/ChangeLog index 07e28a10a..a8576d75b 100644 --- a/m4/ChangeLog +++ b/m4/ChangeLog @@ -1,3 +1,15 @@ +2006-06-10 Jim Meyering <jim@meyering.net> + + Apply this change from gnulib: + + 2006-05-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + Bruno Haible <bruno@clisp.org> + + * strndup.m4 (gl_FUNC_STRNDUP): Replace the AC_REPLACE_FUNCS with a + check for the declaration of strnlen and a run test that exposes the + AIX 5.1 strnlen bug. In the failure case, #define strndup to + rpl_strndup. + 2006-05-28 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> * c-strtod.m4 (gl_C99_STRTOLD): Use a link test rather than a diff --git a/m4/strndup.m4 b/m4/strndup.m4 index 66cedb433..48b15cc03 100644 --- a/m4/strndup.m4 +++ b/m4/strndup.m4 @@ -1,5 +1,5 @@ -# strndup.m4 serial 5 -dnl Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. +# strndup.m4 serial 6 +dnl Copyright (C) 2002-2003, 2005-2006 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -11,8 +11,36 @@ AC_DEFUN([gl_FUNC_STRNDUP], dnl Persuade glibc <string.h> to declare strndup(). AC_REQUIRE([AC_GNU_SOURCE]) - AC_REPLACE_FUNCS(strndup) - if test $ac_cv_func_strndup = no; then + AC_CHECK_DECLS_ONCE([strndup]) + + # AIX 4.3.3, AIX 5.1 have a function that fails to add the terminating '\0'. + AC_CACHE_CHECK([for working strndup], gl_cv_func_strndup, + [AC_RUN_IFELSE([ + AC_LANG_PROGRAM([#include <string.h>], [[ +#ifndef HAVE_DECL_STRNDUP + extern char *strndup (const char *, size_t); +#endif + char *s; + s = strndup ("some longer string", 15); + free (s); + s = strndup ("shorter string", 13); + return s[13] != '\0';]])], + [gl_cv_func_strndup=yes], + [gl_cv_func_strndup=no], + [AC_EGREP_CPP([too risky], [ +#ifdef _AIX + too risky +#endif + ], + [gl_cv_func_strndup=no], + [gl_cv_func_strndup=yes])])]) + if test $gl_cv_func_strndup = yes; then + AC_DEFINE([HAVE_STRNDUP], 1, + [Define if you have the strndup() function and it works.]) + else + AC_LIBOBJ([strndup]) + AC_DEFINE(strndup, rpl_strndup, + [Define to rpl_strndup if the replacement function should be used,]) gl_PREREQ_STRNDUP fi ]) |