--- 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) {