fmtisect.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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 'd':
  26. chattyzero++;
  27. break;
  28. case 'b':
  29. blockSize = unittoull(ARGF());
  30. if(blockSize == ~0)
  31. usage();
  32. if(blockSize > MaxDiskBlock){
  33. fprint(2, "block size too large, max %d\n", MaxDiskBlock);
  34. exits("usage");
  35. }
  36. break;
  37. case 'Z':
  38. zero = 0;
  39. break;
  40. default:
  41. usage();
  42. break;
  43. }ARGEND
  44. if(argc != 2)
  45. usage();
  46. name = argv[0];
  47. file = argv[1];
  48. if(!nameOk(name))
  49. fatal("illegal name %s", name);
  50. part = initPart(file, 0);
  51. if(part == nil)
  52. fatal("can't open partition %s: %r", file);
  53. if(zero)
  54. zeroPart(part, blockSize);
  55. fprint(2, "configuring index section %s with space for index config bytes=%d\n", name, setSize);
  56. is = newISect(part, name, blockSize, setSize);
  57. if(is == nil)
  58. fatal("can't initialize new index: %R");
  59. if(!wbISect(is))
  60. fprint(2, "can't write back index section header for %s: %R\n", file);
  61. exits(0);
  62. return 0; /* shut up stupid compiler */
  63. }