The patches for 3.3.0.
[rsync-patches.git] / source-filter_dest-filter.diff
index f4ac8054fbb0776cf658e6cad90b9a9b2943fb93..3f63d3080ac0fa189c7be215f26e223f6e63f7c3 100644 (file)
@@ -30,7 +30,7 @@ To use this patch, run these commands for a successful build:
     ./configure                                (optional if already run)
     make
 
-based-on: 43f70b961e92d88387fecd3c7f6dbefc044ce4a3
+based-on: 6c8ca91c731b7bf2b081694bda85b7dadc2b7aff
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
@@ -54,7 +54,7 @@ diff --git a/generator.c b/generator.c
 diff --git a/main.c b/main.c
 --- a/main.c
 +++ b/main.c
-@@ -190,7 +190,7 @@ int shell_exec(const char *cmd)
+@@ -191,7 +191,7 @@ int shell_exec(const char *cmd)
  }
  
  /* Wait for a process to exit, calling io_flush while waiting. */
@@ -66,7 +66,7 @@ diff --git a/main.c b/main.c
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
-@@ -116,6 +116,7 @@ int safe_symlinks = 0;
+@@ -119,6 +119,7 @@ int safe_symlinks = 0;
  int copy_unsafe_links = 0;
  int munge_symlinks = 0;
  int size_only = 0;
@@ -74,7 +74,7 @@ diff --git a/options.c b/options.c
  int daemon_bwlimit = 0;
  int bwlimit = 0;
  int fuzzy_basis = 0;
-@@ -176,6 +177,8 @@ char *logfile_name = NULL;
+@@ -179,6 +180,8 @@ char *logfile_name = NULL;
  char *logfile_format = NULL;
  char *stdout_format = NULL;
  char *password_file = NULL;
@@ -83,7 +83,7 @@ diff --git a/options.c b/options.c
  char *early_input_file = NULL;
  char *rsync_path = RSYNC_PATH;
  char *backup_dir = NULL;
-@@ -685,6 +688,7 @@ static struct poptOption long_options[] = {
+@@ -689,6 +692,7 @@ static struct poptOption long_options[] = {
    {"chmod",            0,  POPT_ARG_STRING, 0, OPT_CHMOD, 0, 0 },
    {"ignore-times",    'I', POPT_ARG_NONE,   &ignore_times, 0, 0, 0 },
    {"size-only",        0,  POPT_ARG_NONE,   &size_only, 0, 0, 0 },
@@ -91,7 +91,7 @@ diff --git a/options.c b/options.c
    {"one-file-system", 'x', POPT_ARG_NONE,   0, 'x', 0, 0 },
    {"no-one-file-system",0, POPT_ARG_VAL,    &one_file_system, 0, 0, 0 },
    {"no-x",             0,  POPT_ARG_VAL,    &one_file_system, 0, 0, 0 },
-@@ -822,6 +826,8 @@ static struct poptOption long_options[] = {
+@@ -829,6 +833,8 @@ static struct poptOption long_options[] = {
    {"early-input",      0,  POPT_ARG_STRING, &early_input_file, 0, 0, 0 },
    {"blocking-io",      0,  POPT_ARG_VAL,    &blocking_io, 1, 0, 0 },
    {"no-blocking-io",   0,  POPT_ARG_VAL,    &blocking_io, 0, 0, 0 },
@@ -100,7 +100,7 @@ diff --git a/options.c b/options.c
    {"outbuf",           0,  POPT_ARG_STRING, &outbuf_mode, 0, 0, 0 },
    {"remote-option",   'M', POPT_ARG_STRING, 0, 'M', 0, 0 },
    {"protocol",         0,  POPT_ARG_INT,    &protocol_version, 0, 0, 0 },
-@@ -2419,6 +2425,16 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2444,6 +2450,16 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                }
        }
  
@@ -117,7 +117,7 @@ diff --git a/options.c b/options.c
        if (files_from) {
                char *h, *p;
                int q;
-@@ -2807,6 +2823,25 @@ void server_options(char **args, int *argc_p)
+@@ -2852,6 +2868,25 @@ void server_options(char **args, int *argc_p)
        else if (missing_args == 1 && !am_sender)
                args[ac++] = "--ignore-missing-args";
  
@@ -235,7 +235,7 @@ diff --git a/pipe.c b/pipe.c
 diff --git a/receiver.c b/receiver.c
 --- a/receiver.c
 +++ b/receiver.c
-@@ -61,6 +61,7 @@ extern BOOL want_progress_now;
+@@ -60,6 +60,7 @@ extern BOOL want_progress_now;
  extern mode_t orig_umask;
  extern struct stats stats;
  extern char *tmpdir;
@@ -313,7 +313,7 @@ diff --git a/receiver.c b/receiver.c
 diff --git a/rsync.1.md b/rsync.1.md
 --- a/rsync.1.md
 +++ b/rsync.1.md
-@@ -442,6 +442,7 @@ has its own detailed description later in this manpage.
+@@ -504,6 +504,7 @@ has its own detailed description later in this manpage.
  --contimeout=SECONDS     set daemon connection timeout in seconds
  --ignore-times, -I       don't skip files that match size and time
  --size-only              skip files that match in size
@@ -321,7 +321,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  --modify-window=NUM, -@  set the accuracy for mod-time comparisons
  --temp-dir=DIR, -T       create temporary files in directory DIR
  --fuzzy, -y              find similar file for basis if no dest file
-@@ -490,6 +491,8 @@ has its own detailed description later in this manpage.
+@@ -553,6 +554,8 @@ has its own detailed description later in this manpage.
  --write-batch=FILE       write a batched update to FILE
  --only-write-batch=FILE  like --write-batch but w/o updating dest
  --read-batch=FILE        read a batched update from FILE
@@ -330,7 +330,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  --protocol=NUM           force an older protocol version to be used
  --iconv=CONVERT_SPEC     request charset conversion of filenames
  --checksum-seed=NUM      set block/file checksum seed (advanced)
-@@ -3576,6 +3579,36 @@ option name from the pathname using a space if you want the shell to expand it.
+@@ -3713,6 +3716,36 @@ expand it.
      [`--write-batch`](#opt).  If _FILE_ is `-`, the batch data will be read
      from standard input. See the "BATCH MODE" section for details.
  
@@ -389,15 +389,15 @@ diff --git a/sender.c b/sender.c
  
  extern int do_xfers;
  extern int am_server;
-@@ -49,6 +50,7 @@ extern int batch_fd;
+@@ -50,6 +51,7 @@ extern int batch_fd;
  extern int write_batch;
  extern int file_old_total;
  extern BOOL want_progress_now;
 +extern char *source_filter;
  extern struct stats stats;
  extern struct file_list *cur_flist, *first_flist, *dir_flist;
-@@ -202,6 +204,26 @@ void send_files(int f_in, int f_out)
+ extern char num_dev_ino_buf[4 + 8 + 8];
+@@ -211,6 +213,26 @@ void send_files(int f_in, int f_out)
        int f_xfer = write_batch < 0 ? batch_fd : f_out;
        int save_io_error = io_error;
        int ndx, j;
@@ -424,7 +424,7 @@ diff --git a/sender.c b/sender.c
  
        if (DEBUG_GTE(SEND, 1))
                rprintf(FINFO, "send_files starting\n");
-@@ -339,6 +361,7 @@ void send_files(int f_in, int f_out)
+@@ -348,6 +370,7 @@ void send_files(int f_in, int f_out)
                        exit_cleanup(RERR_PROTOCOL);
                }
  
@@ -432,7 +432,7 @@ diff --git a/sender.c b/sender.c
                fd = do_open(fname, O_RDONLY, 0);
                if (fd == -1) {
                        if (errno == ENOENT) {
-@@ -358,6 +381,33 @@ void send_files(int f_in, int f_out)
+@@ -367,6 +390,33 @@ void send_files(int f_in, int f_out)
                        continue;
                }
  
@@ -466,7 +466,7 @@ diff --git a/sender.c b/sender.c
                /* map the local file */
                if (do_fstat(fd, &st) != 0) {
                        io_error |= IOERR_GENERAL;
-@@ -428,6 +478,8 @@ void send_files(int f_in, int f_out)
+@@ -437,6 +487,8 @@ void send_files(int f_in, int f_out)
                        }
                }
                close(fd);