./configure (optional if already run)
make
-based-on: 24079e988fc31af4eba56cd2701fdc5a4154980d
+based-on: a01e3b490eb36ccf9e704840e1b6683dab867550
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
diff --git a/cleanup.c b/cleanup.c
--- a/cleanup.c
+++ b/cleanup.c
-@@ -27,6 +27,7 @@ extern int am_daemon;
- extern int am_sender;
- extern int am_generator;
+@@ -26,6 +26,7 @@ extern int am_server;
+ extern int am_daemon;
+ extern int am_receiver;
extern int io_error;
+extern int use_db;
extern int keep_partial;
extern int got_xfer_error;
extern int protocol_version;
-@@ -139,6 +140,12 @@ NORETURN void _exit_cleanup(int code, const char *file, int line)
+@@ -140,6 +141,12 @@ NORETURN void _exit_cleanup(int code, const char *file, int line)
/* FALLTHROUGH */
#include "case_N.h"
diff --git a/configure.in b/configure.in
--- a/configure.in
+++ b/configure.in
-@@ -331,7 +331,7 @@ AC_CHECK_HEADERS(sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h \
+@@ -337,7 +337,7 @@ AC_CHECK_HEADERS(sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h \
sys/un.h sys/attr.h mcheck.h arpa/inet.h arpa/nameser.h locale.h \
netdb.h malloc.h float.h limits.h iconv.h libcharset.h langinfo.h \
sys/acl.h acl/libacl.h attr/xattr.h sys/xattr.h sys/extattr.h \
AC_HEADER_MAJOR
AC_CACHE_CHECK([if makedev takes 3 args],rsync_cv_MAKEDEV_TAKES_3_ARGS,[
-@@ -1013,6 +1013,29 @@ if test x"$enable_acl_support" = x"no" -o x"$enable_xattr_support" = x"no" -o x"
+@@ -1019,6 +1019,29 @@ if test x"$enable_acl_support" = x"no" -o x"$enable_xattr_support" = x"no" -o x"
fi
fi
diff --git a/flist.c b/flist.c
--- a/flist.c
+++ b/flist.c
-@@ -53,6 +53,7 @@ extern int preserve_specials;
+@@ -54,6 +54,7 @@ extern int delete_during;
extern int missing_args;
extern int uid_ndx;
extern int gid_ndx;
extern int eol_nulls;
extern int relative_paths;
extern int implied_dirs;
-@@ -1307,11 +1308,8 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
+@@ -1309,11 +1310,8 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
extra_len += EXTRA_LEN;
#endif
#if EXTRA_ROUNDING > 0
if (extra_len & (EXTRA_ROUNDING * EXTRA_LEN))
-@@ -1394,8 +1392,12 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
+@@ -1396,8 +1394,12 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
return NULL;
}
if (unsort_ndx)
F_NDX(file) = stats.num_dirs;
-@@ -2060,6 +2062,9 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
+@@ -2075,6 +2077,9 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
| (eol_nulls || reading_remotely ? RL_EOL_NULLS : 0);
int implied_dot_dir = 0;
extern int append_mode;
extern int make_backups;
extern int csum_length;
-@@ -531,7 +532,8 @@ int unchanged_file(char *fn, struct file_struct *file, STRUCT_STAT *st)
+@@ -530,7 +531,8 @@ int unchanged_file(char *fn, struct file_struct *file, STRUCT_STAT *st)
of the file time to determine whether to sync */
if (always_checksum > 0 && S_ISREG(st->st_mode)) {
char sum[MAX_DIGEST_LEN];
return memcmp(sum, F_SUM(file), checksum_len) == 0;
}
-@@ -2076,6 +2078,9 @@ void generate_files(int f_out, const char *local_name)
+@@ -2075,6 +2077,9 @@ void generate_files(int f_out, const char *local_name)
: "enabled");
}
+ if (use_db && always_checksum)
+ db_connect();
+
- /* Since we often fill up the outgoing socket and then just sit around
- * waiting for the other 2 processes to do their thing, we don't want
- * to exit on a timeout. If the data stops flowing, the receiver will
+ dflt_perms = (ACCESSPERMS & ~orig_umask);
+
+ do {
diff --git a/loadparm.c b/loadparm.c
--- a/loadparm.c
+++ b/loadparm.c
extern int file_total;
extern int recurse;
extern int xfer_dirs;
-@@ -80,6 +81,7 @@ extern char *filesfrom_host;
+@@ -83,6 +84,7 @@ extern char *filesfrom_host;
extern char *partial_dir;
extern char *dest_option;
extern char *rsync_path;
extern char *shell_cmd;
extern char *batch_name;
extern char *password_file;
-@@ -1593,6 +1595,9 @@ int main(int argc,char *argv[])
+@@ -1609,6 +1611,9 @@ int main(int argc,char *argv[])
exit_cleanup(RERR_SYNTAX);
}
char *filesfrom_host = NULL;
+char *db_config = NULL;
int eol_nulls = 0;
- int protect_args = 0;
+ int protect_args = -1;
int human_readable = 1;
@@ -567,6 +568,7 @@ static void print_rsync_version(enum logcode f)
char const *links = "no ";