]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
copy: when we recursively copy a directory tree, copy everything 692/head
authorLennart Poettering <lennart@poettering.net>
Thu, 23 Jul 2015 19:41:22 +0000 (21:41 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 23 Jul 2015 21:09:34 +0000 (23:09 +0200)
Don't ignore hidden files and directories.

Fixes #386

src/basic/copy.c

index 230e7e4d3fc3a793431fc5165a5c3631dbbf0d3b..e2d356d67656197ac2daa9df5d4a636fe1ba6045 100644 (file)
@@ -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;