X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Futils%2Fll_decode_linkea.c;h=93274284661ad70252577cb67e8d907fa1e09b3e;hb=bb0cc84fbed51e006bfac230dada426bfac4f500;hp=337c1b9fd4bc3cfbcd98abc1f651b665cf1f0cb9;hpb=11a138cb9d005ef0180421bd17542071b63e18d9;p=fs%2Flustre-release.git diff --git a/lustre/utils/ll_decode_linkea.c b/lustre/utils/ll_decode_linkea.c index 337c1b9..9327428 100644 --- a/lustre/utils/ll_decode_linkea.c +++ b/lustre/utils/ll_decode_linkea.c @@ -36,13 +36,26 @@ #include #include #include +#include #include #include -#include -#include +#include #define BUFFER_SIZE 65536 +static void print_name(const char *cp, int len) +{ + unsigned char ch; + + while (len--) { + ch = *cp++; + if (!isprint(ch) || ch == '\\') + printf("\\x%02x", ch); + else + putchar(ch); + } +} + int decode_linkea(const char *fname) { char buf[BUFFER_SIZE]; @@ -87,7 +100,7 @@ int decode_linkea(const char *fname) if (leh->leh_len > size) { fprintf(stderr, "%s: invalid length %llu, should smaller than %zd\n", - fname, leh->leh_len, size); + fname, (unsigned long long)leh->leh_len, size); return -1; } @@ -99,22 +112,26 @@ int decode_linkea(const char *fname) length += reclen; if (length > leh->leh_len) { fprintf(stderr, - "%s: length exceeded, expected %lld, got %lld\n", - fname, leh->leh_len, length); + "%s: length exceeded, expected %llu, got %llu\n", + fname, (unsigned long long)leh->leh_len, + (unsigned long long)length); return -1; } memcpy(&pfid, &lee->lee_parent_fid, sizeof(pfid)); fid_be_to_cpu(&pfid, &pfid); - printf(" %d: pfid "DFID", name '%s'\n", i, PFID(&pfid), - lee->lee_name); + printf(" %d: pfid "DFID", name '", i, PFID(&pfid)); + print_name(lee->lee_name, reclen - (int)sizeof(*lee)); + printf("'\n"); lee = (struct link_ea_entry *)((char *)lee + reclen); } if (length != leh->leh_len) { fprintf(stderr, - "%s: length mismatch, expected %lld, got %lld\n", - fname, leh->leh_len, length); + "%s: length mismatch, expected %llu, got %llu\n", + fname, + (unsigned long long)leh->leh_len, + (unsigned long long)length); return -1; }