./configure (optional if already run)
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
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: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
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: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
{"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 },
-@@ -2681,6 +2683,10 @@ void server_options(char **args, int *argc_p)
+@@ -2743,6 +2745,10 @@ void server_options(char **args, int *argc_p)
}
if (am_sender) {
{"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 },
-@@ -2159,6 +2169,8 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2221,6 +2231,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;
-@@ -2180,6 +2192,14 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2242,6 +2254,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)
-@@ -2191,6 +2211,20 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2253,6 +2273,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] == '/')
-@@ -2226,6 +2260,34 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2288,6 +2322,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;
-@@ -2667,6 +2729,10 @@ void server_options(char **args, int *argc_p)
+@@ -2729,6 +2791,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) {
-@@ -2675,6 +2741,14 @@ void server_options(char **args, int *argc_p)
+@@ -2737,6 +2803,14 @@ void server_options(char **args, int *argc_p)
goto oom;
args[ac++] = arg;
}
./configure (optional if already run)
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/errcode.h b/errcode.h
--- a/errcode.h
+++ b/errcode.h
./configure (optional if already run)
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/clientserver.c b/clientserver.c
--- a/clientserver.c
+++ b/clientserver.c
{"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 },
-@@ -1723,6 +1726,23 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1785,6 +1788,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);
-@@ -2004,6 +2024,9 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2066,6 +2086,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
-@@ -1728,7 +1728,15 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1790,7 +1790,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: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/flist.c b/flist.c
--- a/flist.c
+++ b/flist.c
./configure (optional if already run)
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/loadparm.c b/loadparm.c
--- a/loadparm.c
+++ b/loadparm.c
./configure (optional if already run)
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
{"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 },
-@@ -2849,6 +2852,9 @@ void server_options(char **args, int *argc_p)
+@@ -2911,6 +2914,9 @@ void server_options(char **args, int *argc_p)
else if (remove_source_files)
args[ac++] = "--remove-sent-files";
{"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 },
-@@ -2538,6 +2553,10 @@ void server_options(char **args, int *argc_p)
+@@ -2600,6 +2615,10 @@ void server_options(char **args, int *argc_p)
if (preserve_atimes > 1)
argstr[x++] = 'U';
}
#define RETURN_ERROR_IF(x,e) \
do { \
if (x) { \
-@@ -173,8 +180,6 @@ int do_lchown(const char *path, uid_t owner, gid_t group, UNUSED(mode_t mode), U
- }
- errno = EPERM;
- }
--#else
-- mode = fileflags = 0; /* avoid compiler warning */
- #endif
- return -1;
- }
-@@ -306,8 +311,6 @@ int do_chmod(const char *path, mode_t mode, UNUSED(uint32 fileflags))
- }
- errno = EPERM;
- }
--#else
-- fileflags = 0; /* avoid compiler warning */
- #endif
- if (code != 0 && (preserve_perms || preserve_executability))
- return code;
-@@ -497,6 +500,40 @@ int do_setattrlist_times(const char *fname, STRUCT_STAT *stp)
+@@ -493,6 +500,40 @@ int do_setattrlist_times(const char *fname, STRUCT_STAT *stp)
}
#endif
./configure (optional if already run)
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/exclude.c b/exclude.c
--- a/exclude.c
+++ b/exclude.c
./configure (optional if already run)
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.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 },
-@@ -2732,6 +2735,9 @@ void server_options(char **args, int *argc_p)
+@@ -2794,6 +2797,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: f7746d0000ac5c72974ad90a8d746561dc8cd10a
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/.gitignore b/.gitignore
--- a/.gitignore
+++ b/.gitignore
static char err_buf[200];
-@@ -1298,6 +1365,102 @@ static void create_refuse_error(int which)
+@@ -1245,6 +1312,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);
++ parse_one_refuse_match(0, "db", list_end);
++ parse_one_refuse_match(0, "db-lax", 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)
}
}
/* 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
-@@ -1336,10 +1499,19 @@ int parse_arguments(int *argc_p, const char ***argv_p)
- strlcpy(err_buf, "argc is zero!\n", sizeof err_buf);
+@@ -1407,6 +1572,12 @@ int parse_arguments(int *argc_p, const char ***argv_p)
return 0;
}
-+
+
+ arg = *argv + strlen(*argv);
+ if (arg - *argv > 2 && strcmp(arg-2, "db") == 0) {
+ parse_dbonly_args(argc, argv);
+ /* NOT REACHED */
+ }
+
- if (ref && *ref)
- set_refuse_options(ref);
- if (am_daemon) {
- set_refuse_options("log-file*");
-+ set_refuse_options("db");
-+ set_refuse_options("db-lax");
+ set_refuse_options();
+
#ifdef ICONV_OPTION
- if (!*lp_charset(module_id))
- set_refuse_options("iconv");
-@@ -1466,6 +1638,12 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1528,6 +1699,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
-@@ -1540,6 +1718,10 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1602,6 +1779,10 @@ int parse_arguments(int *argc_p, const char ***argv_p)
preserve_devices = preserve_specials = 0;
break;
dit(bf(syslog tag)) This parameter allows you to specify the syslog
tag to use when logging messages from the rsync daemon. The default is
"rsyncd". This setting has no effect if the "log file" setting is a
+@@ -801,8 +817,8 @@ If you are un-refusing the compress option, you probably want to match
+ "!compress*" so that you also accept the bf(--compress-level) option.
+
+ Note that the "write-devices" option is refused by default, but can be
+-explicitly accepted with "!write-devices". The options "log-file" and
+-"log-file-format" are forcibly refused and cannot be accepted.
++explicitly accepted with "!write-devices". The options "db", "db-lax",
++"log-file", and "log-file-format" are forcibly refused and cannot be accepted.
+
+ Here are all the options that are not matched by wild-cards:
+
diff --git a/rsyncdb-mountinfo b/rsyncdb-mountinfo
new file mode 100755
--- /dev/null
{"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 },
-@@ -2719,8 +2723,14 @@ void server_options(char **args, int *argc_p)
+@@ -2781,8 +2785,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: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/backup.c b/backup.c
--- a/backup.c
+++ b/backup.c
{"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 },
-@@ -2316,7 +2319,7 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2378,7 +2381,7 @@ int parse_arguments(int *argc_p, const char ***argv_p)
inplace = 1;
}
partial_dir = tmp_partialdir;
if (inplace) {
-@@ -2325,6 +2328,7 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2387,6 +2390,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;
}
-@@ -2715,6 +2719,8 @@ void server_options(char **args, int *argc_p)
+@@ -2777,6 +2781,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: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
./configure (optional if already run)
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
./configure (optional if already run)
make
-based-on: f7746d0000ac5c72974ad90a8d746561dc8cd10a
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/compat.c b/compat.c
--- a/compat.c
+++ b/compat.c
{"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 },
-@@ -2616,6 +2642,9 @@ void server_options(char **args, int *argc_p)
+@@ -2678,6 +2704,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;
-@@ -2709,6 +2738,16 @@ void server_options(char **args, int *argc_p)
+@@ -2771,6 +2800,16 @@ void server_options(char **args, int *argc_p)
args[ac++] = "--delete-excluded";
if (force_delete)
args[ac++] = "--force";
}
#ifdef SUPPORT_LINKS
-@@ -129,14 +146,37 @@ int do_link(const char *fname1, const char *fname2)
+@@ -129,14 +146,35 @@ int do_link(const char *fname1, const char *fname2)
}
#endif
+ }
+ errno = EPERM;
+ }
-+#else
-+ mode = fileflags = 0; /* avoid compiler warning */
+#endif
+ return -1;
}
int do_mknod(const char *pathname, mode_t mode, dev_t dev)
-@@ -176,7 +216,7 @@ int do_mknod(const char *pathname, mode_t mode, dev_t dev)
+@@ -176,7 +214,7 @@ int do_mknod(const char *pathname, mode_t mode, dev_t dev)
return -1;
close(sock);
#ifdef HAVE_CHMOD
#else
return 0;
#endif
-@@ -193,7 +233,22 @@ int do_rmdir(const char *pathname)
+@@ -193,7 +231,22 @@ int do_rmdir(const char *pathname)
{
if (dry_run) return 0;
RETURN_ERROR_IF_RO_OR_LO;
}
int do_open(const char *pathname, int flags, mode_t mode)
-@@ -212,7 +267,7 @@ int do_open(const char *pathname, int flags, mode_t mode)
+@@ -212,7 +265,7 @@ int do_open(const char *pathname, int flags, mode_t mode)
}
#ifdef HAVE_CHMOD
{
int code;
if (dry_run) return 0;
-@@ -235,17 +290,74 @@ int do_chmod(const char *path, mode_t mode)
+@@ -235,17 +288,72 @@ int do_chmod(const char *path, mode_t mode)
} else
code = chmod(path, mode & CHMOD_BITS); /* DISCOURAGED FUNCTION */
#endif /* !HAVE_LCHMOD */
+ }
+ errno = EPERM;
+ }
-+#else
-+ fileflags = 0; /* avoid compiler warning */
+#endif
if (code != 0 && (preserve_perms || preserve_executability))
return code;
./configure (optional if already run)
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/exclude.c b/exclude.c
--- a/exclude.c
+++ b/exclude.c
dit(bf(--timeout=TIMEOUT)) This option allows you to set a maximum I/O
timeout in seconds. If no data is transferred for the specified time
then rsync will exit. The default is 0, which means no timeout.
-@@ -3074,6 +3080,15 @@ itemization(
+@@ -3076,6 +3082,15 @@ itemization(
option's default rules that exclude things like "CVS" and "*.o" are
marked as perishable, and will not prevent a directory that was removed
on the source from being deleted on the destination.
it() An bf(x) indicates that a rule affects xattr names in xattr copy/delete
operations (and is thus ignored when matching file/dir names). If no
xattr-matching rules are specified, a default xattr filtering rule is
-@@ -3139,6 +3154,12 @@ itemization(
+@@ -3141,6 +3156,12 @@ itemization(
a rule prefix such as bf(hide)).
)
./configure (optional if already run)
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
{"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 },
-@@ -2795,6 +2798,9 @@ void server_options(char **args, int *argc_p)
+@@ -2857,6 +2860,9 @@ void server_options(char **args, int *argc_p)
args[ac++] = tmpdir;
}
diff --git a/flist.c b/flist.c
--- a/flist.c
+++ b/flist.c
-@@ -1594,6 +1594,9 @@ static struct file_struct *send_file_name(int f, struct file_list *flist,
+@@ -1612,6 +1612,9 @@ static struct file_struct *send_file_name(int f, struct file_list *flist,
#ifdef SUPPORT_XATTRS
if (preserve_xattrs) {
sx.st.st_mode = file->mode;
extern int preserve_links;
extern int preserve_devices;
extern int write_devices;
-@@ -1793,6 +1794,14 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1798,6 +1799,14 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
fname, fnamecmpbuf);
}
sx.st.st_size = F_LENGTH(fuzzy_file);
statret = 0;
fnamecmp = fnamecmpbuf;
}
-@@ -1960,6 +1969,18 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1965,6 +1974,18 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
if (read_batch)
goto cleanup;
int preserve_perms = 0;
int preserve_fileflags = 0;
int preserve_executability = 0;
-@@ -716,6 +717,10 @@ void usage(enum logcode F)
+@@ -722,6 +723,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");
-@@ -989,6 +994,12 @@ static struct poptOption long_options[] = {
+@@ -999,6 +1004,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 },
-@@ -2035,6 +2046,15 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2107,6 +2118,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
-@@ -2652,6 +2672,11 @@ void server_options(char **args, int *argc_p)
+@@ -2726,6 +2746,11 @@ void server_options(char **args, int *argc_p)
if (preserve_fileflags)
args[ac++] = "--fileflags";
&& (sxp->st.st_mtime != file->modtime
#ifdef ST_MTIME_NSEC
|| (flags & ATTRS_SET_NANO && NSEC_BUMP(file) && (uint32)sxp->st.ST_MTIME_NSEC != F_MOD_NSEC(file))
-@@ -687,6 +696,16 @@ int set_file_attrs(const char *fname, struct file_struct *file, stat_x *sxp,
+@@ -689,6 +698,16 @@ int set_file_attrs(const char *fname, struct file_struct *file, stat_x *sxp,
&& !set_fileflags(fname, fileflags))
goto cleanup;
updated = 1;
+#define SUPPORT_HFS_COMPRESSION 1
+#endif
+
- /* Find a variable that is either exactly 32-bits or longer.
- * If some code depends on 32-bit truncation, it will need to
- * take special action in a "#if SIZEOF_INT32 > 4" section. */
+ #ifdef HAVE_GETATTRLIST
+ #define SUPPORT_CRTIMES 1
+ #endif
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
- Make this code handle multibyte character encodings, and honor the
--iconv setting when converting case.
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/exclude.c b/exclude.c
--- a/exclude.c
+++ b/exclude.c
{"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},
-@@ -2745,6 +2749,9 @@ void server_options(char **args, int *argc_p)
+@@ -2807,6 +2811,9 @@ void server_options(char **args, int *argc_p)
args[ac++] = arg;
}
--port=PORT specify double-colon alternate port number
--sockopts=OPTIONS specify custom TCP options
@@ -1898,6 +1899,10 @@ available to that user, and makes it impossible for the joe user to do a timed
- exploit of the path to induce a change to a file that the joe use has no
+ exploit of the path to induce a change to a file that the joe user has no
permissions to change.
+dit(bf(--ignore-case)) This option tells rsync to ignore upper-/lower-case
./configure
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
diff --git a/configure.ac b/configure.ac
--- a/configure.ac
+++ b/configure.ac
-@@ -701,6 +701,31 @@ if test x"$enable_iconv" != x"no"; then
+@@ -702,6 +702,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: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
{"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 },
-@@ -1352,6 +1356,9 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1414,6 +1418,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
-@@ -1835,6 +1842,21 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1897,6 +1904,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. */
-@@ -2157,6 +2179,8 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2219,6 +2241,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;
-@@ -2824,6 +2848,12 @@ void server_options(char **args, int *argc_p)
+@@ -2886,6 +2910,12 @@ void server_options(char **args, int *argc_p)
} else if (inplace)
args[ac++] = "--inplace";
./configure (optional if already run)
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/authenticate.c b/authenticate.c
--- a/authenticate.c
+++ b/authenticate.c
}
#endif
-@@ -1009,6 +1049,44 @@ static int rsync_module(int f_in, int f_out, int i, const char *addr, const char
+@@ -1010,6 +1050,44 @@ static int rsync_module(int f_in, int f_out, int i, const char *addr, const char
return 0;
}
./configure (optional if already run)
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/access.c b/access.c
--- a/access.c
+++ b/access.c
./configure (optional if already run)
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
{"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 },
-@@ -2225,6 +2228,9 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2287,6 +2290,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)
-@@ -2476,6 +2482,8 @@ void server_options(char **args, int *argc_p)
+@@ -2538,6 +2544,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: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/flist.c b/flist.c
--- a/flist.c
+++ b/flist.c
TODO: the configure changes should abort if the user requests --enable-slp
and we can't honor that request.
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
diff --git a/clientserver.c b/clientserver.c
--- a/clientserver.c
+++ b/clientserver.c
-@@ -1234,6 +1234,13 @@ int daemon_main(void)
+@@ -1235,6 +1235,13 @@ int daemon_main(void)
* address too. In fact, why not just do getnameinfo on the
* local address??? */
diff --git a/configure.ac b/configure.ac
--- a/configure.ac
+++ b/configure.ac
-@@ -760,6 +760,29 @@ if test $rsync_cv_can_hardlink_special = yes; then
+@@ -761,6 +761,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
)
manpagesection(MODULE PARAMETERS)
-@@ -917,6 +926,7 @@ use chroot = yes
+@@ -979,6 +988,7 @@ use chroot = yes
max connections = 4
syslog facility = local5
pid file = /var/run/rsyncd.pid
./configure (optional if already run)
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/syscall.c b/syscall.c
--- a/syscall.c
+++ b/syscall.c
-- Matt McCutchen <hashproduct@gmail.com>
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
{"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 },
-@@ -2723,6 +2726,8 @@ void server_options(char **args, int *argc_p)
+@@ -2785,6 +2788,8 @@ void server_options(char **args, int *argc_p)
goto oom;
args[ac++] = arg;
}
./configure (optional if already run)
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
#ifdef HAVE_SETVBUF
{"outbuf", 0, POPT_ARG_STRING, &outbuf_mode, 0, 0, 0 },
#endif
-@@ -2360,6 +2369,16 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2422,6 +2431,16 @@ int parse_arguments(int *argc_p, const char ***argv_p)
}
}
if (files_from) {
char *h, *p;
int q;
-@@ -2732,6 +2751,25 @@ void server_options(char **args, int *argc_p)
+@@ -2794,6 +2813,25 @@ void server_options(char **args, int *argc_p)
else if (missing_args == 1 && !am_sender)
args[ac++] = "--ignore-missing-args";
--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)
-@@ -2725,6 +2728,33 @@ file previously generated by bf(--write-batch).
+@@ -2727,6 +2730,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.
./configure (optional if already run)
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/fileio.c b/fileio.c
--- a/fileio.c
+++ b/fileio.c
{"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 },
-@@ -2649,6 +2652,12 @@ void server_options(char **args, int *argc_p)
+@@ -2711,6 +2714,12 @@ void server_options(char **args, int *argc_p)
args[ac++] = arg;
}
./configure (optional if already run)
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/main.c b/main.c
--- a/main.c
+++ b/main.c
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -2767,14 +2767,18 @@ regardless of the remote charset you actually pass. Thus, you may feel free to
+@@ -2769,14 +2769,18 @@ regardless of the remote charset you actually pass. Thus, you may feel free to
specify just the local charset for a daemon transfer (e.g. bf(--iconv=utf8)).
dit(bf(-4, --ipv4) or bf(-6, --ipv6)) Tells rsync to prefer IPv4/IPv6
./configure (optional if already run)
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/io.c b/io.c
--- a/io.c
+++ b/io.c
{"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 },
-@@ -1835,6 +1841,36 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1897,6 +1903,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. */
-@@ -2661,6 +2697,15 @@ void server_options(char **args, int *argc_p)
+@@ -2723,6 +2759,15 @@ void server_options(char **args, int *argc_p)
args[ac++] = arg;
}
--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
-@@ -2699,6 +2701,19 @@ files can show up as being rapidly sent when the data is quickly buffered,
+@@ -2701,6 +2703,19 @@ files can show up as being rapidly sent when the data is quickly buffered,
while other can show up as very slow when the flushing of the output buffer
occurs. This may be fixed in a future version.
./configure (optional if already run)
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/flist.c b/flist.c
--- a/flist.c
+++ b/flist.c
{"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 },
-@@ -2406,6 +2409,24 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2468,6 +2471,24 @@ int parse_arguments(int *argc_p, const char ***argv_p)
}
}
am_starting_up = 0;
return 1;
-@@ -2841,6 +2862,12 @@ void server_options(char **args, int *argc_p)
+@@ -2903,6 +2924,12 @@ void server_options(char **args, int *argc_p)
if (relative_paths && !implied_dirs && (!am_sender || protocol_version >= 30))
args[ac++] = "--no-implied-dirs";
--checksum-seed=NUM set block/file checksum seed (advanced)
-4, --ipv4 prefer IPv4
-6, --ipv6 prefer IPv6
-@@ -2766,6 +2767,22 @@ daemon uses the charset specified in its "charset" configuration parameter
+@@ -2768,6 +2769,22 @@ daemon uses the charset specified in its "charset" configuration parameter
regardless of the remote charset you actually pass. Thus, you may feel free to
specify just the local charset for a daemon transfer (e.g. bf(--iconv=utf8)).
./configure (optional if already run)
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/syscall.c b/syscall.c
--- a/syscall.c
+++ b/syscall.c
./configure
make
-based-on: 6242786158d8d29a168292ce4fead19f4c8d28d2
+based-on: 3b36bde9536614737bb73eaac5aa1e9c039472a3
diff --git a/checksum.c b/checksum.c
--- a/checksum.c
+++ b/checksum.c