]> arthur.barton.de Git - netatalk.git/blobdiff - bin/ad/ad_mv.c
Change ad_init to pass vol, add ad_init_old for stuff that doesn't have struct vol...
[netatalk.git] / bin / ad / ad_mv.c
index 0355364398e81183e566f040ee1a53e0d16d7265..7dab6c6fc35102cb7118414e0e13a352deb61b7a 100644 (file)
@@ -186,7 +186,7 @@ int ad_mv(int argc, char *argv[])
     set_signal();
     cnid_init();
     if (openvol(argv[argc - 1], &dvolume) != 0) {
-        SLOG("Error opening CNID database for %s: ", argv[argc - 1]);
+        SLOG("Error opening CNID database for source \"%s\": ", argv[argc - 1]);
         return 1;
     }
 
@@ -198,7 +198,7 @@ int ad_mv(int argc, char *argv[])
         if (argc > 2)
             usage_mv();
         if (openvol(argv[0], &svolume) != 0) {
-            SLOG("Error opening CNID database for %s: ", argv[0]);
+            SLOG("Error opening CNID database for destination \"%s\": ", argv[0]);
             return 1;
         }
         rval = do_move(argv[0], argv[1]);
@@ -235,11 +235,8 @@ int ad_mv(int argc, char *argv[])
             rval = 1;
         } else {
             memmove(endp, p, (size_t)len + 1);
-            if (openvol(*argv, &svolume) != 0) {
-                SLOG("Error opening CNID database for %s: ", argv[0]);
-                rval = 1;
-                goto exit;
-            }
+            openvol(*argv, &svolume);
+
             if (do_move(*argv, path))
                 rval = 1;
             closevol(&svolume);
@@ -376,14 +373,14 @@ static int do_move(const char *from, const char *to)
         free(p);
 
         struct adouble ad;
-        ad_init(&ad, dvolume.volinfo.v_adouble, dvolume.volinfo.v_ad_options);
-        if (ad_open(&ad, to, S_ISDIR(sb.st_mode) ? (ADFLAGS_DIR | ADFLAGS_HF) : ADFLAGS_HF, O_RDWR) != 0) {
+        ad_init_old(&ad, dvolume.volinfo.v_adouble, dvolume.volinfo.v_ad_options);
+        if (ad_open(&ad, to, S_ISDIR(sb.st_mode) ? (ADFLAGS_DIR | ADFLAGS_HF | ADFLAGS_RDWR) : ADFLAGS_HF | ADFLAGS_RDWR) != 0) {
             SLOG("Error opening adouble for: %s", to);
             return 1;
         }
         ad_setid(&ad, sb.st_dev, sb.st_ino, cnid, newdid, dvolume.db_stamp);
         ad_flush(&ad);
-        ad_close_metadata(&ad);
+        ad_close(&ad, ADFLAGS_HF);
 
         if (vflg)
             printf("%s -> %s\n", from, to);