Added 2 new config options: "pre-xfer exec" and "post-xfer exec".
[rsync/rsync.git] / main.c
diff --git a/main.c b/main.c
index 4cc1d3c..de1c124 100644 (file)
--- a/main.c
+++ b/main.c
@@ -46,11 +46,8 @@ extern int keep_dirlinks;
 extern int preserve_hard_links;
 extern int protocol_version;
 extern int recurse;
-extern int fuzzy_basis;
 extern int relative_paths;
 extern int rsync_port;
-extern int inplace;
-extern int make_backups;
 extern int whole_file;
 extern int read_batch;
 extern int write_batch;
@@ -60,8 +57,6 @@ extern int filesfrom_fd;
 extern pid_t cleanup_child_pid;
 extern struct stats stats;
 extern char *filesfrom_host;
-extern char *partial_dir;
-extern char *basis_dir[];
 extern char *rsync_path;
 extern char *shell_cmd;
 extern char *batch_name;
@@ -175,7 +170,7 @@ static void handle_stats(int f)
                        stats.flist_buildtime = read_longint(f);
                        stats.flist_xfertime = read_longint(f);
                }
-       } else if (write_batch && !am_server) {
+       } else if (write_batch) {
                /* The --read-batch process is going to be a client
                 * receiver, so we need to give it the stats. */
                write_longint(batch_fd, total_read);
@@ -186,7 +181,10 @@ static void handle_stats(int f)
                        write_longint(batch_fd, stats.flist_xfertime);
                }
        }
+}
 
+static void output_summary(void)
+{
        if (do_stats) {
                rprintf(FINFO,"\nNumber of files: %d\n", stats.num_files);
                rprintf(FINFO,"Number of files transferred: %d\n",
@@ -214,12 +212,6 @@ static void handle_stats(int f)
                        (double)total_read);
        }
 
-       fflush(stdout);
-       fflush(stderr);
-}
-
-static void output_summary(void)
-{
        if (verbose || do_stats) {
                rprintf(FINFO,
                        "\nsent %.0f bytes  received %.0f bytes  %.2f bytes/sec\n",
@@ -296,7 +288,7 @@ static pid_t do_cmd(char *cmd, char *machine, char *user, char *path,
 
                for (tok = strtok(cmd, " "); tok; tok = strtok(NULL, " ")) {
                        /* Comparison leaves rooms for server_options(). */
-                       if (argc >= MAX_ARGS - 100) {
+                       if (argc >= MAX_ARGS - MAX_SERVER_ARGS) {
                                rprintf(FERROR, "internal: args[] overflowed in do_cmd()\n");
                                exit_cleanup(RERR_SYNTAX);
                        }
@@ -875,6 +867,13 @@ static int start_client(int argc, char *argv[])
                argc--;
                shell_path = check_for_hostspec(argv[0], &shell_machine, &rsync_port);
                if (shell_path) { /* source is remote */
+                       char *dummy1;
+                       int dummy2;
+                       if (argc && check_for_hostspec(argv[argc], &dummy1, &dummy2)) {
+                               rprintf(FERROR,
+                                       "The source and destination cannot both be remote.\n");
+                               exit_cleanup(RERR_SYNTAX);
+                       }
                        argv++;
                        if (filesfrom_host && *filesfrom_host
                            && strcmp(filesfrom_host, shell_machine) != 0) {