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..e50fe398 --- /dev/null +++ b/gl/m4/fseeko.m4 | |||
@@ -0,0 +1,77 @@ | |||
1 | # fseeko.m4 serial 20 | ||
2 | dnl Copyright (C) 2007-2022 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 | ]) | ||