diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2011-07-22 15:06:36 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2011-07-22 15:07:32 -0700 |
commit | 7c185762352d51e025e086a787bb2671a350d6ad (patch) | |
tree | d07bd325e954fdadabda87164c87e90a158221b2 | |
parent | 64f62ee592856b418fa3e23c584796beac537af4 (diff) | |
download | gnulib-7c185762352d51e025e086a787bb2671a350d6ad.tar.gz |
largefile: new module, replacing large-inode
Pádraig Brady suggested this in <http://debbugs.gnu.org/9140#20>.
* MODULES.html.sh: Add largefile, remove large-inode.
* modules/largefile, m4/largefile.m4: New files.
* modules/large-inode, m4/large-inode.m4: Remove.
-rw-r--r-- | ChangeLog | 6 | ||||
-rwxr-xr-x | MODULES.html.sh | 2 | ||||
-rw-r--r-- | m4/large-inode.m4 | 24 | ||||
-rw-r--r-- | m4/largefile.m4 | 104 | ||||
-rw-r--r-- | modules/largefile (renamed from modules/large-inode) | 8 |
5 files changed, 115 insertions, 29 deletions
@@ -1,5 +1,11 @@ 2011-07-22 Paul Eggert <eggert@cs.ucla.edu> + largefile: new module, replacing large-inode + Pádraig Brady suggested this in <http://debbugs.gnu.org/9140#20>. + * MODULES.html.sh: Add largefile, remove large-inode. + * modules/largefile, m4/largefile.m4: New files. + * modules/large-inode, m4/large-inode.m4: Remove. + fsusage: port to MacOS X 10.7 with 4 TiB file systems * m4/fsusage.m4 (gl_FILE_SYSTEM_USAGE): Reject statvfs implementations that use only 32 bits to count blocks. diff --git a/MODULES.html.sh b/MODULES.html.sh index 80befa9bc3..6d845874d7 100755 --- a/MODULES.html.sh +++ b/MODULES.html.sh @@ -2608,6 +2608,7 @@ func_all_modules () func_module filenamecat-lgpl func_module fts func_module isdir + func_module largefile func_module lchmod func_module lchown func_module mkancesdirs @@ -2656,7 +2657,6 @@ func_all_modules () func_module file-set func_module hash-triple func_module i-ring - func_module large-inode func_module same-inode func_end_table diff --git a/m4/large-inode.m4 b/m4/large-inode.m4 deleted file mode 100644 index b41a391b4b..0000000000 --- a/m4/large-inode.m4 +++ /dev/null @@ -1,24 +0,0 @@ -# Enable large inode numbers on systems normally without them. -*- Autoconf -*- - -# Copyright (C) 2011 Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# written by Paul Eggert - -AC_DEFUN([gl_SYS_LARGE_INODE], -[ - dnl Many systems enable large inodes if you enable large offsets. - AC_REQUIRE([AC_SYS_LARGEFILE]) - - dnl Some Mac OS X variants won't access large inode numbers by default. - dnl Defining _DARWIN_USE_64_BIT_INODE fixes this. See - dnl <http://developer.apple.com/library/mac/releasenotes/Darwin/SymbolVariantsRelNotes>. - dnl - dnl The simplest thing is to define this symbol everywhere. - dnl That helps on the affected systems, and doesn't hurt anywhere. - AC_DEFINE([_DARWIN_USE_64_BIT_INODE], [1], - [Define if you want to use large inode numbers - when running on Mac OS X 10.5 or later.]) -]) diff --git a/m4/largefile.m4 b/m4/largefile.m4 new file mode 100644 index 0000000000..6986244b39 --- /dev/null +++ b/m4/largefile.m4 @@ -0,0 +1,104 @@ +# Enable large files on systems where this is not the default. + +# Copyright 1992-1996, 1998-2011 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# The following implementation works around a problem in autoconf <= 2.68; +# AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5. +m4_version_prereq([2.69], [] ,[ + +# _AC_SYS_LARGEFILE_TEST_INCLUDES +# ------------------------------- +m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES], +[@%:@include <sys/types.h> + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 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 +]) + + +# _AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, +# CACHE-VAR, +# DESCRIPTION, +# PROLOGUE, [FUNCTION-BODY]) +# -------------------------------------------------------- +m4_define([_AC_SYS_LARGEFILE_MACRO_VALUE], +[AC_CACHE_CHECK([for $1 value needed for large files], [$3], +[while :; do + m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])( + [AC_LANG_PROGRAM([$5], [$6])], + [$3=no; break]) + m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])( + [AC_LANG_PROGRAM([@%:@define $1 $2 +$5], [$6])], + [$3=$2; break]) + $3=unknown + break +done]) +case $$3 in #( + no | unknown) ;; + *) AC_DEFINE_UNQUOTED([$1], [$$3], [$4]);; +esac +rm -rf conftest*[]dnl +])# _AC_SYS_LARGEFILE_MACRO_VALUE + + +# AC_SYS_LARGEFILE +# ---------------- +# By default, many hosts won't let programs access large files; +# one must use special compiler options to get large-file access to work. +# For more details about this brain damage please see: +# http://www.unix-systems.org/version2/whatsnew/lfs20mar.html +AC_DEFUN([AC_SYS_LARGEFILE], +[AC_ARG_ENABLE(largefile, + [ --disable-largefile omit support for large files]) +if test "$enable_largefile" != no; then + + AC_CACHE_CHECK([for special C compiler options needed for large files], + ac_cv_sys_largefile_CC, + [ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + AC_LANG_CONFTEST([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_INCLUDES])]) + AC_COMPILE_IFELSE([], [break]) + CC="$CC -n32" + AC_COMPILE_IFELSE([], [ac_cv_sys_largefile_CC=' -n32'; break]) + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi]) + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + _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_TEST_INCLUDES]) + if test $ac_cv_sys_file_offset_bits = unknown; then + _AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1, + ac_cv_sys_large_files, + [Define for large files, on AIX-style hosts.], + [_AC_SYS_LARGEFILE_TEST_INCLUDES]) + fi + + AH_VERBATIM([_DARWIN_USE_64_BIT_INODE], +[/* Enable large inode numbers on Mac OS X. */ +#ifndef _DARWIN_USE_64_BIT_INODE +# define _DARWIN_USE_64_BIT_INODE 1 +#endif]) +fi +])# AC_SYS_LARGEFILE + +])# m4_version_prereq 2.69 diff --git a/modules/large-inode b/modules/largefile index de067ace69..d4a2e4b113 100644 --- a/modules/large-inode +++ b/modules/largefile @@ -1,13 +1,13 @@ Description: -Use large inode numbers. +Use large files. Files: -m4/large-inode.m4 +m4/largefile.m4 Depends-on: -configure.ac-early: -AC_REQUIRE([gl_SYS_LARGE_INODE]) +configure.ac: +AC_REQUIRE([AC_SYS_LARGEFILE]) configure.ac: |