Buglet or featurette in kernel printf %b format (trivia)
jim at haring.UUCP
jim at haring.UUCP
Sat Apr 7 18:52:02 AEST 1984
Subject: Buglet or featurette in kernel printf %b format (trivia)
Index: sys/sys/subr_prf.c 4.2BSD
Description:
The %b option to printf produces odd results if the first
argument (the bit-map) only contains bits which are not
declared in the second argument (the bit-definitions), it
prints an opening '<' bracket, but no closing one.
Repeat-By:
Find a device which can give register contents which do not
appear in the bit-definitions, and make it give an error...
Alternatively add the routines printf(), prf() and printn() from
subr_prf.c to the short program below and call it with various
integers as arguemnts, like 5. You should get
5<
#include <sys/types.h>
#define FORMAT "\20\20XPWR\17ICAB\10PCTO\7ILLINT\6TIMEOUT\5POWER\4RMTC"
main(argc, argv)
char **argv;
{
register int x;
argc--; argv++;
while(argc){
if((x = atoi(*argv)) != 0)
printf("%b\n", x, FORMAT);
argc--; argv++;
}
exit(0);
}
Fix:
How you fix it depends on whether you think the solution is to
print a closing '>' barcket, or not to print the opening '<'.
The actual code is left as an exercise for the interested reader.
More information about the Comp.unix.wizards
mailing list