diff options
Diffstat (limited to 'gl/m4/fseeko.m4')
| -rw-r--r-- | gl/m4/fseeko.m4 | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/gl/m4/fseeko.m4 b/gl/m4/fseeko.m4 new file mode 100644 index 00000000..05ee06bc --- /dev/null +++ b/gl/m4/fseeko.m4 | |||
| @@ -0,0 +1,77 @@ | |||
| 1 | # fseeko.m4 serial 20 | ||
| 2 | dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. | ||
| 3 | dnl This file is free software; the Free Software Foundation | ||
| 4 | dnl gives unlimited permission to copy and/or distribute it, | ||
| 5 | dnl with or without modifications, as long as this notice is preserved. | ||
| 6 | |||
| 7 | AC_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 | |||
| 48 | dnl Code shared by fseeko and ftello. Determine if large files are supported, | ||
| 49 | dnl but stdin does not start as a large file by default. | ||
| 50 | AC_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. | ||
| 69 | AC_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 | ]) | ||
