From: Ivan Delalande Date: Wed, 21 Jun 2017 23:43:05 +0000 (-0700) Subject: dmesg: print only 2 hex digits for each hex-escaped byte X-Git-Tag: v2.31-rc1~272 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2e45524d969440501c83af3c39d5cab41c573e2f;p=thirdparty%2Futil-linux.git dmesg: print only 2 hex digits for each hex-escaped byte As buf is passed as a signed char buffer in fwrite_hex, fprintf will print every byte from 0x80 as a signed-extended int causing each of these bytes to be printed as "\xffffff80" and such, which can be pretty confusing. Force fprintf to use the argument as a char to make it print only 2 digits, e.g. "\x80". Signed-off-by: Ivan Delalande --- diff --git a/sys-utils/dmesg.c b/sys-utils/dmesg.c index b83cfb1bb5..821d8bbb2f 100644 --- a/sys-utils/dmesg.c +++ b/sys-utils/dmesg.c @@ -613,7 +613,7 @@ static int fwrite_hex(const char *buf, size_t size, FILE *out) size_t i; for (i = 0; i < size; i++) { - int rc = fprintf(out, "\\x%02x", buf[i]); + int rc = fprintf(out, "\\x%02hhx", buf[i]); if (rc < 0) return rc; }