OLD | NEW |
(Empty) | |
| 1 # strndup.m4 serial 15 |
| 2 dnl Copyright (C) 2002-2003, 2005-2008 Free Software Foundation, Inc. |
| 3 dnl This file is free software; the Free Software Foundation |
| 4 dnl gives unlimited permission to copy and/or distribute it, |
| 5 dnl with or without modifications, as long as this notice is preserved. |
| 6 |
| 7 AC_DEFUN([gl_FUNC_STRNDUP], |
| 8 [ |
| 9 dnl Persuade glibc <string.h> to declare strndup(). |
| 10 AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) |
| 11 |
| 12 AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) |
| 13 AC_CHECK_DECLS_ONCE([strndup]) |
| 14 if test $ac_cv_have_decl_strndup = no; then |
| 15 HAVE_DECL_STRNDUP=0 |
| 16 fi |
| 17 |
| 18 # AIX 4.3.3, AIX 5.1 have a function that fails to add the terminating '\0'. |
| 19 AC_CACHE_CHECK([for working strndup], gl_cv_func_strndup, |
| 20 [AC_RUN_IFELSE([ |
| 21 AC_LANG_PROGRAM([[#include <string.h> |
| 22 #include <stdlib.h>]], [[ |
| 23 #ifndef HAVE_DECL_STRNDUP |
| 24 extern char *strndup (const char *, size_t); |
| 25 #endif |
| 26 char *s; |
| 27 s = strndup ("some longer string", 15); |
| 28 free (s); |
| 29 s = strndup ("shorter string", 13); |
| 30 return s[13] != '\0';]])], |
| 31 [gl_cv_func_strndup=yes], |
| 32 [gl_cv_func_strndup=no], |
| 33 [AC_CHECK_FUNC([strndup], |
| 34 [AC_EGREP_CPP([too risky], [ |
| 35 #ifdef _AIX |
| 36 too risky |
| 37 #endif |
| 38 ], |
| 39 [gl_cv_func_strndup=no], |
| 40 [gl_cv_func_strndup=yes])], |
| 41 [gl_cv_func_strndup=no])])]) |
| 42 if test $gl_cv_func_strndup = yes; then |
| 43 AC_DEFINE([HAVE_STRNDUP], 1, |
| 44 [Define if you have the strndup() function and it works.]) |
| 45 else |
| 46 HAVE_STRNDUP=0 |
| 47 AC_LIBOBJ([strndup]) |
| 48 gl_PREREQ_STRNDUP |
| 49 fi |
| 50 ]) |
| 51 |
| 52 # Prerequisites of lib/strndup.c. |
| 53 AC_DEFUN([gl_PREREQ_STRNDUP], [:]) |
OLD | NEW |