version 1.1.1.2, 2013/10/14 07:51:14
|
version 1.1.1.3, 2016/11/01 09:54:32
|
Line 3
|
Line 3
|
* Written by Jay Fenlason, vaguely based on the ACLs patch. |
* Written by Jay Fenlason, vaguely based on the ACLs patch. |
* |
* |
* Copyright (C) 2004 Red Hat, Inc. |
* Copyright (C) 2004 Red Hat, Inc. |
* Copyright (C) 2006-2013 Wayne Davison | * Copyright (C) 2006-2015 Wayne Davison |
* |
* |
* This program is free software; you can redistribute it and/or modify |
* This program is free software; you can redistribute it and/or modify |
* it under the terms of the GNU General Public License as published by |
* it under the terms of the GNU General Public License as published by |
Line 308 int get_xattr(const char *fname, stat_x *sxp)
|
Line 308 int get_xattr(const char *fname, stat_x *sxp)
|
if (!preserve_devices) |
if (!preserve_devices) |
#endif |
#endif |
return 0; |
return 0; |
} | } else if (IS_MISSING_FILE(sxp->st)) |
| return 0; |
|
|
if (rsync_xal_get(fname, sxp->xattr) < 0) { |
if (rsync_xal_get(fname, sxp->xattr) < 0) { |
free_xattr(sxp); |
free_xattr(sxp); |
Line 451 int send_xattr(int f, stat_x *sxp)
|
Line 452 int send_xattr(int f, stat_x *sxp)
|
if (rxa->datum_len > MAX_FULL_DATUM) |
if (rxa->datum_len > MAX_FULL_DATUM) |
write_buf(f, rxa->datum + 1, MAX_DIGEST_LEN); |
write_buf(f, rxa->datum + 1, MAX_DIGEST_LEN); |
else |
else |
write_buf(f, rxa->datum, rxa->datum_len); | write_bigbuf(f, rxa->datum, rxa->datum_len); |
} |
} |
ndx = rsync_xal_l.count; /* pre-incremented count */ |
ndx = rsync_xal_l.count; /* pre-incremented count */ |
rsync_xal_store(sxp->xattr); /* adds item to rsync_xal_l */ |
rsync_xal_store(sxp->xattr); /* adds item to rsync_xal_l */ |
Line 579 void send_xattr_request(const char *fname, struct file
|
Line 580 void send_xattr_request(const char *fname, struct file
|
} |
} |
|
|
write_varint(f_out, len); /* length might have changed! */ |
write_varint(f_out, len); /* length might have changed! */ |
write_buf(f_out, ptr, len); | write_bigbuf(f_out, ptr, len); |
free(ptr); |
free(ptr); |
} |
} |
} |
} |
Line 610 int recv_xattr_request(struct file_struct *file, int f
|
Line 611 int recv_xattr_request(struct file_struct *file, int f
|
num = 0; |
num = 0; |
while ((rel_pos = read_varint(f_in)) != 0) { |
while ((rel_pos = read_varint(f_in)) != 0) { |
num += rel_pos; |
num += rel_pos; |
while (cnt && rxa->num < num) { | /* Note that the sender-related num values may not be in order on the receiver! */ |
rxa++; | while (cnt && (am_sender ? rxa->num < num : rxa->num != num)) { |
cnt--; | rxa++; |
| cnt--; |
} |
} |
if (!cnt || rxa->num != num) { |
if (!cnt || rxa->num != num) { |
rprintf(FERROR, "[%s] could not find xattr #%d for %s\n", |
rprintf(FERROR, "[%s] could not find xattr #%d for %s\n", |