extern int module_id;
extern int ignore_errors;
extern int numeric_ids;
-@@ -699,6 +700,16 @@ static struct file_struct *receive_file_
+@@ -692,6 +693,16 @@ static struct file_struct *receive_file_
sum = empty_sum;
}
read_buf(f, sum, checksum_len);
return file;
--- old/generator.c
+++ new/generator.c
-@@ -73,6 +73,7 @@ extern int ignore_timeout;
+@@ -71,6 +71,7 @@ extern int ignore_timeout;
extern int protocol_version;
extern int fuzzy_basis;
extern int always_checksum;
extern int checksum_len;
extern char *partial_dir;
extern char *basis_dir[];
-@@ -376,7 +377,8 @@ void itemize(struct file_struct *file, i
+@@ -374,7 +375,8 @@ void itemize(struct file_struct *file, i
/* Perform our quick-check heuristic for determining if a file is unchanged. */
{
if (st->st_size != file->length)
return 0;
-@@ -385,6 +387,8 @@ int unchanged_file(char *fn, struct file
+@@ -383,6 +385,8 @@ int unchanged_file(char *fn, struct file
of the file time to determine whether to sync */
if (always_checksum && S_ISREG(st->st_mode)) {
char sum[MD4_SUM_LENGTH];
file_checksum(fn, sum, st->st_size);
return memcmp(sum, file->u.sum, checksum_len) == 0;
}
-@@ -628,7 +632,7 @@ static int try_dests_reg(struct file_str
+@@ -626,7 +630,7 @@ static int try_dests_reg(struct file_str
match_level = 1;
/* FALL THROUGH */
case 1:
continue;
best_match = j;
match_level = 2;
-@@ -1197,7 +1201,7 @@ static void recv_generator(char *fname,
+@@ -1194,7 +1198,7 @@ static void recv_generator(char *fname,
;
else if (fnamecmp_type == FNAMECMP_FUZZY)
;
extern int recurse;
extern int relative_paths;
extern int sanitize_paths;
-@@ -66,6 +67,9 @@ extern char *rsync_path;
- extern char *shell_cmd;
+@@ -69,6 +70,9 @@ extern char *shell_cmd;
extern char *batch_name;
+ extern struct filter_list_struct server_filter_list;
+extern char curr_dir[MAXPATHLEN];
+
+int pre_checksum = 0;
int local_server = 0;
- int startdir_depth = 0;
mode_t orig_umask = 0;
-@@ -741,6 +745,7 @@ static void do_server_recv(int f_in, int
+ struct file_list *the_file_list;
+@@ -749,6 +753,7 @@ static void do_server_recv(int f_in, int
struct file_list *flist;
char *local_name = NULL;
char *dir = NULL;
int save_verbose = verbose;
if (filesfrom_fd >= 0) {
-@@ -784,6 +789,10 @@ static void do_server_recv(int f_in, int
+@@ -792,6 +797,10 @@ static void do_server_recv(int f_in, int
filesfrom_fd = -1;
}
flist = recv_file_list(f_in);
verbose = save_verbose;
if (!flist) {
-@@ -792,6 +801,9 @@ static void do_server_recv(int f_in, int
+@@ -800,6 +809,9 @@ static void do_server_recv(int f_in, int
}
the_file_list = flist;
if (argc > 0)
local_name = get_local_name(flist,argv[0]);
-@@ -851,6 +863,7 @@ int client_run(int f_in, int f_out, pid_
+@@ -883,6 +895,7 @@ int client_run(int f_in, int f_out, pid_
{
struct file_list *flist = NULL;
int exit_code = 0, exit_code2 = 0;
char *local_name = NULL;
cleanup_child_pid = pid;
-@@ -925,11 +938,18 @@ int client_run(int f_in, int f_out, pid_
+@@ -957,11 +970,18 @@ int client_run(int f_in, int f_out, pid_
filesfrom_fd = -1;
}
--- old/cleanup.c
+++ new/cleanup.c
-@@ -21,10 +21,13 @@
+@@ -23,10 +23,13 @@
#include "rsync.h"
#ifdef HAVE_SIGACTION
static struct sigaction sigact;
-@@ -149,7 +152,7 @@ void _exit_cleanup(int code, const char
+@@ -151,7 +154,7 @@ void _exit_cleanup(int code, const char
code = RERR_PARTIAL;
}
if (verbose > 2) {
--- old/clientserver.c
+++ new/clientserver.c
-@@ -44,10 +44,14 @@ extern int protocol_version;
+@@ -39,10 +39,14 @@ extern int protocol_version;
extern int io_timeout;
extern int no_detach;
extern int default_af_hint;
extern char *files_from;
extern char *tmpdir;
extern struct chmod_mode_struct *chmod_modes;
-@@ -55,8 +59,6 @@ extern struct filter_list_struct server_
+@@ -50,8 +54,6 @@ extern struct filter_list_struct server_
char *auth_user;
int read_only = 0;
int module_id = -1;
struct chmod_mode_struct *daemon_chmod_modes;
-@@ -329,11 +331,12 @@ static int rsync_module(int f_in, int f_
+@@ -324,11 +326,12 @@ static int rsync_module(int f_in, int f_
read_only = 1;
if (lp_transfer_logging(i)) {
am_root = (MY_UID() == 0);
--- old/flist.c
+++ new/flist.c
-@@ -95,15 +95,15 @@ static int show_filelist_p(void)
+@@ -91,15 +91,15 @@ static int show_filelist_p(void)
static void start_filelist_progress(char *kind)
{
}
static void maybe_emit_filelist_progress(int count)
-@@ -295,7 +295,7 @@ void flist_expand(struct file_list *flis
+@@ -283,7 +283,7 @@ void flist_expand(struct file_list *flis
flist->malloced);
if (verbose >= 2 && flist->malloced != FLIST_START) {
who_am_i(),
(double)sizeof flist->files[0] * flist->malloced,
(new_ptr == flist->files) ? " not" : "");
-@@ -1077,6 +1077,7 @@ struct file_list *send_file_list(int f,
+@@ -1059,6 +1059,7 @@ struct file_list *send_file_list(int f,
int64 start_write;
int use_ff_fd = 0;
if (show_filelist_p())
start_filelist_progress("building file list");
-@@ -1343,6 +1344,7 @@ struct file_list *recv_file_list(int f)
+@@ -1329,6 +1330,7 @@ struct file_list *recv_file_list(int f)
unsigned short flags;
int64 start_read;
extern int am_root;
extern int am_server;
extern int am_daemon;
-@@ -661,7 +661,7 @@ static int try_dests_reg(struct file_str
- } else if (itemizing)
+@@ -672,7 +672,7 @@ static int try_dests_reg(struct file_str
+ if (itemizing)
itemize(file, ndx, 0, stp, 0, 0, NULL);
if (verbose > 1 && maybe_ATTRS_REPORT) {
- code = daemon_log_format_has_i || dry_run
? FCLIENT : FINFO;
rprintf(code, "%s is uptodate\n", fname);
}
-@@ -684,7 +684,7 @@ static int try_dests_reg(struct file_str
+@@ -694,7 +694,7 @@ static int try_dests_reg(struct file_str
if (maybe_ATTRS_REPORT
&& ((!itemizing && verbose && match_level == 2)
|| (verbose > 1 && match_level == 3))) {
? FCLIENT : FINFO;
rprintf(code, "%s%s\n", fname,
match_level == 3 ? " is uptodate" : "");
-@@ -758,7 +758,7 @@ static int try_dests_non(struct file_str
+@@ -770,7 +770,7 @@ static int try_dests_non(struct file_str
itemize(file, ndx, 0, &st, changes, 0, lp);
}
if (verbose > 1 && maybe_ATTRS_REPORT) {
? FCLIENT : FINFO;
rprintf(code, "%s is uptodate\n", fname);
}
-@@ -1327,9 +1327,9 @@ void generate_files(int f_out, struct fi
+@@ -1339,9 +1339,9 @@ void generate_files(int f_out, struct fi
if (protocol_version >= 29) {
itemizing = 1;
maybe_ATTRS_REPORT = log_format_has_i ? 0 : ATTRS_REPORT;
} else if (!am_server) {
--- old/log.c
+++ new/log.c
-@@ -44,18 +44,19 @@ extern int protocol_version;
+@@ -39,18 +39,19 @@ extern int protocol_version;
extern int preserve_times;
extern int log_format_has_i;
extern int log_format_has_o_or_i;
struct stats stats;
int log_got_error = 0;
-@@ -109,10 +110,10 @@ static void logit(int priority, char *bu
+@@ -104,10 +105,10 @@ static void logit(int priority, char *bu
{
if (logfile_was_closed)
logfile_reopen();
} else {
syslog(priority, "%s", buf);
}
-@@ -145,14 +146,14 @@ static void syslog_init()
+@@ -140,14 +141,14 @@ static void syslog_init()
static void logfile_open(void)
{
mode_t old_umask = umask(022 | orig_umask);
rprintf(FINFO, "Ignoring \"log file\" setting.\n");
}
}
-@@ -171,9 +172,11 @@ void log_init(void)
- t = time(NULL);
- localtime(&t);
+@@ -163,9 +164,11 @@ void log_init(void)
+ * before the chroot. */
+ timestring(time(NULL));
- /* optionally use a log file instead of syslog */
- logfname = lp_log_file();
logfile_open();
else
syslog_init();
-@@ -181,10 +184,10 @@ void log_init(void)
+@@ -173,10 +176,10 @@ void log_init(void)
void logfile_close(void)
{
}
}
-@@ -243,9 +246,9 @@ void rwrite(enum logcode code, char *buf
+@@ -235,9 +238,9 @@ void rwrite(enum logcode code, char *buf
if (code == FCLIENT)
code = FINFO;
int priority = code == FERROR ? LOG_WARNING : LOG_INFO;
if (in_block)
-@@ -254,10 +257,11 @@ void rwrite(enum logcode code, char *buf
+@@ -246,10 +249,11 @@ void rwrite(enum logcode code, char *buf
if (!log_initialised)
log_init();
strlcpy(msg, buf, MIN((int)sizeof msg, len + 1));
return;
} else if (code == FLOG)
return;
-@@ -403,26 +407,14 @@ void rflush(enum logcode code)
+@@ -395,26 +399,14 @@ void rflush(enum logcode code)
{
FILE *f = NULL;
fflush(f);
}
-@@ -695,12 +687,12 @@ void log_item(struct file_struct *file,
+@@ -687,12 +679,12 @@ void log_item(struct file_struct *file,
{
char *s_or_r = am_sender ? "send" : "recv";
}
}
-@@ -712,7 +704,7 @@ void maybe_log_item(struct file_struct *
+@@ -704,7 +696,7 @@ void maybe_log_item(struct file_struct *
|| log_format_has_i > 1 || (verbose > 1 && log_format_has_i));
int local_change = iflags & ITEM_LOCAL_CHANGE && significant_flags;
if (am_server) {
log_item(file, &stats, iflags, buf);
} else if (see_item || local_change || *buf
|| (S_ISDIR(file->mode) && significant_flags))
-@@ -740,10 +732,10 @@ void log_delete(char *fname, int mode)
+@@ -732,10 +724,10 @@ void log_delete(char *fname, int mode)
ITEM_DELETED, NULL);
}
--- old/main.c
+++ new/main.c
-@@ -168,7 +168,6 @@ static void handle_stats(int f)
+@@ -176,7 +176,6 @@ static void handle_stats(int f)
return;
if (am_daemon) {
}
--- old/options.c
+++ new/options.c
-@@ -146,6 +146,8 @@ char *basis_dir[MAX_BASIS_DIRS+1];
+@@ -148,6 +148,8 @@ char *basis_dir[MAX_BASIS_DIRS+1];
char *config_file = NULL;
char *shell_cmd = NULL;
char *log_format = NULL;
char *password_file = NULL;
char *rsync_path = RSYNC_PATH;
char *backup_dir = NULL;
-@@ -162,7 +164,9 @@ int verbose = 0;
+@@ -164,7 +166,9 @@ int verbose = 0;
int quiet = 0;
int log_before_transfer = 0;
int log_format_has_i = 0;
int always_checksum = 0;
int list_only = 0;
-@@ -359,6 +363,7 @@ void usage(enum logcode F)
+@@ -361,6 +365,7 @@ void usage(enum logcode F)
rprintf(F," --progress show progress during transfer\n");
rprintf(F," -P same as --partial --progress\n");
rprintf(F," -i, --itemize-changes output a change-summary for all updates\n");
rprintf(F," --log-format=FORMAT output filenames using the specified format\n");
rprintf(F," --password-file=FILE read password from FILE\n");
rprintf(F," --list-only list the files instead of copying them\n");
-@@ -492,6 +497,7 @@ static struct poptOption long_options[]
+@@ -494,6 +499,7 @@ static struct poptOption long_options[]
{"partial-dir", 0, POPT_ARG_STRING, &partial_dir, 0, 0, 0 },
{"delay-updates", 0, POPT_ARG_NONE, &delay_updates, 0, 0, 0 },
{"prune-empty-dirs",'m', POPT_ARG_NONE, &prune_empty_dirs, 0, 0, 0 },
{"log-format", 0, POPT_ARG_STRING, &log_format, 0, 0, 0 },
{"itemize-changes", 'i', POPT_ARG_NONE, 0, 'i', 0, 0 },
{"bwlimit", 0, POPT_ARG_INT, &bwlimit, 0, 0, 0 },
-@@ -1311,6 +1317,21 @@ int parse_arguments(int *argc, const cha
+@@ -1306,6 +1312,21 @@ int parse_arguments(int *argc, const cha
if (log_format_has_i || log_format_has(log_format, 'o'))
log_format_has_o_or_i = 1;
if (bwlimit) {
--- old/progress.c
+++ new/progress.c
-@@ -103,7 +103,7 @@ static void rprint_progress(OFF_T ofs, O
+@@ -105,7 +105,7 @@ static void rprint_progress(OFF_T ofs, O
stats.num_files);
} else
strcpy(eol, "\r");
}
--- old/receiver.c
+++ new/receiver.c
-@@ -27,7 +27,7 @@ extern int am_server;
+@@ -29,7 +29,7 @@ extern int am_server;
extern int do_progress;
extern int log_before_transfer;
extern int log_format_has_i;
extern int csum_length;
extern int read_batch;
extern int write_batch;
-@@ -341,8 +341,7 @@ int recv_files(int f_in, struct file_lis
+@@ -343,8 +343,7 @@ int recv_files(int f_in, struct file_lis
struct file_struct *file;
struct stats initial_stats;
int save_make_backups = make_backups;
--log-format=FORMAT output filenames using the specified format
--password-file=FILE read password from FILE
--list-only list the files instead of copying them
-@@ -1430,6 +1431,23 @@ the string "*deleting" for each item tha
+@@ -1432,6 +1433,23 @@ the string "*deleting" for each item tha
you are talking to a recent enough rsync that it logs deletions instead of
outputting them as a verbose message).
string containing embedded single-character escape sequences prefixed with
--- old/sender.c
+++ new/sender.c
-@@ -25,7 +25,7 @@ extern int am_server;
+@@ -28,7 +28,7 @@ extern int am_server;
extern int am_daemon;
extern int log_before_transfer;
extern int log_format_has_i;
extern int csum_length;
extern int append_mode;
extern int io_error;
-@@ -215,8 +215,7 @@ void send_files(struct file_list *flist,
+@@ -218,8 +218,7 @@ void send_files(struct file_list *flist,
int phase = 0, max_phase = protocol_version >= 29 ? 2 : 1;
struct stats initial_stats;
int save_make_backups = make_backups;