summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/basic/copy.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/basic/copy.c b/src/basic/copy.c
index 18eea64a9..5962e4ce7 100644
--- a/src/basic/copy.c
+++ b/src/basic/copy.c
@@ -533,13 +533,12 @@ static int fd_copy_directory(
continue;
}
- if (buf.st_dev != original_device)
- continue;
-
- if (S_ISREG(buf.st_mode))
- q = fd_copy_regular(dirfd(d), de->d_name, &buf, fdt, de->d_name, override_uid, override_gid, copy_flags);
- else if (S_ISDIR(buf.st_mode))
+ if (S_ISDIR(buf.st_mode)) {
+ if (buf.st_dev != original_device)
+ continue;
q = fd_copy_directory(dirfd(d), de->d_name, &buf, fdt, de->d_name, original_device, override_uid, override_gid, copy_flags);
+ } else if (S_ISREG(buf.st_mode))
+ q = fd_copy_regular(dirfd(d), de->d_name, &buf, fdt, de->d_name, override_uid, override_gid, copy_flags);
else if (S_ISLNK(buf.st_mode))
q = fd_copy_symlink(dirfd(d), de->d_name, &buf, fdt, de->d_name, override_uid, override_gid, copy_flags);
else if (S_ISFIFO(buf.st_mode))