Jesse Allen wrote:
I've read various printf implementation over time. The last one, ReactOS, seemed to provide support for numbering systems base 2 through 36. You'll see my version does mimic theirs, but we never do anything other than 8, 10, and 16. I'm not sure if there is any printf out there that actually allows you to specify the base. For this patch it could easily be cut to the 'f' as maximum, except I use the 'x' digit in the case of the special 0x and 0X prepending cases. To change that, we just add in a test for the large type there.
Generally if something isn't used, then it shouldn't be included. You specified your 'x' as digits[33], and you could easily delete the rest of the alphabet after 'f' and use digits[16] for 'x'.
I will pull up my patch of test cases (never applied) from last time and see if it will still work against cvs.
Somebody (not you, i think) submitted a few test cases before that did something like:
printf(buf,"%s %d %c\n", "blah", 10, 'x' ); ok( strlen(buf) == 9, "wrong length\n" );
That doesn't test the code so well, so please make sure to check the output is correct in an unambiguous way. eg.
ok( !strcmp(buf,"blah 10 x"), "wrong output\n");
I'd check some combinations of stuff like:
( %I64x %0I64x %1I64d %i64x %i64d %I64D %50I64d %-1I64d %-50I64d etc ) for values: 0, -1, ~1, ~0, 100, -100
Mike