bug-gnu-utils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gawk 3.0.95 update for m4/largefile.m4 (large-file compilation)


From: Paul Eggert
Subject: gawk 3.0.95 update for m4/largefile.m4 (large-file compilation)
Date: Mon, 26 Feb 2001 14:42:27 -0800 (PST)

gawk 3.0.95 uses an old version of largefile.m4.  Here is a patch that
should improve portability on some obscure hosts like HP-UX 10.20 and
some obscure compilers (e.g. C++ compilers that are trying to
masquerade as C compilers and doing so incorrectly) and some
not-so-obscure platforms (including unpatched glibc 2.1.3 in some
cases).

This patch defines a new macro AC_FUNC_FSEEKO, but gawk doesn't use
fseek or ftell so gawk doesn't need to use that macro.

I haven't tested this, as I don't have automake 1.4a near to hand and
automake 1.4 doesn't seem to work for me with gawk 3.0.95, but the
change has worked for me in GNU tar test distributions.

2001-01-09  Paul Eggert  <address@hidden>

        * m4/largefile.m4 (AC_SYS_LARGEFILE): Fix typo: missing comma.

2000-12-20  Paul Eggert  <address@hidden>

        * m4/largefile.m4 (AC_SYS_LARGEFILE_TEST_INCLUDES):
        Don't reject C++ compilers that incorrectly reject large integers.

2000-12-19  Paul Eggert  <address@hidden>

        * m4/largefile.m4 (AC_SYS_LARGEFILE_TEST_INCLUDES):
        Check for compiler bugs, too.

2000-12-01  Paul Eggert  <address@hidden>

        * m4/largefile.m4 (AC_SYS_LARGEFILE): Require AC_PROG_CC.

2000-11-15  Paul Eggert  <address@hidden>

        * m4/largefile.m4: (AC_SYS_LARGEFILE_MACRO_VALUE):
        Don't use AC_SYS_LARGEFILE_TEST_INCLUDES;
        this isn't desirable when checking for fseeko.
        (AC_SYS_LARGEFILE): Pass AC_SYS_LARGEFILE_TEST_INCLUDES to
        AC_SYS_LARGEFILE_MACRO_VALUE, since it no longer does this for us.

        * m4/largefile.m4 (AC_FUNC_FSEEKO):
        Fix byg: AC_DEFINE was in AC_CACHE_CHECK.
        From: Akim Demaille <address@hidden>
        Message-ID: <address@hidden>

2000-11-05  Paul Eggert  <address@hidden>

        * m4/largefile.m4 (AC_SYS_LARGEFILE):
        Don't worry about whether fseeko and ftello are
        properly declared.
        (AC_FUNC_FSEEKO): New macro, which worries about fseeko (and
        presumably ftello).
        Do not set _XOPEN_SOURCE; that causes too many problems in practice.


--- gawk-3.0.90/m4/largefile.m4 Tue Jun 27 19:32:18 2000
+++ gawk-3.0.95-fix1/m4/largefile.m4    Wed Jan 10 06:00:53 2001
@@ -1,4 +1,4 @@
-#serial 12
+#serial 19
 
 dnl By default, many hosts won't let programs access large files;
 dnl one must use special compiler options to get large-file access to work.
@@ -11,7 +11,14 @@
 dnl AC_SYS_LARGEFILE_TEST_INCLUDES
 AC_DEFUN(AC_SYS_LARGEFILE_TEST_INCLUDES,
   [[#include <sys/types.h>
-    int a[(off_t) 9223372036854775807 == 9223372036854775807 ? 1 : -1];
+    /* Check that off_t can represent 2**63 - 1 correctly.
+       We can't simply "#define LARGE_OFF_T 9223372036854775807",
+       since some C++ compilers masquerading as C compilers
+       incorrectly reject 9223372036854775807.  */
+#   define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+    int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                       && LARGE_OFF_T % 2147483647 == 1)
+                      ? 1 : -1];
   ]])
 
 dnl Internal subroutine of AC_SYS_LARGEFILE.
@@ -19,14 +26,11 @@
 AC_DEFUN(AC_SYS_LARGEFILE_MACRO_VALUE,
   [AC_CACHE_CHECK([for $1 value needed for large files], $3,
      [$3=no
-      AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES
-$5
-        ,
+      AC_TRY_COMPILE([$5],
        [$6], 
        ,
        [AC_TRY_COMPILE([#define $1 $2]
-AC_SYS_LARGEFILE_TEST_INCLUDES
-$5
+[$5]
           ,
           [$6],
           [$3=$2])])])
@@ -35,7 +39,8 @@
    fi])
 
 AC_DEFUN(AC_SYS_LARGEFILE,
-  [AC_ARG_ENABLE(largefile,
+  [AC_REQUIRE([AC_PROG_CC])
+   AC_ARG_ENABLE(largefile,
      [  --disable-largefile     omit support for large files])
    if test "$enable_largefile" != no; then
 
@@ -58,17 +63,30 @@
 
      AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64,
        ac_cv_sys_file_offset_bits,
-       [Number of bits in a file offset, on hosts where this is settable.])
-     AC_SYS_LARGEFILE_MACRO_VALUE(_LARGEFILE_SOURCE, 1,
-       ac_cv_sys_largefile_source,
-       [Define to make ftello visible on some hosts (e.g. HP-UX 10.20).],
-       [#include <stdio.h>], [return !ftello;])
+       [Number of bits in a file offset, on hosts where this is settable.],
+       AC_SYS_LARGEFILE_TEST_INCLUDES)
      AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1,
        ac_cv_sys_large_files,
-       [Define for large files, on AIX-style hosts.])
-     AC_SYS_LARGEFILE_MACRO_VALUE(_XOPEN_SOURCE, 500,
-       ac_cv_sys_xopen_source,
-       [Define to make ftello visible on some hosts (e.g. glibc 2.1.3).],
-       [#include <stdio.h>], [return !ftello;])
+       [Define for large files, on AIX-style hosts.],
+       AC_SYS_LARGEFILE_TEST_INCLUDES)
    fi
   ])
+
+AC_DEFUN(AC_FUNC_FSEEKO,
+  [AC_SYS_LARGEFILE_MACRO_VALUE(_LARGEFILE_SOURCE, 1,
+     ac_cv_sys_largefile_source,
+     [Define to make fseeko visible on some hosts (e.g. glibc 2.2).],
+     [#include <stdio.h>], [return !fseeko;])
+   # We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
+   # in glibc 2.1.3, but that breaks too many other things.
+   # If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
+
+   AC_CACHE_CHECK([for fseeko], ac_cv_func_fseeko,
+     [ac_cv_func_fseeko=no
+      AC_TRY_LINK([#include <stdio.h>],
+        [return fseeko && fseeko (stdin, 0, 0);],
+       [ac_cv_func_fseeko=yes])])
+   if test $ac_cv_func_fseeko != no; then
+     AC_DEFINE(HAVE_FSEEKO, 1,
+       [Define if fseeko (and presumably ftello) exists and is declared.])
+   fi])



reply via email to

[Prev in Thread] Current Thread [Next in Thread]