extern int preserve_acls;
extern int preserve_xattrs;
extern int need_messages_from_generator;
-@@ -60,7 +61,7 @@ extern iconv_t ic_send, ic_recv;
+@@ -61,7 +62,7 @@ extern char *iconv_opt;
#endif
/* These index values are for the file-list's extra-attribute array. */
+int uid_ndx, gid_ndx, atimes_ndx, acls_ndx, xattrs_ndx, unsort_ndx;
int receiver_symlink_times = 0; /* receiver can set the time on a symlink */
-
-@@ -134,6 +135,8 @@ void setup_protocol(int f_out,int f_in)
+ int sender_symlink_iconv = 0; /* sender should convert symlink content */
+@@ -137,6 +138,8 @@ void setup_protocol(int f_out,int f_in)
uid_ndx = ++file_extra_cnt;
if (preserve_gid)
gid_ndx = ++file_extra_cnt;
extern int relative_paths;
extern int implied_dirs;
extern int file_extra_cnt;
-@@ -388,7 +389,7 @@ int change_pathname(struct file_struct *file, const char *dir, int dirlen)
-
- static void send_file_entry(int f, const char *fname, struct file_struct *file, int ndx, int first_ndx)
+@@ -393,7 +394,7 @@ static void send_file_entry(int f, const char *fname, struct file_struct *file,
+ #endif
+ int ndx, int first_ndx)
{
- static time_t modtime;
+ static time_t modtime, atime;
static mode_t mode;
#ifdef SUPPORT_HARD_LINKS
static int64 dev;
-@@ -462,6 +463,13 @@ static void send_file_entry(int f, const char *fname, struct file_struct *file,
+@@ -467,6 +468,13 @@ static void send_file_entry(int f, const char *fname, struct file_struct *file,
xflags |= XMIT_SAME_TIME;
else
modtime = file->modtime;
#ifdef SUPPORT_HARD_LINKS
if (tmp_dev != 0) {
-@@ -533,6 +541,8 @@ static void send_file_entry(int f, const char *fname, struct file_struct *file,
+@@ -538,6 +546,8 @@ static void send_file_entry(int f, const char *fname, struct file_struct *file,
}
if (!(xflags & XMIT_SAME_MODE))
write_int(f, to_wire_mode(mode));
if (preserve_uid && !(xflags & XMIT_SAME_UID)) {
if (protocol_version < 30)
write_int(f, uid);
-@@ -619,7 +629,7 @@ static void send_file_entry(int f, const char *fname, struct file_struct *file,
+@@ -622,7 +632,7 @@ static void send_file_entry(int f, const char *fname, struct file_struct *file,
static struct file_struct *recv_file_entry(struct file_list *flist,
int xflags, int f)
{
static mode_t mode;
#ifdef SUPPORT_HARD_LINKS
static int64 dev;
-@@ -753,6 +763,16 @@ static struct file_struct *recv_file_entry(struct file_list *flist,
+@@ -756,6 +766,16 @@ static struct file_struct *recv_file_entry(struct file_list *flist,
}
if (!(xflags & XMIT_SAME_MODE))
mode = from_wire_mode(read_int(f));
if (chmod_modes && !S_ISLNK(mode))
mode = tweak_mode(mode, chmod_modes);
-@@ -895,6 +915,8 @@ static struct file_struct *recv_file_entry(struct file_list *flist,
+@@ -905,6 +925,8 @@ static struct file_struct *recv_file_entry(struct file_list *flist,
F_GROUP(file) = gid;
file->flags |= gid_flags;
}
if (unsort_ndx)
F_NDX(file) = flist->used + flist->ndx_start;
-@@ -1241,6 +1263,8 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
+@@ -1277,6 +1299,8 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
F_OWNER(file) = st.st_uid;
if (gid_ndx) /* Check gid_ndx instead of preserve_gid for del support */
F_GROUP(file) = st.st_gid;
diff --git a/log.c b/log.c
--- a/log.c
+++ b/log.c
-@@ -656,7 +656,8 @@ static void log_formatted(enum logcode code, const char *format, const char *op,
+@@ -660,7 +660,8 @@ static void log_formatted(enum logcode code, const char *format, const char *op,
c[5] = !(iflags & ITEM_REPORT_PERMS) ? '.' : 'p';
c[6] = !(iflags & ITEM_REPORT_OWNER) ? '.' : 'o';
c[7] = !(iflags & ITEM_REPORT_GROUP) ? '.' : 'g';
#define FULL_FLUSH 1
#define NORMAL_FLUSH 0
-@@ -630,12 +632,14 @@ extern int file_extra_cnt;
+@@ -632,12 +634,14 @@ extern int file_extra_cnt;
extern int inc_recurse;
extern int uid_ndx;
extern int gid_ndx;
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
-@@ -1707,7 +1714,10 @@ quote(itemization(
+@@ -1719,7 +1726,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).