Updated.
authorWayne Davison <wayned@samba.org>
Wed, 21 Jul 2004 01:52:03 +0000 (01:52 +0000)
committerWayne Davison <wayned@samba.org>
Wed, 21 Jul 2004 01:52:03 +0000 (01:52 +0000)
ODBC-dblog.diff
filter.diff
fsync.diff
fuzzy.diff
g2r-basis-filename.diff
link-by-hash.diff
max-size.diff
remove-sent-files.diff

index ac4c198062842b5cedcf22b2ee0efc73d790325e..f72c04a73ed7b5e968986836bea73755994094bf 100644 (file)
@@ -99,9 +99,9 @@ This patch adds the following options:
  OBJS2=options.o flist.o io.o compat.o hlink.o token.o uidlist.o socket.o \
        fileio.o batch.o clientname.o
  OBJS3=progress.o pipe.o
  OBJS2=options.o flist.o io.o compat.o hlink.o token.o uidlist.o socket.o \
        fileio.o batch.o clientname.o
  OBJS3=progress.o pipe.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:18
 +++ cleanup.c  2004-07-03 20:22:18
-@@ -141,8 +141,12 @@ void _exit_cleanup(int code, const char 
+@@ -138,8 +138,12 @@ void _exit_cleanup(int code, const char 
                        code = RERR_VANISHED;
        }
  
                        code = RERR_VANISHED;
        }
  
@@ -115,7 +115,7 @@ This patch adds the following options:
  
        if (verbose > 2) {
                rprintf(FINFO,"_exit_cleanup(code=%d, file=%s, line=%d): about to call exit(%d)\n",
  
        if (verbose > 2) {
                rprintf(FINFO,"_exit_cleanup(code=%d, file=%s, line=%d): about to call exit(%d)\n",
---- 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:18
 @@ -316,6 +316,9 @@ static int rsync_module(int f_in, int f_
        exclude_path_prefix = NULL;
 +++ clientserver.c     2004-07-03 20:22:18
 @@ -316,6 +316,9 @@ static int rsync_module(int f_in, int f_
        exclude_path_prefix = NULL;
@@ -697,7 +697,7 @@ This patch adds the following options:
  {
        int i;
        for (i = 0; rerr_names[i].name; i++) {
  {
        int i;
        for (i = 0; rerr_names[i].name; i++) {
---- orig/main.c        2004-07-15 17:02:03
+--- orig/main.c        2004-07-19 17:14:44
 +++ main.c     2004-07-03 20:22:18
 @@ -134,6 +134,9 @@ static void report(int f)
  
 +++ main.c     2004-07-03 20:22:18
 @@ -134,6 +134,9 @@ static void report(int f)
  
@@ -709,22 +709,21 @@ This patch adds the following options:
                if (f == -1 || !am_sender)
                        return;
        }
                if (f == -1 || !am_sender)
                        return;
        }
---- orig/receiver.c    2004-07-16 20:07:22
-+++ receiver.c 2004-07-03 20:22:18
-@@ -490,7 +490,9 @@ int recv_files(int f_in, struct file_lis
-               recv_ok = receive_data(f_in,mapbuf,fd2,fname,file->length);
+--- orig/receiver.c    2004-07-20 21:36:07
++++ receiver.c 2004-07-20 21:47:47
+@@ -512,6 +512,9 @@ int recv_files(int f_in, struct file_lis
+                                      fname, fd2, file->length);
  
                log_recv(file, &initial_stats);
  
                log_recv(file, &initial_stats);
--
 +#ifdef HAVE_LIBODBC
 +              db_log_transfer(file, &initial_stats, "receive");
 +#endif
 +#ifdef HAVE_LIBODBC
 +              db_log_transfer(file, &initial_stats, "receive");
 +#endif
-               if (mapbuf)
-                       unmap_file(mapbuf);
                if (fd1 != -1)
                if (fd1 != -1)
---- orig/sender.c      2004-07-16 20:07:23
+                       close(fd1);
+--- orig/sender.c      2004-07-20 21:36:08
 +++ sender.c   2004-07-15 02:37:48
 +++ sender.c   2004-07-15 02:37:48
-@@ -231,6 +231,9 @@ void send_files(struct file_list *flist,
+@@ -230,6 +230,9 @@ void send_files(struct file_list *flist,
  
                match_sums(f_out, s, mbuf, st.st_size);
                log_send(file, &initial_stats);
  
                match_sums(f_out, s, mbuf, st.st_size);
                log_send(file, &initial_stats);
index af1dc7fd9fb0a58b99c3c3c6f94a0e7aa8eab35b..6d640a23aa9a773b8ae9b5e7fe2c751b6623f7fb 100644 (file)
@@ -601,15 +601,15 @@ contained a slash.
 +                      if (isdigit(*arg))
 +                              inherit_exclude_levels = atoi(arg);
 +                      else if (*arg == '.') {
 +                      if (isdigit(*arg))
 +                              inherit_exclude_levels = atoi(arg);
 +                      else if (*arg == '.') {
-+                              if (!arg[1])
++                              if (!*++arg)
 +                                      inherit_exclude_levels = 0;
 +                                      inherit_exclude_levels = 0;
-+                              else if (arg[1] == '.') {
-+                                      inherit_exclude_levels = 0;
-+                                      arg--;
-+                                      do {
++                              else if (*arg == '.') {
++                                      inherit_exclude_levels = 1;
++                                      arg++;
++                                      while (strncmp(arg, "/..", 3) == 0) {
 +                                              inherit_exclude_levels++;
 +                                              arg += 3;
 +                                              inherit_exclude_levels++;
 +                                              arg += 3;
-+                                      } while (strncmp(arg, "/..", 3) == 0);
++                                      }
 +                                      if (*arg)
 +                                              inherit_exclude_levels = -1;
 +                              }
 +                                      if (*arg)
 +                                              inherit_exclude_levels = -1;
 +                              }
index 4757a4eef16815ae4f0e7bddeabb3b13c43f445b..4767406bc106d2cda2d8260d7d4d7ba957b95b0a 100644 (file)
@@ -1,7 +1,7 @@
 This patch from Sami Farin lets you specify --fsync if you want fsync()
 to be called on every file we write.
 
 This patch from Sami Farin lets you specify --fsync if you want fsync()
 to be called on every file we write.
 
---- orig/options.c     2004-07-16 20:07:22
+--- orig/options.c     2004-07-20 21:36:07
 +++ options.c  2004-07-03 20:18:13
 @@ -38,6 +38,7 @@ int make_backups = 0;
   **/
 +++ options.c  2004-07-03 20:18:13
 @@ -38,6 +38,7 @@ int make_backups = 0;
   **/
@@ -37,7 +37,7 @@ to be called on every file we write.
        if (compare_dest && am_sender) {
                /* the server only needs this option if it is not the sender,
                 *   and it may be an older version that doesn't know this
        if (compare_dest && am_sender) {
                /* the server only needs this option if it is not the sender,
                 *   and it may be an older version that doesn't know this
---- orig/receiver.c    2004-07-16 20:07:22
+--- orig/receiver.c    2004-07-20 21:36:07
 +++ receiver.c 2004-07-16 20:13:31
 @@ -35,6 +35,7 @@ extern int preserve_hard_links;
  extern int preserve_perms;
 +++ receiver.c 2004-07-16 20:13:31
 @@ -35,6 +35,7 @@ extern int preserve_hard_links;
  extern int preserve_perms;
@@ -47,7 +47,7 @@ to be called on every file we write.
  extern char *tmpdir;
  extern char *compare_dest;
  extern int make_backups;
  extern char *tmpdir;
  extern char *compare_dest;
  extern int make_backups;
-@@ -289,6 +290,12 @@ static int receive_data(int f_in,struct 
+@@ -304,6 +305,12 @@ static int receive_data(int f_in, char *
                exit_cleanup(RERR_FILEIO);
        }
  
                exit_cleanup(RERR_FILEIO);
        }
  
@@ -59,7 +59,7 @@ to be called on every file we write.
 +
        sum_end(file_sum1);
  
 +
        sum_end(file_sum1);
  
-       read_buf(f_in,file_sum2,MD4_SUM_LENGTH);
+       if (mapbuf)
 --- orig/util.c        2004-06-09 21:54:47
 +++ util.c     2004-07-03 20:18:13
 @@ -32,6 +32,7 @@ extern int dry_run;
 --- orig/util.c        2004-06-09 21:54:47
 +++ util.c     2004-07-03 20:18:13
 @@ -32,6 +32,7 @@ extern int dry_run;
index bce2230401d8aa834e208c61876a8f39a02c4ed2..fa66efee6f8affd8f055cba61ed4b3bdf44fca89 100644 (file)
@@ -7,7 +7,7 @@ Very lightly tested.
 Be sure to run "make proto" before "make".
 
 --- orig/generator.c   2004-07-17 15:50:09
 Be sure to run "make proto" before "make".
 
 --- orig/generator.c   2004-07-17 15:50:09
-+++ generator.c        2004-07-03 20:09:05
++++ generator.c        2004-07-20 21:49:24
 @@ -41,6 +41,7 @@ extern int ignore_times;
  extern int size_only;
  extern int io_timeout;
 @@ -41,6 +41,7 @@ extern int ignore_times;
  extern int size_only;
  extern int io_timeout;
@@ -16,7 +16,7 @@ Be sure to run "make proto" before "make".
  extern int always_checksum;
  extern char *compare_dest;
  extern int link_dest;
  extern int always_checksum;
  extern char *compare_dest;
  extern int link_dest;
-@@ -241,6 +242,94 @@ static void generate_and_send_sums(struc
+@@ -248,6 +249,94 @@ static void generate_and_send_sums(int f
  }
  
  
  }
  
  
@@ -111,16 +111,16 @@ Be sure to run "make proto" before "make".
  
  /*
   * Acts on file number @p i from @p flist, whose name is @p fname.
  
  /*
   * Acts on file number @p i from @p flist, whose name is @p fname.
-@@ -256,7 +345,7 @@ static void recv_generator(char *fname, 
+@@ -262,7 +351,7 @@ static void recv_generator(char *fname, 
+ {
        int fd = -1;
        STRUCT_STAT st;
        int fd = -1;
        STRUCT_STAT st;
-       struct map_struct *mapbuf = NULL;
 -      int statret;
 +      int statret, fuzzy_file = 0;
        char *fnamecmp;
        char fnamecmpbuf[MAXPATHLEN];
  
 -      int statret;
 +      int statret, fuzzy_file = 0;
        char *fnamecmp;
        char fnamecmpbuf[MAXPATHLEN];
  
-@@ -436,6 +525,14 @@ static void recv_generator(char *fname, 
+@@ -442,6 +531,14 @@ static void recv_generator(char *fname, 
        } else
                *fnamecmpbuf = '\0';
  
        } else
                *fnamecmpbuf = '\0';
  
@@ -135,7 +135,7 @@ Be sure to run "make proto" before "make".
        if (statret == -1) {
                if (preserve_hard_links && hard_link_check(file, HL_SKIP))
                        return;
        if (statret == -1) {
                if (preserve_hard_links && hard_link_check(file, HL_SKIP))
                        return;
-@@ -473,7 +570,7 @@ static void recv_generator(char *fname, 
+@@ -479,7 +576,7 @@ static void recv_generator(char *fname, 
                return;
        }
  
                return;
        }
  
@@ -163,7 +163,7 @@ Be sure to run "make proto" before "make".
  
        if (preserve_hard_links)
                init_hard_links(flist);
  
        if (preserve_hard_links)
                init_hard_links(flist);
---- orig/options.c     2004-07-16 20:07:22
+--- orig/options.c     2004-07-20 21:36:07
 +++ options.c  2004-07-16 20:14:12
 @@ -85,6 +85,7 @@ int safe_symlinks = 0;
  int copy_unsafe_links = 0;
 +++ options.c  2004-07-16 20:14:12
 @@ -85,6 +85,7 @@ int safe_symlinks = 0;
  int copy_unsafe_links = 0;
@@ -199,7 +199,7 @@ Be sure to run "make proto" before "make".
        *argc = ac;
        return;
  
        *argc = ac;
        return;
  
---- orig/receiver.c    2004-07-17 21:27:55
+--- orig/receiver.c    2004-07-19 16:44:39
 +++ receiver.c 2004-07-03 20:09:05
 @@ -37,7 +37,6 @@ extern int preserve_perms;
  extern int cvs_exclude;
 +++ receiver.c 2004-07-03 20:09:05
 @@ -37,7 +37,6 @@ extern int preserve_perms;
  extern int cvs_exclude;
@@ -209,7 +209,7 @@ Be sure to run "make proto" before "make".
  extern int make_backups;
  extern int do_progress;
  extern char *backup_dir;
  extern int make_backups;
  extern int do_progress;
  extern char *backup_dir;
---- orig/rsync.yo      2004-07-19 08:27:29
+--- orig/rsync.yo      2004-07-20 21:36:08
 +++ rsync.yo   2004-07-03 19:27:25
 @@ -326,6 +326,7 @@ verb(
   -T  --temp-dir=DIR          create temporary files in directory DIR
 +++ rsync.yo   2004-07-03 19:27:25
 @@ -326,6 +326,7 @@ verb(
   -T  --temp-dir=DIR          create temporary files in directory DIR
index 15b87d17eab12e5430a146da041961e74a1c22cf..fe3367694a9ad5f37e45aebef865f56146501ac5 100644 (file)
@@ -13,9 +13,9 @@ generator to determine what files get updated).
 
 You must run "make proto" before compiling.
 
 
 You must run "make proto" before compiling.
 
---- orig/generator.c   2004-07-17 16:30:20
+--- orig/generator.c   2004-07-20 21:36:07
 +++ generator.c        2004-07-17 15:50:09
 +++ generator.c        2004-07-17 15:50:09
-@@ -251,11 +251,11 @@ static void generate_and_send_sums(struc
+@@ -258,9 +258,9 @@ static void generate_and_send_sums(int f
   * out.  It might be wrong.
   */
  static void recv_generator(char *fname, struct file_struct *file, int i,
   * out.  It might be wrong.
   */
  static void recv_generator(char *fname, struct file_struct *file, int i,
@@ -25,12 +25,9 @@ You must run "make proto" before compiling.
 -      int fd;
 +      int fd = -1;
        STRUCT_STAT st;
 -      int fd;
 +      int fd = -1;
        STRUCT_STAT st;
--      struct map_struct *mapbuf;
-+      struct map_struct *mapbuf = NULL;
        int statret;
        char *fnamecmp;
        int statret;
        char *fnamecmp;
-       char fnamecmpbuf[MAXPATHLEN];
-@@ -398,9 +398,6 @@ static void recv_generator(char *fname, 
+@@ -404,9 +404,6 @@ static void recv_generator(char *fname, 
        }
  #endif
  
        }
  #endif
  
@@ -40,7 +37,7 @@ You must run "make proto" before compiling.
        if (preserve_hard_links && hard_link_check(file, HL_CHECK_MASTER))
                return;
  
        if (preserve_hard_links && hard_link_check(file, HL_CHECK_MASTER))
                return;
  
-@@ -418,8 +415,10 @@ static void recv_generator(char *fname, 
+@@ -424,8 +421,10 @@ static void recv_generator(char *fname, 
                statret = link_stat(fnamecmpbuf, &st, 0);
                if (!S_ISREG(st.st_mode))
                        statret = -1;
                statret = link_stat(fnamecmpbuf, &st, 0);
                if (!S_ISREG(st.st_mode))
                        statret = -1;
@@ -52,7 +49,7 @@ You must run "make proto" before compiling.
  #if HAVE_LINK
                else if (link_dest && !dry_run) {
                        if (do_link(fnamecmpbuf, fname) != 0) {
  #if HAVE_LINK
                else if (link_dest && !dry_run) {
                        if (do_link(fnamecmpbuf, fname) != 0) {
-@@ -427,22 +426,22 @@ static void recv_generator(char *fname, 
+@@ -433,22 +432,22 @@ static void recv_generator(char *fname, 
                                        rsyserr(FINFO, errno, "link %s => %s",
                                                fnamecmpbuf, fname);
                                }
                                        rsyserr(FINFO, errno, "link %s => %s",
                                                fnamecmpbuf, fname);
                                }
@@ -83,7 +80,7 @@ You must run "make proto" before compiling.
                        rsyserr(FERROR, errno,
                                "recv_generator: failed to open %s",
                                full_fname(fname));
                        rsyserr(FERROR, errno,
                                "recv_generator: failed to open %s",
                                full_fname(fname));
-@@ -451,26 +450,23 @@ static void recv_generator(char *fname, 
+@@ -457,26 +456,23 @@ static void recv_generator(char *fname, 
        }
  
        if (!S_ISREG(st.st_mode)) {
        }
  
        if (!S_ISREG(st.st_mode)) {
@@ -115,7 +112,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);
            && cmp_modtime(st.st_mtime, file->modtime) > 0) {
                if (verbose > 1)
                        rprintf(FINFO,"%s is newer\n",fname);
-@@ -478,21 +474,17 @@ static void recv_generator(char *fname, 
+@@ -484,21 +480,17 @@ static void recv_generator(char *fname, 
        }
  
        if (skip_file(fname, file, &st)) {
        }
  
        if (skip_file(fname, file, &st)) {
@@ -143,7 +140,7 @@ You must run "make proto" before compiling.
  
        /* open the file */
        fd = do_open(fnamecmp, O_RDONLY, 0);
  
        /* open the file */
        fd = do_open(fnamecmp, O_RDONLY, 0);
-@@ -503,15 +495,12 @@ static void recv_generator(char *fname, 
+@@ -509,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;
                /* pretend the file didn't exist */
                if (preserve_hard_links && hard_link_check(file, HL_SKIP))
                        return;
@@ -154,19 +151,13 @@ You must run "make proto" before compiling.
 +              goto notify_others;
        }
  
 +              goto notify_others;
        }
  
-       if (st.st_size > 0)
-               mapbuf = map_file(fd,st.st_size);
--      else
--              mapbuf = NULL;
        if (verbose > 3) {
        if (verbose > 3) {
-               rprintf(FINFO,"gen mapped %s of size %.0f\n", fnamecmp,
-@@ -521,16 +510,43 @@ static void recv_generator(char *fname, 
+@@ -522,14 +513,41 @@ static void recv_generator(char *fname, 
        if (verbose > 2)
                rprintf(FINFO, "generating and sending sums for %d\n", i);
  
 -      write_int(f_out,i);
        if (verbose > 2)
                rprintf(FINFO, "generating and sending sums for %d\n", i);
  
 -      write_int(f_out,i);
--      generate_and_send_sums(mapbuf, st.st_size, f_out);
+-      generate_and_send_sums(fd, st.st_size, f_out);
 +notify_others:
 +      if (f_nameout >= 0) {
 +              uchar lenbuf[3], *lb = lenbuf;
 +notify_others:
 +      if (f_nameout >= 0) {
 +              uchar lenbuf[3], *lb = lenbuf;
@@ -188,18 +179,14 @@ You must run "make proto" before compiling.
 +      }
  
 -      close(fd);
 +      }
  
 -      close(fd);
--      if (mapbuf)
--              unmap_file(mapbuf);
 +      if (read_batch)
 +              return;
 +
 +      write_int(f_out, i);
 +      if (statret == 0) {
 +      if (read_batch)
 +              return;
 +
 +      write_int(f_out, i);
 +      if (statret == 0) {
-+              generate_and_send_sums(mapbuf, st.st_size, f_out);
++              generate_and_send_sums(fd, st.st_size, f_out);
 +
 +              close(fd);
 +
 +              close(fd);
-+              if (mapbuf)
-+                      unmap_file(mapbuf);
 +      } else if (!dry_run)
 +              write_sum_head(f_out, NULL);
  }
 +      } else if (!dry_run)
 +              write_sum_head(f_out, NULL);
  }
@@ -211,7 +198,7 @@ You must run "make proto" before compiling.
  {
        int i;
        int phase = 0;
  {
        int i;
        int phase = 0;
-@@ -571,7 +587,7 @@ void generate_files(int f_out, struct fi
+@@ -570,7 +588,7 @@ void generate_files(int f_out, struct fi
                }
  
                recv_generator(local_name ? local_name : f_name_to(file, fbuf),
                }
  
                recv_generator(local_name ? local_name : f_name_to(file, fbuf),
@@ -220,7 +207,7 @@ You must run "make proto" before compiling.
        }
  
        phase++;
        }
  
        phase++;
-@@ -582,13 +598,15 @@ void generate_files(int f_out, struct fi
+@@ -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);
                rprintf(FINFO,"generate_files phase=%d\n",phase);
  
        write_int(f_out, -1);
@@ -237,7 +224,7 @@ You must run "make proto" before compiling.
        }
  
        phase++;
        }
  
        phase++;
-@@ -596,6 +614,8 @@ void generate_files(int f_out, struct fi
+@@ -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);
                rprintf(FINFO,"generate_files phase=%d\n",phase);
  
        write_int(f_out, -1);
@@ -246,7 +233,7 @@ You must run "make proto" before compiling.
  
        if (preserve_hard_links)
                do_hard_links();
  
        if (preserve_hard_links)
                do_hard_links();
-@@ -607,7 +627,7 @@ void generate_files(int f_out, struct fi
+@@ -606,7 +628,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),
                if (!file->basename || !S_ISDIR(file->mode))
                        continue;
                recv_generator(local_name ? local_name : f_name(file),
@@ -334,7 +321,7 @@ You must run "make proto" before compiling.
  
        get_redo_num(); /* Read final MSG_DONE and any prior messages. */
        report(-1);
  
        get_redo_num(); /* Read final MSG_DONE and any prior messages. */
        report(-1);
---- orig/receiver.c    2004-07-19 17:06:10
+--- 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;
 +++ receiver.c 2004-07-19 16:44:39
 @@ -28,6 +28,7 @@ extern int max_delete;
  extern int csum_length;
@@ -344,7 +331,7 @@ You must run "make proto" before compiling.
  extern int am_server;
  extern int relative_paths;
  extern int keep_dirlinks;
  extern int am_server;
  extern int relative_paths;
  extern int keep_dirlinks;
-@@ -303,6 +304,30 @@ static int receive_data(int f_in,struct 
+@@ -318,6 +319,30 @@ static int receive_data(int f_in, char *
  }
  
  
  }
  
  
@@ -374,8 +361,8 @@ You must run "make proto" before compiling.
 +
  static void discard_receive_data(int f_in, OFF_T length)
  {
 +
  static void discard_receive_data(int f_in, OFF_T length)
  {
-       receive_data(f_in, NULL, -1, NULL, length);
-@@ -313,8 +338,10 @@ static void discard_receive_data(int f_i
+       receive_data(f_in, NULL, -1, 0, NULL, -1, length);
+@@ -328,8 +353,10 @@ static void discard_receive_data(int f_i
   * main routine for receiver process.
   *
   * Receiver process runs on the same host as the generator process. */
   * main routine for receiver process.
   *
   * Receiver process runs on the same host as the generator process. */
@@ -387,7 +374,7 @@ You must run "make proto" before compiling.
        int fd1,fd2;
        STRUCT_STAT st;
        char *fname, fbuf[MAXPATHLEN];
        int fd1,fd2;
        STRUCT_STAT st;
        char *fname, fbuf[MAXPATHLEN];
-@@ -341,6 +368,17 @@ int recv_files(int f_in, struct file_lis
+@@ -355,6 +382,17 @@ int recv_files(int f_in, struct file_lis
  
                i = read_int(f_in);
                if (i == -1) {
  
                i = read_int(f_in);
                if (i == -1) {
@@ -405,7 +392,7 @@ You must run "make proto" before compiling.
                        if (phase)
                                break;
  
                        if (phase)
                                break;
  
-@@ -383,7 +421,26 @@ int recv_files(int f_in, struct file_lis
+@@ -397,7 +435,26 @@ int recv_files(int f_in, struct file_lis
                if (verbose > 2)
                        rprintf(FINFO,"recv_files(%s)\n",fname);
  
                if (verbose > 2)
                        rprintf(FINFO,"recv_files(%s)\n",fname);
  
@@ -433,7 +420,7 @@ You must run "make proto" before compiling.
  
                if (server_exclude_list.head
                    && check_exclude(&server_exclude_list, fname,
  
                if (server_exclude_list.head
                    && check_exclude(&server_exclude_list, fname,
-@@ -400,14 +457,6 @@ int recv_files(int f_in, struct file_lis
+@@ -414,14 +471,6 @@ int recv_files(int f_in, struct file_lis
                /* open the file */
                fd1 = do_open(fnamecmp, O_RDONLY, 0);
  
                /* open the file */
                fd1 = do_open(fnamecmp, O_RDONLY, 0);
  
index 202c10048088fd9afcb50853f8f48a10bbd4b659..a4eb501d0775d62404aa801bd7cbf0419d84cdb6 100644 (file)
@@ -367,7 +367,7 @@ the file's name.
 +}
 +
 +#endif
 +}
 +
 +#endif
---- orig/options.c     2004-07-16 20:07:22
+--- orig/options.c     2004-07-20 21:36:07
 +++ options.c  2004-07-03 20:20:15
 @@ -125,6 +125,7 @@ char *log_format = NULL;
  char *password_file = NULL;
 +++ options.c  2004-07-03 20:20:15
 @@ -125,6 +125,7 @@ char *log_format = NULL;
  char *password_file = NULL;
@@ -434,8 +434,8 @@ the file's name.
        if (files_from && (!am_sender || remote_filesfrom_file)) {
                if (remote_filesfrom_file) {
                        args[ac++] = "--files-from";
        if (files_from && (!am_sender || remote_filesfrom_file)) {
                if (remote_filesfrom_file) {
                        args[ac++] = "--files-from";
---- orig/receiver.c    2004-07-19 17:06:10
-+++ receiver.c 2004-07-19 17:07:31
+--- orig/receiver.c    2004-07-20 21:36:07
++++ receiver.c 2004-07-20 21:44:05
 @@ -37,6 +37,7 @@ extern int cvs_exclude;
  extern int io_error;
  extern char *tmpdir;
 @@ -37,6 +37,7 @@ extern int cvs_exclude;
  extern int io_error;
  extern char *tmpdir;
@@ -444,22 +444,24 @@ the file's name.
  extern int make_backups;
  extern int do_progress;
  extern char *backup_dir;
  extern int make_backups;
  extern int do_progress;
  extern char *backup_dir;
-@@ -200,10 +201,11 @@ static int get_tmpname(char *fnametmp, c
+@@ -200,12 +201,13 @@ static int get_tmpname(char *fnametmp, c
  
  
  
  
- static int receive_data(int f_in,struct map_struct *mapbuf,int fd,char *fname,
--                      OFF_T total_size)
-+                      OFF_T total_size,char *md4)
+ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
+-                      char *fname, int fd, OFF_T total_size)
++                      char *fname, int fd, OFF_T total_size, char *md4)
  {
  {
-       int i;
+       static char file_sum1[MD4_SUM_LENGTH];
+       static char file_sum2[MD4_SUM_LENGTH];
+       struct map_struct *mapbuf;
        struct sum_struct sum;
 +      struct mdfour mdfour_data;
        unsigned int len;
        OFF_T offset = 0;
        OFF_T offset2;
        struct sum_struct sum;
 +      struct mdfour mdfour_data;
        unsigned int len;
        OFF_T offset = 0;
        OFF_T offset2;
-@@ -214,6 +216,9 @@ static int receive_data(int f_in,struct 
-       read_sum_head(f_in, &sum);
+@@ -224,6 +226,9 @@ static int receive_data(int f_in, char *
+       } else
+               mapbuf = NULL;
  
 +      if (md4)
 +              mdfour_begin(&mdfour_data);
  
 +      if (md4)
 +              mdfour_begin(&mdfour_data);
@@ -467,7 +469,7 @@ the file's name.
        sum_init(checksum_seed);
  
        while ((i = recv_token(f_in, &data)) != 0) {
        sum_init(checksum_seed);
  
        while ((i = recv_token(f_in, &data)) != 0) {
-@@ -230,6 +235,8 @@ static int receive_data(int f_in,struct 
+@@ -240,6 +245,8 @@ static int receive_data(int f_in, char *
                        cleanup_got_literal = 1;
  
                        sum_update(data,i);
                        cleanup_got_literal = 1;
  
                        sum_update(data,i);
@@ -476,7 +478,7 @@ the file's name.
  
                        if (fd != -1 && write_file(fd,data,i) != i) {
                                rsyserr(FERROR, errno, "write failed on %s",
  
                        if (fd != -1 && write_file(fd,data,i) != i) {
                                rsyserr(FERROR, errno, "write failed on %s",
-@@ -257,6 +264,8 @@ static int receive_data(int f_in,struct 
+@@ -267,6 +274,8 @@ static int receive_data(int f_in, char *
  
                        see_token(map, len);
                        sum_update(map,len);
  
                        see_token(map, len);
                        sum_update(map,len);
@@ -485,34 +487,35 @@ the file's name.
                }
  
                if (!inplace || offset != offset2) {
                }
  
                if (!inplace || offset != offset2) {
-@@ -293,6 +302,8 @@ static int receive_data(int f_in,struct 
+@@ -305,6 +314,8 @@ static int receive_data(int f_in, char *
        }
  
        sum_end(file_sum1);
 +      if (md4)
 +              mdfour_result(&mdfour_data, (unsigned char*)md4);
  
        }
  
        sum_end(file_sum1);
 +      if (md4)
 +              mdfour_result(&mdfour_data, (unsigned char*)md4);
  
-       read_buf(f_in,file_sum2,MD4_SUM_LENGTH);
-       if (verbose > 2)
-@@ -305,7 +316,7 @@ static int receive_data(int f_in,struct 
+       if (mapbuf)
+               unmap_file(mapbuf);
+@@ -320,7 +331,7 @@ static int receive_data(int f_in, char *
  
  static void discard_receive_data(int f_in, OFF_T length)
  {
  
  static void discard_receive_data(int f_in, OFF_T length)
  {
--      receive_data(f_in, NULL, -1, NULL, length);
-+      receive_data(f_in, NULL, -1, NULL, length, NULL);
+-      receive_data(f_in, NULL, -1, 0, NULL, -1, length);
++      receive_data(f_in, NULL, -1, 0, NULL, -1, length, NULL);
  }
  
  
  }
  
  
-@@ -510,7 +521,11 @@ int recv_files(int f_in, struct file_lis
+@@ -508,8 +519,12 @@ int recv_files(int f_in, struct file_lis
                        rprintf(FINFO, "%s\n", fname);
  
                /* recv file data */
                        rprintf(FINFO, "%s\n", fname);
  
                /* recv file data */
--              recv_ok = receive_data(f_in,mapbuf,fd2,fname,file->length);
 +#ifdef HAVE_LINK
 +              if (link_by_hash_dir)
 +                      file->u.sum = (char*)malloc(MD4_SUM_LENGTH);
 +#endif
 +#ifdef HAVE_LINK
 +              if (link_by_hash_dir)
 +                      file->u.sum = (char*)malloc(MD4_SUM_LENGTH);
 +#endif
-+              recv_ok = receive_data(f_in,mapbuf,fd2,fname,file->length,file->u.sum);
+               recv_ok = receive_data(f_in, fnamecmp, fd1, st.st_size,
+-                                     fname, fd2, file->length);
++                                     fname, fd2, file->length, file->u.sum);
  
                log_recv(file, &initial_stats);
  
  
                log_recv(file, &initial_stats);
  
@@ -539,9 +542,9 @@ the file's name.
        ret = robust_rename(fnametmp, fname, file->mode & INITACCESSPERMS);
        if (ret < 0) {
                rsyserr(FERROR, errno, "%s %s -> \"%s\"",
        ret = robust_rename(fnametmp, fname, file->mode & INITACCESSPERMS);
        if (ret < 0) {
                rsyserr(FERROR, errno, "%s %s -> \"%s\"",
---- orig/rsync.h       2004-07-16 20:07:23
+--- orig/rsync.h       2004-07-20 21:36:08
 +++ rsync.h    2004-07-03 20:20:15
 +++ rsync.h    2004-07-03 20:20:15
-@@ -524,6 +524,14 @@ struct stats {
+@@ -522,6 +522,14 @@ struct stats {
        int current_file_index;
  };
  
        int current_file_index;
  };
  
index 31d67014b07bfac3ada491d49c36c5d800aa6fcb..56802e40bd9b876f1d31876d0e36a878bf8c2dff 100644 (file)
@@ -1,4 +1,4 @@
---- orig/generator.c   2004-07-16 19:35:29
+--- orig/generator.c   2004-07-17 16:30:20
 +++ generator.c        2004-07-03 20:20:46
 @@ -39,6 +39,7 @@ extern int opt_ignore_existing;
  extern int csum_length;
 +++ generator.c        2004-07-03 20:20:46
 @@ -39,6 +39,7 @@ extern int opt_ignore_existing;
  extern int csum_length;
@@ -18,7 +18,7 @@
 +              return;
        }
  
 +              return;
        }
  
-       if (read_batch)
+       if (preserve_links && S_ISLNK(file->mode)) {
 --- orig/options.c     2004-07-16 20:07:22
 +++ options.c  2004-07-15 02:34:44
 @@ -90,6 +90,7 @@ int delete_after = 0;
 --- orig/options.c     2004-07-16 20:07:22
 +++ options.c  2004-07-15 02:34:44
 @@ -90,6 +90,7 @@ int delete_after = 0;
        if (io_timeout) {
                if (asprintf(&arg, "--timeout=%d", io_timeout) < 0)
                        goto oom;
        if (io_timeout) {
                if (asprintf(&arg, "--timeout=%d", io_timeout) < 0)
                        goto oom;
---- orig/rsync.yo      2004-07-16 20:07:23
+--- orig/rsync.yo      2004-07-19 08:27:29
 +++ rsync.yo   2004-07-03 20:20:46
 @@ -316,6 +316,7 @@ verb(
       --delete-after          receiver deletes after transfer, not before
 +++ rsync.yo   2004-07-03 20:20:46
 @@ -316,6 +316,7 @@ verb(
       --delete-after          receiver deletes after transfer, not before
       --partial               keep partially transferred files
       --force                 force deletion of dirs even if not empty
       --numeric-ids           don't map uid/gid values by user/group name
       --partial               keep partially transferred files
       --force                 force deletion of dirs even if not empty
       --numeric-ids           don't map uid/gid values by user/group name
-@@ -589,6 +590,11 @@ dit(bf(--max-delete=NUM)) This tells rsy
+@@ -592,6 +593,11 @@ dit(bf(--max-delete=NUM)) This tells rsy
  files or directories. This is useful when mirroring very large trees
  to prevent disasters.
  
  files or directories. This is useful when mirroring very large trees
  to prevent disasters.
  
index bc0546c504094dd02152d5f689fc75480670d966..6d3cbe1c1827b2720b250358e7ab26f9c1ed0e2b 100644 (file)
@@ -4,7 +4,7 @@ command before "make":
     make proto
 
 
     make proto
 
 
---- orig/io.c  2004-07-17 15:20:05
+--- orig/io.c  2004-07-20 21:36:07
 +++ io.c       2004-07-03 20:17:10
 @@ -239,6 +239,14 @@ static void read_msg_fd(void)
                read_loop(fd, buf, 4);
 +++ io.c       2004-07-03 20:17:10
 @@ -239,6 +239,14 @@ static void read_msg_fd(void)
                read_loop(fd, buf, 4);
@@ -38,7 +38,7 @@ command before "make":
                case MSG_INFO:
                case MSG_ERROR:
                        if (remaining >= sizeof line) {
                case MSG_INFO:
                case MSG_ERROR:
                        if (remaining >= sizeof line) {
---- orig/main.c        2004-07-17 15:20:05
+--- orig/main.c        2004-07-19 17:14:44
 +++ main.c     2004-07-15 02:29:03
 @@ -42,6 +42,7 @@ extern int list_only;
  extern int local_server;
 +++ main.c     2004-07-15 02:29:03
 @@ -42,6 +42,7 @@ extern int list_only;
  extern int local_server;
@@ -67,7 +67,7 @@ command before "make":
        if (argc == 0)
                list_only = 1;
  
        if (argc == 0)
                list_only = 1;
  
---- orig/options.c     2004-07-16 20:07:22
+--- orig/options.c     2004-07-20 21:36:07
 +++ options.c  2004-07-16 20:09:54
 @@ -87,8 +87,10 @@ int size_only = 0;
  int bwlimit = 0;
 +++ options.c  2004-07-16 20:09:54
 @@ -87,8 +87,10 @@ int size_only = 0;
  int bwlimit = 0;
@@ -129,7 +129,7 @@ command before "make":
        *argc = ac;
        return;
  
        *argc = ac;
        return;
  
---- orig/receiver.c    2004-07-16 20:07:22
+--- orig/receiver.c    2004-07-20 21:36:07
 +++ receiver.c 2004-07-16 20:09:48
 @@ -43,6 +43,7 @@ extern char *backup_dir;
  extern char *backup_suffix;
 +++ receiver.c 2004-07-16 20:09:48
 @@ -43,6 +43,7 @@ extern char *backup_dir;
  extern char *backup_suffix;
@@ -139,16 +139,16 @@ command before "make":
  extern int module_id;
  extern int ignore_errors;
  extern int orig_umask;
  extern int module_id;
  extern int ignore_errors;
  extern int orig_umask;
-@@ -311,7 +312,7 @@ int recv_files(int f_in, struct file_lis
+@@ -335,7 +336,7 @@ int recv_files(int f_in, struct file_lis
        char *fname, fbuf[MAXPATHLEN];
        char template[MAXPATHLEN];
        char fnametmp[MAXPATHLEN];
 -      char *fnamecmp;
 +      char *fnamecmp, numbuf[4];
        char fnamecmpbuf[MAXPATHLEN];
        char *fname, fbuf[MAXPATHLEN];
        char template[MAXPATHLEN];
        char fnametmp[MAXPATHLEN];
 -      char *fnamecmp;
 +      char *fnamecmp, numbuf[4];
        char fnamecmpbuf[MAXPATHLEN];
-       struct map_struct *mapbuf;
        struct file_struct *file;
        struct file_struct *file;
-@@ -508,16 +509,20 @@ int recv_files(int f_in, struct file_lis
+       struct stats initial_stats;
+@@ -528,16 +529,20 @@ int recv_files(int f_in, struct file_lis
  
                cleanup_disable();
  
  
                cleanup_disable();
  
@@ -173,7 +173,7 @@ command before "make":
                        }
                }
        }
                        }
                }
        }
---- orig/rsync.h       2004-07-16 20:07:23
+--- orig/rsync.h       2004-07-20 21:36:08
 +++ rsync.h    2004-07-03 20:17:10
 @@ -60,6 +60,7 @@
  #define FLAG_TOP_DIR (1<<0)
 +++ rsync.h    2004-07-03 20:17:10
 @@ -60,6 +60,7 @@
  #define FLAG_TOP_DIR (1<<0)
@@ -191,7 +191,7 @@ command before "make":
        MSG_DONE=5,     /* current phase is done */
        MSG_REDO=4,     /* reprocess indicated flist index */
        MSG_ERROR=FERROR, MSG_INFO=FINFO, MSG_LOG=FLOG, /* remote logging */
        MSG_DONE=5,     /* current phase is done */
        MSG_REDO=4,     /* reprocess indicated flist index */
        MSG_ERROR=FERROR, MSG_INFO=FINFO, MSG_LOG=FLOG, /* remote logging */
---- orig/rsync.yo      2004-07-16 20:07:23
+--- orig/rsync.yo      2004-07-20 21:36:08
 +++ rsync.yo   2004-07-03 20:17:10
 @@ -314,6 +314,7 @@ verb(
       --delete                delete files that don't exist on sender
 +++ rsync.yo   2004-07-03 20:17:10
 @@ -314,6 +314,7 @@ verb(
       --delete                delete files that don't exist on sender
@@ -201,7 +201,7 @@ command before "make":
       --ignore-errors         delete even if there are I/O errors
       --max-delete=NUM        don't delete more than NUM files
       --partial               keep partially transferred files
       --ignore-errors         delete even if there are I/O errors
       --max-delete=NUM        don't delete more than NUM files
       --partial               keep partially transferred files
-@@ -615,6 +616,11 @@ receiving side before transferring files
+@@ -618,6 +619,11 @@ receiving side before transferring files
  sufficient space on the receiving filesystem. If you want to delete
  after transferring, use the --delete-after switch. Implies --delete.
  
  sufficient space on the receiving filesystem. If you want to delete
  after transferring, use the --delete-after switch. Implies --delete.
  
@@ -213,7 +213,7 @@ command before "make":
  dit(bf(--ignore-errors)) Tells --delete to go ahead and delete files
  even when there are I/O errors.
  
  dit(bf(--ignore-errors)) Tells --delete to go ahead and delete files
  even when there are I/O errors.
  
---- orig/sender.c      2004-07-16 20:07:23
+--- orig/sender.c      2004-07-20 21:36:08
 +++ sender.c   2004-07-16 20:10:19
 @@ -26,6 +26,7 @@ extern int io_error;
  extern int dry_run;
 +++ sender.c   2004-07-16 20:10:19
 @@ -26,6 +26,7 @@ extern int io_error;
  extern int dry_run;
@@ -262,7 +262,7 @@ command before "make":
        while (1) {
                unsigned int offset;
  
        while (1) {
                unsigned int offset;
  
-@@ -247,6 +272,9 @@ void send_files(struct file_list *flist,
+@@ -246,6 +271,9 @@ void send_files(struct file_list *flist,
  
                if (verbose > 2)
                        rprintf(FINFO, "sender finished %s\n", fname);
  
                if (verbose > 2)
                        rprintf(FINFO, "sender finished %s\n", fname);