- I decided that we should leave as much of the real mode attached
[rsync/rsync-patches.git] / xattrs.diff
index eb9c105..e394781 100644 (file)
@@ -275,7 +275,7 @@ TODO:
  }
 --- old/lib/sysxattr.c
 +++ new/lib/sysxattr.c
-@@ -0,0 +1,71 @@
+@@ -0,0 +1,81 @@
 +/*
 + * Extended attribute support for rsync.
 + *
@@ -307,6 +307,11 @@ TODO:
 +      return lgetxattr(path, name, value, size);
 +}
 +
++ssize_t sys_fgetxattr(int filedes, const char *name, void *value, size_t size)
++{
++      return fgetxattr(filedes, name, value, size);
++}
++
 +int sys_lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags)
 +{
 +      return lsetxattr(path, name, value, size, flags);
@@ -329,6 +334,11 @@ TODO:
 +      return getxattr(path, name, value, size, 0, XATTR_NOFOLLOW);
 +}
 +
++ssize_t sys_fgetxattr(int filedes, const char *name, void *value, size_t size)
++{
++      return fgetxattr(filedes, name, value, size, 0, 0);
++}
++
 +int sys_lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags)
 +{
 +      return setxattr(path, name, value, size, 0, XATTR_NOFOLLOW | flags);
@@ -349,7 +359,7 @@ TODO:
 +#endif /* No xattrs */
 --- old/lib/sysxattr.h
 +++ new/lib/sysxattr.h
-@@ -0,0 +1,25 @@
+@@ -0,0 +1,26 @@
 +#ifdef SUPPORT_XATTRS
 +#if defined HAVE_ATTR_XATTR_H
 +#include <attr/xattr.h>
@@ -366,6 +376,7 @@ TODO:
 +#endif
 +
 +ssize_t sys_lgetxattr(const char *path, const char *name, void *value, size_t size);
++ssize_t sys_fgetxattr(int filedes, const char *name, void *value, size_t size);
 +int sys_lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags);
 +int sys_lremovexattr(const char *path, const char *name);
 +ssize_t sys_llistxattr(const char *path, char *list, size_t size);
@@ -599,8 +610,8 @@ TODO:
 +static item_list rsync_xal_l = EMPTY_ITEM_LIST;
 +
 +#ifdef HAVE_OSX_XATTRS
-+static char unique_prefix[] = "user.0S%."; /* OSX */
-+static int upre_len = sizeof unique_prefix - 1;
++#define UNIQUE_PREFIX "user.0S%." /* OSX */
++#define UPRE_LEN (sizeof UNIQUE_PREFIX - 1)
 +#endif
 +
 +/* ------------------------------------------------------------------------- */
@@ -797,9 +808,9 @@ TODO:
 +#ifdef HAVE_OSX_XATTRS
 +                      if (strncmp(rxa->name, "user.", 5) != 0
 +                       && strncmp(rxa->name, "system.", 7) != 0) {
-+                              write_int(f, rxa->name_len + upre_len);
++                              write_int(f, rxa->name_len + UPRE_LEN);
 +                              write_int(f, rxa->datum_len);
-+                              write_buf(f, unique_prefix, upre_len);
++                              write_buf(f, UNIQUE_PREFIX, UPRE_LEN);
 +                      } else
 +#endif
 +                      {
@@ -844,9 +855,9 @@ TODO:
 +                      rxa->name = ptr;
 +                      rxa->datum = ptr + name_len;
 +#ifdef HAVE_OSX_XATTRS
-+                      if (strncmp(rxa->name, unique_prefix, upre_len) == 0) {
-+                              rxa->name_len -= upre_len;
-+                              memmove(rxa->name, rxa->name + upre_len, rxa->name_len);
++                      if (strncmp(rxa->name, UNIQUE_PREFIX, UPRE_LEN) == 0) {
++                              rxa->name_len -= UPRE_LEN;
++                              memmove(rxa->name, rxa->name + UPRE_LEN, rxa->name_len);
 +                      }
 +#endif
 +              }