1*820c1a8dSHiroo HAYASHI# btowc.m4 serial 12 2*820c1a8dSHiroo HAYASHIdnl Copyright (C) 2008-2021 Free Software Foundation, Inc. 3*820c1a8dSHiroo HAYASHIdnl This file is free software; the Free Software Foundation 4*820c1a8dSHiroo HAYASHIdnl gives unlimited permission to copy and/or distribute it, 5*820c1a8dSHiroo HAYASHIdnl with or without modifications, as long as this notice is preserved. 6*820c1a8dSHiroo HAYASHI 7*820c1a8dSHiroo HAYASHIAC_DEFUN([gl_FUNC_BTOWC], 8*820c1a8dSHiroo HAYASHI[ 9*820c1a8dSHiroo HAYASHI AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) 10*820c1a8dSHiroo HAYASHI 11*820c1a8dSHiroo HAYASHI dnl Check whether <wchar.h> is usable at all, first. Otherwise the test 12*820c1a8dSHiroo HAYASHI dnl program below may lead to an endless loop. See 13*820c1a8dSHiroo HAYASHI dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440>. 14*820c1a8dSHiroo HAYASHI AC_REQUIRE([gl_WCHAR_H_INLINE_OK]) 15*820c1a8dSHiroo HAYASHI 16*820c1a8dSHiroo HAYASHI AC_CHECK_FUNCS_ONCE([btowc]) 17*820c1a8dSHiroo HAYASHI if test $ac_cv_func_btowc = no; then 18*820c1a8dSHiroo HAYASHI HAVE_BTOWC=0 19*820c1a8dSHiroo HAYASHI else 20*820c1a8dSHiroo HAYASHI 21*820c1a8dSHiroo HAYASHI AC_REQUIRE([AC_PROG_CC]) 22*820c1a8dSHiroo HAYASHI AC_REQUIRE([gt_LOCALE_FR]) 23*820c1a8dSHiroo HAYASHI AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles 24*820c1a8dSHiroo HAYASHI 25*820c1a8dSHiroo HAYASHI dnl Cygwin 1.7.2 btowc('\0') is WEOF, not 0. 26*820c1a8dSHiroo HAYASHI AC_CACHE_CHECK([whether btowc(0) is correct], 27*820c1a8dSHiroo HAYASHI [gl_cv_func_btowc_nul], 28*820c1a8dSHiroo HAYASHI [ 29*820c1a8dSHiroo HAYASHI AC_RUN_IFELSE( 30*820c1a8dSHiroo HAYASHI [AC_LANG_SOURCE([[ 31*820c1a8dSHiroo HAYASHI#include <wchar.h> 32*820c1a8dSHiroo HAYASHIint main () 33*820c1a8dSHiroo HAYASHI{ 34*820c1a8dSHiroo HAYASHI if (btowc ('\0') != 0) 35*820c1a8dSHiroo HAYASHI return 1; 36*820c1a8dSHiroo HAYASHI return 0; 37*820c1a8dSHiroo HAYASHI}]])], 38*820c1a8dSHiroo HAYASHI [gl_cv_func_btowc_nul=yes], 39*820c1a8dSHiroo HAYASHI [gl_cv_func_btowc_nul=no], 40*820c1a8dSHiroo HAYASHI [ 41*820c1a8dSHiroo HAYASHIchangequote(,)dnl 42*820c1a8dSHiroo HAYASHI case "$host_os" in 43*820c1a8dSHiroo HAYASHI # Guess no on Cygwin. 44*820c1a8dSHiroo HAYASHI cygwin*) gl_cv_func_btowc_nul="guessing no" ;; 45*820c1a8dSHiroo HAYASHI # Guess yes on native Windows. 46*820c1a8dSHiroo HAYASHI mingw*) gl_cv_func_btowc_nul="guessing yes" ;; 47*820c1a8dSHiroo HAYASHI # Guess yes otherwise. 48*820c1a8dSHiroo HAYASHI *) gl_cv_func_btowc_nul="guessing yes" ;; 49*820c1a8dSHiroo HAYASHI esac 50*820c1a8dSHiroo HAYASHIchangequote([,])dnl 51*820c1a8dSHiroo HAYASHI ]) 52*820c1a8dSHiroo HAYASHI ]) 53*820c1a8dSHiroo HAYASHI 54*820c1a8dSHiroo HAYASHI dnl IRIX 6.5 btowc(EOF) is 0xFF, not WEOF. 55*820c1a8dSHiroo HAYASHI AC_CACHE_CHECK([whether btowc(EOF) is correct], 56*820c1a8dSHiroo HAYASHI [gl_cv_func_btowc_eof], 57*820c1a8dSHiroo HAYASHI [ 58*820c1a8dSHiroo HAYASHI dnl Initial guess, used when cross-compiling or when no suitable locale 59*820c1a8dSHiroo HAYASHI dnl is present. 60*820c1a8dSHiroo HAYASHIchangequote(,)dnl 61*820c1a8dSHiroo HAYASHI case "$host_os" in 62*820c1a8dSHiroo HAYASHI # Guess no on IRIX. 63*820c1a8dSHiroo HAYASHI irix*) gl_cv_func_btowc_eof="guessing no" ;; 64*820c1a8dSHiroo HAYASHI # Guess yes on native Windows. 65*820c1a8dSHiroo HAYASHI mingw*) gl_cv_func_btowc_eof="guessing yes" ;; 66*820c1a8dSHiroo HAYASHI # Guess yes otherwise. 67*820c1a8dSHiroo HAYASHI *) gl_cv_func_btowc_eof="guessing yes" ;; 68*820c1a8dSHiroo HAYASHI esac 69*820c1a8dSHiroo HAYASHIchangequote([,])dnl 70*820c1a8dSHiroo HAYASHI if test $LOCALE_FR != none; then 71*820c1a8dSHiroo HAYASHI AC_RUN_IFELSE( 72*820c1a8dSHiroo HAYASHI [AC_LANG_SOURCE([[ 73*820c1a8dSHiroo HAYASHI#include <locale.h> 74*820c1a8dSHiroo HAYASHI#include <stdio.h> 75*820c1a8dSHiroo HAYASHI#include <wchar.h> 76*820c1a8dSHiroo HAYASHIint main () 77*820c1a8dSHiroo HAYASHI{ 78*820c1a8dSHiroo HAYASHI if (setlocale (LC_ALL, "$LOCALE_FR") != NULL) 79*820c1a8dSHiroo HAYASHI { 80*820c1a8dSHiroo HAYASHI if (btowc (EOF) != WEOF) 81*820c1a8dSHiroo HAYASHI return 1; 82*820c1a8dSHiroo HAYASHI } 83*820c1a8dSHiroo HAYASHI return 0; 84*820c1a8dSHiroo HAYASHI}]])], 85*820c1a8dSHiroo HAYASHI [gl_cv_func_btowc_eof=yes], 86*820c1a8dSHiroo HAYASHI [gl_cv_func_btowc_eof=no], 87*820c1a8dSHiroo HAYASHI [:]) 88*820c1a8dSHiroo HAYASHI fi 89*820c1a8dSHiroo HAYASHI ]) 90*820c1a8dSHiroo HAYASHI 91*820c1a8dSHiroo HAYASHI case "$gl_cv_func_btowc_nul" in 92*820c1a8dSHiroo HAYASHI *yes) ;; 93*820c1a8dSHiroo HAYASHI *) REPLACE_BTOWC=1 ;; 94*820c1a8dSHiroo HAYASHI esac 95*820c1a8dSHiroo HAYASHI case "$gl_cv_func_btowc_eof" in 96*820c1a8dSHiroo HAYASHI *yes) ;; 97*820c1a8dSHiroo HAYASHI *) REPLACE_BTOWC=1 ;; 98*820c1a8dSHiroo HAYASHI esac 99*820c1a8dSHiroo HAYASHI fi 100*820c1a8dSHiroo HAYASHI]) 101*820c1a8dSHiroo HAYASHI 102*820c1a8dSHiroo HAYASHI# Prerequisites of lib/btowc.c. 103*820c1a8dSHiroo HAYASHIAC_DEFUN([gl_PREREQ_BTOWC], [ 104*820c1a8dSHiroo HAYASHI : 105*820c1a8dSHiroo HAYASHI]) 106