1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #include "stdinc.h"
- #include "dat.h"
- #include "fns.h"
- void
- usage(void)
- {
- fprint(2, "usage: fmtisect [-Z] [-b blocksize] name file\n");
- threadexitsall(0);
- }
- void
- threadmain(int argc, char *argv[])
- {
- int vers;
- ISect *is;
- Part *part;
- char *file, *name;
- int blocksize, setsize, zero;
- ventifmtinstall();
- statsinit();
- blocksize = 8 * 1024;
- setsize = 512 * 1024;
- zero = -1;
- vers = ISectVersion2;
- ARGBEGIN{
- case 'b':
- blocksize = unittoull(ARGF());
- if(blocksize == ~0)
- usage();
- if(blocksize > MaxDiskBlock){
- fprint(2, "block size too large, max %d\n", MaxDiskBlock);
- threadexitsall("usage");
- }
- break;
- case '1':
- vers = ISectVersion1;
- break;
- case 'Z':
- zero = 0;
- break;
- default:
- usage();
- break;
- }ARGEND
- if(zero == -1){
- if(vers == ISectVersion1)
- zero = 1;
- else
- zero = 0;
- }
- if(argc != 2)
- usage();
- name = argv[0];
- file = argv[1];
- if(nameok(name) < 0)
- sysfatal("illegal name %s", name);
- part = initpart(file, ORDWR|ODIRECT);
- if(part == nil)
- sysfatal("can't open partition %s: %r", file);
- if(zero)
- zeropart(part, blocksize);
- is = newisect(part, vers, name, blocksize, setsize);
- if(is == nil)
- sysfatal("can't initialize new index: %r");
- fprint(2, "fmtisect %s: %,d buckets of %,d entries, %,d bytes for index map\n",
- file, is->blocks, is->buckmax, setsize);
- if(wbisect(is) < 0)
- fprint(2, "can't write back index section header for %s: %r\n", file);
- threadexitsall(0);
- }
|