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) {
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) {
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;
. $srcdir/testsuite/rsync.fns
-mkdir "$fromdir" "$todir"
-mkdir "$fromdir/subdir"
+makepath "$fromdir/subdir" "$todir"
echo data >"$fromdir/subdir/file"
echo data >"$todir/other"
# 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'