From 6e0bf4d840c8718e832bde6ffb34470f2167047d Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Wed, 19 Mar 2008 08:57:41 -0700 Subject: [PATCH] Some more minor changes for the skip/missing/dry_run code. --- generator.c | 21 ++++++++++++--------- testsuite/missing.test | 5 ++--- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/generator.c b/generator.c index b209812d..a09480a8 100644 --- a/generator.c +++ b/generator.c @@ -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; diff --git a/testsuite/missing.test b/testsuite/missing.test index 705050b4..82eaeb3c 100644 --- a/testsuite/missing.test +++ b/testsuite/missing.test @@ -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' -- 2.34.1