]> pd.if.org Git - zpackage/blobdiff - zpm-syncfs.c
add sql filter option to list
[zpackage] / zpm-syncfs.c
index 18d05426c3238ce1132e6c7534367e471c33be3b..9889c606912875a60381ba243f5c1395591d8927 100644 (file)
@@ -841,6 +841,14 @@ static int install(struct config *conf, struct nitem *item, unsigned int flags)
 
        source = conf->src ? conf->src : conf->log;
 
+       if (mkleading) {
+               rv = create_leading_dirs(item->dest);
+               if (!rv) {
+                       setsyserr(conf, "can't create leading dirs for %s", item->dest);
+                       return failure;
+               }
+       }
+
        if (unlink_file) {
                rv = remove_existing(conf, item->dest);
        } else if (rm_dir) {
@@ -851,14 +859,6 @@ static int install(struct config *conf, struct nitem *item, unsigned int flags)
                return failure;
        }
 
-       if (mkleading) {
-               rv = create_leading_dirs(item->dest);
-               if (!rv) {
-                       setsyserr(conf, "can't create leading dirs for %s", item->dest);
-                       return failure;
-               }
-       }
-
        errno = 0;
        switch (item->ftype) {
                case 'r': rv = zpm_extract(source, item->hash, item->dest, item->mode);
@@ -1242,7 +1242,7 @@ static int install_files(void *f, int ncols, char **vals, char **cols) {
        if (update) {
                if (!exist) {
                        /* warn, it should exist */
-                       fprintf(stderr, "%s missing, installing", nitem.dest);
+                       fprintf(stderr, "%s missing, installing\n", nitem.dest);
                        return install(conf, &nitem, 3);
                }
 
@@ -1278,13 +1278,14 @@ static int install_files(void *f, int ncols, char **vals, char **cols) {
                                /* fix md */
                                return set_md(conf, &nitem);
                        }
-                       if (mdsame && !hashsame) {
-                               /* install */
-                               return install(conf, &nitem, 3);
-                       }
-                       if (!mdsame && !hashsame) {
-                               /* install */
-                               return install(conf, &nitem, 3);
+
+                       if (!hashsame) {
+                               /* doesn't matter on the md */
+                               int flags = INS_MD | INS_CLD;
+                               if (nitem.ftype == 'l') {
+                                       flags |= INS_UNLINK;
+                               }
+                               return install(conf, &nitem, flags);
                        }
                }
 
@@ -1319,7 +1320,7 @@ static int install_files(void *f, int ncols, char **vals, char **cols) {
                if (sametype) {
                        if (mdsame && hashsame && (accept || overwrite)) {
                                /* do nothing */
-                               if (conf->dryrun || conf->verbose) {
+                               if (conf->dryrun || conf->verbose > 1) {
                                        fprintf(stderr, "accept %s: %s\n",
                                                        eisdir ? "directory" : "file", nitem.dest);
                                }