From 8a2e56c5dfc41f6946e36234eef4df559286db05 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Thu, 21 Sep 2000 02:23:30 +0000 Subject: Large file >2Gib support. --- Makefile | 14 ++++++++++++++ coreutils/ls.c | 8 ++++++++ ls.c | 8 ++++++++ more.c | 4 ++++ util-linux/more.c | 4 ++++ 5 files changed, 38 insertions(+) diff --git a/Makefile b/Makefile index 278887f36..6a9c694fa 100644 --- a/Makefile +++ b/Makefile @@ -40,6 +40,16 @@ DODEBUG = false # Do not enable this for production builds... DODMALLOC = false +# If you want large file summit support, turn this on. +# This has no effect if you don't have a kernel with lfs +# support, and a system with libc-2.1.3 or later. +# Some of the programs that can benefit from lfs support +# are dd, gzip, mount, tar, and mkfs_minix. +# LFS allows you to use the above programs for files +# larger than 2GB! +DOLFS = false + + # If you are running a cross compiler, you may want to set this # to something more interesting... CROSS = #powerpc-linux- @@ -63,6 +73,10 @@ OPTIMIZATION = $(shell if $(CC) -Os -S -o /dev/null -xc /dev/null >/dev/null 2>& WARNINGS = -Wall +ifeq ($(DOLFS),true) + # For large file summit support + CFLAGS+=-D_FILE_OFFSET_BITS=64 +endif ifeq ($(DODMALLOC),true) # For testing mem leaks with dmalloc CFLAGS+=-DDMALLOC diff --git a/coreutils/ls.c b/coreutils/ls.c index 03fed5478..b818003a8 100644 --- a/coreutils/ls.c +++ b/coreutils/ls.c @@ -532,7 +532,11 @@ int list_single(struct dnode *dn) column += 8; break; case LIST_BLOCKS: +#if _FILE_OFFSET_BITS == 64 + fprintf(stdout, "%4lld ", dn->dstat.st_blocks>>1); +#else fprintf(stdout, "%4ld ", dn->dstat.st_blocks>>1); +#endif column += 5; break; case LIST_MODEBITS: @@ -578,7 +582,11 @@ int list_single(struct dnode *dn) if (S_ISBLK(dn->dstat.st_mode) || S_ISCHR(dn->dstat.st_mode)) { fprintf(stdout, "%4d, %3d ", (int)MAJOR(dn->dstat.st_rdev), (int)MINOR(dn->dstat.st_rdev)); } else { +#if _FILE_OFFSET_BITS == 64 + fprintf(stdout, "%9lld ", dn->dstat.st_size); +#else fprintf(stdout, "%9ld ", dn->dstat.st_size); +#endif } column += 10; break; diff --git a/ls.c b/ls.c index 03fed5478..b818003a8 100644 --- a/ls.c +++ b/ls.c @@ -532,7 +532,11 @@ int list_single(struct dnode *dn) column += 8; break; case LIST_BLOCKS: +#if _FILE_OFFSET_BITS == 64 + fprintf(stdout, "%4lld ", dn->dstat.st_blocks>>1); +#else fprintf(stdout, "%4ld ", dn->dstat.st_blocks>>1); +#endif column += 5; break; case LIST_MODEBITS: @@ -578,7 +582,11 @@ int list_single(struct dnode *dn) if (S_ISBLK(dn->dstat.st_mode) || S_ISCHR(dn->dstat.st_mode)) { fprintf(stdout, "%4d, %3d ", (int)MAJOR(dn->dstat.st_rdev), (int)MINOR(dn->dstat.st_rdev)); } else { +#if _FILE_OFFSET_BITS == 64 + fprintf(stdout, "%9lld ", dn->dstat.st_size); +#else fprintf(stdout, "%9ld ", dn->dstat.st_size); +#endif } column += 10; break; diff --git a/more.c b/more.c index 12168b519..45b7c1274 100644 --- a/more.c +++ b/more.c @@ -123,7 +123,11 @@ extern int more_main(int argc, char **argv) lines = 0; len = fprintf(stdout, "--More-- "); if (file != stdin) { +#if _FILE_OFFSET_BITS == 64 + len += fprintf(stdout, "(%d%% of %lld bytes)", +#else len += fprintf(stdout, "(%d%% of %ld bytes)", +#endif (int) (100 * ((double) ftell(file) / (double) st.st_size)), diff --git a/util-linux/more.c b/util-linux/more.c index 12168b519..45b7c1274 100644 --- a/util-linux/more.c +++ b/util-linux/more.c @@ -123,7 +123,11 @@ extern int more_main(int argc, char **argv) lines = 0; len = fprintf(stdout, "--More-- "); if (file != stdin) { +#if _FILE_OFFSET_BITS == 64 + len += fprintf(stdout, "(%d%% of %lld bytes)", +#else len += fprintf(stdout, "(%d%% of %ld bytes)", +#endif (int) (100 * ((double) ftell(file) / (double) st.st_size)), -- cgit v1.2.3