diff options
Diffstat (limited to 'src/cmd/venti/findscore.c')
-rw-r--r-- | src/cmd/venti/findscore.c | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/src/cmd/venti/findscore.c b/src/cmd/venti/findscore.c deleted file mode 100644 index 7718adce..00000000 --- a/src/cmd/venti/findscore.c +++ /dev/null @@ -1,122 +0,0 @@ -#include "stdinc.h" -#include "dat.h" -#include "fns.h" - -enum -{ - ClumpChunks = 32*1024 -}; - -static int verbose; - -int -clumpinfoeq(ClumpInfo *c, ClumpInfo *d) -{ - return c->type == d->type - && c->size == d->size - && c->uncsize == d->uncsize - && scorecmp(c->score, d->score)==0; -} - -int -findscore(Arena *arena, uchar *score) -{ - IEntry ie; - ClumpInfo *ci, *cis; - u64int a; - u32int clump; - int i, n, found; - -//ZZZ remove fprint? - if(arena->clumps) - fprint(2, "reading directory for arena=%s with %d entries\n", arena->name, arena->clumps); - - cis = MKN(ClumpInfo, ClumpChunks); - found = 0; - a = 0; - memset(&ie, 0, sizeof(IEntry)); - for(clump = 0; clump < arena->clumps; clump += n){ - n = ClumpChunks; - if(n > arena->clumps - clump) - n = arena->clumps - clump; - if(readclumpinfos(arena, clump, cis, n) != n){ - seterr(EOk, "arena directory read failed: %r"); - break; - } - - for(i = 0; i < n; i++){ - ci = &cis[i]; - if(scorecmp(score, ci->score)==0){ - fprint(2, "found at clump=%d with type=%d size=%d csize=%d position=%lld\n", - clump + i, ci->type, ci->uncsize, ci->size, a); - found++; - } - a += ci->size + ClumpSize; - } - } - free(cis); - return found; -} - -void -usage(void) -{ - fprint(2, "usage: findscore [-v] arenafile score\n"); - threadexitsall(0); -} - -void -threadmain(int argc, char *argv[]) -{ - ArenaPart *ap; - Part *part; - char *file; - u8int score[VtScoreSize]; - int i, found; - - fmtinstall('V', vtscorefmt); - statsinit(); - - ARGBEGIN{ - case 'v': - verbose++; - break; - default: - usage(); - break; - }ARGEND - - readonly = 1; - - if(argc != 2) - usage(); - - file = argv[0]; - if(strscore(argv[1], score) < 0) - sysfatal("bad score %s\n", argv[1]); - - part = initpart(file, 0); - if(part == nil) - sysfatal("can't open partition %s: %r", file); - - ap = initarenapart(part); - if(ap == nil) - sysfatal("can't initialize arena partition in %s: %r", file); - - if(verbose > 1){ - printarenapart(2, ap); - fprint(2, "\n"); - } - - initdcache(8 * MaxDiskBlock); - - found = 0; - for(i = 0; i < ap->narenas; i++) - found += findscore(ap->arenas[i], score); - - print("found %d occurances of %V\n", found, score); - - if(verbose > 1) - printstats(); - threadexitsall(0); -} |