]> mj.ucw.cz Git - libucw.git/blobdiff - lib/buckettool.c
When writing, the data needn't start at the beginning of the buffer.
[libucw.git] / lib / buckettool.c
index dbfe67043b91ef5f6dde9be4fb567a741ab1667d..ae55b3ca4d4f92c784c25bae194ac3c0fae308fd 100644 (file)
@@ -38,6 +38,7 @@ CF_USAGE
 -c\t\tconcatenate and dump all buckets\n\
 -f\t\taudit bucket file structure\n\
 -F\t\taudit and fix bucket file structure\n\
+-q\t\tquick check of bucket file consistency\n\
 -s\t\tshake down bucket file (without updating other structures!!!)\n\
 -v\t\tbe verbose\n\
 ");
@@ -107,7 +108,7 @@ insert(void)
   struct obuck_header h;
   byte *e;
 
-  in = bfdopen(0, 4096);
+  in = bfdopen_shared(0, 4096);
   obuck_init(1);
   do
     {
@@ -122,7 +123,7 @@ insert(void)
     }
   while (e);
   obuck_cleanup();
-  /* bclose(in) not done, we don't want fd 0 closed */
+  bclose(in);
 }
 
 static void
@@ -265,6 +266,13 @@ shake(void)
   obuck_cleanup();
 }
 
+static void
+quickcheck(void)
+{
+  obuck_init(1);
+  obuck_cleanup();
+}
+
 int
 main(int argc, char **argv)
 {
@@ -273,7 +281,7 @@ main(int argc, char **argv)
 
   log_init(NULL);
   op = 0;
-  while ((i = cf_getopt(argc, argv, CF_SHORT_OPTS "lLd:x:icfFsv", CF_NO_LONG_OPTS, NULL)) != -1)
+  while ((i = cf_getopt(argc, argv, CF_SHORT_OPTS "lLd:x:icfFqsv", CF_NO_LONG_OPTS, NULL)) != -1)
     if (i == '?' || op)
       help();
     else if (i == 'v')
@@ -312,6 +320,9 @@ main(int argc, char **argv)
     case 'F':
       fsck(1);
       break;
+    case 'q':
+      quickcheck();
+      break;
     case 's':
       shake();
       break;