]> arthur.barton.de Git - netatalk.git/blobdiff - etc/cnid_dbd/cmd_dbd.c
Add a flag to load_volumes() that controls load behaviour
[netatalk.git] / etc / cnid_dbd / cmd_dbd.c
index 8a12bfad0d2efa582e154a1b2145fecfc7175b09..266b986ba00da9905c56777b4ac5dff6f50b4625 100644 (file)
@@ -92,13 +92,14 @@ static void set_signal(void)
 
 static void usage (void)
 {
-    printf("Usage: dbd [-cfFstvV] <path to netatalk volume>\n"
-           "dbd scans or reindex Netatalk CNID databases of AFP volumes.\n"
-           "dbd must be run with appropiate permissions i.e. as root.\n"
-           "By default dbd rebuilds the CNID database of the volume.\n\n"
+    printf("Usage: dbd [-cfFstvV] <path to netatalk volume>\n\n"
+           "dbd scans all file and directories of AFP volumes, updating the\n"
+           "CNID database of the volume. dbd must be run with appropiate\n"
+           "permissions i.e. as root.\n\n"
            "Options:\n"
-           "   -s Scan volume:\n"
-           "   -c convert from adouble:v2 to adouble:ea (use with -r)\n"
+           "   -s scan volume: treat the volume as read only and don't\n"
+           "      perform any filesystem modifications\n"
+           "   -c convert from adouble:v2 to adouble:ea\n"
            "   -F location of the afp.conf config file\n"
            "   -f delete and recreate CNID database\n"
            "   -t show statistics while running\n"
@@ -137,7 +138,7 @@ int main(int argc, char **argv)
     const char *volpath = NULL;
 
     int c;
-    while ((c = getopt(argc, argv, ":cfF:stvV")) != -1) {
+    while ((c = getopt(argc, argv, ":cfF:rstvV")) != -1) {
         switch(c) {
         case 'c':
             flags |= DBD_FLAGS_V2TOEA;
@@ -148,6 +149,9 @@ int main(int argc, char **argv)
         case 'F':
             obj.cmdlineconfigfile = strdup(optarg);
             break;
+        case 'r':
+            /* the default */
+            break;
         case 's':
             dbd_cmd = dbd_scan;
             flags |= DBD_FLAGS_SCAN;
@@ -208,7 +212,7 @@ int main(int argc, char **argv)
     else
         setuplog("default:note", "/dev/tty");
 
-    if (load_volumes(&obj) != 0) {
+    if (load_volumes(&obj, lv_all) != 0) {
         dbd_log( LOGSTD, "Couldn't load volumes");
         exit(EXIT_FAILURE);
     }
@@ -224,16 +228,18 @@ int main(int argc, char **argv)
     }
 
     /* open volume */
-    if (STRCMP(vol->v_cnidscheme, != , "dbd")) {
+    if (STRCMP(vol->v_cnidscheme, != , "dbd") && STRCMP(vol->v_cnidscheme, != , "mysql")) {
         dbd_log(LOGSTD, "\"%s\" isn't a \"dbd\" CNID volume", vol->v_path);
         exit(EXIT_FAILURE);
     }
     if ((vol->v_cdb = cnid_open(vol->v_path,
                                 0000,
-                                "dbd",
-                                flags,
+                                vol->v_cnidscheme,
+                                vol->v_flags & AFPVOL_NODEV ? CNID_FLAG_NODEV : 0,
                                 vol->v_cnidserver,
-                                vol->v_cnidport)) == NULL) {
+                                vol->v_cnidport,
+                                &obj,
+                                vol->v_uuid)) == NULL) {
         dbd_log(LOGSTD, "Cant initialize CNID database connection for %s", vol->v_path);
         exit(EXIT_FAILURE);
     }