1# strchrnul.m4 serial 9
2dnl Copyright (C) 2003, 2007, 2009-2021 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved.
6
7AC_DEFUN([gl_FUNC_STRCHRNUL],
8[
9  dnl Persuade glibc <string.h> to declare strchrnul().
10  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
11
12  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
13  AC_CHECK_FUNCS([strchrnul])
14  if test $ac_cv_func_strchrnul = no; then
15    HAVE_STRCHRNUL=0
16  else
17    AC_CACHE_CHECK([whether strchrnul works],
18      [gl_cv_func_strchrnul_works],
19      [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
20#include <string.h> /* for strchrnul */
21]], [[const char *buf = "a";
22      return strchrnul (buf, 'b') != buf + 1;
23    ]])],
24        [gl_cv_func_strchrnul_works=yes],
25        [gl_cv_func_strchrnul_works=no],
26        [dnl Cygwin 1.7.9 introduced strchrnul, but it was broken until 1.7.10
27         AC_EGREP_CPP([Lucky user],
28           [
29#if defined __CYGWIN__
30 #include <cygwin/version.h>
31 #if CYGWIN_VERSION_DLL_COMBINED > CYGWIN_VERSION_DLL_MAKE_COMBINED (1007, 9)
32  Lucky user
33 #endif
34#else
35  Lucky user
36#endif
37           ],
38           [gl_cv_func_strchrnul_works="guessing yes"],
39           [gl_cv_func_strchrnul_works="guessing no"])
40        ])
41      ])
42    case "$gl_cv_func_strchrnul_works" in
43      *yes) ;;
44      *) REPLACE_STRCHRNUL=1 ;;
45    esac
46  fi
47])
48
49# Prerequisites of lib/strchrnul.c.
50AC_DEFUN([gl_PREREQ_STRCHRNUL], [:])
51