summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen2000-09-21 02:23:30 +0000
committerEric Andersen2000-09-21 02:23:30 +0000
commit8a2e56c5dfc41f6946e36234eef4df559286db05 (patch)
tree23a5f54bcbf8aea8f08ae85f8397b7add91bf79f
parent350b3f9236b29514f3755af2b4b2957475abf829 (diff)
downloadbusybox-8a2e56c5dfc41f6946e36234eef4df559286db05.zip
busybox-8a2e56c5dfc41f6946e36234eef4df559286db05.tar.gz
Large file >2Gib support.
-rw-r--r--Makefile14
-rw-r--r--coreutils/ls.c8
-rw-r--r--ls.c8
-rw-r--r--more.c4
-rw-r--r--util-linux/more.c4
5 files changed, 38 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 278887f..6a9c694 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 03fed54..b818003 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 03fed54..b818003 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 12168b5..45b7c12 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 12168b5..45b7c12 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)),