Changed the -x code to allow -L to copy a file on another filesystem
authorWayne Davison <wayned@samba.org>
Wed, 4 Feb 2004 03:25:18 +0000 (03:25 +0000)
committerWayne Davison <wayned@samba.org>
Wed, 4 Feb 2004 03:25:18 +0000 (03:25 +0000)
that is pointed to by a symlink on our exclusive filesystem.

flist.c

diff --git a/flist.c b/flist.c
index f9c0f6e..ff9d774 100644 (file)
--- a/flist.c
+++ b/flist.c
@@ -766,13 +766,12 @@ struct file_struct *make_file(char *fname, int exclude_level)
                return NULL;
        }
 
-       if (one_file_system && st.st_dev != filesystem_dev) {
-               /* We allow a directory though to preserve the mount point.
-                * However, flag it so that we don't recurse. */
-               if (!S_ISDIR(st.st_mode))
-                       return NULL;
+       /* We only care about directories because we need to avoid recursing
+        * into a mount-point directory, not to avoid copying a symlinked
+        * file if -L (or similar) was specified. */
+       if (one_file_system && st.st_dev != filesystem_dev
+           && S_ISDIR(st.st_mode))
                flags |= FLAG_MOUNT_POINT;
-       }
 
        if (check_exclude_file(thisname, S_ISDIR(st.st_mode) != 0, exclude_level))
                return NULL;