X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Fstrnlen.m4;h=89cca67ea6c6415ccfd7ad45609a3b0f83bcc38c;hb=a76a349e949dfad5716eb3893052070b770e949f;hp=a5bd2ef0075bd3b4f79f4501041980fe5be36c6f;hpb=f4b7f14292df9fe59509a5a1aa996cc26e2607fc;p=gnulib.git diff --git a/m4/strnlen.m4 b/m4/strnlen.m4 index a5bd2ef00..89cca67ea 100644 --- a/m4/strnlen.m4 +++ b/m4/strnlen.m4 @@ -1,31 +1,32 @@ -#serial 1 +# strnlen.m4 serial 2 +dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. -# This is already in cvs autoconf -- what will be 2.52g. -# Define it here for those who aren't on the bleeding edge. -# FIXME: remove this file once the next autoconf release comes out. +AC_DEFUN([gl_FUNC_STRNLEN], +[ + dnl Persuade glibc to declare strnlen(). + AC_REQUIRE([AC_GNU_SOURCE]) -undefine([AC_FUNC_STRNLEN]) + AC_FUNC_STRNLEN + if test $ac_cv_func_strnlen_working = no; then + # This is necessary because automake-1.6.1 doens't understand + # that the above use of AC_FUNC_STRNLEN means we may have to use + # lib/strnlen.c. + #AC_LIBOBJ(strnlen) + AC_DEFINE(strnlen, rpl_strnlen, + [Define to rpl_strnlen if the replacement function should be used.]) + gl_PREREQ_STRNLEN + fi +]) -# AC_FUNC_STRNLEN -# -------------- -AC_DEFUN([AC_FUNC_STRNLEN], -[AC_CACHE_CHECK([for working strnlen], ac_cv_func_strnlen_working, -[AC_RUN_IFELSE([AC_LANG_PROGRAM([], [[ -#define S "foobar" -#define S_LEN (sizeof S - 1) +# Prerequisites of lib/strnlen.c. +AC_DEFUN([gl_PREREQ_STRNLEN], [ + AC_REQUIRE([AC_HEADER_STDC]) + AC_CHECK_HEADERS_ONCE(memory.h string.h) + AC_CHECK_DECLS(memchr) +]) - /* At least one implementation is buggy: that of AIX 4.3. */ - int i; - for (i = 0; i < S_LEN + 1; ++i) - { - int result = i <= S_LEN ? i : S_LEN; - if (strnlen (S, i) != result) - exit (1); - } - exit (0); -]])], - [ac_cv_func_strnlen_working=yes], - [ac_cv_func_strnlen_working=no], - [ac_cv_func_strnlen_working=no])]) -test $ac_cv_func_strnlen_working = no && AC_LIBOBJ([strnlen]) -])# AC_FUNC_STRNLEN