The --fake-super option conflicts with -XX (which copies internal
authorWayne Davison <wayned@samba.org>
Fri, 7 Mar 2008 23:23:39 +0000 (15:23 -0800)
committerWayne Davison <wayned@samba.org>
Fri, 7 Mar 2008 23:23:39 +0000 (15:23 -0800)
rsync xattrs literally).

clientserver.c
options.c

index 7c15e3b..6bcbc81 100644 (file)
@@ -32,6 +32,7 @@ extern int am_daemon;
 extern int am_root;
 extern int rsync_port;
 extern int ignore_errors;
+extern int preserve_xattrs;
 extern int kluge_around_eof;
 extern int daemon_over_rsh;
 extern int sanitize_paths;
@@ -745,9 +746,11 @@ static int rsync_module(int f_in, int f_out, int i, char *addr, char *host)
        if (write_batch < 0)
                dry_run = 1;
 
-       if (lp_fake_super(i))
+       if (lp_fake_super(i)) {
+               if (preserve_xattrs > 1)
+                       preserve_xattrs = 1;
                am_root = -1;
-       else if (am_root < 0) /* Treat --fake-super from client as --super. */
+       else if (am_root < 0) /* Treat --fake-super from client as --super. */
                am_root = 2;
 
        if (filesfrom_fd == 0)
index 7972121..4ac8846 100644 (file)
--- a/options.c
+++ b/options.c
@@ -1314,7 +1314,13 @@ int parse_arguments(int *argc_p, const char ***argv_p, int frommain)
        }
 #endif
 
-#ifndef SUPPORT_XATTRS
+#ifdef SUPPORT_XATTRS
+       if (am_root < 0 && preserve_xattrs > 1) {
+               snprintf(err_buf, sizeof err_buf,
+                        "--fake-super conflicts with -XX\n");
+               return 0;
+       }
+#else
        if (am_root < 0) {
                snprintf(err_buf, sizeof err_buf,
                         "--fake-super requires an rsync with extended attributes enabled\n");