hexdump: correctly display signed single byte integers

When using the format string '/1 "%d"', the byte did not display as a
signed integer as expected, it was interpreted as unsigned.
This commit is contained in:
Samir Benmendil 2021-06-09 01:21:46 +01:00
parent 6da826a521
commit aa6d42f16f
1 changed files with 3 additions and 1 deletions

View File

@ -145,13 +145,15 @@ print(struct hexdump_pr *pr, unsigned char *bp) {
}
case F_INT:
{
char cval; /* int8_t */
short sval; /* int16_t */
int ival; /* int32_t */
long long Lval; /* int64_t, int64_t */
switch(pr->bcnt) {
case 1:
printf(pr->fmt, (unsigned long long) *bp);
memmove(&cval, bp, sizeof(cval));
printf(pr->fmt, (unsigned long long) cval);
break;
case 2:
memmove(&sval, bp, sizeof(sval));