cURL / Mailing Lists / curl-library / Single Mail

curl-library

[PATCH] xattr: add support for FreeBSD xattr API

From: François Charlier <fcharlier_at_ploup.net>
Date: Tue, 1 Oct 2013 21:57:14 +0200

---
 src/tool_xattr.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/tool_xattr.c b/src/tool_xattr.c
index 505bdb1..36ad7a9 100644
--- a/src/tool_xattr.c
+++ b/src/tool_xattr.c
@@ -23,13 +23,17 @@
 
 #ifdef HAVE_FSETXATTR
 #  include <sys/xattr.h> /* header from libc, not from libattr */
+#elif defined(__FreeBSD_version) && (__FreeBSD_version > 500000)
+#  include <sys/types.h>
+#  include <sys/extattr.h>
 #endif
 
 #include "tool_xattr.h"
 
 #include "memdebug.h" /* keep this as LAST include */
 
-#ifdef HAVE_FSETXATTR
+#if defined(HAVE_FSETXATTR) || \
+    (defined(__FreeBSD_version) && (__FreeBSD_version > 500000))
 
 /* mapping table of curl metadata to extended attribute names */
 static const struct xattr_mapping {
@@ -60,6 +64,11 @@ int fwrite_xattr(CURL *curl, int fd)
       err = fsetxattr(fd, mappings[i].attr, value, strlen(value), 0, 0);
 #elif defined(HAVE_FSETXATTR_5)
       err = fsetxattr(fd, mappings[i].attr, value, strlen(value), 0);
+#elif (defined(__FreeBSD_version) && (__FreeBSD_version > 500000))
+      err = extattr_set_fd(fd, EXTATTR_NAMESPACE_USER, mappings[i].attr, value,
+          strlen(value));
+      // FreeBSD's extattr_set_fd returns the length of the extended attribute
+      err = err < 0 ? err : 0;
 #endif
     }
     i++;
-- 
1.8.3.2
--SUOF0GtieIMvvwua
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html
--SUOF0GtieIMvvwua--
Received on 2001-09-17