Home | History | Annotate | Download | only in acls
      1 #include <unistd.h>
      2 #include <stdio.h>
      3 #include <sys/types.h>
      4 #include <errno.h>
      5 #include <sys/syscall.h>
      6 #include <string.h>
      7 #include <sys/xattr.h>
      8 
      9 int main(int argc, char *argv[])
     10 {
     11 	ssize_t s;
     12 	char *tok;
     13 	char value[1024];
     14 	char list[1024];
     15 	int rc = 0;
     16 
     17 	if (argc < 2) {
     18 		printf("Please enter a file name as argument.\n");
     19 		return -1;
     20 	}
     21 
     22 	if (-1 == (s = listxattr(argv[1], list, 1024))) {
     23 		perror("listxattr");
     24 		return 1;
     25 	}
     26 	if (s == 0) {
     27 		printf("No xattrs defined for %s, further testcase useless\n",
     28 		       argv[1]);
     29 		return 1;
     30 	}
     31 	tok = strtok(list, "\0");
     32 	s = getxattr(argv[1], tok, (void *)value, 1024);
     33 	if (-1 == s) {
     34 		perror("getxattr");
     35 		return -1;
     36 	}
     37 
     38 	s = lsetxattr(argv[1], tok, (void *)value, s, 0);
     39 
     40 	if (s == -1) {
     41 		printf("User unable to change extended attributes %s !\n",
     42 		       argv[1]);
     43 		printf("errno = %i\n", errno);
     44 		rc = 1;
     45 	}
     46 
     47 	s = lremovexattr(argv[1], tok);
     48 	if (s == -1) {
     49 		printf("User unable to remove extended attributes %s !\n",
     50 		       argv[1]);
     51 		printf("errno = %i\n", errno);
     52 		rc = 1;
     53 	}
     54 
     55 	return rc;
     56 }
     57