/* * lxattr.c * * List extended attributes - simple wrapper for listxattr(2). * * This code is GPL. * * Author: James Morris */ #include #include #include #include #include #include #include #include int main(int argc, char **argv) { size_t r; int fd; char *fname, *buf, *p, *str; if (argc != 2) errx(1, "one filename required"); fname = argv[1]; fd = open(fname, O_RDONLY); if (fd == -1) err(1, "error opening \'%s\'", fname); r = flistxattr(fd, NULL, 0); if (r == -1) err(1, "error probing xattr list size for \'%s\'", fname); if (r == 0) return 0; buf = malloc(r); if (!buf) err(1, "error allocating xattr buffer"); r = flistxattr(fd, buf, r); if (r == -1) err(1, "error obtaining xattr list for \'%s\'", fname); for (p = str = buf; p-buf < r; p++) { if (*p == '\0') { printf("%s\n", str); str = ++p; } } return 0; }