diff --git a/src/aclocal.m4 b/src/aclocal.m4 index 30299c8167f64fc3d93c8e78eb9b20f9c9dfef79..28c7ffd7c5b3797308a2efd1363263f03e498833 100644 --- a/src/aclocal.m4 +++ b/src/aclocal.m4 @@ -153,9 +153,10 @@ ECL_NEWLINE=LF ### 1.5) Can we guess how many characters are available for reading from ### the FILE structure? ### 0 = no -### 1 = (f)->_IO_read_end - (f)->_IO_read_ptr -### 2 = (f)->_r -### 3 = (f)->_cnt +### 1 = __freadahead((f)) +### 2 = (f)->_IO_read_end - (f)->_IO_read_ptr +### 3 = (f)->_r +### 4 = (f)->_cnt ECL_FILE_CNT=0 ### @@ -626,21 +627,29 @@ AC_DEFUN(ECL_FILE_STRUCTURE,[ AC_SUBST(ECL_FILE_CNT) if test -z "${ECL_FILE_CNT}"; then ECL_FILE_CNT=0 +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include + #include +]], [[ + FILE *f = fopen("conftestval","w"); + if (__freadahead((f))) + return 1; +]])],[ECL_FILE_CNT=1],[]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[ FILE *f = fopen("conftestval","w"); if ((f)->_IO_read_end - (f)->_IO_read_ptr) return 1; -]])],[ECL_FILE_CNT=1],[]) +]])],[ECL_FILE_CNT=2],[]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[ FILE *f = fopen("conftestval","w"); if ((f)->_r) return 1; -]])],[ECL_FILE_CNT=2],[]) +]])],[ECL_FILE_CNT=3],[]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[ FILE *f = fopen("conftestval","w"); if ((f)->_cnt) return 1; -]])],[ECL_FILE_CNT=3],[]) +]])],[ECL_FILE_CNT=4],[]) fi ]) diff --git a/src/configure b/src/configure index 6f82dbf9c49797f9b49a3eae1091fd768a4c4030..57834b92bdc62d07fcd7f8e600bc1ddeb9de1c1e 100755 --- a/src/configure +++ b/src/configure @@ -5886,9 +5886,10 @@ ECL_NEWLINE=LF ### 1.5) Can we guess how many characters are available for reading from ### the FILE structure? ### 0 = no -### 1 = (f)->_IO_read_end - (f)->_IO_read_ptr -### 2 = (f)->_r -### 3 = (f)->_cnt +### 1 = __freadahead((f)) +### 2 = (f)->_IO_read_end - (f)->_IO_read_ptr +### 3 = (f)->_r +### 4 = (f)->_cnt ECL_FILE_CNT=0 ### @@ -9250,6 +9251,29 @@ fi if test -z "${ECL_FILE_CNT}"; then ECL_FILE_CNT=0 cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + +int +main (void) +{ + + FILE *f = fopen("conftestval","w"); + if (__freadahead((f))) + return 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ECL_FILE_CNT=1 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -9266,7 +9290,7 @@ main (void) _ACEOF if ac_fn_c_try_compile "$LINENO" then : - ECL_FILE_CNT=1 + ECL_FILE_CNT=2 fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -9286,7 +9310,7 @@ main (void) _ACEOF if ac_fn_c_try_compile "$LINENO" then : - ECL_FILE_CNT=2 + ECL_FILE_CNT=3 fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -9306,7 +9330,7 @@ main (void) _ACEOF if ac_fn_c_try_compile "$LINENO" then : - ECL_FILE_CNT=3 + ECL_FILE_CNT=4 fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi @@ -12810,4 +12834,3 @@ fi for i in $srcdir/c/*/; do mkdir -p c/`basename $i`; done - diff --git a/src/h/config-internal.h.in b/src/h/config-internal.h.in index ebb2792fd3f436305d2543556b06afee28d2814c..952b41ee13d745afe28604585c91d94d68046582 100644 --- a/src/h/config-internal.h.in +++ b/src/h/config-internal.h.in @@ -176,12 +176,16 @@ #undef FILE_CNT #if @ECL_FILE_CNT@ == 1 -# define FILE_CNT(fp) ((fp)->_IO_read_end - (fp)->_IO_read_ptr) +# include +# define FILE_CNT(fp) (__freadahead((fp))) #endif #if @ECL_FILE_CNT@ == 2 -# define FILE_CNT(fp) ((fp)->_r) +# define FILE_CNT(fp) ((fp)->_IO_read_end - (fp)->_IO_read_ptr) #endif #if @ECL_FILE_CNT@ == 3 +# define FILE_CNT(fp) ((fp)->_r) +#endif +#if @ECL_FILE_CNT@ == 4 # define FILE_CNT(fp) ((fp)->_cnt) #endif diff --git a/src/util/x86-linux-gnu.cross_config b/src/util/x86-linux-gnu.cross_config index 03be03df58a5b579fbc5b749b6b924eaa3af3a18..d309b5c60ad65f590bd7121c9e45f455b56d8651 100644 --- a/src/util/x86-linux-gnu.cross_config +++ b/src/util/x86-linux-gnu.cross_config @@ -8,7 +8,7 @@ CL_LONG_BITS=32 ECL_STACK_DIR=down ECL_BIGENDIAN=no ECL_NEWLINE=LF -ECL_FILE_CNT=1 +ECL_FILE_CNT=2 ECL_STDINT_HEADER="#include " ECL_UINT8_T=uint8_t ECL_UINT16_T=uint16_t diff --git a/src/util/x86_64-linux-gnu.cross_config b/src/util/x86_64-linux-gnu.cross_config index e6d83dd73d349ece5ae235074f007c343feb42e3..0fbf2a9d8753f074057755025b53635e47cb1f7d 100644 --- a/src/util/x86_64-linux-gnu.cross_config +++ b/src/util/x86_64-linux-gnu.cross_config @@ -8,7 +8,7 @@ CL_LONG_BITS=64 ECL_STACK_DIR=down ECL_BIGENDIAN=no ECL_NEWLINE=LF -ECL_FILE_CNT=1 +ECL_FILE_CNT=2 ECL_STDINT_HEADER="#include " ECL_UINT8_T=uint8_t ECL_UINT16_T=uint16_t