dav/libxattr.c

changeset 379
cdaf5a3d3a50
parent 369
4322b8953bd5
child 389
fe855ce911f9
--- a/dav/libxattr.c	Sun May 27 13:02:40 2018 +0200
+++ b/dav/libxattr.c	Sun May 27 19:45:28 2018 +0200
@@ -163,6 +163,13 @@
     return ret;
 }
 
+int xattr_remove(const char *path, const char *name) {
+    char *attrname = name2nsname(name);
+    int ret = removexattr(path, attrname);
+    free(attrname);
+    return ret;
+}
+
 #endif /* Linux */
 
 #ifdef __APPLE__
@@ -248,6 +255,10 @@
     return ret;
 }
 
+int xattr_remove(const char *path, const char *name) {
+    return removexattr(path, name, 0);
+}
+
 #endif /* Apple */
 
 #ifdef __sun
@@ -360,6 +371,17 @@
     return remaining > 0 ? -1 : 0;
 }
 
+int xattr_remove(const char *path, const char *name) {
+    int attrdir = open_attrfile(path, ".", O_RDONLY|O_XATTR);
+    if(attrdir == -1) {
+        return -1;
+    }
+    
+    int ret = unlinkat(attrdir, name, 0);
+    close(attrdir);
+    return ret;
+}
+
 #endif /* Sun */
 
 
@@ -441,6 +463,10 @@
     return ret;
 }
 
+int xattr_remove(const char *path, const char *name) {
+    return extattr_delete_file(path, EXTATTR_NAMESPACE_USER, name);
+}
+
 #endif /* FreeBSD */
 
 
@@ -460,6 +486,10 @@
     return -1;
 }
 
+int xattr_remove(const char *path, const char *name) {
+    return -1;
+}
+
 #endif /* unsupported platform */
 
 void xattr_free_list(char **attrnames, ssize_t nelm) {

mercurial