}
- if (set_file_attrs(fname, file, statret ? NULL : &st, 0)
+ if (set_file_attrs(fname, file, statret ? NULL : &sx, 0)
- && verbose && code && f_out != -1)
+ && verbose && code != FNONE && f_out != -1)
rprintf(code, "%s/\n", fname);
if (delete_during && f_out != -1 && !phase && dry_run < 2
&& (file->flags & FLAG_DEL_HERE))
statret = -1;
} else if (basis_dir[0] != NULL) {
if (try_dests_non(file, fname, ndx, itemizing,
-@@ -1014,7 +1066,7 @@ static void recv_generator(char *fname,
+@@ -1015,7 +1067,7 @@ static void recv_generator(char *fname,
}
}
if (preserve_hard_links && file->link_u.links
itemizing, code, HL_SKIP))
return;
if (do_symlink(file->u.link,fname) != 0) {
-@@ -1023,7 +1075,7 @@ static void recv_generator(char *fname,
+@@ -1024,7 +1076,7 @@ static void recv_generator(char *fname,
} else {
set_file_attrs(fname, file, NULL, 0);
if (itemizing) {
+ itemize(file, ndx, statret, &sx,
ITEM_LOCAL_CHANGE, 0, NULL);
}
- if (code && verbose) {
-@@ -1054,18 +1106,22 @@ static void recv_generator(char *fname,
- itemizing = code = 0;
+ if (code != FNONE && verbose) {
+@@ -1056,18 +1108,22 @@ static void recv_generator(char *fname,
+ code = FNONE;
}
}
+#ifdef SUPPORT_ACLS
statret = -1;
if (verbose > 2) {
rprintf(FINFO,"mknod(%s,0%o,0x%x)\n",
-@@ -1078,7 +1134,7 @@ static void recv_generator(char *fname,
+@@ -1080,7 +1136,7 @@ static void recv_generator(char *fname,
} else {
set_file_attrs(fname, file, NULL, 0);
if (itemizing) {
+ itemize(file, ndx, statret, &sx,
ITEM_LOCAL_CHANGE, 0, NULL);
}
- if (code && verbose)
-@@ -1092,14 +1148,14 @@ static void recv_generator(char *fname,
+ if (code != FNONE && verbose)
+@@ -1094,14 +1150,14 @@ static void recv_generator(char *fname,
}
} else {
if (itemizing)
}
if (!S_ISREG(file->mode)) {
-@@ -1133,7 +1189,7 @@ static void recv_generator(char *fname,
+@@ -1135,7 +1191,7 @@ static void recv_generator(char *fname,
}
if (update_only && statret == 0
if (verbose > 1)
rprintf(FINFO, "%s is newer\n", fname);
return;
-@@ -1142,20 +1198,20 @@ static void recv_generator(char *fname,
+@@ -1144,20 +1200,20 @@ static void recv_generator(char *fname,
fnamecmp = fname;
fnamecmp_type = FNAMECMP_FNAME;
}
if (j >= 0) {
fnamecmp = fnamecmpbuf;
-@@ -1165,7 +1221,7 @@ static void recv_generator(char *fname,
+@@ -1167,7 +1223,7 @@ static void recv_generator(char *fname,
}
real_ret = statret;
if (partial_dir && (partialptr = partial_dir_fname(fname)) != NULL
&& link_stat(partialptr, &partial_st, 0) == 0
-@@ -1184,7 +1240,7 @@ static void recv_generator(char *fname,
+@@ -1186,7 +1242,7 @@ static void recv_generator(char *fname,
rprintf(FINFO, "fuzzy basis selected for %s: %s\n",
fname, fnamecmpbuf);
}
statret = 0;
fnamecmp = fnamecmpbuf;
fnamecmp_type = FNAMECMP_FUZZY;
-@@ -1193,7 +1249,7 @@ static void recv_generator(char *fname,
+@@ -1195,7 +1251,7 @@ static void recv_generator(char *fname,
if (statret != 0) {
if (preserve_hard_links && file->link_u.links
itemizing, code, HL_SKIP))
return;
if (stat_errno == ENOENT)
-@@ -1203,39 +1259,52 @@ static void recv_generator(char *fname,
+@@ -1205,39 +1261,52 @@ static void recv_generator(char *fname,
return;
}
fnamecmp = partialptr;
fnamecmp_type = FNAMECMP_PARTIAL_DIR;
statret = 0;
-@@ -1259,17 +1328,21 @@ static void recv_generator(char *fname,
+@@ -1261,17 +1330,21 @@ static void recv_generator(char *fname,
pretend_missing:
/* pretend the file didn't exist */
if (preserve_hard_links && file->link_u.links
}
if (!(back_file = make_file(fname, NULL, NULL, 0, NO_FILTERS))) {
close(fd);
-@@ -1280,7 +1353,7 @@ static void recv_generator(char *fname,
+@@ -1282,7 +1355,7 @@ static void recv_generator(char *fname,
full_fname(backupptr));
free(back_file);
close(fd);
}
if ((f_copy = do_open(backupptr,
O_WRONLY | O_CREAT | O_TRUNC | O_EXCL, 0600)) < 0) {
-@@ -1288,14 +1361,14 @@ static void recv_generator(char *fname,
+@@ -1290,14 +1363,14 @@ static void recv_generator(char *fname,
full_fname(backupptr));
free(back_file);
close(fd);
}
if (verbose > 2)
-@@ -1313,24 +1386,32 @@ static void recv_generator(char *fname,
+@@ -1315,24 +1388,32 @@ static void recv_generator(char *fname,
iflags |= ITEM_BASIS_TYPE_FOLLOWS;
if (fnamecmp_type == FNAMECMP_FUZZY)
iflags |= ITEM_XNAME_FOLLOWS;
if (f_copy >= 0) {
close(f_copy);
-@@ -1343,6 +1424,13 @@ static void recv_generator(char *fname,
+@@ -1345,6 +1426,13 @@ static void recv_generator(char *fname,
}
close(fd);
}
void generate_files(int f_out, struct file_list *flist, char *local_name)
-@@ -1402,6 +1490,8 @@ void generate_files(int f_out, struct fi
+@@ -1404,6 +1492,8 @@ void generate_files(int f_out, struct fi
* notice that and let us know via the redo pipe (or its closing). */
ignore_timeout = 1;
statret = 1;
- st = &st3;
+ sxp->st = st3;
- if (verbose < 2 || !stdout_format_has_i)
- itemizing = code = 0;
- break;
-@@ -223,12 +228,16 @@ int hard_link_check(struct file_struct *
+ if (verbose < 2 || !stdout_format_has_i) {
+ itemizing = 0;
+ code = FNONE;
+@@ -225,12 +230,16 @@ int hard_link_check(struct file_struct *
if (!unchanged_file(cmpbuf, file, &st3))
continue;
statret = 1;
toname, &st2, itemizing, code);
if (remove_source_files == 1 && do_xfers) {
char numbuf[4];
-@@ -246,7 +255,7 @@ int hard_link_check(struct file_struct *
+@@ -248,7 +257,7 @@ int hard_link_check(struct file_struct *
#ifdef SUPPORT_HARD_LINKS
int hard_link_one(struct file_struct *file, int ndx, char *fname,
int itemizing, enum logcode code)
{
if (do_link(toname, fname)) {
-@@ -262,7 +271,11 @@ int hard_link_one(struct file_struct *fi
+@@ -264,7 +273,11 @@ int hard_link_one(struct file_struct *fi
}
if (itemizing) {
ITEM_LOCAL_CHANGE | ITEM_XNAME_FOLLOWS, 0,
terse ? "" : toname);
}
-@@ -279,11 +292,12 @@ void hard_link_cluster(struct file_struc
+@@ -281,11 +294,12 @@ void hard_link_cluster(struct file_struc
#ifdef SUPPORT_HARD_LINKS
char hlink1[MAXPATHLEN];
char *hlink2;
return;
if (!(file->flags & FLAG_HLINK_TOL)) {
while (!(file->flags & FLAG_HLINK_EOL)) {
-@@ -297,9 +311,13 @@ void hard_link_cluster(struct file_struc
+@@ -299,9 +313,13 @@ void hard_link_cluster(struct file_struc
if (file->F_HLINDEX != SKIPPED_LINK)
continue;
hlink2 = f_name(file, NULL);
+int sys_acl_free_qualifier(void *qual, SMB_ACL_TAG_T tagtype);
--- old/log.c
+++ new/log.c
-@@ -609,8 +609,10 @@ static void log_formatted(enum logcode c
+@@ -615,8 +615,10 @@ static void log_formatted(enum logcode c
n[5] = !(iflags & ITEM_REPORT_PERMS) ? '.' : 'p';
n[6] = !(iflags & ITEM_REPORT_OWNER) ? '.' : 'o';
n[7] = !(iflags & ITEM_REPORT_GROUP) ? '.' : 'g';
if (iflags & (ITEM_IS_NEW|ITEM_MISSING_DATA)) {
char ch = iflags & ITEM_IS_NEW ? '+' : '?';
---- old/mkproto.awk
-+++ new/mkproto.awk
-@@ -58,7 +58,7 @@ BEGIN {
- next;
- }
-
--!/^OFF_T|^size_t|^off_t|^pid_t|^unsigned|^mode_t|^DIR|^user|^int|^char|^uint|^uchar|^short|^struct|^BOOL|^void|^time|^const|^RETSIGTYPE/ {
-+!/^OFF_T|^size_t|^off_t|^pid_t|^id_t|^unsigned|^mode_t|^DIR|^user|^int|^char|^uint|^uchar|^short|^struct|^BOOL|^void|^time|^const|^RETSIGTYPE/ {
- next;
- }
-
--- old/options.c
+++ new/options.c
@@ -47,6 +47,7 @@ int copy_dirlinks = 0;
{"times", 't', POPT_ARG_VAL, &preserve_times, 1, 0, 0 },
{"no-times", 0, POPT_ARG_VAL, &preserve_times, 0, 0, 0 },
{"no-t", 0, POPT_ARG_VAL, &preserve_times, 0, 0, 0 },
-@@ -1084,6 +1096,24 @@ int parse_arguments(int *argc, const cha
+@@ -1082,6 +1094,24 @@ int parse_arguments(int *argc, const cha
usage(FINFO);
exit_cleanup(0);
default:
/* A large opt value means that set_refuse_options()
* turned this option off. */
-@@ -1529,6 +1559,10 @@ void server_options(char **args,int *arg
+@@ -1523,6 +1553,10 @@ void server_options(char **args,int *arg
if (preserve_hard_links)
argstr[x++] = 'H';
extern struct stats stats;
extern char *stdout_format;
extern char *tmpdir;
-@@ -349,6 +350,10 @@ int recv_files(int f_in, struct file_lis
+@@ -350,6 +351,10 @@ int recv_files(int f_in, struct file_lis
int itemizing = am_server ? logfile_format_has_i : stdout_format_has_i;
enum logcode log_code = log_before_transfer ? FLOG : FINFO;
int max_phase = protocol_version >= 29 ? 2 : 1;
int i, recv_ok;
if (verbose > 2)
-@@ -549,7 +554,16 @@ int recv_files(int f_in, struct file_lis
+@@ -553,7 +558,16 @@ int recv_files(int f_in, struct file_lis
* mode based on the local permissions and some heuristics. */
if (!preserve_perms) {
int exists = fd1 != -1;
#include "byteorder.h"
#include "lib/mdfour.h"
#include "lib/wildmatch.h"
-@@ -668,6 +688,16 @@ struct chmod_mode_struct;
-
+@@ -669,6 +689,16 @@ struct chmod_mode_struct;
#define UNUSED(x) x __attribute__((__unused__))
+ #define NORETURN __attribute__((__noreturn__))
+typedef struct {
+ STRUCT_STAT st;
-o, --owner preserve owner (super-user only)
-g, --group preserve group
--devices preserve device files (super-user only)
-@@ -747,7 +748,9 @@ quote(itemize(
+@@ -745,7 +746,9 @@ quote(itemization(
permissions, though the bf(--executability) option might change just
the execute permission for the file.
it() New files get their "normal" permission bits set to the source
their special permission bits disabled except in the case where a new
directory inherits a setgid bit from its parent directory.
))
-@@ -778,9 +781,11 @@ The preservation of the destination's se
+@@ -776,9 +779,11 @@ The preservation of the destination's se
directories when bf(--perms) is off was added in rsync 2.6.7. Older rsync
versions erroneously preserved the three special permission bits for
newly-created files when bf(--perms) was off, while overriding the
dit(bf(-E, --executability)) This option causes rsync to preserve the
executability (or non-executability) of regular files when bf(--perms) is
-@@ -798,6 +803,15 @@ quote(itemize(
+@@ -796,6 +801,15 @@ quote(itemization(
If bf(--perms) is enabled, this option is ignored.
dit(bf(--chmod)) This option tells rsync to apply one or more
comma-separated "chmod" strings to the permission of the files in the
transfer. The resulting value is treated as though it was the permissions
-@@ -1383,8 +1397,8 @@ if the receiving rsync is at least versi
+@@ -1381,8 +1395,8 @@ if the receiving rsync is at least versi
with older versions of rsync, but that also turns on the output of other
verbose messages).
type of update being done, bf(X) is replaced by the file-type, and the
other letters represent attributes that may be output if they are being
modified.
-@@ -1433,7 +1447,11 @@ quote(itemize(
+@@ -1431,7 +1445,11 @@ quote(itemization(
sender's value (requires bf(--owner) and super-user privileges).
it() A bf(g) means the group is different and is being updated to the
sender's value (requires bf(--group) and the authority to set the group).
for (i = 0; i < flist->count; i++)
--- old/util.c
+++ new/util.c
-@@ -1550,3 +1550,31 @@ int bitbag_next_bit(struct bitbag *bb, i
+@@ -1468,3 +1468,31 @@ int bitbag_next_bit(struct bitbag *bb, i
return -1;
}