--- old/configure.in
+++ new/configure.in
-@@ -494,7 +494,7 @@ AC_CHECK_FUNCS(waitpid wait4 getcwd strd
+@@ -527,7 +527,7 @@ AC_CHECK_FUNCS(waitpid wait4 getcwd strd
memmove lchown vsnprintf snprintf vasprintf asprintf setsid glob strpbrk \
strlcat strlcpy strtol mallinfo getgroups setgroups geteuid getegid \
setlocale setmode open64 lseek64 mkstemp64 mtrace va_copy __va_copy \
file->uid = uid;
file->gid = gid;
-@@ -855,6 +878,9 @@ struct file_struct *make_file(char *fnam
+@@ -857,6 +880,9 @@ struct file_struct *make_file(char *fnam
file->modtime = st.st_mtime;
file->length = st.st_size;
file->mode = st.st_mode;
--- old/generator.c
+++ new/generator.c
-@@ -124,6 +124,9 @@ static int delete_item(char *fname, int
+@@ -123,6 +123,9 @@ static int delete_item(char *fname, int
if (!S_ISDIR(mode)) {
if (max_delete && ++deletion_count > max_delete)
return 0;
if (make_backups && (backup_dir || !is_backup_file(fname)))
ok = make_backup(fname);
else
-@@ -148,10 +151,17 @@ static int delete_item(char *fname, int
+@@ -147,10 +150,17 @@ static int delete_item(char *fname, int
ok = 0;
errno = ENOTEMPTY;
} else if (make_backups && !backup_dir && !is_backup_file(fname)
(int) (sizeof dumstat->st_ino * 8),
(int) (sizeof (int64) * 8));
#ifdef MAINTAINER_MODE
-@@ -298,6 +304,7 @@ void usage(enum logcode F)
+@@ -302,6 +308,7 @@ 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," --flags preserve file flags\n");
rprintf(F," -E, --executability preserve the file's executability\n");
- rprintf(F," --chmod=CHMOD change destination permissions\n");
+ rprintf(F," --chmod=CHMOD affect file and/or directory permissions\n");
rprintf(F," -o, --owner preserve owner (super-user only)\n");
-@@ -414,6 +421,8 @@ static struct poptOption long_options[]
+@@ -420,6 +427,8 @@ 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 },
{"times", 't', POPT_ARG_VAL, &preserve_times, 1, 0, 0 },
{"no-times", 0, POPT_ARG_VAL, &preserve_times, 0, 0, 0 },
-@@ -1119,6 +1128,15 @@ int parse_arguments(int *argc, const cha
+@@ -1123,6 +1132,15 @@ int parse_arguments(int *argc, const cha
}
#endif
if (write_batch && read_batch) {
snprintf(err_buf, sizeof err_buf,
"--write-batch and --read-batch can not be used together\n");
-@@ -1577,6 +1595,9 @@ void server_options(char **args,int *arg
+@@ -1580,6 +1598,9 @@ void server_options(char **args,int *arg
if (xfer_dirs && !recurse && delete_mode && am_sender)
args[ac++] = "--no-r";
goto oom;
--- old/rsync.c
+++ new/rsync.c
-@@ -34,6 +34,7 @@ extern int verbose;
+@@ -33,6 +33,7 @@
+ extern int verbose;
extern int dry_run;
- extern int logfile_format_has_i;
extern int preserve_perms;
+extern int preserve_flags;
extern int preserve_executability;
extern int preserve_times;
extern int omit_dir_times;
-@@ -217,6 +218,19 @@ int set_file_attrs(char *fname, struct f
+@@ -221,6 +222,19 @@ int set_file_attrs(char *fname, struct f
}
#endif
+#endif
+
if (verbose > 1 && flags & ATTRS_REPORT) {
- enum logcode code = logfile_format_has_i || dry_run
- ? FCLIENT : FINFO;
-@@ -252,6 +266,10 @@ void finish_transfer(char *fname, char *
+ if (updated)
+ rprintf(FCLIENT, "%s\n", fname);
+@@ -254,6 +268,10 @@ void finish_transfer(char *fname, char *
{
int ret;
if (inplace) {
if (verbose > 2)
rprintf(FINFO, "finishing %s\n", fname);
-@@ -305,3 +323,21 @@ const char *who_am_i(void)
+@@ -307,3 +325,21 @@ const char *who_am_i(void)
return am_server ? "server" : "client";
return am_sender ? "sender" : am_generator ? "generator" : "receiver";
}
/* These flags are used in the live flist data. */
-@@ -338,6 +339,10 @@ enum msgcode {
+@@ -344,6 +345,10 @@ enum msgcode {
#define schar char
#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. */
-@@ -520,6 +525,9 @@ struct file_struct {
+@@ -526,6 +531,9 @@ struct file_struct {
struct hlink *links;
} link_u;
time_t modtime;
mode_t mode;
--- old/rsync.yo
+++ new/rsync.yo
-@@ -322,6 +322,7 @@ to the detailed description below for a
+@@ -320,6 +320,7 @@ to the detailed description below for a
+ -K, --keep-dirlinks treat symlinked dir on receiver as dir
+ -H, --hard-links preserve hard links
-p, --perms preserve permissions
- -E, --executability preserve executability
- --chmod=CHMOD change destination permissions
+ --flags preserve file flags
+ -E, --executability preserve executability
+ --chmod=CHMOD affect file and/or directory permissions
-o, --owner preserve owner (super-user only)
- -g, --group preserve group
- --devices preserve device files (super-user only)
-@@ -500,7 +501,9 @@ specified, in which case bf(-r) is not i
+@@ -503,7 +504,9 @@ specified, in which case bf(-r) is not i
Note that bf(-a) bf(does not preserve hardlinks), because
finding multiply-linked files is expensive. You must separately
dit(--no-OPTION) You may turn off one or more implied options by prefixing
the option name with "no-". Not all options may be prefixed with a "no-":
-@@ -795,6 +798,13 @@ quote(itemize(
+@@ -798,6 +801,13 @@ quote(itemize(
If bf(--perms) is enabled, this option is ignored.