List the EAs associated with a file
First, call listxattr() to retrieve list of EA names:
#define XATTR_SIZE 10000 /* A guess at likely upper limit */ int main(int argc, char *argv[]) { char list[XATTR_SIZE], value[XATTR_SIZE]; int ns, llen, vlen; assert(argc == 2); llen = listxattr(argv[1], list, XATTR_SIZE); if (llen == -1) errExit("listxattr");
Walk through the list of EA names, using getxattr() to retrieve associated value:
for (ns = 0; ns < llen; ns += strlen(&list[ns]) + 1) { printf("%s=", &list[ns]); vlen = getxattr(argv[1], &list[ns], value, XATTR_SIZE); if (vlen == -1) /* Maybe name was removed */ printf("couldn't get value\n"); else /* Assumes value is printable string */ printf("%.*s\n", vlen, value); } exit(EXIT_SUCCESS); }
(C) 2006, Michael Kerrisk