Got rid of failures and fuzz.
authorWayne Davison <wayned@samba.org>
Thu, 22 Jul 2004 00:35:33 +0000 (00:35 +0000)
committerWayne Davison <wayned@samba.org>
Thu, 22 Jul 2004 00:35:33 +0000 (00:35 +0000)
compare-dest.diff
fname-convert.diff
fuzzy.diff
g2r-basis-filename.diff
openssl-support.diff
time-limit.diff

index 342a534..bfc6b88 100644 (file)
@@ -9,7 +9,7 @@ they are suppled).
 
 Before compiling, be sure to run "make proto".
 
---- orig/generator.c   2004-07-17 15:50:09
+--- orig/generator.c   2004-07-22 00:05:38
 +++ generator.c        2004-07-19 08:32:53
 @@ -42,7 +42,7 @@ extern int size_only;
  extern int io_timeout;
@@ -20,7 +20,7 @@ Before compiling, be sure to run "make proto".
  extern int link_dest;
  extern int whole_file;
  extern int local_server;
-@@ -80,13 +80,12 @@ static int skip_file(char *fname, struct
+@@ -79,13 +79,12 @@ static int skip_file(char *fname, struct
        if (always_checksum && S_ISREG(st->st_mode)) {
                char sum[MD4_SUM_LENGTH];
                char fnamecmpdest[MAXPATHLEN];
@@ -39,7 +39,7 @@ Before compiling, be sure to run "make proto".
                }
                file_checksum(fname,sum,st->st_size);
                return memcmp(sum, file->u.sum, protocol_version < 21 ? 2
-@@ -408,13 +407,18 @@ static void recv_generator(char *fname, 
+@@ -414,13 +413,18 @@ static void recv_generator(char *fname, 
  
        fnamecmp = fname;
  
@@ -63,9 +63,9 @@ Before compiling, be sure to run "make proto".
                if (statret == -1) {
                        errno = saveerrno;
                        *fnamecmpbuf = '\0';
---- orig/main.c        2004-07-17 15:58:11
-+++ main.c     2004-07-17 16:31:30
-@@ -57,7 +57,7 @@ extern int filesfrom_fd;
+--- orig/main.c        2004-07-22 00:10:43
++++ main.c     2004-07-22 00:30:38
+@@ -58,7 +58,7 @@ extern int filesfrom_fd;
  extern pid_t cleanup_child_pid;
  extern char *files_from;
  extern char *remote_filesfrom_file;
@@ -74,16 +74,16 @@ Before compiling, be sure to run "make proto".
  extern char *rsync_path;
  extern char *shell_cmd;
  extern char *batch_name;
-@@ -446,7 +446,7 @@ static int do_recv(int f_in,int f_out,st
+@@ -456,7 +456,7 @@ static int do_recv(int f_in,int f_out,st
        int pid;
        int status = 0;
        int error_pipe[2], name_pipe[2];
--      int need_name_pipe = compare_dest || read_batch;
-+      int need_name_pipe = compare_dest[0] || read_batch;
+-      int need_name_pipe = compare_dest;
++      int need_name_pipe = compare_dest[0];
  
        if (preserve_hard_links)
                init_hard_links(flist);
---- orig/options.c     2004-07-16 20:07:22
+--- orig/options.c     2004-07-21 23:59:35
 +++ options.c  2004-07-03 17:33:30
 @@ -118,7 +118,8 @@ unsigned int backup_dir_remainder;
  
@@ -160,7 +160,7 @@ Before compiling, be sure to run "make proto".
                        link_dest = 1;
                        break;
  #else
-@@ -684,6 +714,11 @@ int parse_arguments(int *argc, const cha
+@@ -689,6 +719,11 @@ int parse_arguments(int *argc, const cha
                exit_cleanup(RERR_SYNTAX);
        }
  
@@ -172,7 +172,7 @@ Before compiling, be sure to run "make proto".
        if (archive_mode) {
                if (!files_from)
                        recurse = 1;
-@@ -712,8 +747,6 @@ int parse_arguments(int *argc, const cha
+@@ -717,8 +752,6 @@ int parse_arguments(int *argc, const cha
                        (*argv)[i] = alloc_sanitize_path((*argv)[i], NULL);
                if (tmpdir)
                        tmpdir = alloc_sanitize_path(tmpdir, curr_dir);
@@ -181,7 +181,7 @@ Before compiling, be sure to run "make proto".
                if (backup_dir)
                        backup_dir = alloc_sanitize_path(backup_dir, curr_dir);
                if (files_from)
-@@ -819,8 +852,8 @@ int parse_arguments(int *argc, const cha
+@@ -824,8 +857,8 @@ int parse_arguments(int *argc, const cha
   **/
  void server_options(char **args,int *argc)
  {
@@ -191,7 +191,7 @@ Before compiling, be sure to run "make proto".
        char *arg;
  
        int i, x;
-@@ -998,13 +1031,16 @@ void server_options(char **args,int *arg
+@@ -1003,13 +1036,16 @@ void server_options(char **args,int *arg
                args[ac++] = tmpdir;
        }
  
@@ -211,9 +211,9 @@ Before compiling, be sure to run "make proto".
        }
  
        if (files_from && (!am_sender || remote_filesfrom_file)) {
---- orig/receiver.c    2004-07-17 21:27:55
+--- orig/receiver.c    2004-07-22 00:20:50
 +++ receiver.c 2004-07-03 20:14:37
-@@ -37,7 +37,6 @@ extern int preserve_perms;
+@@ -38,7 +38,6 @@ extern int preserve_perms;
  extern int cvs_exclude;
  extern int io_error;
  extern char *tmpdir;
@@ -221,7 +221,7 @@ Before compiling, be sure to run "make proto".
  extern int make_backups;
  extern int do_progress;
  extern char *backup_dir;
---- orig/rsync.h       2004-07-16 20:07:23
+--- orig/rsync.h       2004-07-20 21:36:08
 +++ rsync.h    2004-07-03 17:33:30
 @@ -98,6 +98,8 @@
  
index 2e20027..052bbeb 100644 (file)
@@ -58,7 +58,7 @@ Note that you'll need to run 'make proto' after applying this patch.
  DAEMON_OBJ = params.o loadparm.o clientserver.o access.o connection.o authenticate.o
  popt_OBJS=popt/findme.o  popt/popt.o  popt/poptconfig.o \
        popt/popthelp.o popt/poptparse.o
---- orig/cleanup.c     2004-07-02 18:11:26
+--- orig/cleanup.c     2004-07-20 21:36:07
 +++ cleanup.c  2004-07-03 20:18:02
 @@ -24,6 +24,7 @@
  extern int io_error;
@@ -68,7 +68,7 @@ Note that you'll need to run 'make proto' after applying this patch.
  
  /**
   * Close all open sockets and files, allowing a (somewhat) graceful
-@@ -124,6 +125,8 @@ void _exit_cleanup(int code, const char 
+@@ -121,6 +122,8 @@ void _exit_cleanup(int code, const char 
                finish_transfer(cleanup_new_fname, fname, cleanup_file, 0);
        }
        io_flush(FULL_FLUSH);
@@ -87,7 +87,7 @@ Note that you'll need to run 'make proto' after applying this patch.
  
  #define RERR_SIGNAL     20      /* status returned when sent SIGUSR1, SIGINT */
  #define RERR_WAITCHILD  21      /* some error returned by waitpid() */
---- orig/flist.c       2004-07-15 02:21:10
+--- orig/flist.c       2004-07-17 15:20:05
 +++ flist.c    2004-07-03 20:18:02
 @@ -43,6 +43,7 @@ extern int cvs_exclude;
  
@@ -382,9 +382,9 @@ Note that you'll need to run 'make proto' after applying this patch.
 +      if (verbose > 2)
 +              rprintf(FINFO, "Converted filename: %s -> %s\n", src, dest);
 +}
---- orig/generator.c   2004-07-16 19:35:29
+--- orig/generator.c   2004-07-21 23:59:35
 +++ generator.c        2004-07-03 20:18:02
-@@ -249,6 +249,12 @@ static void generate_and_send_sums(struc
+@@ -256,6 +256,12 @@ static void generate_and_send_sums(int f
   *
   * @note This comment was added later by mbp who was trying to work it
   * out.  It might be wrong.
@@ -407,18 +407,18 @@ Note that you'll need to run 'make proto' after applying this patch.
        { RERR_SIGNAL     , "received SIGUSR1 or SIGINT" },
        { RERR_WAITCHILD  , "some error returned by waitpid()" },
        { RERR_MALLOC     , "error allocating core memory buffers" },
---- orig/main.c        2004-07-15 17:02:03
-+++ main.c     2004-07-03 20:18:02
-@@ -318,7 +318,7 @@ static pid_t do_cmd(char *cmd, char *mac
+--- orig/main.c        2004-07-21 23:59:35
++++ main.c     2004-07-22 00:31:47
+@@ -329,7 +329,7 @@ static pid_t do_cmd(char *cmd, char *mac
                        whole_file = 1;
                ret = local_child(argc, args, f_in, f_out, child_main);
-       } else {
+       } else
 -              ret = piped_child(args,f_in,f_out);
 +              ret = piped_child(args, f_in, f_out, blocking_io, 1);
-       }
  
        if (dir)
---- orig/options.c     2004-07-16 20:07:22
+               free(dir);
+--- orig/options.c     2004-07-21 23:59:35
 +++ options.c  2004-07-03 20:18:02
 @@ -128,6 +128,7 @@ char *backup_dir = NULL;
  char backup_dir_buf[MAXPATHLEN];
@@ -444,7 +444,7 @@ Note that you'll need to run 'make proto' after applying this patch.
    /* TODO: Should this take an optional int giving the compression level? */
    {"compress",        'z', POPT_ARG_NONE,   &do_compression, 0, 0, 0 },
    {"daemon",           0,  POPT_ARG_NONE,   &daemon_opt, 0, 0, 0 },
---- orig/pipe.c        2004-07-15 02:21:11
+--- orig/pipe.c        2004-07-21 23:59:35
 +++ pipe.c     2004-07-03 20:18:02
 @@ -23,7 +23,6 @@
  
@@ -452,9 +452,9 @@ Note that you'll need to run 'make proto' after applying this patch.
  extern int am_server;
 -extern int blocking_io;
  extern int orig_umask;
- extern int read_batch;
  extern int write_batch;
-@@ -41,8 +40,10 @@ extern int filesfrom_fd;
+ extern int filesfrom_fd;
+@@ -40,8 +39,10 @@ extern int filesfrom_fd;
   * If blocking_io is set then use blocking io on both fds. That can be
   * used to cope with badly broken rsh implementations like the one on
   * Solaris.
@@ -466,7 +466,7 @@ Note that you'll need to run 'make proto' after applying this patch.
  {
        pid_t pid;
        int to_child_pipe[2];
-@@ -57,7 +58,7 @@ pid_t piped_child(char **command, int *f
+@@ -56,7 +57,7 @@ pid_t piped_child(char **command, int *f
                exit_cleanup(RERR_IPC);
        }
  
index fa66efe..98eeaac 100644 (file)
@@ -6,7 +6,7 @@ Very lightly tested.
 
 Be sure to run "make proto" before "make".
 
---- orig/generator.c   2004-07-17 15:50:09
+--- orig/generator.c   2004-07-22 00:05:38
 +++ generator.c        2004-07-20 21:49:24
 @@ -41,6 +41,7 @@ extern int ignore_times;
  extern int size_only;
@@ -144,8 +144,8 @@ Be sure to run "make proto" before "make".
                if (!*fnamecmpbuf)
                        set_perms(fname, file, &st, PERMS_REPORT);
                return;
---- orig/main.c        2004-07-17 15:58:11
-+++ main.c     2004-07-17 16:32:39
+--- orig/main.c        2004-07-22 00:10:43
++++ main.c     2004-07-22 00:32:31
 @@ -47,6 +47,7 @@ extern int keep_dirlinks;
  extern int preserve_hard_links;
  extern int protocol_version;
@@ -154,16 +154,16 @@ Be sure to run "make proto" before "make".
  extern int relative_paths;
  extern int rsync_port;
  extern int whole_file;
-@@ -446,7 +447,7 @@ static int do_recv(int f_in,int f_out,st
+@@ -456,7 +457,7 @@ static int do_recv(int f_in,int f_out,st
        int pid;
        int status = 0;
        int error_pipe[2], name_pipe[2];
--      int need_name_pipe = compare_dest || read_batch;
-+      int need_name_pipe = compare_dest || fuzzy || read_batch;
+-      int need_name_pipe = compare_dest;
++      int need_name_pipe = compare_dest || fuzzy;
  
        if (preserve_hard_links)
                init_hard_links(flist);
---- orig/options.c     2004-07-20 21:36:07
+--- orig/options.c     2004-07-21 23:59:35
 +++ options.c  2004-07-16 20:14:12
 @@ -85,6 +85,7 @@ int safe_symlinks = 0;
  int copy_unsafe_links = 0;
@@ -189,7 +189,7 @@ Be sure to run "make proto" before "make".
    /* TODO: Should this take an optional int giving the compression level? */
    {"compress",        'z', POPT_ARG_NONE,   &do_compression, 0, 0, 0 },
    {"daemon",           0,  POPT_ARG_NONE,   &daemon_opt, 0, 0, 0 },
-@@ -1019,6 +1022,9 @@ void server_options(char **args,int *arg
+@@ -1024,6 +1027,9 @@ void server_options(char **args,int *arg
                }
        }
  
@@ -199,9 +199,9 @@ Be sure to run "make proto" before "make".
        *argc = ac;
        return;
  
---- orig/receiver.c    2004-07-19 16:44:39
+--- orig/receiver.c    2004-07-22 00:20:50
 +++ receiver.c 2004-07-03 20:09:05
-@@ -37,7 +37,6 @@ extern int preserve_perms;
+@@ -38,7 +38,6 @@ extern int preserve_perms;
  extern int cvs_exclude;
  extern int io_error;
  extern char *tmpdir;
index fe33676..69d050e 100644 (file)
@@ -5,16 +5,10 @@ the receiver and makes future options that do more basis-file
 searching more efficient (such as the --fuzzy option and the
 support for multiple --compare-dest options).
 
-Also fixes a potential synchronization problem between the generator
-and the receiver in read-batch mode.  Should consider making the
-sending of the index value the default for this pipe (it's currently
-only sent in batch mode due to the sender not listening to the
-generator to determine what files get updated).
-
 You must run "make proto" before compiling.
 
---- orig/generator.c   2004-07-20 21:36:07
-+++ generator.c        2004-07-17 15:50:09
+--- orig/generator.c   2004-07-21 23:59:35
++++ generator.c        2004-07-22 00:05:38
 @@ -258,9 +258,9 @@ static void generate_and_send_sums(int f
   * out.  It might be wrong.
   */
@@ -27,17 +21,7 @@ You must run "make proto" before compiling.
        STRUCT_STAT st;
        int statret;
        char *fnamecmp;
-@@ -404,9 +404,6 @@ static void recv_generator(char *fname, 
-       }
- #endif
--      if (read_batch)
--              return;
--
-       if (preserve_hard_links && hard_link_check(file, HL_CHECK_MASTER))
-               return;
-@@ -424,8 +421,10 @@ static void recv_generator(char *fname, 
+@@ -421,8 +421,10 @@ static void recv_generator(char *fname, 
                statret = link_stat(fnamecmpbuf, &st, 0);
                if (!S_ISREG(st.st_mode))
                        statret = -1;
@@ -49,7 +33,7 @@ You must run "make proto" before compiling.
  #if HAVE_LINK
                else if (link_dest && !dry_run) {
                        if (do_link(fnamecmpbuf, fname) != 0) {
-@@ -433,22 +432,22 @@ static void recv_generator(char *fname, 
+@@ -430,22 +432,22 @@ static void recv_generator(char *fname, 
                                        rsyserr(FINFO, errno, "link %s => %s",
                                                fnamecmpbuf, fname);
                                }
@@ -71,7 +55,7 @@ You must run "make proto" before compiling.
                        return;
 -              if (errno == ENOENT) {
 -                      write_int(f_out,i);
--                      if (!dry_run)
+-                      if (!dry_run && !read_batch)
 -                              write_sum_head(f_out, NULL);
 -              } else if (verbose > 1) {
 +              if (errno == ENOENT)
@@ -80,7 +64,7 @@ You must run "make proto" before compiling.
                        rsyserr(FERROR, errno,
                                "recv_generator: failed to open %s",
                                full_fname(fname));
-@@ -457,26 +456,23 @@ static void recv_generator(char *fname, 
+@@ -454,26 +456,23 @@ static void recv_generator(char *fname, 
        }
  
        if (!S_ISREG(st.st_mode)) {
@@ -93,7 +77,7 @@ You must run "make proto" before compiling.
                if (preserve_hard_links && hard_link_check(file, HL_SKIP))
                        return;
 -              write_int(f_out,i);
--              if (!dry_run)
+-              if (!dry_run && !read_batch)
 -                      write_sum_head(f_out, NULL);
 -              return;
 +              statret = -1;
@@ -112,7 +96,7 @@ You must run "make proto" before compiling.
            && cmp_modtime(st.st_mtime, file->modtime) > 0) {
                if (verbose > 1)
                        rprintf(FINFO,"%s is newer\n",fname);
-@@ -484,21 +480,17 @@ static void recv_generator(char *fname, 
+@@ -481,21 +480,17 @@ static void recv_generator(char *fname, 
        }
  
        if (skip_file(fname, file, &st)) {
@@ -122,7 +106,7 @@ You must run "make proto" before compiling.
                return;
        }
  
--      if (dry_run) {
+-      if (dry_run || read_batch) {
 -              write_int(f_out,i);
 -              return;
 -      }
@@ -140,7 +124,7 @@ You must run "make proto" before compiling.
  
        /* open the file */
        fd = do_open(fnamecmp, O_RDONLY, 0);
-@@ -509,9 +501,8 @@ static void recv_generator(char *fname, 
+@@ -506,9 +501,8 @@ static void recv_generator(char *fname, 
                /* pretend the file didn't exist */
                if (preserve_hard_links && hard_link_check(file, HL_SKIP))
                        return;
@@ -152,7 +136,7 @@ You must run "make proto" before compiling.
        }
  
        if (verbose > 3) {
-@@ -522,14 +513,41 @@ static void recv_generator(char *fname, 
+@@ -519,14 +513,40 @@ static void recv_generator(char *fname, 
        if (verbose > 2)
                rprintf(FINFO, "generating and sending sums for %d\n", i);
  
@@ -162,8 +146,6 @@ You must run "make proto" before compiling.
 +      if (f_nameout >= 0) {
 +              uchar lenbuf[3], *lb = lenbuf;
 +              int len = statret == -1 ? 0 : strlen(fnamecmpbuf);
-+              if (read_batch)
-+                      write_int(f_nameout, i);
 +              if (len > 0x7F) {
 +#if MAXPATHLEN > 0x7FFF
 +                      *lb++ = len / 0x10000 + 0x80;
@@ -177,12 +159,13 @@ You must run "make proto" before compiling.
 +              if (len)
 +                      write_buf(f_nameout, fnamecmpbuf, len);
 +      }
--      close(fd);
-+      if (read_batch)
-+              return;
 +
 +      write_int(f_out, i);
++
++      if (read_batch)
++              return;
+-      close(fd);
 +      if (statret == 0) {
 +              generate_and_send_sums(fd, st.st_size, f_out);
 +
@@ -198,7 +181,7 @@ You must run "make proto" before compiling.
  {
        int i;
        int phase = 0;
-@@ -570,7 +588,7 @@ void generate_files(int f_out, struct fi
+@@ -567,7 +587,7 @@ void generate_files(int f_out, struct fi
                }
  
                recv_generator(local_name ? local_name : f_name_to(file, fbuf),
@@ -207,15 +190,7 @@ You must run "make proto" before compiling.
        }
  
        phase++;
-@@ -581,13 +599,15 @@ void generate_files(int f_out, struct fi
-               rprintf(FINFO,"generate_files phase=%d\n",phase);
-       write_int(f_out, -1);
-+      if (read_batch)
-+              write_int(f_nameout, flist->count);
-       /* files can cycle through the system more than once
-        * to catch initial checksum errors */
+@@ -584,7 +604,7 @@ void generate_files(int f_out, struct fi
        while ((i = get_redo_num()) != -1) {
                struct file_struct *file = flist->files[i];
                recv_generator(local_name ? local_name : f_name_to(file, fbuf),
@@ -224,16 +199,7 @@ You must run "make proto" before compiling.
        }
  
        phase++;
-@@ -595,6 +615,8 @@ void generate_files(int f_out, struct fi
-               rprintf(FINFO,"generate_files phase=%d\n",phase);
-       write_int(f_out, -1);
-+      if (read_batch)
-+              write_int(f_nameout, flist->count);
-       if (preserve_hard_links)
-               do_hard_links();
-@@ -606,7 +628,7 @@ void generate_files(int f_out, struct fi
+@@ -603,7 +623,7 @@ void generate_files(int f_out, struct fi
                if (!file->basename || !S_ISDIR(file->mode))
                        continue;
                recv_generator(local_name ? local_name : f_name(file),
@@ -242,9 +208,9 @@ You must run "make proto" before compiling.
        }
  
        if (verbose > 2)
---- orig/main.c        2004-07-19 17:14:44
-+++ main.c     2004-07-17 15:58:11
-@@ -57,6 +57,7 @@ extern int filesfrom_fd;
+--- orig/main.c        2004-07-21 23:59:35
++++ main.c     2004-07-22 00:10:43
+@@ -58,6 +58,7 @@ extern int filesfrom_fd;
  extern pid_t cleanup_child_pid;
  extern char *files_from;
  extern char *remote_filesfrom_file;
@@ -252,13 +218,13 @@ You must run "make proto" before compiling.
  extern char *rsync_path;
  extern char *shell_cmd;
  extern char *batch_name;
-@@ -444,20 +445,21 @@ static int do_recv(int f_in,int f_out,st
+@@ -454,20 +455,21 @@ static int do_recv(int f_in,int f_out,st
  {
        int pid;
        int status = 0;
 -      int error_pipe[2];
 +      int error_pipe[2], name_pipe[2];
-+      int need_name_pipe = compare_dest || read_batch;
++      int need_name_pipe = compare_dest;
  
        if (preserve_hard_links)
                init_hard_links(flist);
@@ -279,7 +245,7 @@ You must run "make proto" before compiling.
                exit_cleanup(RERR_SOCKETIO);
        }
  
-@@ -465,6 +467,11 @@ static int do_recv(int f_in,int f_out,st
+@@ -475,6 +477,11 @@ static int do_recv(int f_in,int f_out,st
  
        if ((pid = do_fork()) == 0) {
                close(error_pipe[0]);
@@ -291,7 +257,7 @@ You must run "make proto" before compiling.
                if (f_in != f_out)
                        close(f_out);
  
-@@ -474,7 +481,7 @@ static int do_recv(int f_in,int f_out,st
+@@ -484,7 +491,7 @@ static int do_recv(int f_in,int f_out,st
                /* set place to send errors */
                set_msg_fd_out(error_pipe[1]);
  
@@ -300,7 +266,7 @@ You must run "make proto" before compiling.
                io_flush(FULL_FLUSH);
                report(f_in);
  
-@@ -492,6 +499,11 @@ static int do_recv(int f_in,int f_out,st
+@@ -502,6 +509,11 @@ static int do_recv(int f_in,int f_out,st
                stop_write_batch();
  
        close(error_pipe[1]);
@@ -312,7 +278,7 @@ You must run "make proto" before compiling.
        if (f_in != f_out)
                close(f_in);
  
-@@ -499,7 +511,7 @@ static int do_recv(int f_in,int f_out,st
+@@ -509,7 +521,7 @@ static int do_recv(int f_in,int f_out,st
  
        set_msg_fd_in(error_pipe[0]);
  
@@ -321,17 +287,9 @@ You must run "make proto" before compiling.
  
        get_redo_num(); /* Read final MSG_DONE and any prior messages. */
        report(-1);
---- orig/receiver.c    2004-07-20 21:36:07
-+++ receiver.c 2004-07-19 16:44:39
-@@ -28,6 +28,7 @@ extern int max_delete;
- extern int csum_length;
- extern struct stats stats;
- extern int dry_run;
-+extern int read_batch;
- extern int am_server;
- extern int relative_paths;
- extern int keep_dirlinks;
-@@ -318,6 +319,30 @@ static int receive_data(int f_in, char *
+--- orig/receiver.c    2004-07-22 00:07:20
++++ receiver.c 2004-07-22 00:20:50
+@@ -320,6 +320,30 @@ static int receive_data(int f_in, char *
  }
  
  
@@ -362,7 +320,7 @@ You must run "make proto" before compiling.
  static void discard_receive_data(int f_in, OFF_T length)
  {
        receive_data(f_in, NULL, -1, 0, NULL, -1, length);
-@@ -328,8 +353,10 @@ static void discard_receive_data(int f_i
+@@ -330,7 +354,8 @@ static void discard_receive_data(int f_i
   * main routine for receiver process.
   *
   * Receiver process runs on the same host as the generator process. */
@@ -370,57 +328,57 @@ You must run "make proto" before compiling.
 +int recv_files(int f_in, struct file_list *flist, char *local_name,
 +             int f_name_in)
  {
-+      int next_gen_i = -1;
+       int next_gen_i = -1;
        int fd1,fd2;
-       STRUCT_STAT st;
-       char *fname, fbuf[MAXPATHLEN];
-@@ -355,6 +382,17 @@ int recv_files(int f_in, struct file_lis
+@@ -359,8 +384,15 @@ int recv_files(int f_in, struct file_lis
                i = read_int(f_in);
                if (i == -1) {
-+                      if (read_batch) {
-+                              if (next_gen_i < 0)
-+                                      next_gen_i = read_int(f_name_in);
+                       if (read_batch) {
+-                              if (next_gen_i != flist->count)
+-                                      while (read_int(batch_gen_fd) != -1) {}
 +                              while (next_gen_i < flist->count) {
-+                                      read_gen_name(f_name_in, fnamecmpbuf,
-+                                                    NULL);
++                                      if (f_name_in >= 0 && next_gen_i >= 0) {
++                                              read_gen_name(f_name_in,
++                                                      fnamecmpbuf, NULL);
++                                      }
 +                                      next_gen_i = read_int(f_name_in);
++                                      if (next_gen_i < 0)
++                                              break;
 +                              }
-+                              next_gen_i = -1;
-+                      }
-+
-                       if (phase)
-                               break;
+                               next_gen_i = -1;
+                       }
  
-@@ -397,7 +435,26 @@ int recv_files(int f_in, struct file_lis
+@@ -406,10 +438,12 @@ int recv_files(int f_in, struct file_lis
                if (verbose > 2)
                        rprintf(FINFO,"recv_files(%s)\n",fname);
  
 -              fnamecmp = fname;
-+              if (read_batch) {
-+                      if (next_gen_i < 0)
-+                              next_gen_i = read_int(f_name_in);
-+                      while (i > next_gen_i) {
-+                              read_gen_name(f_name_in, fnamecmpbuf, NULL);
-+                              next_gen_i = read_int(f_name_in);
-+                      }
-+                      if (i < next_gen_i) {
-+                              rprintf(FINFO, "skipping update for \"%s\"\n",
-+                                      fname);
-+                              discard_receive_data(f_in, file->length);
-+                              continue;
-+                      }
+-
+               if (read_batch) {
+                       while (i > next_gen_i) {
++                              if (f_name_in >= 0 && next_gen_i >= 0) {
++                                      read_gen_name(f_name_in, fnamecmpbuf,
++                                                    NULL);
++                              }
+                               next_gen_i = read_int(batch_gen_fd);
+                               if (next_gen_i == -1)
+                                       next_gen_i = flist->count;
+@@ -420,8 +454,14 @@ int recv_files(int f_in, struct file_lis
+                               discard_receive_data(f_in, file->length);
+                               continue;
+                       }
 +                      next_gen_i = -1;
-+              }
-+
+               }
 +              if (f_name_in >= 0)
 +                      fnamecmp = read_gen_name(f_name_in, fnamecmpbuf, fname);
 +              else
 +                      fnamecmp = fname;
++
                if (server_exclude_list.head
                    && check_exclude(&server_exclude_list, fname,
-@@ -414,14 +471,6 @@ int recv_files(int f_in, struct file_lis
+                                    S_ISDIR(file->mode)) < 0) {
+@@ -437,14 +477,6 @@ int recv_files(int f_in, struct file_lis
                /* open the file */
                fd1 = do_open(fnamecmp, O_RDONLY, 0);
  
index f8f326a..12c219b 100644 (file)
@@ -48,7 +48,7 @@ can't say if I've left any cleanup/compatibility errors in the code.
  
  TLS_OBJ = tls.o syscall.o lib/permstring.o
  
---- orig/cleanup.c     2004-07-02 18:11:26
+--- orig/cleanup.c     2004-07-20 21:36:07
 +++ cleanup.c  2004-07-03 20:22:28
 @@ -24,6 +24,9 @@
  extern int io_error;
@@ -60,7 +60,7 @@ can't say if I've left any cleanup/compatibility errors in the code.
  
  /**
   * Close all open sockets and files, allowing a (somewhat) graceful
-@@ -98,6 +101,11 @@ void _exit_cleanup(int code, const char 
+@@ -97,6 +100,11 @@ void _exit_cleanup(int code, const char 
        signal(SIGUSR1, SIG_IGN);
        signal(SIGUSR2, SIG_IGN);
  
@@ -72,7 +72,7 @@ can't say if I've left any cleanup/compatibility errors in the code.
        if (verbose > 3) {
                rprintf(FINFO,"_exit_cleanup(code=%d, file=%s, line=%d): entered\n",
                        code, file, line);
---- orig/clientserver.c        2004-07-15 02:21:10
+--- orig/clientserver.c        2004-07-17 15:20:05
 +++ clientserver.c     2004-07-03 20:22:28
 @@ -46,6 +46,9 @@ extern int io_timeout;
  extern int orig_umask;
@@ -168,7 +168,7 @@ can't say if I've left any cleanup/compatibility errors in the code.
  /* this is called when a connection is established to a client
     and we want to start talking. The setup of the system is done from
     here */
-@@ -545,6 +594,20 @@ int start_daemon(int f_in, int f_out)
+@@ -547,6 +596,20 @@ int start_daemon(int f_in, int f_out)
                        return -1;
                }
  
@@ -213,11 +213,11 @@ can't say if I've left any cleanup/compatibility errors in the code.
  AC_MSG_CHECKING([whether to call shutdown on all sockets])
  case $host_os in
        *cygwin* ) AC_MSG_RESULT(yes)
---- orig/main.c        2004-07-15 17:02:03
+--- orig/main.c        2004-07-21 23:59:35
 +++ main.c     2004-07-15 02:40:51
-@@ -54,6 +54,9 @@ extern int read_batch;
- extern int write_batch;
+@@ -55,6 +55,9 @@ extern int write_batch;
  extern int batch_fd;
+ extern int batch_gen_fd;
  extern int filesfrom_fd;
 +#ifdef HAVE_OPENSSL
 +extern int use_ssl;
@@ -225,7 +225,7 @@ can't say if I've left any cleanup/compatibility errors in the code.
  extern pid_t cleanup_child_pid;
  extern char *files_from;
  extern char *remote_filesfrom_file;
-@@ -748,18 +751,32 @@ static int start_client(int argc, char *
+@@ -750,18 +753,32 @@ static int start_client(int argc, char *
        pid_t pid;
        int f_in,f_out;
        int rc;
@@ -261,7 +261,7 @@ can't say if I've left any cleanup/compatibility errors in the code.
                p = strchr(host,'/');
                if (p) {
                        *p = 0;
-@@ -807,12 +824,27 @@ static int start_client(int argc, char *
+@@ -809,12 +826,27 @@ static int start_client(int argc, char *
                        argv++;
                } else { /* source is local */
                        am_sender = 1;
@@ -291,7 +291,7 @@ can't say if I've left any cleanup/compatibility errors in the code.
                                p = strchr(host,'/');
                                if (p) {
                                        *p = 0;
---- orig/options.c     2004-07-16 20:07:22
+--- orig/options.c     2004-07-21 23:59:35
 +++ options.c  2004-07-16 20:19:50
 @@ -134,6 +134,14 @@ int quiet = 0;
  int always_checksum = 0;
@@ -390,7 +390,7 @@ can't say if I've left any cleanup/compatibility errors in the code.
                default:
                        /* A large opt value means that set_refuse_options()
                         * turned this option off (opt-BASE is its index). */
-@@ -756,6 +789,17 @@ int parse_arguments(int *argc, const cha
+@@ -761,6 +794,17 @@ int parse_arguments(int *argc, const cha
        if (do_progress && !verbose)
                verbose = 1;
  
@@ -408,7 +408,7 @@ can't say if I've left any cleanup/compatibility errors in the code.
        if (bwlimit) {
                bwlimit_writemax = (size_t)bwlimit * 128;
                if (bwlimit_writemax < 512)
---- orig/rsync.h       2004-07-16 20:07:23
+--- orig/rsync.h       2004-07-20 21:36:08
 +++ rsync.h    2004-07-03 20:22:28
 @@ -32,6 +32,7 @@
  
index 0078960..ae2b948 100644 (file)
@@ -3,7 +3,7 @@ to be simpler and more efficient by Wayne Davison.
 
 Do we need configure support for mktime()?
 
---- orig/io.c  2004-07-17 15:20:05
+--- orig/io.c  2004-07-21 23:59:35
 +++ io.c       2004-07-17 15:28:36
 @@ -49,6 +49,7 @@ extern int am_sender;
  extern int eol_nulls;
@@ -13,7 +13,7 @@ Do we need configure support for mktime()?
  extern char *remote_filesfrom_file;
  extern struct stats stats;
  
-@@ -134,17 +135,22 @@ static void check_timeout(void)
+@@ -135,17 +136,22 @@ static void check_timeout(void)
  {
        time_t t;
  
@@ -41,7 +41,7 @@ Do we need configure support for mktime()?
                if (!am_server && !am_daemon) {
                        rprintf(FERROR, "io timeout after %d seconds - exiting\n",
                                (int)(t-last_io));
---- orig/options.c     2004-07-16 20:07:22
+--- orig/options.c     2004-07-21 23:59:35
 +++ options.c  2004-07-15 17:06:09
 @@ -96,6 +96,7 @@ int blocking_io = -1;
  int checksum_seed = 0;
@@ -114,7 +114,7 @@ Do we need configure support for mktime()?
                default:
                        /* A large opt value means that set_refuse_options()
                         * turned this option off (opt-BASE is its index). */
-@@ -930,6 +966,15 @@ void server_options(char **args,int *arg
+@@ -935,6 +971,15 @@ void server_options(char **args,int *arg
                args[ac++] = arg;
        }
  
@@ -130,7 +130,7 @@ Do we need configure support for mktime()?
        if (backup_dir) {
                args[ac++] = "--backup-dir";
                args[ac++] = backup_dir;
---- orig/rsync.yo      2004-07-16 20:07:23
+--- orig/rsync.yo      2004-07-20 21:36:08
 +++ rsync.yo   2004-07-15 02:44:40
 @@ -348,6 +348,8 @@ verb(
       --log-format=FORMAT     log file transfers using specified format
@@ -141,7 +141,7 @@ Do we need configure support for mktime()?
       --write-batch=FILE      write a batch to FILE 
       --read-batch=FILE       read a batch from FILE
       --checksum-seed=NUM     set block/file checksum seed
-@@ -909,6 +911,19 @@ transfer was too fast, it will wait befo
+@@ -912,6 +914,19 @@ transfer was too fast, it will wait befo
  result is an average transfer rate equaling the specified limit. A value
  of zero specifies no limit.
  
@@ -159,7 +159,7 @@ Do we need configure support for mktime()?
 +number of minutes rsync will run for.
 +
  dit(bf(--write-batch=FILE)) Record a file that can later be applied to
- anonther identical destination with --read-batch. See the "BATCH MODE"
+ another identical destination with --read-batch. See the "BATCH MODE"
  section for details.
 --- orig/util.c        2004-06-09 21:54:47
 +++ util.c     2004-07-03 20:23:22