Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Changed the *_abbbrevint() functions to *_varint().
[rsync/rsync.git]
/
flist.c
diff --git
a/flist.c
b/flist.c
index
df4beb9
..
aa1efac
100644
(file)
--- a/
flist.c
+++ b/
flist.c
@@
-43,6
+43,7
@@
extern int one_file_system;
extern int copy_dirlinks;
extern int keep_dirlinks;
extern int preserve_acls;
extern int copy_dirlinks;
extern int keep_dirlinks;
extern int preserve_acls;
+extern int preserve_xattrs;
extern int preserve_links;
extern int preserve_hard_links;
extern int preserve_devices;
extern int preserve_links;
extern int preserve_hard_links;
extern int preserve_devices;
@@
-470,13
+471,13
@@
static void send_file_entry(int f, struct file_struct *file, int ndx)
if (flags & XMIT_SAME_NAME)
write_byte(f, l1);
if (flags & XMIT_LONG_NAME)
if (flags & XMIT_SAME_NAME)
write_byte(f, l1);
if (flags & XMIT_LONG_NAME)
- write_
abbrev
int30(f, l2);
+ write_
var
int30(f, l2);
else
write_byte(f, l2);
write_buf(f, fname + l1, l2);
if (first_hlink_ndx >= 0) {
else
write_byte(f, l2);
write_buf(f, fname + l1, l2);
if (first_hlink_ndx >= 0) {
- write_
abbrev
int30(f, first_hlink_ndx);
+ write_
var
int30(f, first_hlink_ndx);
goto the_end;
}
goto the_end;
}
@@
-489,7
+490,7
@@
static void send_file_entry(int f, struct file_struct *file, int ndx)
if (protocol_version < 30)
write_int(f, uid);
else {
if (protocol_version < 30)
write_int(f, uid);
else {
- write_
abbrev
int(f, uid);
+ write_
var
int(f, uid);
if (flags & XMIT_USER_NAME_FOLLOWS) {
int len = strlen(user_name);
write_byte(f, len);
if (flags & XMIT_USER_NAME_FOLLOWS) {
int len = strlen(user_name);
write_byte(f, len);
@@
-501,7
+502,7
@@
static void send_file_entry(int f, struct file_struct *file, int ndx)
if (protocol_version < 30)
write_int(f, gid);
else {
if (protocol_version < 30)
write_int(f, gid);
else {
- write_
abbrev
int(f, gid);
+ write_
var
int(f, gid);
if (flags & XMIT_GROUP_NAME_FOLLOWS) {
int len = strlen(group_name);
write_byte(f, len);
if (flags & XMIT_GROUP_NAME_FOLLOWS) {
int len = strlen(group_name);
write_byte(f, len);
@@
-516,9
+517,9
@@
static void send_file_entry(int f, struct file_struct *file, int ndx)
write_int(f, (int)rdev);
} else {
if (!(flags & XMIT_SAME_RDEV_MAJOR))
write_int(f, (int)rdev);
} else {
if (!(flags & XMIT_SAME_RDEV_MAJOR))
- write_
abbrev
int30(f, major(rdev));
+ write_
var
int30(f, major(rdev));
if (protocol_version >= 30)
if (protocol_version >= 30)
- write_
abbrev
int(f, minor(rdev));
+ write_
var
int(f, minor(rdev));
else if (flags & XMIT_RDEV_MINOR_8_pre30)
write_byte(f, minor(rdev));
else
else if (flags & XMIT_RDEV_MINOR_8_pre30)
write_byte(f, minor(rdev));
else
@@
-530,7
+531,7
@@
static void send_file_entry(int f, struct file_struct *file, int ndx)
if (preserve_links && S_ISLNK(mode)) {
const char *sl = F_SYMLINK(file);
int len = strlen(sl);
if (preserve_links && S_ISLNK(mode)) {
const char *sl = F_SYMLINK(file);
int len = strlen(sl);
- write_
abbrev
int30(f, len);
+ write_
var
int30(f, len);
write_buf(f, sl, len);
}
#endif
write_buf(f, sl, len);
}
#endif
@@
-596,7
+597,7
@@
static struct file_struct *recv_file_entry(struct file_list *flist,
l1 = read_byte(f);
if (flags & XMIT_LONG_NAME)
l1 = read_byte(f);
if (flags & XMIT_LONG_NAME)
- l2 = read_
abbrev
int30(f);
+ l2 = read_
var
int30(f);
else
l2 = read_byte(f);
else
l2 = read_byte(f);
@@
-635,7
+636,7
@@
static struct file_struct *recv_file_entry(struct file_list *flist,
if (protocol_version >= 30
&& BITS_SETnUNSET(flags, XMIT_HLINKED, XMIT_HLINK_FIRST)) {
struct file_struct *first;
if (protocol_version >= 30
&& BITS_SETnUNSET(flags, XMIT_HLINKED, XMIT_HLINK_FIRST)) {
struct file_struct *first;
- first_hlink_ndx = read_
abbrev
int30(f);
+ first_hlink_ndx = read_
var
int30(f);
if (first_hlink_ndx < 0 || first_hlink_ndx >= flist->count) {
rprintf(FERROR,
"hard-link reference out of range: %d (%d)\n",
if (first_hlink_ndx < 0 || first_hlink_ndx >= flist->count) {
rprintf(FERROR,
"hard-link reference out of range: %d (%d)\n",
@@
-677,7
+678,7
@@
static struct file_struct *recv_file_entry(struct file_list *flist,
if (protocol_version < 30)
uid = (uid_t)read_int(f);
else {
if (protocol_version < 30)
uid = (uid_t)read_int(f);
else {
- uid = (uid_t)read_
abbrev
int(f);
+ uid = (uid_t)read_
var
int(f);
if (flags & XMIT_USER_NAME_FOLLOWS)
uid = recv_user_name(f, uid);
else if (inc_recurse && am_root && !numeric_ids)
if (flags & XMIT_USER_NAME_FOLLOWS)
uid = recv_user_name(f, uid);
else if (inc_recurse && am_root && !numeric_ids)
@@
-688,7
+689,7
@@
static struct file_struct *recv_file_entry(struct file_list *flist,
if (protocol_version < 30)
gid = (gid_t)read_int(f);
else {
if (protocol_version < 30)
gid = (gid_t)read_int(f);
else {
- gid = (gid_t)read_
abbrev
int(f);
+ gid = (gid_t)read_
var
int(f);
if (flags & XMIT_GROUP_NAME_FOLLOWS)
gid = recv_group_name(f, gid);
else if (inc_recurse && (!am_root || !numeric_ids))
if (flags & XMIT_GROUP_NAME_FOLLOWS)
gid = recv_group_name(f, gid);
else if (inc_recurse && (!am_root || !numeric_ids))
@@
-704,9
+705,9
@@
static struct file_struct *recv_file_entry(struct file_list *flist,
} else {
uint32 rdev_minor;
if (!(flags & XMIT_SAME_RDEV_MAJOR))
} else {
uint32 rdev_minor;
if (!(flags & XMIT_SAME_RDEV_MAJOR))
- rdev_major = read_
abbrev
int30(f);
+ rdev_major = read_
var
int30(f);
if (protocol_version >= 30)
if (protocol_version >= 30)
- rdev_minor = read_
abbrev
int(f);
+ rdev_minor = read_
var
int(f);
else if (flags & XMIT_RDEV_MINOR_8_pre30)
rdev_minor = read_byte(f);
else
else if (flags & XMIT_RDEV_MINOR_8_pre30)
rdev_minor = read_byte(f);
else
@@
-720,7
+721,7
@@
static struct file_struct *recv_file_entry(struct file_list *flist,
#ifdef SUPPORT_LINKS
if (preserve_links && S_ISLNK(mode)) {
#ifdef SUPPORT_LINKS
if (preserve_links && S_ISLNK(mode)) {
- linkname_len = read_
abbrev
int30(f) + 1; /* count the '\0' */
+ linkname_len = read_
var
int30(f) + 1; /* count the '\0' */
if (linkname_len <= 0 || linkname_len > MAXPATHLEN) {
rprintf(FERROR, "overflow: linkname_len=%d\n",
linkname_len - 1);
if (linkname_len <= 0 || linkname_len > MAXPATHLEN) {
rprintf(FERROR, "overflow: linkname_len=%d\n",
linkname_len - 1);
@@
-888,6
+889,10
@@
static struct file_struct *recv_file_entry(struct file_list *flist,
if (preserve_acls && !S_ISLNK(mode))
receive_acl(file, f);
#endif
if (preserve_acls && !S_ISLNK(mode))
receive_acl(file, f);
#endif
+#ifdef SUPPORT_XATTRS
+ if (preserve_xattrs)
+ receive_xattr(file, f );
+#endif
if (S_ISREG(mode) || S_ISLNK(mode))
stats.total_size += file_length;
if (S_ISREG(mode) || S_ISLNK(mode))
stats.total_size += file_length;
@@
-1160,7
+1165,7
@@
static struct file_struct *send_file_name(int f, struct file_list *flist,
int flags, int filter_flags)
{
struct file_struct *file;
int flags, int filter_flags)
{
struct file_struct *file;
-#if
def SUPPORT_ACL
S
+#if
defined SUPPORT_ACLS || defined SUPPORT_XATTR
S
statx sx;
#endif
statx sx;
#endif
@@
-1179,6
+1184,13
@@
static struct file_struct *send_file_name(int f, struct file_list *flist,
return NULL;
}
#endif
return NULL;
}
#endif
+#ifdef SUPPORT_XATTRS
+ if (preserve_xattrs && f >= 0) {
+ sx.xattr = NULL;
+ if (get_xattr(fname, &sx) < 0)
+ return NULL;
+ }
+#endif
maybe_emit_filelist_progress(flist->count + flist_count_offset);
maybe_emit_filelist_progress(flist->count + flist_count_offset);
@@
-1191,6
+1203,12
@@
static struct file_struct *send_file_name(int f, struct file_list *flist,
send_acl(&sx, f);
free_acl(&sx);
}
send_acl(&sx, f);
free_acl(&sx);
}
+#endif
+#ifdef SUPPORT_XATTRS
+ if (preserve_xattrs) {
+ F_XATTR(file) = send_xattr(&sx, f);
+ free_xattr(&sx);
+ }
#endif
}
return file;
#endif
}
return file;