The improved --xattrs option is landing on the trunk.
[rsync/rsync.git] / main.c
diff --git a/main.c b/main.c
index 2d2b697..1df9e2f 100644 (file)
--- a/main.c
+++ b/main.c
@@ -4,12 +4,11 @@
  * Copyright (C) 1996-2001 Andrew Tridgell <tridge@samba.org>
  * Copyright (C) 1996 Paul Mackerras
  * Copyright (C) 2001, 2002 Martin Pool <mbp@samba.org>
- * Copyright (C) 2003, 2004, 2005, 2006 Wayne Davison
+ * Copyright (C) 2003-2007 Wayne Davison
  *
  * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -34,7 +33,7 @@ extern int am_server;
 extern int am_sender;
 extern int am_generator;
 extern int am_daemon;
-extern int incremental;
+extern int inc_recurse;
 extern int blocking_io;
 extern int remove_source_files;
 extern int daemon_over_rsh;
@@ -609,7 +608,7 @@ static void fix_basis_dirs(void)
 }
 
 /* This is only called by the sender. */
-static void read_final_goodbye(int f_in, int f_out)
+static void read_final_goodbye(int f_in)
 {
        int i, iflags, xlen;
        uchar fnamecmp_type;
@@ -618,8 +617,8 @@ static void read_final_goodbye(int f_in, int f_out)
        if (protocol_version < 29)
                i = read_int(f_in);
        else {
-               i = read_ndx_and_attrs(f_in, f_out, &iflags,
-                                      &fnamecmp_type, xname, &xlen);
+               i = read_ndx_and_attrs(f_in, &iflags, &fnamecmp_type,
+                                      xname, &xlen);
        }
 
        if (i != NDX_DONE) {
@@ -678,7 +677,7 @@ static void do_server_sender(int f_in, int f_out, int argc, char *argv[])
        io_flush(FULL_FLUSH);
        handle_stats(f_out);
        if (protocol_version >= 24)
-               read_final_goodbye(f_in, f_out);
+               read_final_goodbye(f_in);
        io_flush(FULL_FLUSH);
        exit_cleanup(0);
 }
@@ -727,7 +726,8 @@ static int do_recv(int f_in, int f_out, char *local_name)
                io_flush(FULL_FLUSH);
                handle_stats(f_in);
 
-               send_msg(MSG_DONE, "", 0);
+               send_msg(MSG_DONE, "", 1);
+               write_longint(error_pipe[1], stats.total_read);
                io_flush(FULL_FLUSH);
 
                /* Handle any keep-alive packets from the post-processing work
@@ -740,7 +740,7 @@ static int do_recv(int f_in, int f_out, char *local_name)
                        kluge_around_eof = -1;
 
                        /* This should only get stopped via a USR2 signal. */
-                       read_ndx_and_attrs(f_in, -1, &iflags, &fnamecmp_type,
+                       read_ndx_and_attrs(f_in, &iflags, &fnamecmp_type,
                                           xname, &xlen);
 
                        rprintf(FERROR, "Invalid packet at end of run [%s]\n",
@@ -776,7 +776,7 @@ static int do_recv(int f_in, int f_out, char *local_name)
        io_flush(FULL_FLUSH);
        if (protocol_version >= 24) {
                /* send a final goodbye message */
-               write_int(f_out, NDX_DONE);
+               write_ndx(f_out, NDX_DONE);
        }
        io_flush(FULL_FLUSH);
 
@@ -843,7 +843,7 @@ static void do_server_recv(int f_in, int f_out, int argc, char *argv[])
                rprintf(FERROR,"server_recv: recv_file_list error\n");
                exit_cleanup(RERR_FILESELECT);
        }
-       if (incremental && file_total == 1)
+       if (inc_recurse && file_total == 1)
                recv_additional_file_list(f_in);
        verbose = save_verbose;
 
@@ -977,7 +977,7 @@ int client_run(int f_in, int f_out, pid_t pid, int argc, char *argv[])
                io_flush(FULL_FLUSH);
                handle_stats(-1);
                if (protocol_version >= 24)
-                       read_final_goodbye(f_in, f_out);
+                       read_final_goodbye(f_in);
                if (pid != -1) {
                        if (verbose > 3)
                                rprintf(FINFO,"client_run waiting on %d\n", (int) pid);
@@ -1009,7 +1009,7 @@ int client_run(int f_in, int f_out, pid_t pid, int argc, char *argv[])
        if (write_batch && !am_server)
                start_write_batch(f_in);
        flist = recv_file_list(f_in);
-       if (incremental && file_total == 1)
+       if (inc_recurse && file_total == 1)
                recv_additional_file_list(f_in);
 
        if (flist && flist->count > 0) {