summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2015-07-23 21:41:22 +0200
committerLennart Poettering <lennart@poettering.net>2015-07-23 23:09:34 +0200
commit8420fa3acf205e3f42be9a2199dba55369ef7c61 (patch)
treed70c9cd1e93518b425735f0b558e3e7f4197b886 /src
parentbd5ecd55c8fa3a60c452d6852cc5e65012de7e73 (diff)
copy: when we recursively copy a directory tree, copy everything
Don't ignore hidden files and directories. Fixes #386
Diffstat (limited to 'src')
-rw-r--r--src/basic/copy.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/basic/copy.c b/src/basic/copy.c
index 230e7e4d3f..e2d356d676 100644
--- a/src/basic/copy.c
+++ b/src/basic/copy.c
@@ -24,6 +24,7 @@
#include "util.h"
#include "btrfs-util.h"
+#include "strv.h"
#include "copy.h"
#define COPY_BUFFER_SIZE (16*1024)
@@ -262,10 +263,13 @@ static int fd_copy_directory(
(void) copy_xattr(dirfd(d), fdt);
}
- FOREACH_DIRENT(de, d, return -errno) {
+ FOREACH_DIRENT_ALL(de, d, return -errno) {
struct stat buf;
int q;
+ if (STR_IN_SET(de->d_name, ".", ".."))
+ continue;
+
if (fstatat(dirfd(d), de->d_name, &buf, AT_SYMLINK_NOFOLLOW) < 0) {
r = -errno;
continue;