/* this does an ls of xattrs */ #include "xattr_file2mem.h" #include "xattr_mem2file.h" #include "xattr_sort.h" #include #include #define CMP xattr_sc_qsort_strnonscmp_key int main(int argc, char *argv[]) { Xattrs *xattrs = NULL; if (argc != 2) { fprintf(stderr, " Usage: %s \n", "xtst_ls"); exit (EXIT_FAILURE); } if ((xattrs = xattr_file2mem(argv[1], 0))) { size_t scan = 0; xattr_qsort(xattrs, CMP); while (scan < xattrs->num) { size_t vsz = 0; printf("%zu. %s = %zu:", scan + 1, xattrs->ents[scan].key, xattrs->ents[scan].vsz); vsz = xattrs->ents[scan].vsz; if (vsz) { const unsigned char *tmp = xattrs->ents[scan].val; while (vsz--) { if (*tmp == '\\') printf("\\\\"); else if (isprint(*tmp)) printf("%c", *tmp); else printf("\\x%02x", *tmp); ++tmp; } } puts(","); ++scan; } } xattr_free(xattrs); exit (EXIT_SUCCESS); }