1 004aa293 2005-07-13 devnull #include <u.h>
2 004aa293 2005-07-13 devnull #include <libc.h>
3 004aa293 2005-07-13 devnull #include <diskfs.h>
6 004aa293 2005-07-13 devnull usage(void)
8 004aa293 2005-07-13 devnull fprint(2, "usage: fscat fspartition\n");
9 004aa293 2005-07-13 devnull exits("usage");
13 004aa293 2005-07-13 devnull main(int argc, char **argv)
15 004aa293 2005-07-13 devnull extern int nfilereads;
16 004aa293 2005-07-13 devnull u8int *zero;
17 004aa293 2005-07-13 devnull u32int i;
18 004aa293 2005-07-13 devnull u32int n;
19 004aa293 2005-07-13 devnull Block *b;
20 004aa293 2005-07-13 devnull Disk *disk;
21 004aa293 2005-07-13 devnull Fsys *fsys;
23 004aa293 2005-07-13 devnull ARGBEGIN{
28 004aa293 2005-07-13 devnull if(argc != 1)
31 004aa293 2005-07-13 devnull if((disk = diskopenfile(argv[0])) == nil)
32 004aa293 2005-07-13 devnull sysfatal("diskopen: %r");
33 004aa293 2005-07-13 devnull if((disk = diskcache(disk, 16384, 16)) == nil)
34 004aa293 2005-07-13 devnull sysfatal("diskcache: %r");
35 004aa293 2005-07-13 devnull if((fsys = fsysopen(disk)) == nil)
36 83ab7d88 2007-11-27 rsc sysfatal("fsysopen: %r");
38 004aa293 2005-07-13 devnull zero = emalloc(fsys->blocksize);
39 004aa293 2005-07-13 devnull fprint(2, "%d blocks total\n", fsys->nblock);
41 004aa293 2005-07-13 devnull for(i=0; i<fsys->nblock; i++){
42 004aa293 2005-07-13 devnull if((b = fsysreadblock(fsys, i)) != nil){
43 004aa293 2005-07-13 devnull write(1, b->data, fsys->blocksize);
45 004aa293 2005-07-13 devnull blockput(b);
47 004aa293 2005-07-13 devnull write(1, zero, fsys->blocksize);
48 004aa293 2005-07-13 devnull if(b == nil && i < 2)
49 004aa293 2005-07-13 devnull sysfatal("block %d not in use", i);
51 004aa293 2005-07-13 devnull fprint(2, "%d blocks in use, %d file reads\n", n, nfilereads);
52 004aa293 2005-07-13 devnull exits(nil);
53 004aa293 2005-07-13 devnull return 0;