./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
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: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
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: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/compat.c b/compat.c
--- a/compat.c
+++ b/compat.c
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -353,6 +353,7 @@ to the detailed description below for a complete description. verb(
+@@ -366,6 +366,7 @@ to the detailed description below for a complete description. verb(
-D same as --devices --specials
-t, --times preserve modification times
-O, --omit-dir-times omit directories from --times
--super receiver attempts super-user activities
--fake-super store/recover privileged attrs using xattrs
-S, --sparse handle sparse files efficiently
-@@ -1064,6 +1065,12 @@ it is preserving modification times (see bf(--times)). If NFS is sharing
+@@ -1077,6 +1078,12 @@ it is preserving modification times (see bf(--times)). If NFS is sharing
the directories on the receiving side, it is a good idea to use bf(-O).
This option is inferred if you use bf(--backup) without bf(--backup-dir).
dit(bf(--super)) This tells the receiving side to attempt super-user
activities even if the receiving rsync wasn't run by the super-user. These
activities include: preserving users via the bf(--owner) option, preserving
-@@ -1815,7 +1822,10 @@ quote(itemization(
+@@ -1838,7 +1845,10 @@ 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).
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/backup.c b/backup.c
--- a/backup.c
+++ b/backup.c
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/errcode.h b/errcode.h
--- a/errcode.h
+++ b/errcode.h
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/checksum.c b/checksum.c
--- a/checksum.c
+++ b/checksum.c
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -321,6 +321,7 @@ to the detailed description below for a complete description. verb(
+@@ -334,6 +334,7 @@ to the detailed description below for a complete description. verb(
-q, --quiet suppress non-error messages
--no-motd suppress daemon-mode MOTD (see caveat)
-c, --checksum skip based on checksum, not mod-time & size
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
--no-OPTION turn off an implied OPTION (e.g. --no-D)
-r, --recursive recurse into directories
-@@ -526,9 +527,9 @@ uses a "quick check" that (by default) checks if each file's size and time
+@@ -539,9 +540,9 @@ uses a "quick check" that (by default) checks if each file's size and time
of last modification match between the sender and receiver. This option
changes this to compare a 128-bit checksum for each file that has a
matching size. Generating the checksums means that both sides will expend
The sending side generates its checksums while it is doing the file-system
scan that builds the list of the available files. The receiver generates
-@@ -536,6 +537,8 @@ its checksums when it is scanning for changed files, and will checksum any
+@@ -549,6 +550,8 @@ its checksums when it is scanning for changed files, and will checksum any
file that has the same size as the corresponding sender's file: files with
either a changed size or a changed checksum are selected for transfer.
Note that rsync always verifies that each em(transferred) file was
correctly reconstructed on the receiving side by checking a whole-file
checksum that is generated as the file is transferred, but that
-@@ -545,6 +548,36 @@ option's before-the-transfer "Does this file need to be updated?" check.
+@@ -558,6 +561,36 @@ option's before-the-transfer "Does this file need to be updated?" check.
For protocol 30 and beyond (first supported in 3.0.0), the checksum used is
MD5. For older protocols, the checksum used is MD4.
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -557,9 +557,13 @@ computed just as it would be if bf(--sumfiles) was not specified.
+@@ -570,9 +570,13 @@ computed just as it would be if bf(--sumfiles) was not specified.
The MODE value is either "lax", for relaxed checking (which compares size
and mtime), "strict" (which also compares ctime and inode), or "none" to
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/flist.c b/flist.c
--- a/flist.c
+++ b/flist.c
typedef struct {
char *datum, *name;
-@@ -243,7 +249,9 @@ static int rsync_xal_get(const char *fname, item_list *xalp)
+@@ -246,7 +252,9 @@ static int rsync_xal_get(const char *fname, item_list *xalp)
|| (am_root < 0
&& (strcmp(name+RPRE_LEN+1, XSTAT_SUFFIX) == 0
|| strcmp(name+RPRE_LEN+1, XACC_ACL_SUFFIX) == 0
continue;
}
-@@ -955,6 +963,39 @@ int del_def_xattr_acl(const char *fname)
+@@ -956,6 +964,39 @@ int del_def_xattr_acl(const char *fname)
}
#endif
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -354,6 +354,7 @@ to the detailed description below for a complete description. verb(
+@@ -367,6 +367,7 @@ to the detailed description below for a complete description. verb(
-D same as --devices --specials
-t, --times preserve modification times
-O, --omit-dir-times omit directories from --times
--super receiver attempts super-user activities
--fake-super store/recover privileged attrs using xattrs
-S, --sparse handle sparse files efficiently
-@@ -1092,6 +1093,9 @@ it is preserving modification times (see bf(--times)). If NFS is sharing
+@@ -1105,6 +1106,9 @@ it is preserving modification times (see bf(--times)). If NFS is sharing
the directories on the receiving side, it is a good idea to use bf(-O).
This option is inferred if you use bf(--backup) without bf(--backup-dir).
dit(bf(--super)) This tells the receiving side to attempt super-user
activities even if the receiving rsync wasn't run by the super-user. These
activities include: preserving users via the bf(--owner) option, preserving
-@@ -1788,7 +1792,7 @@ with older versions of rsync, but that also turns on the output of other
+@@ -1811,7 +1815,7 @@ with older versions of rsync, but that also turns on the output of other
verbose messages).
The "%i" escape has a cryptic output that is 11 letters long. The general
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.
-@@ -1847,6 +1851,8 @@ quote(itemization(
+@@ -1870,6 +1874,8 @@ quote(itemization(
it() The bf(f) means that the fileflags information changed.
it() The bf(a) means that the ACL information changed.
it() The bf(x) means that the extended attribute information changed.
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/exclude.c b/exclude.c
--- a/exclude.c
+++ b/exclude.c
if (strlcpy(dirbuf + dirbuf_len, ex->pattern,
MAXPATHLEN - dirbuf_len) < MAXPATHLEN - dirbuf_len) {
parse_filter_file(lp, dirbuf, ex->match_flags,
-@@ -1030,6 +1040,7 @@ void parse_filter_file(struct filter_list_struct *listp, const char *fname,
+@@ -1026,6 +1036,7 @@ void parse_filter_file(struct filter_list_struct *listp, const char *fname,
char line[BIGPATHBUFLEN];
char *eob = line + sizeof line - 1;
int word_split = mflags & MATCHFLG_WORD_SPLIT;
if (!fname || !*fname)
return;
-@@ -1076,6 +1087,24 @@ void parse_filter_file(struct filter_list_struct *listp, const char *fname,
+@@ -1072,6 +1083,24 @@ void parse_filter_file(struct filter_list_struct *listp, const char *fname,
}
break;
}
if (word_split && isspace(ch))
break;
if (eol_nulls? !ch : (ch == '\n' || ch == '\r'))
-@@ -1085,13 +1114,15 @@ void parse_filter_file(struct filter_list_struct *listp, const char *fname,
+@@ -1081,13 +1110,15 @@ void parse_filter_file(struct filter_list_struct *listp, const char *fname,
else
overflow = 1;
}
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/access.c b/access.c
--- a/access.c
+++ b/access.c
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -386,6 +386,7 @@ to the detailed description below for a complete description. verb(
+@@ -399,6 +399,7 @@ to the detailed description below for a complete description. verb(
--contimeout=SECONDS set daemon connection timeout in seconds
-I, --ignore-times don't skip files that match size and time
--size-only skip files that match in size
--modify-window=NUM compare mod-times with reduced accuracy
-T, --temp-dir=DIR create temporary files in directory DIR
-y, --fuzzy find similar file for basis if no dest file
-@@ -512,6 +513,12 @@ time to just looking for files that have changed in size. This is useful
+@@ -525,6 +526,12 @@ time to just looking for files that have changed in size. This is useful
when starting to use rsync after using another mirroring system which may
not preserve timestamps exactly.
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -321,6 +321,7 @@ to the detailed description below for a complete description. verb(
+@@ -334,6 +334,7 @@ to the detailed description below for a complete description. verb(
-q, --quiet suppress non-error messages
--no-motd suppress daemon-mode MOTD (see caveat)
-c, --checksum skip based on checksum, not mod-time & size
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
--no-OPTION turn off an implied OPTION (e.g. --no-D)
-r, --recursive recurse into directories
-@@ -546,6 +547,47 @@ option's before-the-transfer "Does this file need to be updated?" check.
+@@ -559,6 +560,47 @@ option's before-the-transfer "Does this file need to be updated?" check.
For protocol 30 and beyond (first supported in 3.0.0), the checksum used is
MD5. For older protocols, the checksum used is MD4.
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -390,6 +390,8 @@ to the detailed description below for a complete description. verb(
+@@ -403,6 +403,8 @@ to the detailed description below for a complete description. verb(
-T, --temp-dir=DIR create temporary files in directory DIR
-y, --fuzzy find similar file for basis if no dest file
--detect-renamed try to find renamed files to speed the xfer
--compare-dest=DIR also compare received files relative to DIR
--copy-dest=DIR ... and include copies of unchanged files
--link-dest=DIR hardlink to files in DIR when unchanged
-@@ -1583,6 +1585,17 @@ the bf(--partial-dir) option, that directory will be used instead. These
+@@ -1606,6 +1608,17 @@ the bf(--partial-dir) option, that directory will be used instead. These
potential alternate-basis files will be removed as the transfer progresses.
This option conflicts with bf(--inplace) and bf(--append).
a file that can't use it, while missing out on giving it to a file
that could use it.
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/compat.c b/compat.c
--- a/compat.c
+++ b/compat.c
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -389,6 +389,7 @@ to the detailed description below for a complete description. verb(
+@@ -402,6 +402,7 @@ to the detailed description below for a complete description. verb(
--modify-window=NUM compare mod-times with reduced accuracy
-T, --temp-dir=DIR create temporary files in directory DIR
-y, --fuzzy find similar file for basis if no dest file
--compare-dest=DIR also compare received files relative to DIR
--copy-dest=DIR ... and include copies of unchanged files
--link-dest=DIR hardlink to files in DIR when unchanged
-@@ -1567,6 +1568,21 @@ Note that the use of the bf(--delete) option might get rid of any potential
+@@ -1590,6 +1591,21 @@ Note that the use of the bf(--delete) option might get rid of any potential
fuzzy-match files, so either use bf(--delete-after) or specify some
filename exclusions if you need to prevent this.
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/clientserver.c b/clientserver.c
--- a/clientserver.c
+++ b/clientserver.c
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -439,6 +439,7 @@ accepted: verb(
+@@ -452,6 +452,7 @@ accepted: verb(
--address=ADDRESS bind to the specified address
--bwlimit=KBPS limit I/O bandwidth; KBytes per second
--config=FILE specify alternate rsyncd.conf file
--no-detach do not detach from the parent
--port=PORT listen on alternate port number
--log-file=FILE override the "log file" setting
-@@ -2248,6 +2249,14 @@ The default is /etc/rsyncd.conf unless the daemon is running over
+@@ -2271,6 +2272,14 @@ The default is /etc/rsyncd.conf unless the daemon is running over
a remote shell program and the remote user is not the super-user; in that case
the default is rsyncd.conf in the current directory (typically $HOME).
./configure
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/checksum.c b/checksum.c
--- a/checksum.c
+++ b/checksum.c
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -356,6 +356,7 @@ to the detailed description below for a complete description. verb(
+@@ -369,6 +369,7 @@ to the detailed description below for a complete description. verb(
--super receiver attempts super-user activities
--fake-super store/recover privileged attrs using xattrs
-S, --sparse handle sparse files efficiently
-n, --dry-run perform a trial run with no changes made
-W, --whole-file copy files whole (w/o delta-xfer algorithm)
-x, --one-file-system don't cross filesystem boundaries
-@@ -1109,6 +1110,10 @@ dit(bf(-S, --sparse)) Try to handle sparse files efficiently so they take
+@@ -1122,6 +1123,10 @@ dit(bf(-S, --sparse)) Try to handle sparse files efficiently so they take
up less space on the destination. Conflicts with bf(--inplace) because it's
not possible to overwrite data in a sparse fashion.
./configure
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -342,6 +342,7 @@ to the detailed description below for a complete description. verb(
+@@ -355,6 +355,7 @@ to the detailed description below for a complete description. verb(
-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 affect file and/or directory permissions
-A, --acls preserve ACLs (implies -p)
-@@ -373,7 +374,10 @@ to the detailed description below for a complete description. verb(
- --delete-after receiver deletes after transfer, not before
+@@ -386,7 +387,10 @@ to the detailed description below for a complete description. verb(
+ --delete-after receiver deletes after transfer, not during
--delete-excluded also delete excluded files from dest dirs
--ignore-errors delete even if there are I/O errors
- --force force deletion of dirs even if not empty
--max-delete=NUM don't delete more than NUM files
--max-size=SIZE don't transfer any file larger than SIZE
--min-size=SIZE don't transfer any file smaller than SIZE
-@@ -553,7 +557,8 @@ specified, in which case bf(-r) is not implied.
+@@ -566,7 +570,8 @@ specified, in which case bf(-r) is not implied.
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-":
-@@ -833,7 +838,7 @@ they would be using bf(--copy-links).
+@@ -846,7 +851,7 @@ they would be using bf(--copy-links).
Without this option, if the sending side has replaced a directory with a
symlink to a directory, the receiving side will delete anything that is in
the way of the new symlink, including a directory hierarchy (as long as
See also bf(--keep-dirlinks) for an analogous option for the receiving
side.
-@@ -996,6 +1001,29 @@ Note that this option does not copy rsyncs special xattr values (e.g. those
+@@ -1009,6 +1014,29 @@ Note that this option does not copy rsyncs special xattr values (e.g. those
used by bf(--fake-super)) unless you repeat the option (e.g. -XX). This
"copy all xattrs" mode cannot be used with bf(--fake-super).
+bf(--force-change) and bf(--force-schange).
+
dit(bf(--chmod)) This option tells rsync to apply one or more
- comma-separated "chmod" strings to the permission of the files in the
+ comma-separated "chmod" modes to the permission of the files in the
transfer. The resulting value is treated as though it were the permissions
-@@ -1266,12 +1294,13 @@ See bf(--delete) (which is implied) for more details on file-deletion.
+@@ -1289,12 +1317,13 @@ See bf(--delete) (which is implied) for more details on file-deletion.
dit(bf(--ignore-errors)) Tells bf(--delete) to go ahead and delete files
even when there are I/O errors.
bf(--recursive) option was also enabled.
dit(bf(--max-delete=NUM)) This tells rsync not to delete more than NUM
-@@ -1759,7 +1788,7 @@ with older versions of rsync, but that also turns on the output of other
+@@ -1782,7 +1811,7 @@ with older versions of rsync, but that also turns on the output of other
verbose messages).
The "%i" escape has a cryptic output that is 11 letters long. The general
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.
-@@ -1815,7 +1844,7 @@ quote(itemization(
+@@ -1838,7 +1867,7 @@ 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).
diff --git a/xattrs.c b/xattrs.c
--- a/xattrs.c
+++ b/xattrs.c
-@@ -1041,7 +1041,7 @@ int set_stat_xattr(const char *fname, struct file_struct *file, mode_t new_mode)
+@@ -1042,7 +1042,7 @@ int set_stat_xattr(const char *fname, struct file_struct *file, mode_t new_mode)
mode = (fst.st_mode & _S_IFMT) | (fmode & ACCESSPERMS)
| (S_ISDIR(fst.st_mode) ? 0700 : 0600);
if (fst.st_mode != mode)
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -347,6 +347,8 @@ to the detailed description below for a complete description. verb(
+@@ -360,6 +360,8 @@ to the detailed description below for a complete description. verb(
--chmod=CHMOD affect file and/or directory permissions
-A, --acls preserve ACLs (implies -p)
-X, --xattrs preserve extended attributes
-o, --owner preserve owner (super-user only)
-g, --group preserve group
--devices preserve device files (super-user only)
-@@ -1025,6 +1027,42 @@ flags on files and directories that are being updated or deleted on the
+@@ -1038,6 +1040,42 @@ flags on files and directories that are being updated or deleted on the
receiving side. It does not try to affect user flags. This option overrides
bf(--force-change) and bf(--force-schange).
+This option implies bf(--fileflags) and bf(--xattrs).
+
dit(bf(--chmod)) This option tells rsync to apply one or more
- comma-separated "chmod" strings to the permission of the files in the
+ comma-separated "chmod" modes to the permission of the files in the
transfer. The resulting value is treated as though it were the permissions
diff --git a/t_stub.c b/t_stub.c
--- a/t_stub.c
typedef struct {
char *datum, *name;
size_t datum_len, name_len;
-@@ -163,8 +179,7 @@ static ssize_t get_xattr_names(const char *fname)
+@@ -166,8 +182,7 @@ static ssize_t get_xattr_names(const char *fname)
/* On entry, the *len_ptr parameter contains the size of the extra space we
* should allocate when we create a buffer for the data. On exit, it contains
* the length of the datum. */
{
size_t datum_len = sys_lgetxattr(fname, name, NULL, 0);
size_t extra_len = *len_ptr;
-@@ -173,7 +188,7 @@ static char *get_xattr_data(const char *fname, const char *name, size_t *len_ptr
+@@ -176,7 +191,7 @@ static char *get_xattr_data(const char *fname, const char *name, size_t *len_ptr
*len_ptr = datum_len;
if (datum_len == (size_t)-1) {
return NULL;
rsyserr(FERROR_XFER, errno,
"get_xattr_data: lgetxattr(\"%s\",\"%s\",0) failed",
-@@ -181,6 +196,15 @@ static char *get_xattr_data(const char *fname, const char *name, size_t *len_ptr
+@@ -184,6 +199,15 @@ static char *get_xattr_data(const char *fname, const char *name, size_t *len_ptr
return NULL;
}
if (!datum_len && !extra_len)
extra_len = 1; /* request non-zero amount of memory */
if (datum_len + extra_len < datum_len)
-@@ -209,7 +233,29 @@ static char *get_xattr_data(const char *fname, const char *name, size_t *len_ptr
+@@ -212,7 +236,29 @@ static char *get_xattr_data(const char *fname, const char *name, size_t *len_ptr
return ptr;
}
{
ssize_t list_len, name_len;
size_t datum_len, name_offset;
-@@ -218,7 +264,8 @@ static int rsync_xal_get(const char *fname, item_list *xalp)
+@@ -221,7 +267,8 @@ static int rsync_xal_get(const char *fname, item_list *xalp)
int user_only = am_sender ? 0 : am_root <= 0;
#endif
rsync_xa *rxa;
/* This puts the name list into the "namebuf" buffer. */
if ((list_len = get_xattr_names(fname)) < 0)
-@@ -248,20 +295,22 @@ static int rsync_xal_get(const char *fname, item_list *xalp)
+@@ -251,20 +298,22 @@ static int rsync_xal_get(const char *fname, item_list *xalp)
}
datum_len = name_len; /* Pass extra size to get_xattr_data() */
} else
name_offset = datum_len;
-@@ -306,7 +355,7 @@ int get_xattr(const char *fname, stat_x *sxp)
+@@ -309,7 +358,7 @@ int get_xattr(const char *fname, stat_x *sxp)
return 0;
}
free_xattr(sxp);
return -1;
}
-@@ -341,6 +390,8 @@ int copy_xattrs(const char *source, const char *dest)
+@@ -344,6 +393,8 @@ int copy_xattrs(const char *source, const char *dest)
datum_len = 0;
if (!(ptr = get_xattr_data(source, name, &datum_len, 0)))
return -1;
if (sys_lsetxattr(dest, name, ptr, datum_len) < 0) {
int save_errno = errno ? errno : EINVAL;
rsyserr(FERROR_XFER, errno,
-@@ -357,6 +408,10 @@ int copy_xattrs(const char *source, const char *dest)
+@@ -360,6 +411,10 @@ int copy_xattrs(const char *source, const char *dest)
static int find_matching_xattr(item_list *xalp)
{
size_t i, j;
item_list *lst = rsync_xal_l.items;
-@@ -390,6 +445,7 @@ static int find_matching_xattr(item_list *xalp)
+@@ -393,6 +448,7 @@ static int find_matching_xattr(item_list *xalp)
}
return -1;
}
/* Store *xalp on the end of rsync_xal_l */
-@@ -569,11 +625,13 @@ void send_xattr_request(const char *fname, struct file_struct *file, int f_out)
+@@ -572,11 +628,13 @@ void send_xattr_request(const char *fname, struct file_struct *file, int f_out)
/* Re-read the long datum. */
if (!(ptr = get_xattr_data(fname, rxa->name, &len, 0))) {
write_varint(f_out, len); /* length might have changed! */
write_buf(f_out, ptr, len);
free(ptr);
-@@ -791,7 +849,7 @@ static int rsync_xal_set(const char *fname, item_list *xalp,
+@@ -792,7 +850,7 @@ static int rsync_xal_set(const char *fname, item_list *xalp,
int user_only = am_root <= 0;
#endif
size_t name_len;
/* This puts the current name list into the "namebuf" buffer. */
if ((list_len = get_xattr_names(fname)) < 0)
-@@ -803,7 +861,10 @@ static int rsync_xal_set(const char *fname, item_list *xalp,
+@@ -804,7 +862,10 @@ static int rsync_xal_set(const char *fname, item_list *xalp,
if (XATTR_ABBREV(rxas[i])) {
/* See if the fnamecmp version is identical. */
len = name_len = rxas[i].name_len;
still_abbrev:
if (am_generator)
continue;
-@@ -812,14 +873,14 @@ static int rsync_xal_set(const char *fname, item_list *xalp,
+@@ -813,14 +874,14 @@ static int rsync_xal_set(const char *fname, item_list *xalp,
ret = -1;
continue;
}
if (memcmp(sum, rxas[i].datum + 1, MAX_DIGEST_LEN) != 0) {
free(ptr);
goto still_abbrev;
-@@ -888,6 +949,10 @@ static int rsync_xal_set(const char *fname, item_list *xalp,
+@@ -889,6 +950,10 @@ static int rsync_xal_set(const char *fname, item_list *xalp,
}
}
return ret;
}
-@@ -934,7 +999,7 @@ char *get_xattr_acl(const char *fname, int is_access_acl, size_t *len_p)
+@@ -935,7 +1000,7 @@ char *get_xattr_acl(const char *fname, int is_access_acl, size_t *len_p)
{
const char *name = is_access_acl ? XACC_ACL_ATTR : XDEF_ACL_ATTR;
*len_p = 0; /* no extra data alloc needed from get_xattr_data() */
}
int set_xattr_acl(const char *fname, int is_access_acl, const char *buf, size_t buf_len)
-@@ -1077,11 +1142,33 @@ int set_stat_xattr(const char *fname, struct file_struct *file, mode_t new_mode)
+@@ -1078,11 +1143,33 @@ int set_stat_xattr(const char *fname, struct file_struct *file, mode_t new_mode)
return 0;
}
return ret;
}
-@@ -1090,6 +1177,9 @@ int x_lstat(const char *fname, STRUCT_STAT *fst, STRUCT_STAT *xst)
+@@ -1091,6 +1178,9 @@ int x_lstat(const char *fname, STRUCT_STAT *fst, STRUCT_STAT *xst)
int ret = do_lstat(fname, fst);
if ((ret < 0 || get_stat_xattr(fname, -1, fst, xst) < 0) && xst)
xst->st_mode = 0;
return ret;
}
-@@ -1098,6 +1188,9 @@ int x_fstat(int fd, STRUCT_STAT *fst, STRUCT_STAT *xst)
+@@ -1099,6 +1189,9 @@ int x_fstat(int fd, STRUCT_STAT *fst, STRUCT_STAT *xst)
int ret = do_fstat(fd, fst);
if ((ret < 0 || get_stat_xattr(NULL, fd, fst, xst) < 0) && xst)
xst->st_mode = 0;
- Make this code handle multibyte character encodings, and honor the
--iconv setting when converting case.
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/exclude.c b/exclude.c
--- a/exclude.c
+++ b/exclude.c
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -406,6 +406,7 @@ to the detailed description below for a complete description. verb(
+@@ -419,6 +419,7 @@ to the detailed description below for a complete description. verb(
--files-from=FILE read list of source-file names from FILE
-0, --from0 all *from/filter files are delimited by 0s
-s, --protect-args no space-splitting; wildcard chars only
--address=ADDRESS bind address for outgoing socket to daemon
--port=PORT specify double-colon alternate port number
--sockopts=OPTIONS specify custom TCP options
-@@ -1525,6 +1526,10 @@ side will also be translated
+@@ -1548,6 +1549,10 @@ side will also be translated
from the local to the remote character-set. The translation happens before
wild-cards are expanded. See also the bf(--files-from) option.
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -392,6 +392,7 @@ to the detailed description below for a complete description. verb(
+@@ -405,6 +405,7 @@ to the detailed description below for a complete description. verb(
--compare-dest=DIR also compare received files relative to DIR
--copy-dest=DIR ... and include copies of unchanged files
--link-dest=DIR hardlink to files in DIR when unchanged
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/flist.c b/flist.c
--- a/flist.c
+++ b/flist.c
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -338,6 +338,7 @@ to the detailed description below for a complete description. verb(
+@@ -351,6 +351,7 @@ to the detailed description below for a complete description. verb(
-L, --copy-links transform symlink into referent file/dir
--copy-unsafe-links only "unsafe" symlinks are transformed
--safe-links ignore symlinks that point outside the tree
-k, --copy-dirlinks transform symlink to dir into referent dir
-K, --keep-dirlinks treat symlinked dir on receiver as dir
-H, --hard-links preserve hard links
-@@ -826,6 +827,25 @@ which point outside the copied tree. All absolute symlinks are
+@@ -839,6 +840,25 @@ which point outside the copied tree. All absolute symlinks are
also ignored. Using this option in conjunction with bf(--relative) may
give unexpected results.
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/clientserver.c b/clientserver.c
--- a/clientserver.c
+++ b/clientserver.c
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/access.c b/access.c
--- a/access.c
+++ b/access.c
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -353,6 +353,7 @@ to the detailed description below for a complete description. verb(
+@@ -366,6 +366,7 @@ to the detailed description below for a complete description. verb(
-D same as --devices --specials
-t, --times preserve modification times
-O, --omit-dir-times omit directories from --times
--super receiver attempts super-user activities
--fake-super store/recover privileged attrs using xattrs
-S, --sparse handle sparse files efficiently
-@@ -1064,6 +1065,10 @@ it is preserving modification times (see bf(--times)). If NFS is sharing
+@@ -1077,6 +1078,10 @@ it is preserving modification times (see bf(--times)). If NFS is sharing
the directories on the receiving side, it is a good idea to use bf(-O).
This option is inferred if you use bf(--backup) without bf(--backup-dir).
./configure
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
+ rprintf(F," --ssl-ca-certs=FILE path to trusted CA certificates\n");
+#endif
rprintf(F," --version print version number\n");
- rprintf(F,"(-h) --help show this help (-h works with no other options)\n");
+ rprintf(F,"(-h) --help show this help (-h is --help only if used alone)\n");
@@ -445,7 +464,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,
./configure
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/compat.c b/compat.c
--- a/compat.c
+++ b/compat.c
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -356,6 +356,7 @@ to the detailed description below for a complete description. verb(
+@@ -369,6 +369,7 @@ to the detailed description below for a complete description. verb(
--super receiver attempts super-user activities
--fake-super store/recover privileged attrs using xattrs
-S, --sparse handle sparse files efficiently
-n, --dry-run perform a trial run with no changes made
-W, --whole-file copy files whole (w/o delta-xfer algorithm)
-x, --one-file-system don't cross filesystem boundaries
-@@ -1109,6 +1110,17 @@ dit(bf(-S, --sparse)) Try to handle sparse files efficiently so they take
+@@ -1122,6 +1123,17 @@ dit(bf(-S, --sparse)) Try to handle sparse files efficiently so they take
up less space on the destination. Conflicts with bf(--inplace) because it's
not possible to overwrite data in a sparse fashion.
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -416,6 +416,7 @@ to the detailed description below for a complete description. verb(
+@@ -429,6 +429,7 @@ to the detailed description below for a complete description. verb(
--progress show progress during transfer
-P same as --partial --progress
-i, --itemize-changes output a change-summary for all updates
--out-format=FORMAT output updates using the specified FORMAT
--log-file=FILE log what we're doing to the specified FILE
--log-file-format=FMT log updates using the specified FMT
-@@ -1090,16 +1091,16 @@ This is a good way to backup data without using a super-user, and to store
+@@ -1103,16 +1104,16 @@ This is a good way to backup data without using a super-user, and to store
ACLs from incompatible systems.
The bf(--fake-super) option only affects the side where the option is used.
This option is overridden by both bf(--super) and bf(--no-super).
-@@ -1361,6 +1362,36 @@ machine for use with the bf(--relative) option. For instance:
+@@ -1384,6 +1385,36 @@ machine for use with the bf(--relative) option. For instance:
quote(tt( rsync -avR --rsync-path="cd /a/b && rsync" host:c/d /e/))
dit(bf(-C, --cvs-exclude)) This is a useful shorthand for excluding a
broad range of files that you often don't want to transfer between
systems. It uses a similar algorithm to CVS to determine if
-@@ -1860,7 +1891,7 @@ option if you wish to override this.
+@@ -1883,7 +1914,7 @@ option if you wish to override this.
Here's a example command that requests the remote side to log what is
happening:
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
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: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
{"auth users", P_STRING, P_LOCAL, &sDefault.auth_users, NULL,0},
{"charset", P_STRING, P_LOCAL, &sDefault.charset, NULL,0},
-@@ -354,6 +367,7 @@ static struct parm_struct parm_table[] =
+@@ -354,6 +367,9 @@ static struct parm_struct parm_table[] =
static void init_globals(void)
{
memset(&Globals, 0, sizeof Globals);
++#ifdef HAVE_LIBSLP
+ Globals.use_slp = True;
++#endif
}
/***************************************************************************
-@@ -394,6 +408,13 @@ FN_GLOBAL_STRING(lp_pid_file, &Globals.pid_file)
+@@ -394,6 +410,13 @@ FN_GLOBAL_STRING(lp_pid_file, &Globals.pid_file)
FN_GLOBAL_STRING(lp_socket_options, &Globals.socket_options)
FN_GLOBAL_INTEGER(lp_rsync_port, &Globals.rsync_port)
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/syscall.c b/syscall.c
--- a/syscall.c
+++ b/syscall.c
-- Matt McCutchen <hashproduct@gmail.com>
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -365,6 +365,7 @@ to the detailed description below for a complete description. verb(
+@@ -378,6 +378,7 @@ to the detailed description below for a complete description. verb(
--existing skip creating new files on receiver
--ignore-existing skip updating files that exist on receiver
--remove-source-files sender removes synchronized files (non-dir)
+ --source-backup ... and backs up those files
--del an alias for --delete-during
--delete delete extraneous files from dest dirs
- --delete-before receiver deletes before transfer (default)
-@@ -1180,6 +1181,14 @@ dit(bf(--remove-source-files)) This tells rsync to remove from the sending
- side the files (meaning non-directories) that are a part of the transfer
- and have been successfully duplicated on the receiving side.
+ --delete-before receiver deletes before xfer, not during
+@@ -1203,6 +1204,14 @@ transferring files that are not yet finished (e.g. name the file "foo.new" when
+ it is written, rename it to "foo" when it is done, and then use the option
+ bf(--exclude='*.new') for the rsync transfer).
+dit(bf(--source-backup)) Makes the sender back up the source files it removes
+due to bf(--remove-source-files). This option is independent of
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -386,6 +386,7 @@ to the detailed description below for a complete description. verb(
+@@ -399,6 +399,7 @@ to the detailed description below for a complete description. verb(
--contimeout=SECONDS set daemon connection timeout in seconds
-I, --ignore-times don't skip files that match size and time
--size-only skip files that match in size
--modify-window=NUM compare mod-times with reduced accuracy
-T, --temp-dir=DIR create temporary files in directory DIR
-y, --fuzzy find similar file for basis if no dest file
-@@ -425,6 +426,8 @@ to the detailed description below for a complete description. verb(
+@@ -438,6 +439,8 @@ to the detailed description below for a complete description. verb(
--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
--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)
-@@ -2156,6 +2159,33 @@ file previously generated by bf(--write-batch).
+@@ -2179,6 +2182,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: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/fileio.c b/fileio.c
--- a/fileio.c
+++ b/fileio.c
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -356,6 +356,7 @@ to the detailed description below for a complete description. verb(
+@@ -369,6 +369,7 @@ to the detailed description below for a complete description. verb(
--super receiver attempts super-user activities
--fake-super store/recover privileged attrs using xattrs
-S, --sparse handle sparse files efficiently
-n, --dry-run perform a trial run with no changes made
-W, --whole-file copy files whole (w/o delta-xfer algorithm)
-x, --one-file-system don't cross filesystem boundaries
-@@ -1109,6 +1110,15 @@ dit(bf(-S, --sparse)) Try to handle sparse files efficiently so they take
+@@ -1122,6 +1123,15 @@ dit(bf(-S, --sparse)) Try to handle sparse files efficiently so they take
up less space on the destination. Conflicts with bf(--inplace) because it's
not possible to overwrite data in a sparse fashion.
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/io.c b/io.c
--- a/io.c
+++ b/io.c
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -422,6 +422,8 @@ to the detailed description below for a complete description. verb(
+@@ -435,6 +435,8 @@ to the detailed description below for a complete description. verb(
--password-file=FILE read daemon-access password from FILE
--list-only list the files instead of copying them
--bwlimit=KBPS limit I/O bandwidth; KBytes per second
--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
-@@ -2130,6 +2132,19 @@ transfer was too fast, it will wait before sending the next data block. The
+@@ -2153,6 +2155,19 @@ transfer was too fast, it will wait before sending the next data block. The
result is an average transfer rate equaling the specified limit. A value
of zero specifies no limit.
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/flist.c b/flist.c
--- a/flist.c
+++ b/flist.c
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -427,6 +427,7 @@ to the detailed description below for a complete description. verb(
+@@ -440,6 +440,7 @@ to the detailed description below for a complete description. verb(
--read-batch=FILE read a batched update from FILE
--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)
-4, --ipv4 prefer IPv4
-6, --ipv6 prefer IPv6
-@@ -2194,6 +2195,22 @@ daemon uses the charset specified in its "charset" configuration parameter
+@@ -2217,6 +2218,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: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/syscall.c b/syscall.c
--- a/syscall.c
+++ b/syscall.c
./configure (optional if already run)
make
-based-on: a5ef6969530e4616112999be9330cc442bcba7b7
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/flist.c b/flist.c
--- a/flist.c
+++ b/flist.c
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -382,6 +382,9 @@ to the detailed description below for a complete description. verb(
+@@ -395,6 +395,9 @@ to the detailed description below for a complete description. verb(
--delay-updates put all updated files into place at end
-m, --prune-empty-dirs prune empty directory chains from file-list
--numeric-ids don't map uid/gid values by user/group name
--timeout=SECONDS set I/O timeout in seconds
--contimeout=SECONDS set daemon connection timeout in seconds
-I, --ignore-times don't skip files that match size and time
-@@ -1716,6 +1719,57 @@ from the source system is used instead. See also the comments on the
+@@ -1739,6 +1742,57 @@ from the source system is used instead. See also the comments on the
the chroot setting affects rsync's ability to look up the names of the
users and groups and what you can do about it.
#define RSYNC_XAL_INITIAL 5
#define RSYNC_XAL_LIST_INITIAL 100
-@@ -251,7 +253,7 @@ static int rsync_xal_get(const char *fname, item_list *xalp)
+@@ -254,7 +256,7 @@ static int rsync_xal_get(const char *fname, item_list *xalp)
if (!(ptr = get_xattr_data(fname, name, &datum_len, 0)))
return -1;
/* For large datums, we store a flag and a checksum. */
name_offset = 1 + MAX_DIGEST_LEN;
sum_init(checksum_seed);
-@@ -373,7 +375,7 @@ static int find_matching_xattr(item_list *xalp)
+@@ -376,7 +378,7 @@ static int find_matching_xattr(item_list *xalp)
|| rxas1[j].datum_len != rxas2[j].datum_len
|| strcmp(rxas1[j].name, rxas2[j].name))
break;
if (memcmp(rxas1[j].datum + 1,
rxas2[j].datum + 1,
MAX_DIGEST_LEN) != 0)
-@@ -410,13 +412,22 @@ int send_xattr(int f, stat_x *sxp)
+@@ -413,13 +415,22 @@ int send_xattr(int f, stat_x *sxp)
{
int ndx = find_matching_xattr(sxp->xattr);
for (rxa = sxp->xattr->items; count--; rxa++) {
size_t name_len = rxa->name_len;
const char *name = rxa->name;
-@@ -435,8 +446,8 @@ int send_xattr(int f, stat_x *sxp)
+@@ -438,8 +449,8 @@ int send_xattr(int f, stat_x *sxp)
name_len += UPRE_LEN;
}
#endif
#ifndef HAVE_LINUX_XATTRS
if (name_len > rxa->name_len) {
write_buf(f, USER_PREFIX, UPRE_LEN);
-@@ -444,7 +455,7 @@ int send_xattr(int f, stat_x *sxp)
+@@ -447,7 +458,7 @@ int send_xattr(int f, stat_x *sxp)
}
#endif
write_buf(f, name, name_len);
write_buf(f, rxa->datum + 1, MAX_DIGEST_LEN);
else
write_buf(f, rxa->datum, rxa->datum_len);
-@@ -494,7 +505,7 @@ int xattr_diff(struct file_struct *file, stat_x *sxp, int find_all)
+@@ -497,7 +508,7 @@ int xattr_diff(struct file_struct *file, stat_x *sxp, int find_all)
cmp = rec_cnt ? strcmp(snd_rxa->name, rec_rxa->name) : -1;
if (cmp > 0)
same = 0;
same = cmp == 0 && snd_rxa->datum_len == rec_rxa->datum_len
&& memcmp(snd_rxa->datum + 1, rec_rxa->datum + 1,
MAX_DIGEST_LEN) == 0;
-@@ -539,6 +550,9 @@ void send_xattr_request(const char *fname, struct file_struct *file, int f_out)
+@@ -542,6 +553,9 @@ void send_xattr_request(const char *fname, struct file_struct *file, int f_out)
int cnt, prior_req = 0;
rsync_xa *rxa;
lst += F_XATTR(file);
for (rxa = lst->items, cnt = lst->count; cnt--; rxa++) {
if (rxa->datum_len <= MAX_FULL_DATUM)
-@@ -595,6 +609,9 @@ int recv_xattr_request(struct file_struct *file, int f_in)
+@@ -598,6 +612,9 @@ int recv_xattr_request(struct file_struct *file, int f_in)
rsync_xa *rxa;
int rel_pos, cnt, num, got_xattr_data = 0;
if (F_XATTR(file) < 0) {
rprintf(FERROR, "recv_xattr_request: internal data error!\n");
exit_cleanup(RERR_PROTOCOL);
-@@ -657,7 +674,22 @@ void receive_xattr(int f, struct file_struct *file)
+@@ -660,7 +677,22 @@ void receive_xattr(int f, struct file_struct *file)
#else
int need_sort = 1;
#endif
if (ndx < 0 || (size_t)ndx > rsync_xal_l.count) {
rprintf(FERROR, "receive_xattr: xa index %d out of"
-@@ -670,7 +702,7 @@ void receive_xattr(int f, struct file_struct *file)
+@@ -673,7 +705,7 @@ void receive_xattr(int f, struct file_struct *file)
return;
}
(void)EXPAND_ITEM_LIST(&temp_xattr, rsync_xa, count);
temp_xattr.count = 0;
}
-@@ -678,9 +710,10 @@ void receive_xattr(int f, struct file_struct *file)
+@@ -681,9 +713,10 @@ void receive_xattr(int f, struct file_struct *file)
for (num = 1; num <= count; num++) {
char *ptr, *name;
rsync_xa *rxa;