diff -r ab34fc9ecf1d -r 888aa263c0f1 dav/xattrtool.c --- a/dav/xattrtool.c Sat Oct 19 11:15:04 2019 +0200 +++ b/dav/xattrtool.c Sat Oct 19 15:46:33 2019 +0200 @@ -40,6 +40,7 @@ int attrtool_list(int argc, char **argv, int values); int attrtool_get(int argc, char **argv, int raw); int attrtool_set(int argc, char **argv); +int attrtool_rm(int argc, char **argv); void print_usage(char *cmd) { fprintf(stderr, "usage %s:\n", cmd); @@ -47,7 +48,7 @@ fprintf(stderr, " listvalues \n"); fprintf(stderr, " get \n"); fprintf(stderr, " set \n"); - fprintf(stderr, " getraw \n"); + fprintf(stderr, " remove \n"); } int main(int argc, char **argv) { @@ -62,10 +63,10 @@ return attrtool_list(argc, argv, 1); } else if(!strcmp(argv[1], "get")) { return attrtool_get(argc, argv, 0); - } else if(!strcmp(argv[1], "getraw")) { - return attrtool_get(argc, argv, 1); } else if(!strcmp(argv[1], "set")) { return attrtool_set(argc, argv); + } else if(!strcmp(argv[1], "rm") || !strcmp(argv[1], "remove")) { + return attrtool_rm(argc, argv); } else { fprintf(stderr, "Unknown command\n"); print_usage(argv[0]); @@ -158,3 +159,21 @@ return ret; } +int attrtool_rm(int argc, char **argv) { + if(argc < 4) { + fprintf(stderr, "Too few arguments\n"); + print_usage(argv[1]); + return 1; + } + + char *file = argv[2]; + char *attr = argv[3]; + int ret = 0; + + if(xattr_remove(file, attr)) { + perror("xattr_remove"); + ret = 1; + } + + return ret; +}