-#serial 1
+# strnlen.m4 serial 8
+dnl Copyright (C) 2002-2003, 2005-2007 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.
-# 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 <string.h> to declare strnlen().
+ AC_REQUIRE([AC_GNU_SOURCE])
-undefine([AC_FUNC_STRNLEN])
+ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+ AC_CHECK_DECLS_ONCE([strnlen])
+ if test $ac_cv_have_decl_strnlen = no; then
+ HAVE_DECL_STRNLEN=0
+ 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)
+ 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
+])
- /* 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
+# Prerequisites of lib/strnlen.c.
+AC_DEFUN([gl_PREREQ_STRNLEN], [:])