Adding release info for 3.0.8 to the trunk.
[rsync/rsync.git] / main.c
diff --git a/main.c b/main.c
index 161bfad..de5bc48 100644 (file)
--- a/main.c
+++ b/main.c
@@ -70,6 +70,7 @@ extern int sock_f_out;
 extern int filesfrom_fd;
 extern int connect_timeout;
 extern int send_msgs_to_gen;
+extern dev_t filesystem_dev;
 extern pid_t cleanup_child_pid;
 extern size_t bwlimit_writemax;
 extern unsigned int module_dirlen;
@@ -493,7 +494,11 @@ static pid_t do_cmd(char *cmd, char *machine, char *user, char **remote_argv, in
                                rprintf(FERROR, "internal: args[] overflowed in do_cmd()\n");
                                exit_cleanup(RERR_SYNTAX);
                        }
-                       args[argc++] = *remote_argv++;
+                       if (**remote_argv == '-') {
+                               if (asprintf(args + argc++, "./%s", *remote_argv++) < 0)
+                                       out_of_memory("do_cmd");
+                       } else
+                               args[argc++] = *remote_argv++;
                        remote_argc--;
                }
        }
@@ -606,6 +611,7 @@ static char *get_local_name(struct file_list *flist, char *dest_path)
                                        full_fname(dest_path));
                                exit_cleanup(RERR_FILESELECT);
                        }
+                       filesystem_dev = st.st_dev; /* ensures --force works right w/-x */
                        return NULL;
                }
                if (file_total > 1) {