1# btowc.m4 serial 11 2dnl Copyright (C) 2008-2020 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_BTOWC], 8[ 9 AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) 10 11 dnl Check whether <wchar.h> is usable at all, first. Otherwise the test 12 dnl program below may lead to an endless loop. See 13 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440>. 14 AC_REQUIRE([gl_WCHAR_H_INLINE_OK]) 15 16 AC_CHECK_FUNCS_ONCE([btowc]) 17 if test $ac_cv_func_btowc = no; then 18 HAVE_BTOWC=0 19 else 20 21 AC_REQUIRE([AC_PROG_CC]) 22 AC_REQUIRE([gt_LOCALE_FR]) 23 AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles 24 25 dnl Cygwin 1.7.2 btowc('\0') is WEOF, not 0. 26 AC_CACHE_CHECK([whether btowc(0) is correct], 27 [gl_cv_func_btowc_nul], 28 [ 29 AC_RUN_IFELSE( 30 [AC_LANG_SOURCE([[ 31#include <string.h> 32/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before 33 <wchar.h>. 34 BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be 35 included before <wchar.h>. */ 36#include <stddef.h> 37#include <stdio.h> 38#include <time.h> 39#include <wchar.h> 40int main () 41{ 42 if (btowc ('\0') != 0) 43 return 1; 44 return 0; 45}]])], 46 [gl_cv_func_btowc_nul=yes], 47 [gl_cv_func_btowc_nul=no], 48 [ 49changequote(,)dnl 50 case "$host_os" in 51 # Guess no on Cygwin. 52 cygwin*) gl_cv_func_btowc_nul="guessing no" ;; 53 # Guess yes on native Windows. 54 mingw*) gl_cv_func_btowc_nul="guessing yes" ;; 55 # Guess yes otherwise. 56 *) gl_cv_func_btowc_nul="guessing yes" ;; 57 esac 58changequote([,])dnl 59 ]) 60 ]) 61 62 dnl IRIX 6.5 btowc(EOF) is 0xFF, not WEOF. 63 AC_CACHE_CHECK([whether btowc(EOF) is correct], 64 [gl_cv_func_btowc_eof], 65 [ 66 dnl Initial guess, used when cross-compiling or when no suitable locale 67 dnl is present. 68changequote(,)dnl 69 case "$host_os" in 70 # Guess no on IRIX. 71 irix*) gl_cv_func_btowc_eof="guessing no" ;; 72 # Guess yes on native Windows. 73 mingw*) gl_cv_func_btowc_eof="guessing yes" ;; 74 # Guess yes otherwise. 75 *) gl_cv_func_btowc_eof="guessing yes" ;; 76 esac 77changequote([,])dnl 78 if test $LOCALE_FR != none; then 79 AC_RUN_IFELSE( 80 [AC_LANG_SOURCE([[ 81#include <locale.h> 82#include <string.h> 83/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before 84 <wchar.h>. 85 BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be 86 included before <wchar.h>. */ 87#include <stddef.h> 88#include <stdio.h> 89#include <time.h> 90#include <wchar.h> 91int main () 92{ 93 if (setlocale (LC_ALL, "$LOCALE_FR") != NULL) 94 { 95 if (btowc (EOF) != WEOF) 96 return 1; 97 } 98 return 0; 99}]])], 100 [gl_cv_func_btowc_eof=yes], 101 [gl_cv_func_btowc_eof=no], 102 [:]) 103 fi 104 ]) 105 106 case "$gl_cv_func_btowc_nul" in 107 *yes) ;; 108 *) REPLACE_BTOWC=1 ;; 109 esac 110 case "$gl_cv_func_btowc_eof" in 111 *yes) ;; 112 *) REPLACE_BTOWC=1 ;; 113 esac 114 fi 115]) 116 117# Prerequisites of lib/btowc.c. 118AC_DEFUN([gl_PREREQ_BTOWC], [ 119 : 120]) 121