+ while (1) {
+ static struct option long_options[] = {
+ {"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},
+ };
+
+ int long_index;
+ int c = getopt_long(argc, argv, "", long_options, &long_index);
+
+ if (c == -1)
+ break;
+
+ if (c == 0) {
+ switch (long_index) {
+ case 0: // --localdb
+ localdb_dir = optarg;
+ break;
+ 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;
+ }
+ } else {
+ usage(argv[0]);
+ return 1;
+ }
+ }
+
+ if (argc < optind + 2) {
+ usage(argv[0]);
+ return 1;
+ }
+
+ backup_source = argv[optind];
+ backup_dest = argv[argc - 1];
+
+ if (localdb_dir == "") {
+ localdb_dir = backup_dest;
+ }
+
+ printf("Source: %s\nDest: %s\nDatabase: %s\n\n",
+ backup_source.c_str(), backup_dest.c_str(), localdb_dir.c_str());