X-Git-Url: https://mattmccutchen.net/rsync/rsync-patches.git/blobdiff_plain/adc8e875b40560052ba068a5a1934db1ef7046c3..f1f4dbd128c05bca1b3a305f775aca7034f188d7:/checksum-xattr.diff diff --git a/checksum-xattr.diff b/checksum-xattr.diff index 24c4de4..f4e8d30 100644 --- a/checksum-xattr.diff +++ b/checksum-xattr.diff @@ -10,7 +10,7 @@ To use this patch, run these commands for a successful build: --- old/flist.c +++ new/flist.c -@@ -1193,7 +1193,8 @@ struct file_struct *make_file(const char +@@ -1183,7 +1183,8 @@ struct file_struct *make_file(const char } #endif @@ -22,7 +22,7 @@ To use this patch, run these commands for a successful build: F_PATHNAME(file) = pathname; --- old/generator.c +++ new/generator.c -@@ -627,7 +627,8 @@ int unchanged_file(char *fn, struct file +@@ -626,7 +626,8 @@ int unchanged_file(char *fn, struct file of the file time to determine whether to sync */ if (always_checksum > 0 && S_ISREG(st->st_mode)) { char sum[MAX_DIGEST_LEN]; @@ -155,50 +155,27 @@ To use this patch, run these commands for a successful build: +} --- old/xattrs.c +++ new/xattrs.c -@@ -31,6 +31,8 @@ extern int am_generator; - extern int read_only; +@@ -33,6 +33,8 @@ extern int read_only; extern int list_only; + extern int preserve_xattrs; extern int checksum_seed; +extern int checksum_len; +extern int protocol_version; #define RSYNC_XAL_INITIAL 5 #define RSYNC_XAL_LIST_INITIAL 100 -@@ -62,7 +64,8 @@ extern int checksum_seed; - #define RPRE_LEN ((int)sizeof RSYNC_PREFIX - 1) - +@@ -66,6 +68,8 @@ extern int checksum_seed; #define XSTAT_ATTR RSYNC_PREFIX "%stat" --#define XSTAT_LEN ((int)sizeof XSTAT_ATTR - 1) + #define XACC_ACL_ATTR RSYNC_PREFIX "%aacl" + #define XDEF_ACL_ATTR RSYNC_PREFIX "%dacl" +#define MD4_ATTR RSYNC_PREFIX "%md4" +#define MD5_ATTR RSYNC_PREFIX "%md5" typedef struct { char *datum, *name; -@@ -223,8 +226,8 @@ static int rsync_xal_get(const char *fna - continue; - #endif - -- if (am_root < 0 && name_len == XSTAT_LEN + 1 -- && name[RPRE_LEN] == '%' && strcmp(name, XSTAT_ATTR) == 0) -+ if (name_len > RPRE_LEN && name[RPRE_LEN] == '%' -+ && HAS_PREFIX(name, RSYNC_PREFIX)) - continue; - - datum_len = name_len; /* Pass extra size to get_xattr_data() */ -@@ -636,8 +639,8 @@ void receive_xattr(struct file_struct *f - continue; - } - #endif -- if (am_root < 0 && name_len == XSTAT_LEN + 1 -- && name[RPRE_LEN] == '%' && strcmp(name, XSTAT_ATTR) == 0) { -+ if (name_len > RPRE_LEN && name[RPRE_LEN] == '%' -+ && HAS_PREFIX(name, RSYNC_PREFIX)) { - free(ptr); - continue; - } -@@ -795,6 +798,39 @@ int set_xattr(const char *fname, const s - return rsync_xal_set(fname, lst + ndx, fnamecmp, sxp); +@@ -825,6 +829,39 @@ int del_def_xattr_acl(const char *fname) } + #endif +int get_sum_xattr(const char *fname, STRUCT_STAT *stp, char *sum) +{