./configure (optional if already run)
make
-based-on: 3b8f8192227b14e708bf535072485e50f4362270
+based-on: 24079e988fc31af4eba56cd2701fdc5a4154980d
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
extern int size_only;
extern OFF_T max_size;
extern OFF_T min_size;
-@@ -525,7 +526,7 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
+@@ -524,7 +525,7 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
/* Perform our quick-check heuristic for determining if a file is unchanged. */
int unchanged_file(char *fn, struct file_struct *file, STRUCT_STAT *st)
{
diff --git a/main.c b/main.c
--- a/main.c
+++ b/main.c
-@@ -148,7 +148,7 @@ pid_t wait_process(pid_t pid, int *status_ptr, int flags)
+@@ -149,7 +149,7 @@ pid_t wait_process(pid_t pid, int *status_ptr, int flags)
}
/* Wait for a process to exit, calling io_flush while waiting. */
{"remote-option", 'M', POPT_ARG_STRING, 0, 'M', 0, 0 },
{"protocol", 0, POPT_ARG_INT, &protocol_version, 0, 0, 0 },
{"checksum-seed", 0, POPT_ARG_INT, &checksum_seed, 0, 0, 0 },
-@@ -2167,6 +2176,16 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2186,6 +2195,16 @@ int parse_arguments(int *argc_p, const char ***argv_p)
}
}
if (files_from) {
char *h, *p;
int q;
-@@ -2511,6 +2530,25 @@ void server_options(char **args, int *argc_p)
+@@ -2530,6 +2549,25 @@ void server_options(char **args, int *argc_p)
else if (missing_args == 1 && !am_sender)
args[ac++] = "--ignore-missing-args";
extern char *partial_dir;
extern char *basis_dir[MAX_BASIS_DIRS+1];
extern char sender_file_sum[MAX_DIGEST_LEN];
-@@ -476,6 +477,8 @@ int recv_files(int f_in, int f_out, char *local_name)
+@@ -475,6 +476,8 @@ int recv_files(int f_in, int f_out, char *local_name)
const char *parent_dirname = "";
#endif
int ndx, recv_ok;
if (DEBUG_GTE(RECV, 1))
rprintf(FINFO, "recv_files(%d) starting\n", cur_flist->used);
-@@ -483,6 +486,23 @@ int recv_files(int f_in, int f_out, char *local_name)
+@@ -482,6 +485,23 @@ int recv_files(int f_in, int f_out, char *local_name)
if (delay_updates)
delayed_bits = bitbag_create(cur_flist->used + 1);
diff --git a/rsync.h b/rsync.h
--- a/rsync.h
+++ b/rsync.h
-@@ -141,6 +141,7 @@
+@@ -143,6 +143,7 @@
#define IOERR_DEL_LIMIT (1<<2)
#define MAX_ARGS 1000
--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)
-@@ -2306,6 +2309,33 @@ file previously generated by bf(--write-batch).
+@@ -2321,6 +2324,33 @@ file previously generated by bf(--write-batch).
If em(FILE) is bf(-), the batch data will be read from standard input.
See the "BATCH MODE" section for details.
diff --git a/sender.c b/sender.c
--- a/sender.c
+++ b/sender.c
-@@ -42,6 +42,7 @@ extern int make_backups;
- extern int inplace;
+@@ -43,6 +43,7 @@ extern int inplace;
extern int batch_fd;
extern int write_batch;
+ extern int file_old_total;
+extern char *source_filter;
extern struct stats stats;
extern struct file_list *cur_flist, *first_flist, *dir_flist;
if (DEBUG_GTE(SEND, 1))
rprintf(FINFO, "send_files starting\n");
-@@ -306,6 +327,7 @@ void send_files(int f_in, int f_out)
+@@ -310,6 +331,7 @@ void send_files(int f_in, int f_out)
exit_cleanup(RERR_PROTOCOL);
}
fd = do_open(fname, O_RDONLY, 0);
if (fd == -1) {
if (errno == ENOENT) {
-@@ -327,6 +349,33 @@ void send_files(int f_in, int f_out)
+@@ -331,6 +353,33 @@ void send_files(int f_in, int f_out)
continue;
}
/* map the local file */
if (do_fstat(fd, &st) != 0) {
io_error |= IOERR_GENERAL;
-@@ -377,6 +426,8 @@ void send_files(int f_in, int f_out)
+@@ -381,6 +430,8 @@ void send_files(int f_in, int f_out)
}
}
close(fd);