* printcmd.c (print_scalar_formatted): Add 't' for binary.

This commit is contained in:
Jim Kingdon 1991-04-23 17:27:49 +00:00
parent 9872a49c27
commit 19b7c2a49e
1 changed files with 45 additions and 0 deletions

View File

@ -382,6 +382,51 @@ print_scalar_formatted (valaddr, type, format, size, stream)
case 0:
abort ();
case 't':
/* Binary; 't' stands for "two". */
{
char bits[8*(sizeof val_long) + 1];
char *cp = bits;
int width;
if (!size)
width = 8*(sizeof val_long);
else
switch (size)
{
case 'b':
width = 8;
break;
case 'h':
width = 16;
break;
case 'w':
width = 32;
break;
case 'g':
width = 64;
break;
default:
error ("Undefined output size \"%c\".", size);
}
bits[width] = '\0';
while (width-- > 0)
{
bits[width] = (val_long & 1) ? '1' : '0';
val_long >>= 1;
}
if (!size)
{
while (*cp && *cp == '0')
cp++;
if (*cp == '\0')
cp--;
}
fprintf_filtered (stream, cp);
}
break;
default:
error ("Undefined output format \"%c\".", format);
}