-@@ -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);