Some more minor changes for the skip/missing/dry_run code.
authorWayne Davison <wayned@samba.org>
Wed, 19 Mar 2008 15:57:41 +0000 (08:57 -0700)
committerWayne Davison <wayned@samba.org>
Wed, 19 Mar 2008 15:59:44 +0000 (08:59 -0700)
generator.c
testsuite/missing.test

index b209812..a09480a 100644 (file)
@@ -1268,16 +1268,18 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                return;
        }
 
-       if (skip_dir && is_below(file, skip_dir)) {
-               if (is_dir)
-                       file->flags |= FLAG_MISSING_DIR;
+       if (skip_dir) {
+               if (is_below(file, skip_dir)) {
+                       if (is_dir)
+                               file->flags |= FLAG_MISSING_DIR;
 #ifdef SUPPORT_HARD_LINKS
-               else if (F_IS_HLINKED(file))
-                       handle_skipped_hlink(file, itemizing, code, f_out);
+                       else if (F_IS_HLINKED(file))
+                               handle_skipped_hlink(file, itemizing, code, f_out);
 #endif
-               return;
-       } else
+                       return;
+               }
                skip_dir = NULL;
+       }
 
        if (server_filter_list.head) {
                if (check_filter(&server_filter_list, fname, is_dir) < 0) {
@@ -1312,8 +1314,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                statret = -1;
                stat_errno = ENOENT;
        } else {
-               dry_missing_dir = NULL;
                const char *dn = file->dirname ? file->dirname : ".";
+               dry_missing_dir = NULL;
                if (parent_dirname != dn && strcmp(parent_dirname, dn) != 0) {
                        if (relative_paths && !implied_dirs
                         && do_stat(dn, &sx.st) < 0) {
@@ -1409,7 +1411,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                        statret = -1;
                }
                if (dry_run && statret != 0) {
-                       dry_missing_dir = file;
+                       if (!dry_missing_dir)
+                               dry_missing_dir = file;
                        file->flags |= FLAG_MISSING_DIR;
                }
                real_ret = statret;
index 705050b..82eaeb3 100644 (file)
@@ -7,8 +7,7 @@
 
 . $srcdir/testsuite/rsync.fns
 
-mkdir "$fromdir" "$todir"
-mkdir "$fromdir/subdir"
+makepath "$fromdir/subdir" "$todir"
 echo data >"$fromdir/subdir/file"
 echo data >"$todir/other"
 
@@ -24,5 +23,5 @@ $RSYNC -n -r -R --no-implied-dirs -y "$fromdir/./subdir/file" "$todir/" \
 
 # Test 3: --delete-after pass skipped when last dir is dry-missing
 $RSYNC -n -r --delete-after -i "$fromdir/" "$todir/" | tee "$scratchdir/out"
-grep '^\*deleting   other' "$scratchdir/out" >/dev/null \
+grep '^\*deleting * other' "$scratchdir/out" >/dev/null \
        || test_fail 'test 3 failed'