#include #include #include #include #include #include #define MY_XATTR_NAME "user.ftest" #define MY_XATTR_VAL "ftestval" void usage(void) { printf("Usage : bug-1193636 \n"); printf(" op : 0 - set, 1 - remove\n"); } int main(int argc, char **argv) { int fd; int err = 0; char *xattr_name = NULL; int op = 0; if (argc != 4) { usage(); exit(1); } op = atoi(argv[3]); if ((op != 0) && (op != 1)) { printf("Invalid operation specified.\n"); usage(); exit(1); } xattr_name = argv[2]; fd = open(argv[1], O_RDWR); if (fd == -1) { printf("Failed to open file %s\n", argv[1]); exit(1); } if (!op) { err = fsetxattr(fd, xattr_name, MY_XATTR_VAL, strlen(MY_XATTR_VAL) + 1, XATTR_CREATE); if (err) { printf("Failed to set xattr %s: %m\n", xattr_name); exit(1); } } else { err = fremovexattr(fd, xattr_name); if (err) { printf("Failed to remove xattr %s: %m\n", xattr_name); exit(1); } } close(fd); return 0; }