cagney@cs.adelaide.edu.au (04/16/91)
Below is a patch to minix du. It seems to be getting the size of files
out by one (unless that's what it should do :-). The problem is best seen if
you use du on a file with exactly n*BLOCK_SIZE bytes in it.
eg for a file with 0 bytes
old equation gave
(0 + BLOCK_SIZE) / BLOCK_SIZE = 1 block
new equation gives
(0 + BLOCK_SIZE - 1) / BLOCK_SIZE = 0 blocks
Noid
cagney@berlioz% diff -c du.c du.c.orig
*** du.c Tue Apr 16 14:32:27 1991
--- du.c.orig Tue Apr 16 14:32:04 1991
***************
*** 193,199 ****
switch (s.st_mode & S_IFMT) {
case S_IFREG:
case S_IFDIR:
! total += (s.st_size + BLOCK_SIZE - 1) / BLOCK_SIZE;
break;
}
if (all && (s.st_mode & S_IFMT) != S_IFDIR)
--- 193,199 ----
switch (s.st_mode & S_IFMT) {
case S_IFREG:
case S_IFDIR:
! total += (s.st_size + BLOCK_SIZE) / BLOCK_SIZE;
break;
}
if (all && (s.st_mode & S_IFMT) != S_IFDIR)PATZEL@rzmain.rz.uni-ulm.de (Patzel Martin) (04/17/91)
In <2867@sirius.ucs.adelaide.edu.au> cagney@cs.adelaide.edu.au writes: > Below is a patch to minix du. It seems to be getting the size of files > out by one (unless that's what it should do :-). The problem is best seen if du has more problems with counting blocks. It seems that du doesn't count single and double indirect blocks, too. Martin