Make segment compression/encryption filter to command-line-selectable.
[cumulus.git] / scandir.cc
index aa7ce53..3634b59 100644 (file)
@@ -68,7 +68,7 @@ void metadata_flush()
 
     /* Write current metadata information to a new object. */
     LbsObject *meta = new LbsObject;
-    meta->set_group("root");
+    meta->set_group("metadata");
     meta->set_data(m.data(), m.size());
     meta->write(tss);
     meta->checksum();
@@ -194,7 +194,7 @@ int64_t dumpfile(int fd, dictionary &file_info)
         }
 
         LbsObject *i = new LbsObject;
-        i->set_group("indirect");
+        i->set_group("metadata");
         i->set_data(blocklist.data(), blocklist.size());
         i->write(tss);
         file_info["data"] = "@" + i->get_name();
@@ -403,8 +403,10 @@ int main(int argc, char *argv[])
 
     while (1) {
         static struct option long_options[] = {
-            {"localdb", 1, 0, 0},   // 0
-            {"exclude", 1, 0, 0},   // 1
+            {"localdb", 1, 0, 0},           // 0
+            {"exclude", 1, 0, 0},           // 1
+            {"filter", 1, 0, 0},            // 2
+            {"filter-extension", 1, 0, 0},  // 3
             {NULL, 0, 0, 0},
         };
 
@@ -422,6 +424,12 @@ int main(int argc, char *argv[])
             case 1:     // --exclude
                 excludes.push_back(optarg);
                 break;
+            case 2:     // --filter
+                filter_program = optarg;
+                break;
+            case 3:     // --filter-extension
+                filter_extension = optarg;
+                break;
             default:
                 fprintf(stderr, "Unhandled long option!\n");
                 return 1;
@@ -479,15 +487,16 @@ int main(int argc, char *argv[])
     const string md = metadata_root.str();
 
     LbsObject *root = new LbsObject;
-    root->set_group("root");
+    root->set_group("metadata");
     root->set_data(md.data(), md.size());
     root->write(tss);
     root->checksum();
 
     segment_list.insert(root->get_ref().get_segment());
-    descriptor << "Root: " << root->get_ref().to_string() << "\n";
+    descriptor << "Format: LBS Snapshot v0.1\n";
     strftime(desc_buf, sizeof(desc_buf), "%Y-%m-%d %H:%M:%S %z", &time_buf);
     descriptor << "Date: " << desc_buf << "\n";
+    descriptor << "Root: " << root->get_ref().to_string() << "\n";
 
     delete root;