From 7c185762352d51e025e086a787bb2671a350d6ad Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 22 Jul 2011 15:06:36 -0700 Subject: [PATCH] largefile: new module, replacing large-inode MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Pádraig Brady suggested this in . * MODULES.html.sh: Add largefile, remove large-inode. * modules/largefile, m4/largefile.m4: New files. * modules/large-inode, m4/large-inode.m4: Remove. --- ChangeLog | 6 +++ MODULES.html.sh | 2 +- m4/large-inode.m4 | 24 --------- m4/largefile.m4 | 104 +++++++++++++++++++++++++++++++++++++ modules/{large-inode => largefile} | 8 +-- 5 files changed, 115 insertions(+), 29 deletions(-) delete mode 100644 m4/large-inode.m4 create mode 100644 m4/largefile.m4 rename modules/{large-inode => largefile} (53%) diff --git a/ChangeLog b/ChangeLog index 4a6644628..3e941fe57 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2011-07-22 Paul Eggert + largefile: new module, replacing large-inode + Pádraig Brady suggested this in . + * 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 80befa9bc..6d845874d 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 b41a391b4..000000000 --- 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 . - 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 000000000..6986244b3 --- /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 + /* 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 similarity index 53% rename from modules/large-inode rename to modules/largefile index de067ace6..d4a2e4b11 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: -- 2.11.0