fmtisect.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #include "stdinc.h"
  2. #include "dat.h"
  3. #include "fns.h"
  4. void
  5. usage(void)
  6. {
  7. fprint(2, "usage: fmtisect [-Z] [-b blocksize] name file\n");
  8. exits(0);
  9. }
  10. int
  11. main(int argc, char *argv[])
  12. {
  13. ISect *is;
  14. Part *part;
  15. char *file, *name;
  16. int blockSize, setSize, zero;
  17. fmtinstall('V', vtScoreFmt);
  18. fmtinstall('R', vtErrFmt);
  19. vtAttach();
  20. statsInit();
  21. blockSize = 8 * 1024;
  22. setSize = 64 * 1024;
  23. zero = 1;
  24. ARGBEGIN{
  25. case 'b':
  26. blockSize = unittoull(ARGF());
  27. if(blockSize == ~0)
  28. usage();
  29. if(blockSize > MaxDiskBlock){
  30. fprint(2, "block size too large, max %d\n", MaxDiskBlock);
  31. exits("usage");
  32. }
  33. break;
  34. case 'Z':
  35. zero = 0;
  36. break;
  37. default:
  38. usage();
  39. break;
  40. }ARGEND
  41. if(argc != 2)
  42. usage();
  43. name = argv[0];
  44. file = argv[1];
  45. if(!nameOk(name))
  46. fatal("illegal name %s", name);
  47. part = initPart(file, 0);
  48. if(part == nil)
  49. fatal("can't open partition %s: %r", file);
  50. if(zero)
  51. zeroPart(part, blockSize);
  52. fprint(2, "configuring index section %s with space for index config bytes=%d\n", name, setSize);
  53. is = newISect(part, name, blockSize, setSize);
  54. if(is == nil)
  55. fatal("can't initialize new index: %R");
  56. if(!wbISect(is))
  57. fprint(2, "can't write back index section header for %s: %R\n", file);
  58. exits(0);
  59. return 0; /* shut up stupid compiler */
  60. }