bug#9140: fsusage: add large volume support on glibc/Hurd, HP-UX 11, Solaris, MacOS X

2011-07-23 Thread Bruno Haible
 1) To require AC_SYS_LARGEFILE, and a module dependency to 'largefile'.
This will make statvfs() use a 64-bit f_blocks on
glibc/Hurd, MacOS X = 10.4, HP-UX, Solaris.

Here's the first proposed patch. I verified that

- on HP-UX 11.00 and 11.31, Solaris 7 and 10, it causes statvfs() to be used
  again:
checking for statvfs function (SVR4)... no
  becomes
checking for statvfs function (SVR4)... yes
  Since the check_f_blocks_size is in place, it proves that this causes
  f_blocks to be 64-bit.

- on MacOS X 10.5, it causes fsusage.o to call statfs$INODE64 instead of
  statfs, thus also supporting large volumes.


2011-07-23  Bruno Haible  br...@clisp.org

fsusage: Enable large volume support on glibc/Hurd, HP-UX, Solaris, 
MacOS X.
* m4/fsusage.m4 (gl_FILE_SYSTEM_USAGE): Require AC_SYS_LARGEFILE.
* modules/fsusage (Depends-on): Add largefile.

--- m4/fsusage.m4.orig  Sat Jul 23 16:25:19 2011
+++ m4/fsusage.m4   Sat Jul 23 16:24:57 2011
@@ -1,4 +1,4 @@
-# serial 28
+# serial 29
 # Obtaining file system usage information.
 
 # Copyright (C) 1997-1998, 2000-2001, 2003-2011 Free Software Foundation, Inc.
@@ -29,6 +29,12 @@
 
 AC_DEFUN([gl_FILE_SYSTEM_USAGE],
 [
+dnl Enable large-file support. This has the effect of changing the size
+dnl of field f_blocks in 'struct statvfs' from 32 bit to 64 bit on
+dnl glibc/Hurd, HP-UX 11, Solaris (32-bit mode). It also changes the size
+dnl of field f_blocks in 'struct statfs' from 32 bit to 64 bit on
+dnl MacOS X = 10.5 (32-bit mode).
+AC_REQUIRE([AC_SYS_LARGEFILE])
 
 AC_MSG_NOTICE([checking how to get file system space usage])
 ac_fsusage_space=no
--- modules/fsusage.origSat Jul 23 16:25:19 2011
+++ modules/fsusage Sat Jul 23 16:06:17 2011
@@ -7,6 +7,7 @@
 m4/fsusage.m4
 
 Depends-on:
+largefile
 stdbool
 stdint
 full-read   [test $gl_cv_fs_space = yes]
-- 
In memoriam Adam Czerniaków http://en.wikipedia.org/wiki/Adam_Czerniaków





bug#9140: fsusage: add large volume support on glibc/Hurd, HP-UX 11, Solaris, MacOS X

2011-07-23 Thread Jim Meyering
Bruno Haible wrote:
 1) To require AC_SYS_LARGEFILE, and a module dependency to 'largefile'.
This will make statvfs() use a 64-bit f_blocks on
glibc/Hurd, MacOS X = 10.4, HP-UX, Solaris.

 Here's the first proposed patch. I verified that

 - on HP-UX 11.00 and 11.31, Solaris 7 and 10, it causes statvfs() to be used
   again:
 checking for statvfs function (SVR4)... no
   becomes
 checking for statvfs function (SVR4)... yes
   Since the check_f_blocks_size is in place, it proves that this causes
   f_blocks to be 64-bit.

 - on MacOS X 10.5, it causes fsusage.o to call statfs$INODE64 instead of
   statfs, thus also supporting large volumes.


 2011-07-23  Bruno Haible  br...@clisp.org

   fsusage: Enable large volume support on glibc/Hurd, HP-UX, Solaris, 
 MacOS X.
   * m4/fsusage.m4 (gl_FILE_SYSTEM_USAGE): Require AC_SYS_LARGEFILE.
   * modules/fsusage (Depends-on): Add largefile.

 --- m4/fsusage.m4.origSat Jul 23 16:25:19 2011
 +++ m4/fsusage.m4 Sat Jul 23 16:24:57 2011
 @@ -1,4 +1,4 @@
 -# serial 28
 +# serial 29
  # Obtaining file system usage information.

  # Copyright (C) 1997-1998, 2000-2001, 2003-2011 Free Software Foundation, 
 Inc.
 @@ -29,6 +29,12 @@

  AC_DEFUN([gl_FILE_SYSTEM_USAGE],
  [
 +dnl Enable large-file support. This has the effect of changing the size
 +dnl of field f_blocks in 'struct statvfs' from 32 bit to 64 bit on
 +dnl glibc/Hurd, HP-UX 11, Solaris (32-bit mode). It also changes the size
 +dnl of field f_blocks in 'struct statfs' from 32 bit to 64 bit on
 +dnl MacOS X = 10.5 (32-bit mode).
 +AC_REQUIRE([AC_SYS_LARGEFILE])

  AC_MSG_NOTICE([checking how to get file system space usage])
  ac_fsusage_space=no
 --- modules/fsusage.orig  Sat Jul 23 16:25:19 2011
 +++ modules/fsusage   Sat Jul 23 16:06:17 2011
 @@ -7,6 +7,7 @@
  m4/fsusage.m4

  Depends-on:
 +largefile
  stdbool
  stdint
  full-read   [test $gl_cv_fs_space = yes]

Well-documented, tested, and safe-looking.
Thanks!