Merge from coreutils.
[gnulib.git] / m4 / strnlen.m4
index a5bd2ef..989ff49 100644 (file)
@@ -1,31 +1,27 @@
-#serial 1
+# strnlen.m4 serial 3
+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 <string.h> 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)
-
-  /* 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], [:])