./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/acls.c b/acls.c
--- a/acls.c
+++ b/acls.c
Fix a bug that could lose some bits when stripping some (supposedly)
superfluous ACL info.
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/lib/sysacls.c b/lib/sysacls.c
--- a/lib/sysacls.c
+++ b/lib/sysacls.c
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
-@@ -683,6 +683,7 @@ void usage(enum logcode F)
+@@ -687,6 +687,7 @@ void usage(enum logcode F)
rprintf(F," -R, --relative use relative path names\n");
rprintf(F," --no-implied-dirs don't send implied dirs with --relative\n");
rprintf(F," -b, --backup make backups (see --suffix & --backup-dir)\n");
rprintf(F," --backup-dir=DIR make backups into hierarchy based in DIR\n");
rprintf(F," --suffix=SUFFIX set backup suffix (default %s w/o --backup-dir)\n",BACKUP_SUFFIX);
rprintf(F," -u, --update skip files that are newer on the receiver\n");
-@@ -1010,7 +1011,8 @@ static struct poptOption long_options[] = {
+@@ -1014,7 +1015,8 @@ static struct poptOption long_options[] = {
{"no-i", 0, POPT_ARG_VAL, &itemize_changes, 0, 0, 0 },
{"bwlimit", 0, POPT_ARG_STRING, &bwlimit_arg, OPT_BWLIMIT, 0, 0 },
{"no-bwlimit", 0, POPT_ARG_VAL, &bwlimit, 0, 0, 0 },
{"no-backup", 0, POPT_ARG_VAL, &make_backups, 0, 0, 0 },
{"backup-dir", 0, POPT_ARG_STRING, &backup_dir, 0, 0, 0 },
{"suffix", 0, POPT_ARG_STRING, &backup_suffix, 0, 0, 0 },
-@@ -2743,6 +2745,10 @@ void server_options(char **args, int *argc_p)
+@@ -2745,6 +2747,10 @@ void server_options(char **args, int *argc_p)
}
if (am_sender) {
char *sockopts = NULL;
char *usermap = NULL;
char *groupmap = NULL;
-@@ -686,6 +692,8 @@ void usage(enum logcode F)
+@@ -690,6 +696,8 @@ void usage(enum logcode F)
rprintf(F," --backup-deleted make backups only of deleted files\n");
rprintf(F," --backup-dir=DIR make backups into hierarchy based in DIR\n");
rprintf(F," --suffix=SUFFIX set backup suffix (default %s w/o --backup-dir)\n",BACKUP_SUFFIX);
rprintf(F," -u, --update skip files that are newer on the receiver\n");
rprintf(F," --inplace update destination files in-place (SEE MAN PAGE)\n");
rprintf(F," --append append data onto shorter files\n");
-@@ -1015,7 +1023,9 @@ static struct poptOption long_options[] = {
+@@ -1019,7 +1027,9 @@ static struct poptOption long_options[] = {
{"backup-deleted", 0, POPT_ARG_VAL, &make_backups, 1, 0, 0 },
{"no-backup", 0, POPT_ARG_VAL, &make_backups, 0, 0, 0 },
{"backup-dir", 0, POPT_ARG_STRING, &backup_dir, 0, 0, 0 },
{"list-only", 0, POPT_ARG_VAL, &list_only, 2, 0, 0 },
{"read-batch", 0, POPT_ARG_STRING, &batch_name, OPT_READ_BATCH, 0, 0 },
{"write-batch", 0, POPT_ARG_STRING, &batch_name, OPT_WRITE_BATCH, 0, 0 },
-@@ -2221,6 +2231,8 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2223,6 +2233,8 @@ int parse_arguments(int *argc_p, const char ***argv_p)
tmpdir = sanitize_path(NULL, tmpdir, NULL, 0, SP_DEFAULT);
if (backup_dir)
backup_dir = sanitize_path(NULL, backup_dir, NULL, 0, SP_DEFAULT);
}
if (daemon_filter_list.head && !am_sender) {
filter_rule_list *elp = &daemon_filter_list;
-@@ -2242,6 +2254,14 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2244,6 +2256,14 @@ int parse_arguments(int *argc_p, const char ***argv_p)
if (check_filter(elp, FLOG, dir, 1) < 0)
goto options_rejected;
}
}
if (!backup_suffix)
-@@ -2253,6 +2273,20 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2255,6 +2275,20 @@ int parse_arguments(int *argc_p, const char ***argv_p)
backup_suffix);
return 0;
}
if (backup_dir) {
size_t len;
while (*backup_dir == '.' && backup_dir[1] == '/')
-@@ -2288,6 +2322,34 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2290,6 +2324,34 @@ int parse_arguments(int *argc_p, const char ***argv_p)
"P *%s", backup_suffix);
parse_filter_str(&filter_list, backup_dir_buf, rule_template(0), 0);
}
if (preserve_times) {
preserve_times = PRESERVE_FILE_TIMES;
-@@ -2729,6 +2791,10 @@ void server_options(char **args, int *argc_p)
+@@ -2731,6 +2793,10 @@ void server_options(char **args, int *argc_p)
args[ac++] = "--backup-dir";
args[ac++] = backup_dir;
}
/* Only send --suffix if it specifies a non-default value. */
if (strcmp(backup_suffix, backup_dir ? "" : BACKUP_SUFFIX) != 0) {
-@@ -2737,6 +2803,14 @@ void server_options(char **args, int *argc_p)
+@@ -2739,6 +2805,14 @@ void server_options(char **args, int *argc_p)
goto oom;
args[ac++] = arg;
}
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/errcode.h b/errcode.h
--- a/errcode.h
+++ b/errcode.h
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/clientserver.c b/clientserver.c
--- a/clientserver.c
+++ b/clientserver.c
int max_delete = INT_MIN;
OFF_T max_size = -1;
OFF_T min_size = -1;
-@@ -677,6 +678,7 @@ void usage(enum logcode F)
+@@ -681,6 +682,7 @@ void usage(enum logcode F)
rprintf(F," -q, --quiet suppress non-error messages\n");
rprintf(F," --no-motd suppress daemon-mode MOTD (see manpage caveat)\n");
rprintf(F," -c, --checksum skip based on checksum, not mod-time & size\n");
rprintf(F," -a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)\n");
rprintf(F," --no-OPTION turn off an implied OPTION (e.g. --no-D)\n");
rprintf(F," -r, --recursive recurse into directories\n");
-@@ -828,7 +830,7 @@ enum {OPT_VERSION = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
+@@ -832,7 +834,7 @@ enum {OPT_VERSION = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
OPT_FILTER, OPT_COMPARE_DEST, OPT_COPY_DEST, OPT_LINK_DEST, OPT_HELP,
OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_MODIFY_WINDOW, OPT_MIN_SIZE, OPT_CHMOD,
OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_ONLY_WRITE_BATCH, OPT_MAX_SIZE,
OPT_USERMAP, OPT_GROUPMAP, OPT_CHOWN, OPT_BWLIMIT,
OPT_SERVER, OPT_REFUSED_BASE = 9000};
-@@ -976,6 +978,7 @@ static struct poptOption long_options[] = {
+@@ -980,6 +982,7 @@ static struct poptOption long_options[] = {
{"checksum", 'c', POPT_ARG_VAL, &always_checksum, 1, 0, 0 },
{"no-checksum", 0, POPT_ARG_VAL, &always_checksum, 0, 0, 0 },
{"no-c", 0, POPT_ARG_VAL, &always_checksum, 0, 0, 0 },
{"block-size", 'B', POPT_ARG_LONG, &block_size, 0, 0, 0 },
{"compare-dest", 0, POPT_ARG_STRING, 0, OPT_COMPARE_DEST, 0, 0 },
{"copy-dest", 0, POPT_ARG_STRING, 0, OPT_COPY_DEST, 0, 0 },
-@@ -1785,6 +1788,23 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1787,6 +1790,23 @@ int parse_arguments(int *argc_p, const char ***argv_p)
}
break;
case OPT_INFO:
arg = poptGetOptArg(pc);
parse_output_words(info_words, info_levels, arg, USER_PRIORITY);
-@@ -2066,6 +2086,9 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2068,6 +2088,9 @@ int parse_arguments(int *argc_p, const char ***argv_p)
}
#endif
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
-@@ -1790,7 +1790,15 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1792,7 +1792,15 @@ int parse_arguments(int *argc_p, const char ***argv_p)
case OPT_SUMFILES:
arg = poptGetOptArg(pc);
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/flist.c b/flist.c
--- a/flist.c
+++ b/flist.c
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/loadparm.c b/loadparm.c
--- a/loadparm.c
+++ b/loadparm.c
int remove_source_files = 0;
int one_file_system = 0;
int protocol_version = PROTOCOL_VERSION;
-@@ -789,6 +791,8 @@ void usage(enum logcode F)
+@@ -793,6 +795,8 @@ void usage(enum logcode F)
rprintf(F," --address=ADDRESS bind address for outgoing socket to daemon\n");
rprintf(F," --port=PORT specify double-colon alternate port number\n");
rprintf(F," --sockopts=OPTIONS specify custom TCP options\n");
rprintf(F," --blocking-io use blocking I/O for the remote shell\n");
rprintf(F," --stats give some file-transfer stats\n");
rprintf(F," -8, --8-bit-output leave high-bit chars unescaped in output\n");
-@@ -1058,6 +1062,8 @@ static struct poptOption long_options[] = {
+@@ -1062,6 +1066,8 @@ static struct poptOption long_options[] = {
#endif
{"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 },
{"server", 0, POPT_ARG_NONE, 0, OPT_SERVER, 0, 0 },
{"sender", 0, POPT_ARG_NONE, 0, OPT_SENDER, 0, 0 },
-@@ -1085,6 +1091,8 @@ static void daemon_usage(enum logcode F)
+@@ -1089,6 +1095,8 @@ static void daemon_usage(enum logcode F)
rprintf(F," --log-file=FILE override the \"log file\" setting\n");
rprintf(F," --log-file-format=FMT override the \"log format\" setting\n");
rprintf(F," --sockopts=OPTIONS specify custom TCP options\n");
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
int write_devices = 0;
int preserve_links = 0;
int preserve_hard_links = 0;
-@@ -710,6 +711,7 @@ void usage(enum logcode F)
+@@ -714,6 +715,7 @@ void usage(enum logcode F)
rprintf(F," -o, --owner preserve owner (super-user only)\n");
rprintf(F," -g, --group preserve group\n");
rprintf(F," --devices preserve device files (super-user only)\n");
rprintf(F," --specials preserve special files\n");
rprintf(F," -D same as --devices --specials\n");
rprintf(F," -t, --times preserve modification times\n");
-@@ -901,6 +903,7 @@ static struct poptOption long_options[] = {
+@@ -905,6 +907,7 @@ static struct poptOption long_options[] = {
{"no-D", 0, POPT_ARG_NONE, 0, OPT_NO_D, 0, 0 },
{"devices", 0, POPT_ARG_VAL, &preserve_devices, 1, 0, 0 },
{"no-devices", 0, POPT_ARG_VAL, &preserve_devices, 0, 0, 0 },
{"write-devices", 0, POPT_ARG_VAL, &write_devices, 1, 0, 0 },
{"no-write-devices", 0, POPT_ARG_VAL, &write_devices, 0, 0, 0 },
{"specials", 0, POPT_ARG_VAL, &preserve_specials, 1, 0, 0 },
-@@ -2911,6 +2914,9 @@ void server_options(char **args, int *argc_p)
+@@ -2913,6 +2916,9 @@ void server_options(char **args, int *argc_p)
else if (remove_source_files)
args[ac++] = "--remove-sent-files";
int update_only = 0;
int open_noatime = 0;
int cvs_exclude = 0;
-@@ -581,6 +582,7 @@ static void print_rsync_version(enum logcode f)
- char const *iconv = "no ";
+@@ -582,6 +583,7 @@ static void print_rsync_version(enum logcode f)
char const *ipv6 = "no ";
+ char const *sse2 = "no ";
char const *fileflags = "no ";
+ char const *crtimes = "no ";
STRUCT_STAT *dumstat;
#if SUBPROTOCOL_VERSION != 0
-@@ -620,6 +622,9 @@ static void print_rsync_version(enum logcode f)
+@@ -624,6 +626,9 @@ static void print_rsync_version(enum logcode f)
#ifdef SUPPORT_FILEFLAGS
fileflags = "";
#endif
rprintf(f, "%s version %s protocol version %d%s\n",
RSYNC_NAME, RSYNC_VERSION, PROTOCOL_VERSION, subprotocol);
-@@ -633,8 +638,10 @@ static void print_rsync_version(enum logcode f)
- (int)(sizeof (int64) * 8));
- rprintf(f, " %ssocketpairs, %shardlinks, %ssymlinks, %sIPv6, batchfiles, %sinplace,\n",
+@@ -639,8 +644,8 @@ static void print_rsync_version(enum logcode f)
got_socketpair, hardlinks, links, ipv6, have_inplace);
-- rprintf(f, " %sappend, %sACLs, %sxattrs, %siconv, %ssymtimes, %sprealloc, %sfile-flags\n",
-+ rprintf(f, " %sappend, %sACLs, %sxattrs, %siconv, %ssymtimes, %sprealloc, %sfile-flags,\n",
- have_inplace, acls, xattrs, iconv, symtimes, prealloc, fileflags);
-+ rprintf(f, " %scrtimes\n",
-+ crtimes);
+ rprintf(f, " %sappend, %sACLs, %sxattrs, %siconv, %ssymtimes, %sprealloc, %ssse2,\n",
+ have_inplace, acls, xattrs, iconv, symtimes, prealloc, sse2);
+- rprintf(f, " %sfile-flags\n",
+- fileflags);
++ rprintf(f, " %sfile-flags, %scrtimes\n",
++ fileflags, crtimes);
#ifdef MAINTAINER_MODE
rprintf(f, "Panic Action: \"%s\"\n", get_panic_action());
-@@ -724,6 +731,9 @@ void usage(enum logcode F)
+@@ -730,6 +735,9 @@ void usage(enum logcode F)
rprintf(F," -t, --times preserve modification times\n");
rprintf(F," -U, --atimes preserve access (last-used) times\n");
rprintf(F," --open-noatime avoid changing the atime on opened files\n");
rprintf(F," -O, --omit-dir-times omit directories from --times\n");
rprintf(F," -J, --omit-link-times omit symlinks from --times\n");
rprintf(F," --super receiver attempts super-user activities\n");
-@@ -899,6 +909,11 @@ static struct poptOption long_options[] = {
+@@ -905,6 +913,11 @@ static struct poptOption long_options[] = {
{"no-U", 0, POPT_ARG_VAL, &preserve_atimes, 0, 0, 0 },
{"open-noatime", 0, POPT_ARG_VAL, &open_noatime, 1, 0, 0 },
{"no-open-noatime", 0, POPT_ARG_VAL, &open_noatime, 0, 0, 0 },
{"omit-dir-times", 'O', POPT_ARG_VAL, &omit_dir_times, 1, 0, 0 },
{"no-omit-dir-times",0, POPT_ARG_VAL, &omit_dir_times, 0, 0, 0 },
{"no-O", 0, POPT_ARG_VAL, &omit_dir_times, 0, 0, 0 },
-@@ -2600,6 +2615,10 @@ void server_options(char **args, int *argc_p)
+@@ -2604,6 +2617,10 @@ void server_options(char **args, int *argc_p)
if (preserve_atimes > 1)
argstr[x++] = 'U';
}
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/exclude.c b/exclude.c
--- a/exclude.c
+++ b/exclude.c
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
int daemon_bwlimit = 0;
int bwlimit = 0;
int fuzzy_basis = 0;
-@@ -765,6 +766,7 @@ void usage(enum logcode F)
+@@ -769,6 +770,7 @@ void usage(enum logcode F)
rprintf(F," -I, --ignore-times don't skip files that match in size and mod-time\n");
rprintf(F," -M, --remote-option=OPTION send OPTION to the remote side only\n");
rprintf(F," --size-only skip files that match in size\n");
rprintf(F," -@, --modify-window=NUM set the accuracy for mod-time comparisons\n");
rprintf(F," -T, --temp-dir=DIR create temporary files in directory DIR\n");
rprintf(F," -y, --fuzzy find similar file for basis if no dest file\n");
-@@ -928,6 +930,7 @@ static struct poptOption long_options[] = {
+@@ -932,6 +934,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 },
{"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 },
-@@ -2794,6 +2797,9 @@ void server_options(char **args, int *argc_p)
+@@ -2796,6 +2799,9 @@ void server_options(char **args, int *argc_p)
else if (missing_args == 1 && !am_sender)
args[ac++] = "--ignore-missing-args";
./configure
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/.gitignore b/.gitignore
--- a/.gitignore
+++ b/.gitignore
mandir=@mandir@
LIBS=@LIBS@
-@@ -29,7 +30,7 @@ VERSION=@RSYNC_VERSION@
+@@ -31,7 +32,7 @@ VERSION=@RSYNC_VERSION@
.SUFFIXES:
.SUFFIXES: .c .o
HEADERS=byteorder.h config.h errcode.h proto.h rsync.h ifuncs.h itypes.h inums.h \
lib/pool_alloc.h
LIBOBJ=lib/wildmatch.o lib/compat.o lib/snprintf.o lib/mdfour.o lib/md5.o \
-@@ -39,7 +40,7 @@ zlib_OBJS=zlib/deflate.o zlib/inffast.o zlib/inflate.o zlib/inftrees.o \
+@@ -41,7 +42,7 @@ zlib_OBJS=zlib/deflate.o zlib/inffast.o zlib/inflate.o zlib/inftrees.o \
OBJS1=flist.o rsync.o generator.o receiver.o cleanup.o sender.o exclude.o \
util.o util2.o main.o checksum.o match.o syscall.o log.o backup.o delete.o
OBJS2=options.o io.o compat.o hlink.o token.o uidlist.o socket.o hashtable.o \
- fileio.o batch.o clientname.o chmod.o acls.o xattrs.o
+ fileio.o batch.o clientname.o chmod.o db.o acls.o xattrs.o
OBJS3=progress.o pipe.o
+ CXXOBJ=@CXXOBJ@
DAEMON_OBJ = params.o loadparm.o clientserver.o access.o connection.o authenticate.o
- popt_OBJS=popt/findme.o popt/popt.o popt/poptconfig.o \
-@@ -63,17 +64,20 @@ CHECK_OBJS=tls.o testrun.o getgroups.o getfsdev.o t_stub.o t_unsafe.o trimslash.
+@@ -66,17 +67,20 @@ CHECK_OBJS=tls.o testrun.o getgroups.o getfsdev.o t_stub.o t_unsafe.o trimslash.
$(CC) -I. -I$(srcdir) $(CFLAGS) $(CPPFLAGS) -c $< @CC_SHOBJ_FLAG@
@OBJ_RESTORE@
if test -f rsyncd.conf.5; then ${INSTALLMAN} -m 644 rsyncd.conf.5 ${DESTDIR}${mandir}/man5; fi
install-ssl-daemon: stunnel-rsyncd.conf
-@@ -91,6 +95,9 @@ install-strip:
+@@ -94,6 +98,9 @@ install-strip:
rsync$(EXEEXT): $(OBJS)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
$(OBJS): $(HEADERS)
$(CHECK_OBJS): $(HEADERS)
options.o: latest-year.h
-@@ -203,10 +210,10 @@ proto.h: proto.h-tstamp
+@@ -209,10 +216,10 @@ proto.h: proto.h-tstamp
proto.h-tstamp: $(srcdir)/*.c $(srcdir)/lib/compat.c config.h
awk -f $(srcdir)/mkproto.awk $(srcdir)/*.c $(srcdir)/lib/compat.c
if test -f $$fn; then \
: ; \
elif test -f $(srcdir)/$$fn; then \
-@@ -225,12 +232,16 @@ rsync-ssl.1: rsync-ssl.yo
+@@ -231,12 +238,16 @@ rsync-ssl.1: rsync-ssl.yo
yodl2man -o rsync-ssl.1 $(srcdir)/rsync-ssl.yo
-$(srcdir)/tweak_manpage rsync-ssl.1
extern char *checksum_choice;
#define CSUM_NONE 0
-@@ -219,6 +220,8 @@ void file_checksum(const char *fname, const STRUCT_STAT *st_p, char *sum)
+@@ -221,6 +222,8 @@ void file_checksum(const char *fname, const STRUCT_STAT *st_p, char *sum)
md5_update(&m, (uchar *)map_ptr(buf, i, remainder), remainder);
md5_result(&m, (uchar *)sum);
break;
case CSUM_MD4:
case CSUM_MD4_OLD:
-@@ -239,6 +242,8 @@ void file_checksum(const char *fname, const STRUCT_STAT *st_p, char *sum)
+@@ -241,6 +244,8 @@ void file_checksum(const char *fname, const STRUCT_STAT *st_p, char *sum)
mdfour_update(&m, (uchar *)map_ptr(buf, i, remainder), remainder);
mdfour_result(&m, (uchar *)sum);
diff --git a/configure.ac b/configure.ac
--- a/configure.ac
+++ b/configure.ac
-@@ -347,6 +347,7 @@ AC_CHECK_HEADERS(sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h \
+@@ -367,6 +367,7 @@ AC_CHECK_HEADERS(sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h \
unistd.h utime.h grp.h compat.h sys/param.h ctype.h sys/wait.h \
sys/ioctl.h sys/filio.h string.h stdlib.h sys/socket.h sys/mode.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 \
popt.h popt/popt.h linux/falloc.h netinet/in_systm.h netinet/ip.h \
-@@ -1112,6 +1113,48 @@ if test x"$enable_acl_support" = x"no" -o x"$enable_xattr_support" = x"no" -o x"
+@@ -1132,6 +1133,48 @@ if test x"$enable_acl_support" = x"no" -o x"$enable_xattr_support" = x"no" -o x"
fi
fi
DEBUG_WORD(DEL, W_REC, "Debug delete actions (levels 1-3)"),
DEBUG_WORD(DELTASUM, W_SND|W_REC, "Debug delta-transfer checksumming (levels 1-4)"),
DEBUG_WORD(DUP, W_REC, "Debug weeding of duplicate names"),
-@@ -578,6 +584,7 @@ static void print_rsync_version(enum logcode f)
- char const *links = "no ";
+@@ -579,6 +585,7 @@ static void print_rsync_version(enum logcode f)
char const *iconv = "no ";
char const *ipv6 = "no ";
+ char const *sse2 = "no ";
+ char const *db = "no ";
STRUCT_STAT *dumstat;
#if SUBPROTOCOL_VERSION != 0
-@@ -614,6 +621,11 @@ static void print_rsync_version(enum logcode f)
- #ifdef CAN_SET_SYMLINK_TIMES
- symtimes = "";
+@@ -618,6 +625,12 @@ static void print_rsync_version(enum logcode f)
+ #ifdef ENABLE_SSE2
+ sse2 = "";
#endif
+#if defined HAVE_MYSQL_MYSQL_H && defined HAVE_LIBMYSQLCLIENT
+ db = "";
++#endif
+#elif defined HAVE_SQLITE3_H && defined HAVE_LIBSQLITE3
+ db = "";
+#endif
rprintf(f, "%s version %s protocol version %d%s\n",
RSYNC_NAME, RSYNC_VERSION, PROTOCOL_VERSION, subprotocol);
-@@ -627,8 +639,8 @@ static void print_rsync_version(enum logcode f)
+@@ -631,8 +644,10 @@ static void print_rsync_version(enum logcode f)
(int)(sizeof (int64) * 8));
rprintf(f, " %ssocketpairs, %shardlinks, %ssymlinks, %sIPv6, batchfiles, %sinplace,\n",
got_socketpair, hardlinks, links, ipv6, have_inplace);
-- rprintf(f, " %sappend, %sACLs, %sxattrs, %siconv, %ssymtimes, %sprealloc\n",
-- have_inplace, acls, xattrs, iconv, symtimes, prealloc);
-+ rprintf(f, " %sappend, %sACLs, %sxattrs, %siconv, %ssymtimes, %sprealloc, %sdb\n",
-+ have_inplace, acls, xattrs, iconv, symtimes, prealloc, db);
+- rprintf(f, " %sappend, %sACLs, %sxattrs, %siconv, %ssymtimes, %sprealloc, %ssse2\n",
++ rprintf(f, " %sappend, %sACLs, %sxattrs, %siconv, %ssymtimes, %sprealloc, %ssse2,\n",
+ have_inplace, acls, xattrs, iconv, symtimes, prealloc, sse2);
++ rprintf(f, " %sdb\n",
++ db);
#ifdef MAINTAINER_MODE
rprintf(f, "Panic Action: \"%s\"\n", get_panic_action());
-@@ -677,6 +689,9 @@ void usage(enum logcode F)
+@@ -681,6 +696,9 @@ void usage(enum logcode F)
rprintf(F," -q, --quiet suppress non-error messages\n");
rprintf(F," --no-motd suppress daemon-mode MOTD (see manpage caveat)\n");
rprintf(F," -c, --checksum skip based on checksum, not mod-time & size\n");
rprintf(F," -a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)\n");
rprintf(F," --no-OPTION turn off an implied OPTION (e.g. --no-D)\n");
rprintf(F," -r, --recursive recurse into directories\n");
-@@ -829,6 +844,7 @@ enum {OPT_VERSION = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
+@@ -833,6 +851,7 @@ enum {OPT_VERSION = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_MODIFY_WINDOW, OPT_MIN_SIZE, OPT_CHMOD,
OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_ONLY_WRITE_BATCH, OPT_MAX_SIZE,
OPT_NO_D, OPT_APPEND, OPT_NO_ICONV, OPT_INFO, OPT_DEBUG,
OPT_USERMAP, OPT_GROUPMAP, OPT_CHOWN, OPT_BWLIMIT,
OPT_SERVER, OPT_REFUSED_BASE = 9000};
-@@ -976,6 +992,10 @@ static struct poptOption long_options[] = {
+@@ -980,6 +999,10 @@ static struct poptOption long_options[] = {
{"checksum", 'c', POPT_ARG_VAL, &always_checksum, 1, 0, 0 },
{"no-checksum", 0, POPT_ARG_VAL, &always_checksum, 0, 0, 0 },
{"no-c", 0, POPT_ARG_VAL, &always_checksum, 0, 0, 0 },
{"block-size", 'B', POPT_ARG_LONG, &block_size, 0, 0, 0 },
{"compare-dest", 0, POPT_ARG_STRING, 0, OPT_COMPARE_DEST, 0, 0 },
{"copy-dest", 0, POPT_ARG_STRING, 0, OPT_COPY_DEST, 0, 0 },
-@@ -1067,6 +1087,9 @@ static struct poptOption long_options[] = {
+@@ -1071,6 +1094,9 @@ static struct poptOption long_options[] = {
{"dparam", 0, POPT_ARG_STRING, 0, OPT_DAEMON, 0, 0 },
{"detach", 0, POPT_ARG_NONE, 0, OPT_DAEMON, 0, 0 },
{"no-detach", 0, POPT_ARG_NONE, 0, OPT_DAEMON, 0, 0 },
{0,0,0,0, 0, 0, 0}
};
-@@ -1120,6 +1143,50 @@ static struct poptOption long_daemon_options[] = {
+@@ -1124,6 +1150,50 @@ static struct poptOption long_daemon_options[] = {
{0,0,0,0, 0, 0, 0}
};
static char err_buf[200];
-@@ -1245,6 +1312,8 @@ static void set_refuse_options(void)
+@@ -1247,6 +1317,8 @@ static void set_refuse_options(void)
parse_one_refuse_match(0, "iconv", list_end);
#endif
parse_one_refuse_match(0, "log-file*", list_end);
}
/* Now we use the descrip values to actually mark the options for refusal. */
-@@ -1369,6 +1438,102 @@ static void create_refuse_error(int which)
+@@ -1371,6 +1443,102 @@ static void create_refuse_error(int which)
}
}
/* This is used to make sure that --daemon & --server cannot be aliased to
* something else. These options have always disabled popt aliases for the
* parsing of a daemon or server command-line, but we have to make sure that
-@@ -1407,6 +1572,12 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1409,6 +1577,12 @@ int parse_arguments(int *argc_p, const char ***argv_p)
return 0;
}
set_refuse_options();
#ifdef ICONV_OPTION
-@@ -1528,6 +1699,12 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1530,6 +1704,12 @@ int parse_arguments(int *argc_p, const char ***argv_p)
am_daemon = 1;
return 1;
case OPT_MODIFY_WINDOW:
/* The value has already been set by popt, but
* we need to remember that we're using a
-@@ -1602,6 +1779,10 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1604,6 +1784,10 @@ int parse_arguments(int *argc_p, const char ***argv_p)
preserve_devices = preserve_specials = 0;
break;
#define NDX_DONE -1
#define NDX_FLIST_EOF -2
#define NDX_DEL_STATS -3
-@@ -1315,7 +1319,8 @@ extern short info_levels[], debug_levels[];
+@@ -1317,7 +1321,8 @@ extern short info_levels[], debug_levels[];
#define DEBUG_CHDIR (DEBUG_BIND+1)
#define DEBUG_CONNECT (DEBUG_CHDIR+1)
#define DEBUG_CMD (DEBUG_CONNECT+1)
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
-@@ -770,6 +770,8 @@ void usage(enum logcode F)
+@@ -774,6 +774,8 @@ void usage(enum logcode F)
rprintf(F," -T, --temp-dir=DIR create temporary files in directory DIR\n");
rprintf(F," -y, --fuzzy find similar file for basis if no dest file\n");
rprintf(F," --detect-renamed try to find renamed files to speed up the transfer\n");
rprintf(F," --compare-dest=DIR also compare destination files relative to DIR\n");
rprintf(F," --copy-dest=DIR ... and include copies of unchanged files\n");
rprintf(F," --link-dest=DIR hardlink to files in DIR when unchanged\n");
-@@ -982,7 +984,9 @@ static struct poptOption long_options[] = {
+@@ -986,7 +988,9 @@ static struct poptOption long_options[] = {
{"compare-dest", 0, POPT_ARG_STRING, 0, OPT_COMPARE_DEST, 0, 0 },
{"copy-dest", 0, POPT_ARG_STRING, 0, OPT_COPY_DEST, 0, 0 },
{"link-dest", 0, POPT_ARG_STRING, 0, OPT_LINK_DEST, 0, 0 },
{"fuzzy", 'y', POPT_ARG_NONE, 0, 'y', 0, 0 },
{"no-fuzzy", 0, POPT_ARG_VAL, &fuzzy_basis, 0, 0, 0 },
{"no-y", 0, POPT_ARG_VAL, &fuzzy_basis, 0, 0, 0 },
-@@ -2781,8 +2785,14 @@ void server_options(char **args, int *argc_p)
+@@ -2783,8 +2787,14 @@ void server_options(char **args, int *argc_p)
args[ac++] = "--super";
if (size_only)
args[ac++] = "--size-only";
a file that can't use it, while missing out on giving it to a file
that could use it.
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/backup.c b/backup.c
--- a/backup.c
+++ b/backup.c
int implied_dirs = 1;
int missing_args = 0; /* 0 = FERROR_XFER, 1 = ignore, 2 = delete */
int numeric_ids = 0;
-@@ -768,6 +769,7 @@ void usage(enum logcode F)
+@@ -772,6 +773,7 @@ void usage(enum logcode F)
rprintf(F," -@, --modify-window=NUM set the accuracy for mod-time comparisons\n");
rprintf(F," -T, --temp-dir=DIR create temporary files in directory DIR\n");
rprintf(F," -y, --fuzzy find similar file for basis if no dest file\n");
rprintf(F," --compare-dest=DIR also compare destination files relative to DIR\n");
rprintf(F," --copy-dest=DIR ... and include copies of unchanged files\n");
rprintf(F," --link-dest=DIR hardlink to files in DIR when unchanged\n");
-@@ -980,6 +982,7 @@ static struct poptOption long_options[] = {
+@@ -984,6 +986,7 @@ static struct poptOption long_options[] = {
{"compare-dest", 0, POPT_ARG_STRING, 0, OPT_COMPARE_DEST, 0, 0 },
{"copy-dest", 0, POPT_ARG_STRING, 0, OPT_COPY_DEST, 0, 0 },
{"link-dest", 0, POPT_ARG_STRING, 0, OPT_LINK_DEST, 0, 0 },
{"fuzzy", 'y', POPT_ARG_NONE, 0, 'y', 0, 0 },
{"no-fuzzy", 0, POPT_ARG_VAL, &fuzzy_basis, 0, 0, 0 },
{"no-y", 0, POPT_ARG_VAL, &fuzzy_basis, 0, 0, 0 },
-@@ -2378,7 +2381,7 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2380,7 +2383,7 @@ int parse_arguments(int *argc_p, const char ***argv_p)
inplace = 1;
}
partial_dir = tmp_partialdir;
if (inplace) {
-@@ -2387,6 +2390,7 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2389,6 +2392,7 @@ int parse_arguments(int *argc_p, const char ***argv_p)
snprintf(err_buf, sizeof err_buf,
"--%s cannot be used with --%s\n",
append_mode ? "append" : "inplace",
delay_updates ? "delay-updates" : "partial-dir");
return 0;
}
-@@ -2777,6 +2781,8 @@ void server_options(char **args, int *argc_p)
+@@ -2779,6 +2783,8 @@ void server_options(char **args, int *argc_p)
args[ac++] = "--super";
if (size_only)
args[ac++] = "--size-only";
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
extern int module_id;
extern int local_server;
extern int sanitize_paths;
-@@ -755,6 +756,7 @@ void usage(enum logcode F)
+@@ -759,6 +760,7 @@ void usage(enum logcode F)
rprintf(F," --partial keep partially transferred files\n");
rprintf(F," --partial-dir=DIR put a partially transferred file into DIR\n");
rprintf(F," --delay-updates put all updated files into place at transfer's end\n");
rprintf(F," -m, --prune-empty-dirs prune empty directory chains from the file-list\n");
rprintf(F," --numeric-ids don't map uid/gid values by user/group name\n");
rprintf(F," --usermap=STRING custom username mapping\n");
-@@ -998,6 +1000,8 @@ static struct poptOption long_options[] = {
+@@ -1002,6 +1004,8 @@ static struct poptOption long_options[] = {
{"partial-dir", 0, POPT_ARG_STRING, &partial_dir, 0, 0, 0 },
{"delay-updates", 0, POPT_ARG_VAL, &delay_updates, 1, 0, 0 },
{"no-delay-updates", 0, POPT_ARG_VAL, &delay_updates, 0, 0, 0 },
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
int update_only = 0;
int open_noatime = 0;
int cvs_exclude = 0;
-@@ -686,6 +687,7 @@ void usage(enum logcode F)
+@@ -690,6 +691,7 @@ void usage(enum logcode F)
rprintf(F," --backup-dir=DIR make backups into hierarchy based in DIR\n");
rprintf(F," --suffix=SUFFIX set backup suffix (default %s w/o --backup-dir)\n",BACKUP_SUFFIX);
rprintf(F," -u, --update skip files that are newer on the receiver\n");
rprintf(F," --inplace update destination files in-place (SEE MAN PAGE)\n");
rprintf(F," --append append data onto shorter files\n");
rprintf(F," --append-verify like --append, but with old data in file checksum\n");
-@@ -932,6 +934,7 @@ static struct poptOption long_options[] = {
+@@ -936,6 +938,7 @@ static struct poptOption long_options[] = {
{"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 },
{"update", 'u', POPT_ARG_NONE, &update_only, 0, 0, 0 },
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/compat.c b/compat.c
--- a/compat.c
+++ b/compat.c
int io_timeout = 0;
int prune_empty_dirs = 0;
int use_qsort = 0;
-@@ -578,6 +580,7 @@ static void print_rsync_version(enum logcode f)
- char const *links = "no ";
+@@ -579,6 +581,7 @@ static void print_rsync_version(enum logcode f)
char const *iconv = "no ";
char const *ipv6 = "no ";
+ char const *sse2 = "no ";
+ char const *fileflags = "no ";
STRUCT_STAT *dumstat;
#if SUBPROTOCOL_VERSION != 0
-@@ -614,6 +617,9 @@ static void print_rsync_version(enum logcode f)
- #ifdef CAN_SET_SYMLINK_TIMES
- symtimes = "";
+@@ -618,6 +621,9 @@ static void print_rsync_version(enum logcode f)
+ #ifdef ENABLE_SSE2
+ sse2 = "";
#endif
+#ifdef SUPPORT_FILEFLAGS
+ fileflags = "";
rprintf(f, "%s version %s protocol version %d%s\n",
RSYNC_NAME, RSYNC_VERSION, PROTOCOL_VERSION, subprotocol);
-@@ -627,8 +633,8 @@ static void print_rsync_version(enum logcode f)
+@@ -631,8 +637,10 @@ static void print_rsync_version(enum logcode f)
(int)(sizeof (int64) * 8));
rprintf(f, " %ssocketpairs, %shardlinks, %ssymlinks, %sIPv6, batchfiles, %sinplace,\n",
got_socketpair, hardlinks, links, ipv6, have_inplace);
-- rprintf(f, " %sappend, %sACLs, %sxattrs, %siconv, %ssymtimes, %sprealloc\n",
-- have_inplace, acls, xattrs, iconv, symtimes, prealloc);
-+ rprintf(f, " %sappend, %sACLs, %sxattrs, %siconv, %ssymtimes, %sprealloc, %sfile-flags\n",
-+ have_inplace, acls, xattrs, iconv, symtimes, prealloc, fileflags);
+- rprintf(f, " %sappend, %sACLs, %sxattrs, %siconv, %ssymtimes, %sprealloc, %ssse2\n",
++ rprintf(f, " %sappend, %sACLs, %sxattrs, %siconv, %ssymtimes, %sprealloc, %ssse2,\n",
+ have_inplace, acls, xattrs, iconv, symtimes, prealloc, sse2);
++ rprintf(f, " %sfile-flags\n",
++ fileflags);
#ifdef MAINTAINER_MODE
rprintf(f, "Panic Action: \"%s\"\n", get_panic_action());
-@@ -699,6 +705,9 @@ void usage(enum logcode F)
+@@ -703,6 +711,9 @@ void usage(enum logcode F)
rprintf(F," -K, --keep-dirlinks treat symlinked dir on receiver as dir\n");
rprintf(F," -H, --hard-links preserve hard links\n");
rprintf(F," -p, --perms preserve permissions\n");
rprintf(F," -E, --executability preserve the file's executability\n");
rprintf(F," --chmod=CHMOD affect file and/or directory permissions\n");
#ifdef SUPPORT_ACLS
-@@ -748,7 +757,12 @@ void usage(enum logcode F)
+@@ -752,7 +763,12 @@ void usage(enum logcode F)
rprintf(F," --ignore-missing-args ignore missing source args without error\n");
rprintf(F," --delete-missing-args delete missing source args from destination\n");
rprintf(F," --ignore-errors delete even if there are I/O errors\n");
rprintf(F," --max-delete=NUM don't delete more than NUM files\n");
rprintf(F," --max-size=SIZE don't transfer any file larger than SIZE\n");
rprintf(F," --min-size=SIZE don't transfer any file smaller than SIZE\n");
-@@ -866,6 +880,10 @@ static struct poptOption long_options[] = {
+@@ -870,6 +886,10 @@ static struct poptOption long_options[] = {
{"perms", 'p', POPT_ARG_VAL, &preserve_perms, 1, 0, 0 },
{"no-perms", 0, POPT_ARG_VAL, &preserve_perms, 0, 0, 0 },
{"no-p", 0, POPT_ARG_VAL, &preserve_perms, 0, 0, 0 },
{"executability", 'E', POPT_ARG_NONE, &preserve_executability, 0, 0, 0 },
{"acls", 'A', POPT_ARG_NONE, 0, 'A', 0, 0 },
{"no-acls", 0, POPT_ARG_VAL, &preserve_acls, 0, 0, 0 },
-@@ -959,6 +977,14 @@ static struct poptOption long_options[] = {
+@@ -963,6 +983,14 @@ static struct poptOption long_options[] = {
{"remove-source-files",0,POPT_ARG_VAL, &remove_source_files, 1, 0, 0 },
{"force", 0, POPT_ARG_VAL, &force_delete, 1, 0, 0 },
{"no-force", 0, POPT_ARG_VAL, &force_delete, 0, 0, 0 },
{"ignore-errors", 0, POPT_ARG_VAL, &ignore_errors, 1, 0, 0 },
{"no-ignore-errors", 0, POPT_ARG_VAL, &ignore_errors, 0, 0, 0 },
{"max-delete", 0, POPT_ARG_INT, &max_delete, 0, 0, 0 },
-@@ -2678,6 +2704,9 @@ void server_options(char **args, int *argc_p)
+@@ -2680,6 +2708,9 @@ void server_options(char **args, int *argc_p)
if (xfer_dirs && !recurse && delete_mode && am_sender)
args[ac++] = "--no-r";
if (do_compression && def_compress_level != Z_DEFAULT_COMPRESSION) {
if (asprintf(&arg, "--compress-level=%d", def_compress_level) < 0)
goto oom;
-@@ -2771,6 +2800,16 @@ void server_options(char **args, int *argc_p)
+@@ -2773,6 +2804,16 @@ void server_options(char **args, int *argc_p)
args[ac++] = "--delete-excluded";
if (force_delete)
args[ac++] = "--force";
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/exclude.c b/exclude.c
--- a/exclude.c
+++ b/exclude.c
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
int ignore_times = 0;
int delete_mode = 0;
int delete_during = 0;
-@@ -756,6 +757,7 @@ void usage(enum logcode F)
+@@ -760,6 +761,7 @@ void usage(enum logcode F)
rprintf(F," --partial-dir=DIR put a partially transferred file into DIR\n");
rprintf(F," --delay-updates put all updated files into place at transfer's end\n");
rprintf(F," -m, --prune-empty-dirs prune empty directory chains from the file-list\n");
rprintf(F," --numeric-ids don't map uid/gid values by user/group name\n");
rprintf(F," --usermap=STRING custom username mapping\n");
rprintf(F," --groupmap=STRING custom groupname mapping\n");
-@@ -1033,6 +1035,7 @@ static struct poptOption long_options[] = {
+@@ -1037,6 +1039,7 @@ static struct poptOption long_options[] = {
{"no-timeout", 0, POPT_ARG_VAL, &io_timeout, 0, 0, 0 },
{"contimeout", 0, POPT_ARG_INT, &connect_timeout, 0, 0, 0 },
{"no-contimeout", 0, POPT_ARG_VAL, &connect_timeout, 0, 0, 0 },
{"rsh", 'e', POPT_ARG_STRING, &shell_cmd, 0, 0, 0 },
{"rsync-path", 0, POPT_ARG_STRING, &rsync_path, 0, 0, 0 },
{"temp-dir", 'T', POPT_ARG_STRING, &tmpdir, 0, 0, 0 },
-@@ -2857,6 +2860,9 @@ void server_options(char **args, int *argc_p)
+@@ -2859,6 +2862,9 @@ void server_options(char **args, int *argc_p)
args[ac++] = tmpdir;
}
int preserve_perms = 0;
int preserve_fileflags = 0;
int preserve_executability = 0;
-@@ -722,6 +723,10 @@ void usage(enum logcode F)
+@@ -726,6 +727,10 @@ void usage(enum logcode F)
#endif
#ifdef SUPPORT_XATTRS
rprintf(F," -X, --xattrs preserve extended attributes\n");
#endif
rprintf(F," -o, --owner preserve owner (super-user only)\n");
rprintf(F," -g, --group preserve group\n");
-@@ -999,6 +1004,12 @@ static struct poptOption long_options[] = {
+@@ -1003,6 +1008,12 @@ static struct poptOption long_options[] = {
{"no-force-change", 0, POPT_ARG_VAL, &force_change, 0, 0, 0 },
{"force-uchange", 0, POPT_ARG_VAL, &force_change, USR_IMMUTABLE, 0, 0 },
{"force-schange", 0, POPT_ARG_VAL, &force_change, SYS_IMMUTABLE, 0, 0 },
#endif
{"ignore-errors", 0, POPT_ARG_VAL, &ignore_errors, 1, 0, 0 },
{"no-ignore-errors", 0, POPT_ARG_VAL, &ignore_errors, 0, 0, 0 },
-@@ -2107,6 +2118,15 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2109,6 +2120,15 @@ int parse_arguments(int *argc_p, const char ***argv_p)
}
#endif
if (block_size) {
/* We may not know the real protocol_version at this point if this is the client
* option parsing, but we still want to check it so that the client can specify
-@@ -2726,6 +2746,11 @@ void server_options(char **args, int *argc_p)
+@@ -2728,6 +2748,11 @@ void server_options(char **args, int *argc_p)
if (preserve_fileflags)
args[ac++] = "--fileflags";
- Make this code handle multibyte character encodings, and honor the
--iconv setting when converting case.
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/exclude.c b/exclude.c
--- a/exclude.c
+++ b/exclude.c
int blocking_io = -1;
int checksum_seed = 0;
int inplace = 0;
-@@ -786,6 +787,7 @@ void usage(enum logcode F)
+@@ -790,6 +791,7 @@ void usage(enum logcode F)
rprintf(F," -0, --from0 all *-from/filter files are delimited by 0s\n");
rprintf(F," -s, --protect-args no space-splitting; only wildcard special-chars\n");
rprintf(F," --copy-as=USER[:GROUP] specify user & optional group for the copy\n");
rprintf(F," --address=ADDRESS bind address for outgoing socket to daemon\n");
rprintf(F," --port=PORT specify double-colon alternate port number\n");
rprintf(F," --sockopts=OPTIONS specify custom TCP options\n");
-@@ -1018,6 +1020,8 @@ static struct poptOption long_options[] = {
+@@ -1022,6 +1024,8 @@ static struct poptOption long_options[] = {
{"read-batch", 0, POPT_ARG_STRING, &batch_name, OPT_READ_BATCH, 0, 0 },
{"write-batch", 0, POPT_ARG_STRING, &batch_name, OPT_WRITE_BATCH, 0, 0 },
{"only-write-batch", 0, POPT_ARG_STRING, &batch_name, OPT_ONLY_WRITE_BATCH, 0, 0 },
{"files-from", 0, POPT_ARG_STRING, &files_from, 0, 0, 0 },
{"from0", '0', POPT_ARG_VAL, &eol_nulls, 1, 0, 0},
{"no-from0", 0, POPT_ARG_VAL, &eol_nulls, 0, 0, 0},
-@@ -2807,6 +2811,9 @@ void server_options(char **args, int *argc_p)
+@@ -2809,6 +2813,9 @@ void server_options(char **args, int *argc_p)
args[ac++] = arg;
}
./configure
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
-@@ -40,7 +40,7 @@ OBJS1=flist.o rsync.o generator.o receiver.o cleanup.o sender.o exclude.o \
+@@ -42,7 +42,7 @@ OBJS1=flist.o rsync.o generator.o receiver.o cleanup.o sender.o exclude.o \
util.o util2.o main.o checksum.o match.o syscall.o log.o backup.o delete.o
OBJS2=options.o io.o compat.o hlink.o token.o uidlist.o socket.o hashtable.o \
fileio.o batch.o clientname.o chmod.o acls.o xattrs.o
-OBJS3=progress.o pipe.o
+OBJS3=progress.o pipe.o gss-auth.o
+ CXXOBJ=@CXXOBJ@
DAEMON_OBJ = params.o loadparm.o clientserver.o access.o connection.o authenticate.o
popt_OBJS=popt/findme.o popt/popt.o popt/poptconfig.o \
- popt/popthelp.o popt/poptparse.o
diff --git a/clientserver.c b/clientserver.c
--- a/clientserver.c
+++ b/clientserver.c
diff --git a/configure.ac b/configure.ac
--- a/configure.ac
+++ b/configure.ac
-@@ -702,6 +702,31 @@ if test x"$enable_iconv" != x"no"; then
+@@ -722,6 +722,31 @@ if test x"$enable_iconv" != x"no"; then
AC_DEFINE(UTF8_CHARSET, "UTF-8", [String to pass to iconv() for the UTF-8 charset.])
fi
./configure
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
-@@ -40,7 +40,7 @@ OBJS1=flist.o rsync.o generator.o receiver.o cleanup.o sender.o exclude.o \
+@@ -42,7 +42,7 @@ OBJS1=flist.o rsync.o generator.o receiver.o cleanup.o sender.o exclude.o \
util.o util2.o main.o checksum.o match.o syscall.o log.o backup.o delete.o
OBJS2=options.o io.o compat.o hlink.o token.o uidlist.o socket.o hashtable.o \
fileio.o batch.o clientname.o chmod.o acls.o xattrs.o
-OBJS3=progress.o pipe.o
+OBJS3=progress.o pipe.o hashlink.o
+ CXXOBJ=@CXXOBJ@
DAEMON_OBJ = params.o loadparm.o clientserver.o access.o connection.o authenticate.o
popt_OBJS=popt/findme.o popt/popt.o popt/poptconfig.o \
- popt/popthelp.o popt/poptparse.o
diff --git a/checksum.c b/checksum.c
--- a/checksum.c
+++ b/checksum.c
extern char *checksum_choice;
#define CSUM_NONE 0
-@@ -250,7 +253,7 @@ void file_checksum(const char *fname, const STRUCT_STAT *st_p, char *sum)
+@@ -252,7 +255,7 @@ void file_checksum(const char *fname, const STRUCT_STAT *st_p, char *sum)
}
static int32 sumresidue;
static int cursum_type;
void sum_init(int csum_type, int seed)
-@@ -264,6 +267,8 @@ void sum_init(int csum_type, int seed)
+@@ -266,6 +269,8 @@ void sum_init(int csum_type, int seed)
switch (csum_type) {
case CSUM_MD5:
md5_begin(&md);
break;
case CSUM_MD4:
mdfour_begin(&md);
-@@ -297,6 +302,8 @@ void sum_update(const char *p, int32 len)
+@@ -299,6 +304,8 @@ void sum_update(const char *p, int32 len)
switch (cursum_type) {
case CSUM_MD5:
md5_update(&md, (uchar *)p, len);
break;
case CSUM_MD4:
case CSUM_MD4_OLD:
-@@ -342,6 +349,8 @@ int sum_end(char *sum)
+@@ -344,6 +351,8 @@ int sum_end(char *sum)
switch (cursum_type) {
case CSUM_MD5:
md5_result(&md, (uchar *)sum);
DEBUG_WORD(HLINK, W_SND|W_REC, "Debug hard-link actions (levels 1-3)"),
DEBUG_WORD(ICONV, W_CLI|W_SRV, "Debug iconv character conversions (levels 1-2)"),
DEBUG_WORD(IO, W_CLI|W_SRV, "Debug I/O routines (levels 1-4)"),
-@@ -771,6 +773,7 @@ void usage(enum logcode F)
+@@ -775,6 +777,7 @@ void usage(enum logcode F)
rprintf(F," --compare-dest=DIR also compare destination files relative to DIR\n");
rprintf(F," --copy-dest=DIR ... and include copies of unchanged files\n");
rprintf(F," --link-dest=DIR hardlink to files in DIR when unchanged\n");
rprintf(F," -z, --compress compress file data during the transfer\n");
rprintf(F," --compress-level=NUM explicitly set compression level\n");
rprintf(F," --skip-compress=LIST skip compressing files with a suffix in LIST\n");
-@@ -828,7 +831,7 @@ enum {OPT_VERSION = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
+@@ -832,7 +835,7 @@ enum {OPT_VERSION = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
OPT_FILTER, OPT_COMPARE_DEST, OPT_COPY_DEST, OPT_LINK_DEST, OPT_HELP,
OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_MODIFY_WINDOW, OPT_MIN_SIZE, OPT_CHMOD,
OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_ONLY_WRITE_BATCH, OPT_MAX_SIZE,
OPT_USERMAP, OPT_GROUPMAP, OPT_CHOWN, OPT_BWLIMIT,
OPT_SERVER, OPT_REFUSED_BASE = 9000};
-@@ -980,6 +983,7 @@ static struct poptOption long_options[] = {
+@@ -984,6 +987,7 @@ static struct poptOption long_options[] = {
{"compare-dest", 0, POPT_ARG_STRING, 0, OPT_COMPARE_DEST, 0, 0 },
{"copy-dest", 0, POPT_ARG_STRING, 0, OPT_COPY_DEST, 0, 0 },
{"link-dest", 0, POPT_ARG_STRING, 0, OPT_LINK_DEST, 0, 0 },
{"fuzzy", 'y', POPT_ARG_NONE, 0, 'y', 0, 0 },
{"no-fuzzy", 0, POPT_ARG_VAL, &fuzzy_basis, 0, 0, 0 },
{"no-y", 0, POPT_ARG_VAL, &fuzzy_basis, 0, 0, 0 },
-@@ -1414,6 +1418,9 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1416,6 +1420,9 @@ int parse_arguments(int *argc_p, const char ***argv_p)
iconv_opt = strdup(arg);
#endif
/* TODO: Call poptReadDefaultConfig; handle errors. */
/* The context leaks in case of an error, but if there's a
-@@ -1897,6 +1904,21 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1899,6 +1906,21 @@ int parse_arguments(int *argc_p, const char ***argv_p)
return 0;
#endif
default:
/* A large opt value means that set_refuse_options()
* turned this option off. */
-@@ -2219,6 +2241,8 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2221,6 +2243,8 @@ int parse_arguments(int *argc_p, const char ***argv_p)
tmpdir = sanitize_path(NULL, tmpdir, NULL, 0, SP_DEFAULT);
if (backup_dir)
backup_dir = sanitize_path(NULL, backup_dir, NULL, 0, SP_DEFAULT);
}
if (daemon_filter_list.head && !am_sender) {
filter_rule_list *elp = &daemon_filter_list;
-@@ -2886,6 +2910,12 @@ void server_options(char **args, int *argc_p)
+@@ -2888,6 +2912,12 @@ void server_options(char **args, int *argc_p)
} else if (inplace)
args[ac++] = "--inplace";
diff --git a/rsync.h b/rsync.h
--- a/rsync.h
+++ b/rsync.h
-@@ -1324,7 +1324,8 @@ extern short info_levels[], debug_levels[];
+@@ -1326,7 +1326,8 @@ extern short info_levels[], debug_levels[];
#define DEBUG_FUZZY (DEBUG_FLIST+1)
#define DEBUG_GENR (DEBUG_FUZZY+1)
#define DEBUG_HASH (DEBUG_GENR+1)
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/authenticate.c b/authenticate.c
--- a/authenticate.c
+++ b/authenticate.c
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/access.c b/access.c
--- a/access.c
+++ b/access.c
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
int one_file_system = 0;
int protocol_version = PROTOCOL_VERSION;
int sparse_files = 0;
-@@ -717,6 +718,7 @@ void usage(enum logcode F)
+@@ -721,6 +722,7 @@ void usage(enum logcode F)
rprintf(F," --open-noatime avoid changing the atime on opened files\n");
rprintf(F," -O, --omit-dir-times omit directories from --times\n");
rprintf(F," -J, --omit-link-times omit symlinks from --times\n");
rprintf(F," --super receiver attempts super-user activities\n");
#ifdef SUPPORT_XATTRS
rprintf(F," --fake-super store/recover privileged attrs using xattrs\n");
-@@ -887,6 +889,7 @@ static struct poptOption long_options[] = {
+@@ -891,6 +893,7 @@ static struct poptOption long_options[] = {
{"omit-link-times", 'J', POPT_ARG_VAL, &omit_link_times, 1, 0, 0 },
{"no-omit-link-times",0, POPT_ARG_VAL, &omit_link_times, 0, 0, 0 },
{"no-J", 0, POPT_ARG_VAL, &omit_link_times, 0, 0, 0 },
{"modify-window", '@', POPT_ARG_INT, &modify_window, OPT_MODIFY_WINDOW, 0, 0 },
{"super", 0, POPT_ARG_VAL, &am_root, 2, 0, 0 },
{"no-super", 0, POPT_ARG_VAL, &am_root, 0, 0, 0 },
-@@ -2287,6 +2290,9 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2289,6 +2292,9 @@ int parse_arguments(int *argc_p, const char ***argv_p)
parse_filter_str(&filter_list, backup_dir_buf, rule_template(0), 0);
}
if (preserve_times) {
preserve_times = PRESERVE_FILE_TIMES;
if (!omit_dir_times)
-@@ -2538,6 +2544,8 @@ void server_options(char **args, int *argc_p)
+@@ -2540,6 +2546,8 @@ void server_options(char **args, int *argc_p)
argstr[x++] = 'O';
if (omit_link_times)
argstr[x++] = 'J';
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/flist.c b/flist.c
--- a/flist.c
+++ b/flist.c
size_t bwlimit_writemax = 0;
int ignore_existing = 0;
int ignore_non_existing = 0;
-@@ -802,6 +803,7 @@ void usage(enum logcode F)
+@@ -806,6 +807,7 @@ void usage(enum logcode F)
rprintf(F," --password-file=FILE read daemon-access password from FILE\n");
rprintf(F," --list-only list the files instead of copying them\n");
rprintf(F," --bwlimit=RATE limit socket I/O bandwidth\n");
#ifdef HAVE_SETVBUF
rprintf(F," --outbuf=N|L|B set output buffering to None, Line, or Block\n");
#endif
-@@ -1008,6 +1010,7 @@ static struct poptOption long_options[] = {
+@@ -1012,6 +1014,7 @@ static struct poptOption long_options[] = {
{"itemize-changes", 'i', POPT_ARG_NONE, 0, 'i', 0, 0 },
{"no-itemize-changes",0, POPT_ARG_VAL, &itemize_changes, 0, 0, 0 },
{"no-i", 0, POPT_ARG_VAL, &itemize_changes, 0, 0, 0 },
TODO: the configure changes should abort if the user requests --enable-slp
and we can't honor that request.
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
-@@ -14,6 +14,8 @@ CFLAGS=@CFLAGS@
- CPPFLAGS=@CPPFLAGS@
+@@ -16,6 +16,8 @@ CXX=@CXX@
+ CXXFLAGS=@CXXFLAGS@
EXEEXT=@EXEEXT@
LDFLAGS=@LDFLAGS@
+LIBSLP=@LIBSLP@
LIBOBJDIR=lib/
INSTALLCMD=@INSTALL@
-@@ -41,7 +43,7 @@ OBJS1=flist.o rsync.o generator.o receiver.o cleanup.o sender.o exclude.o \
- OBJS2=options.o io.o compat.o hlink.o token.o uidlist.o socket.o hashtable.o \
+@@ -44,7 +46,7 @@ OBJS2=options.o io.o compat.o hlink.o token.o uidlist.o socket.o hashtable.o \
fileio.o batch.o clientname.o chmod.o acls.o xattrs.o
OBJS3=progress.o pipe.o
+ CXXOBJ=@CXXOBJ@
-DAEMON_OBJ = params.o loadparm.o clientserver.o access.o connection.o authenticate.o
+DAEMON_OBJ = params.o loadparm.o clientserver.o access.o connection.o authenticate.o $(SLPOBJ)
popt_OBJS=popt/findme.o popt/popt.o popt/poptconfig.o \
popt/popthelp.o popt/poptparse.o
- OBJS=$(OBJS1) $(OBJS2) $(OBJS3) $(DAEMON_OBJ) $(LIBOBJ) @BUILD_ZLIB@ @BUILD_POPT@
-@@ -89,7 +91,7 @@ install-strip:
+ OBJS=$(OBJS1) $(OBJS2) $(OBJS3) $(CXXOBJ) $(DAEMON_OBJ) $(LIBOBJ) @BUILD_ZLIB@ @BUILD_POPT@
+@@ -92,7 +94,7 @@ install-strip:
$(MAKE) INSTALL_STRIP='-s' install
rsync$(EXEEXT): $(OBJS)
diff --git a/configure.ac b/configure.ac
--- a/configure.ac
+++ b/configure.ac
-@@ -761,6 +761,29 @@ if test $rsync_cv_can_hardlink_special = yes; then
+@@ -781,6 +781,29 @@ if test $rsync_cv_can_hardlink_special = yes; then
AC_DEFINE(CAN_HARDLINK_SPECIAL, 1, [Define to 1 if link() can hard-link special files.])
fi
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
-@@ -578,6 +578,7 @@ static void print_rsync_version(enum logcode f)
- char const *links = "no ";
+@@ -579,6 +579,7 @@ static void print_rsync_version(enum logcode f)
char const *iconv = "no ";
char const *ipv6 = "no ";
+ char const *sse2 = "no ";
+ char const *slp = "no ";
STRUCT_STAT *dumstat;
#if SUBPROTOCOL_VERSION != 0
-@@ -614,6 +615,9 @@ static void print_rsync_version(enum logcode f)
- #ifdef CAN_SET_SYMLINK_TIMES
- symtimes = "";
+@@ -618,6 +619,9 @@ static void print_rsync_version(enum logcode f)
+ #ifdef ENABLE_SSE2
+ sse2 = "";
#endif
+#if HAVE_LIBSLP
+ slp = "";
rprintf(f, "%s version %s protocol version %d%s\n",
RSYNC_NAME, RSYNC_VERSION, PROTOCOL_VERSION, subprotocol);
-@@ -627,8 +631,8 @@ static void print_rsync_version(enum logcode f)
+@@ -631,8 +635,10 @@ static void print_rsync_version(enum logcode f)
(int)(sizeof (int64) * 8));
rprintf(f, " %ssocketpairs, %shardlinks, %ssymlinks, %sIPv6, batchfiles, %sinplace,\n",
got_socketpair, hardlinks, links, ipv6, have_inplace);
-- rprintf(f, " %sappend, %sACLs, %sxattrs, %siconv, %ssymtimes, %sprealloc\n",
-- have_inplace, acls, xattrs, iconv, symtimes, prealloc);
-+ rprintf(f, " %sappend, %sACLs, %sxattrs, %siconv, %ssymtimes, %sprealloc, %sSLP\n",
-+ have_inplace, acls, xattrs, iconv, symtimes, prealloc, slp);
+- rprintf(f, " %sappend, %sACLs, %sxattrs, %siconv, %ssymtimes, %sprealloc, %ssse2\n",
++ rprintf(f, " %sappend, %sACLs, %sxattrs, %siconv, %ssymtimes, %sprealloc, %ssse2,\n",
+ have_inplace, acls, xattrs, iconv, symtimes, prealloc, sse2);
++ rprintf(f, " %sSLP\n",
++ slp);
#ifdef MAINTAINER_MODE
rprintf(f, "Panic Action: \"%s\"\n", get_panic_action());
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/syscall.c b/syscall.c
--- a/syscall.c
+++ b/syscall.c
-- Matt McCutchen <hashproduct@gmail.com>
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
/**
* If 1, send the whole file as literal data rather than trying to
-@@ -738,6 +739,7 @@ void usage(enum logcode F)
+@@ -742,6 +743,7 @@ void usage(enum logcode F)
rprintf(F," --existing skip creating new files on receiver\n");
rprintf(F," --ignore-existing skip updating files that already exist on receiver\n");
rprintf(F," --remove-source-files sender removes synchronized files (non-dirs)\n");
rprintf(F," --del an alias for --delete-during\n");
rprintf(F," --delete delete extraneous files from destination dirs\n");
rprintf(F," --delete-before receiver deletes before transfer, not during\n");
-@@ -1011,6 +1013,7 @@ static struct poptOption long_options[] = {
+@@ -1015,6 +1017,7 @@ static struct poptOption long_options[] = {
{"bwlimit", 0, POPT_ARG_STRING, &bwlimit_arg, OPT_BWLIMIT, 0, 0 },
{"no-bwlimit", 0, POPT_ARG_VAL, &bwlimit, 0, 0, 0 },
{"backup", 'b', POPT_ARG_VAL, &make_backups, 1, 0, 0 },
{"no-backup", 0, POPT_ARG_VAL, &make_backups, 0, 0, 0 },
{"backup-dir", 0, POPT_ARG_STRING, &backup_dir, 0, 0, 0 },
{"suffix", 0, POPT_ARG_STRING, &backup_suffix, 0, 0, 0 },
-@@ -2785,6 +2788,8 @@ void server_options(char **args, int *argc_p)
+@@ -2787,6 +2790,8 @@ void server_options(char **args, int *argc_p)
goto oom;
args[ac++] = arg;
}
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
char *rsync_path = RSYNC_PATH;
char *backup_dir = NULL;
char backup_dir_buf[MAXPATHLEN];
-@@ -765,6 +768,7 @@ void usage(enum logcode F)
+@@ -769,6 +772,7 @@ void usage(enum logcode F)
rprintf(F," -I, --ignore-times don't skip files that match in size and mod-time\n");
rprintf(F," -M, --remote-option=OPTION send OPTION to the remote side only\n");
rprintf(F," --size-only skip files that match in size\n");
rprintf(F," -@, --modify-window=NUM set the accuracy for mod-time comparisons\n");
rprintf(F," -T, --temp-dir=DIR create temporary files in directory DIR\n");
rprintf(F," -y, --fuzzy find similar file for basis if no dest file\n");
-@@ -808,6 +812,8 @@ void usage(enum logcode F)
+@@ -812,6 +816,8 @@ void usage(enum logcode F)
rprintf(F," --write-batch=FILE write a batched update to FILE\n");
rprintf(F," --only-write-batch=FILE like --write-batch but w/o updating destination\n");
rprintf(F," --read-batch=FILE read a batched update from FILE\n");
rprintf(F," --protocol=NUM force an older protocol version to be used\n");
#ifdef ICONV_OPTION
rprintf(F," --iconv=CONVERT_SPEC request charset conversion of filenames\n");
-@@ -928,6 +934,7 @@ static struct poptOption long_options[] = {
+@@ -932,6 +938,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 },
{"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 },
-@@ -1053,6 +1060,8 @@ static struct poptOption long_options[] = {
+@@ -1057,6 +1064,8 @@ static struct poptOption long_options[] = {
{"password-file", 0, POPT_ARG_STRING, &password_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 },
#ifdef HAVE_SETVBUF
{"outbuf", 0, POPT_ARG_STRING, &outbuf_mode, 0, 0, 0 },
#endif
-@@ -2422,6 +2431,16 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2424,6 +2433,16 @@ int parse_arguments(int *argc_p, const char ***argv_p)
}
}
if (files_from) {
char *h, *p;
int q;
-@@ -2794,6 +2813,25 @@ void server_options(char **args, int *argc_p)
+@@ -2796,6 +2815,25 @@ void server_options(char **args, int *argc_p)
else if (missing_args == 1 && !am_sender)
args[ac++] = "--ignore-missing-args";
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/fileio.c b/fileio.c
--- a/fileio.c
+++ b/fileio.c
int preallocate_files = 0;
int do_compression = 0;
int def_compress_level = NOT_SPECIFIED;
-@@ -722,6 +723,7 @@ void usage(enum logcode F)
+@@ -726,6 +727,7 @@ void usage(enum logcode F)
rprintf(F," --fake-super store/recover privileged attrs using xattrs\n");
#endif
rprintf(F," -S, --sparse turn sequences of nulls into sparse blocks\n");
#ifdef SUPPORT_PREALLOCATION
rprintf(F," --preallocate allocate dest files before writing them\n");
#else
-@@ -940,6 +942,7 @@ static struct poptOption long_options[] = {
+@@ -944,6 +946,7 @@ static struct poptOption long_options[] = {
{"sparse", 'S', POPT_ARG_VAL, &sparse_files, 1, 0, 0 },
{"no-sparse", 0, POPT_ARG_VAL, &sparse_files, 0, 0, 0 },
{"no-S", 0, POPT_ARG_VAL, &sparse_files, 0, 0, 0 },
{"preallocate", 0, POPT_ARG_NONE, &preallocate_files, 0, 0, 0},
{"inplace", 0, POPT_ARG_VAL, &inplace, 1, 0, 0 },
{"no-inplace", 0, POPT_ARG_VAL, &inplace, 0, 0, 0 },
-@@ -2711,6 +2714,12 @@ void server_options(char **args, int *argc_p)
+@@ -2713,6 +2716,12 @@ void server_options(char **args, int *argc_p)
args[ac++] = arg;
}
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/main.c b/main.c
--- a/main.c
+++ b/main.c
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/io.c b/io.c
--- a/io.c
+++ b/io.c
int max_delete = INT_MIN;
OFF_T max_size = -1;
OFF_T min_size = -1;
-@@ -802,6 +803,8 @@ void usage(enum logcode F)
+@@ -806,6 +807,8 @@ void usage(enum logcode F)
rprintf(F," --password-file=FILE read daemon-access password from FILE\n");
rprintf(F," --list-only list the files instead of copying them\n");
rprintf(F," --bwlimit=RATE limit socket I/O bandwidth\n");
#ifdef HAVE_SETVBUF
rprintf(F," --outbuf=N|L|B set output buffering to None, Line, or Block\n");
#endif
-@@ -830,6 +833,7 @@ enum {OPT_VERSION = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
+@@ -834,6 +837,7 @@ enum {OPT_VERSION = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_ONLY_WRITE_BATCH, OPT_MAX_SIZE,
OPT_NO_D, OPT_APPEND, OPT_NO_ICONV, OPT_INFO, OPT_DEBUG,
OPT_USERMAP, OPT_GROUPMAP, OPT_CHOWN, OPT_BWLIMIT,
OPT_SERVER, OPT_REFUSED_BASE = 9000};
static struct poptOption long_options[] = {
-@@ -1033,6 +1037,8 @@ static struct poptOption long_options[] = {
+@@ -1037,6 +1041,8 @@ static struct poptOption long_options[] = {
{"no-timeout", 0, POPT_ARG_VAL, &io_timeout, 0, 0, 0 },
{"contimeout", 0, POPT_ARG_INT, &connect_timeout, 0, 0, 0 },
{"no-contimeout", 0, POPT_ARG_VAL, &connect_timeout, 0, 0, 0 },
{"rsh", 'e', POPT_ARG_STRING, &shell_cmd, 0, 0, 0 },
{"rsync-path", 0, POPT_ARG_STRING, &rsync_path, 0, 0, 0 },
{"temp-dir", 'T', POPT_ARG_STRING, &tmpdir, 0, 0, 0 },
-@@ -1897,6 +1903,36 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1899,6 +1905,36 @@ int parse_arguments(int *argc_p, const char ***argv_p)
return 0;
#endif
default:
/* A large opt value means that set_refuse_options()
* turned this option off. */
-@@ -2723,6 +2759,15 @@ void server_options(char **args, int *argc_p)
+@@ -2725,6 +2761,15 @@ void server_options(char **args, int *argc_p)
args[ac++] = arg;
}
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/flist.c b/flist.c
--- a/flist.c
+++ b/flist.c
#define MAX_BATCH_NAME_LEN 256 /* Must be less than MAXPATHLEN-13 */
char *batch_name = NULL;
-@@ -812,6 +813,7 @@ void usage(enum logcode F)
+@@ -816,6 +817,7 @@ void usage(enum logcode F)
#ifdef ICONV_OPTION
rprintf(F," --iconv=CONVERT_SPEC request charset conversion of filenames\n");
#endif
rprintf(F," --checksum-seed=NUM set block/file checksum seed (advanced)\n");
rprintf(F," -4, --ipv4 prefer IPv4\n");
rprintf(F," -6, --ipv6 prefer IPv6\n");
-@@ -1040,6 +1042,7 @@ static struct poptOption long_options[] = {
+@@ -1044,6 +1046,7 @@ static struct poptOption long_options[] = {
{"iconv", 0, POPT_ARG_STRING, &iconv_opt, 0, 0, 0 },
{"no-iconv", 0, POPT_ARG_NONE, 0, OPT_NO_ICONV, 0, 0 },
#endif
{"ipv4", '4', POPT_ARG_VAL, &default_af_hint, AF_INET, 0, 0 },
{"ipv6", '6', POPT_ARG_VAL, &default_af_hint, AF_INET6, 0, 0 },
{"8-bit-output", '8', POPT_ARG_VAL, &allow_8bit_chars, 1, 0, 0 },
-@@ -2468,6 +2471,24 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2470,6 +2473,24 @@ int parse_arguments(int *argc_p, const char ***argv_p)
}
}
am_starting_up = 0;
return 1;
-@@ -2903,6 +2924,12 @@ void server_options(char **args, int *argc_p)
+@@ -2905,6 +2926,12 @@ void server_options(char **args, int *argc_p)
if (relative_paths && !implied_dirs && (!am_sender || protocol_version >= 30))
args[ac++] = "--no-implied-dirs";
./configure (optional if already run)
make
-based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
+based-on: 70c6b408dc299f7aa00dd3452ae82b56d6c17f80
diff --git a/syscall.c b/syscall.c
--- a/syscall.c
+++ b/syscall.c