extern char *dest_option;
extern struct filter_list_struct filter_list;
+/* These index values are for the file-list's extra-attribute array. */
+int uid_ndx, gid_ndx, acls_ndx, xattrs_ndx;
+
/* The server makes sure that if either side only supports a pre-release
* version of a protocol, that both sides must speak a compatible version
* of that protocol for it to be advertised as available. */
else
file_extra_cnt++;
if (preserve_uid)
- preserve_uid = ++file_extra_cnt;
+ uid_ndx = ++file_extra_cnt;
if (preserve_gid)
- preserve_gid = ++file_extra_cnt;
+ gid_ndx = ++file_extra_cnt;
if (preserve_acls && !am_sender)
- preserve_acls = ++file_extra_cnt;
+ acls_ndx = ++file_extra_cnt;
if (preserve_xattrs)
- preserve_xattrs = ++file_extra_cnt;
+ xattrs_ndx = ++file_extra_cnt;
if (remote_protocol == 0) {
if (am_server && !local_server)
};
extern int file_extra_cnt;
-extern int preserve_uid;
-extern int preserve_gid;
-extern int preserve_acls;
-extern int preserve_xattrs;
+extern int uid_ndx;
+extern int gid_ndx;
+extern int acls_ndx;
+extern int xattrs_ndx;
#define FILE_STRUCT_LEN (offsetof(struct file_struct, basename))
#define EXTRA_LEN (sizeof (union file_extras))
#define F_DEPTH(f) REQ_EXTRA(f, 1)->num
/* When the associated option is on, all entries will have these present: */
-#define F_OWNER(f) REQ_EXTRA(f, preserve_uid)->unum
-#define F_GROUP(f) REQ_EXTRA(f, preserve_gid)->unum
-#define F_ACL(f) REQ_EXTRA(f, preserve_acls)->num
-#define F_XATTR(f) REQ_EXTRA(f, preserve_xattrs)->num
+#define F_OWNER(f) REQ_EXTRA(f, uid_ndx)->unum
+#define F_GROUP(f) REQ_EXTRA(f, gid_ndx)->unum
+#define F_ACL(f) REQ_EXTRA(f, acls_ndx)->num
+#define F_XATTR(f) REQ_EXTRA(f, xattrs_ndx)->num
#define F_NDX(f) REQ_EXTRA(f, ic_ndx)->num
/* These items are per-entry optional and mutally exclusive: */