1# fseeko.m4 serial 19 2dnl Copyright (C) 2007-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_FSEEKO], 8[ 9 AC_REQUIRE([gl_STDIO_H_DEFAULTS]) 10 AC_REQUIRE([gl_STDIN_LARGE_OFFSET]) 11 AC_REQUIRE([gl_SYS_TYPES_H]) 12 AC_REQUIRE([AC_PROG_CC]) 13 14 dnl Persuade glibc <stdio.h> to declare fseeko(). 15 AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) 16 17 AC_CACHE_CHECK([for fseeko], [gl_cv_func_fseeko], 18 [ 19 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h> 20]], [fseeko (stdin, 0, 0);])], 21 [gl_cv_func_fseeko=yes], [gl_cv_func_fseeko=no]) 22 ]) 23 24 AC_CHECK_DECLS_ONCE([fseeko]) 25 if test $ac_cv_have_decl_fseeko = no; then 26 HAVE_DECL_FSEEKO=0 27 fi 28 29 if test $gl_cv_func_fseeko = no; then 30 HAVE_FSEEKO=0 31 else 32 if test $WINDOWS_64_BIT_OFF_T = 1; then 33 REPLACE_FSEEKO=1 34 fi 35 if test $gl_cv_var_stdin_large_offset = no; then 36 REPLACE_FSEEKO=1 37 fi 38 m4_ifdef([gl_FUNC_FFLUSH_STDIN], [ 39 gl_FUNC_FFLUSH_STDIN 40 case "$gl_cv_func_fflush_stdin" in 41 *yes) ;; 42 *) REPLACE_FSEEKO=1 ;; 43 esac 44 ]) 45 fi 46]) 47 48dnl Code shared by fseeko and ftello. Determine if large files are supported, 49dnl but stdin does not start as a large file by default. 50AC_DEFUN([gl_STDIN_LARGE_OFFSET], 51 [ 52 AC_CACHE_CHECK([whether stdin defaults to large file offsets], 53 [gl_cv_var_stdin_large_offset], 54 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], 55[[#if defined __SL64 && defined __SCLE /* cygwin */ 56 /* Cygwin 1.5.24 and earlier fail to put stdin in 64-bit mode, making 57 fseeko/ftello needlessly fail. This bug was fixed in 1.5.25, and 58 it is easier to do a version check than building a runtime test. */ 59# include <cygwin/version.h> 60# if CYGWIN_VERSION_DLL_COMBINED < CYGWIN_VERSION_DLL_MAKE_COMBINED (1005, 25) 61 choke me 62# endif 63#endif]])], 64 [gl_cv_var_stdin_large_offset=yes], 65 [gl_cv_var_stdin_large_offset=no])]) 66]) 67 68# Prerequisites of lib/fseeko.c. 69AC_DEFUN([gl_PREREQ_FSEEKO], 70[ 71 dnl Native Windows has the function _fseeki64. mingw hides it in some 72 dnl circumstances, but mingw64 makes it usable again. 73 AC_CHECK_FUNCS([_fseeki64]) 74 if test $ac_cv_func__fseeki64 = yes; then 75 AC_CHECK_DECLS([_fseeki64]) 76 fi 77]) 78