diff options
author | pjd <pjd@FreeBSD.org> | 2005-01-07 00:12:24 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2005-01-07 00:12:24 +0000 |
commit | 4e634c9b50237e564c3ff2745d34e5626a1a3e1e (patch) | |
tree | 2f46532d4c5069b163906b9b00e0246322ee9e2d /usr.bin/du | |
parent | 0c5ce74735bbd3686abf179eb6987d8ac99f2ebf (diff) | |
download | FreeBSD-src-4e634c9b50237e564c3ff2745d34e5626a1a3e1e.zip FreeBSD-src-4e634c9b50237e564c3ff2745d34e5626a1a3e1e.tar.gz |
Use 64bit 'fts_bignum' field instead of 32bit (on 32bit archs) field
'fts_number' to remember number of blocks.
This makes du(1) 64bit-clean.
This work is part of the BigDisk project:
http://www.FreeBSD.org/projects/bigdisk/
Discussed on: arch@
MFC after: 5 days
Diffstat (limited to 'usr.bin/du')
-rw-r--r-- | usr.bin/du/du.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/usr.bin/du/du.c b/usr.bin/du/du.c index ce27432..ed85eb6 100644 --- a/usr.bin/du/du.c +++ b/usr.bin/du/du.c @@ -58,6 +58,7 @@ __FBSDID("$FreeBSD$"); #include <fts.h> #include <libutil.h> #include <locale.h> +#include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -82,7 +83,8 @@ main(int argc, char *argv[]) { FTS *fts; FTSENT *p; - long blocksize, savednumber = 0; + off_t savednumber = 0; + long blocksize; int ftsoptions; int listall; int depth; @@ -224,16 +226,16 @@ main(int argc, char *argv[]) if (ignorep(p)) break; - p->fts_parent->fts_number += - p->fts_number += p->fts_statp->st_blocks; + p->fts_parent->fts_bignum += + p->fts_bignum += p->fts_statp->st_blocks; if (p->fts_level <= depth) { if (hflag) { - (void) prthumanval(howmany(p->fts_number, blocksize)); + (void) prthumanval(howmany(p->fts_bignum, blocksize)); (void) printf("\t%s\n", p->fts_path); } else { - (void) printf("%ld\t%s\n", - howmany(p->fts_number, blocksize), + (void) printf("%jd\t%s\n", + (intmax_t)howmany(p->fts_bignum, blocksize), p->fts_path); } } @@ -259,15 +261,15 @@ main(int argc, char *argv[]) blocksize)); (void) printf("\t%s\n", p->fts_path); } else { - (void) printf("%lld\t%s\n", - (long long)howmany(p->fts_statp->st_blocks, blocksize), + (void) printf("%jd\t%s\n", + (intmax_t)howmany(p->fts_statp->st_blocks, blocksize), p->fts_path); } } - p->fts_parent->fts_number += p->fts_statp->st_blocks; + p->fts_parent->fts_bignum += p->fts_statp->st_blocks; } - savednumber = p->fts_parent->fts_number; + savednumber = p->fts_parent->fts_bignum; } if (errno) @@ -278,7 +280,7 @@ main(int argc, char *argv[]) (void) prthumanval(howmany(savednumber, blocksize)); (void) printf("\ttotal\n"); } else { - (void) printf("%ld\ttotal\n", howmany(savednumber, blocksize)); + (void) printf("%jd\ttotal\n", (intmax_t)howmany(savednumber, blocksize)); } } |