mirror of
https://github.com/Fishwaldo/opensbi.git
synced 2025-03-15 19:31:32 +00:00
lib: sbi: Fix printi
Fix two bug: > printf("%#08x", 0x123); /* print 0000x123 */ > printf("%#x", 0); /* print 0x0 */ Signed-off-by: Xiang W <wxjstz@126.com> Reviewed-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
parent
fe0828142f
commit
c6ee5ae5a4
1 changed files with 23 additions and 13 deletions
|
@ -227,23 +227,33 @@ static int printi(char **out, u32 *out_len, long long i,
|
|||
}
|
||||
}
|
||||
|
||||
if (flags & PAD_ALTERNATE) {
|
||||
if ((b == 16) && (letbase == 'A')) {
|
||||
*--s = 'X';
|
||||
} else if ((b == 16) && (letbase == 'a')) {
|
||||
*--s = 'x';
|
||||
}
|
||||
*--s = '0';
|
||||
}
|
||||
|
||||
if (sign) {
|
||||
if (width && (flags & PAD_ZERO)) {
|
||||
if (flags & PAD_ZERO) {
|
||||
if (sign) {
|
||||
printc(out, out_len, sign);
|
||||
++pc;
|
||||
--width;
|
||||
} else {
|
||||
*--s = sign;
|
||||
}
|
||||
if (i && (flags & PAD_ALTERNATE)) {
|
||||
if (b == 16 || b == 8) {
|
||||
printc(out, out_len, '0');
|
||||
++pc;
|
||||
--width;
|
||||
}
|
||||
if (b == 16) {
|
||||
printc(out, out_len, 'x' - 'a' + letbase);
|
||||
++pc;
|
||||
--width;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (i && (flags & PAD_ALTERNATE)) {
|
||||
if (b == 16)
|
||||
*--s = 'x' - 'a' + letbase;
|
||||
if (b == 16 || b == 8)
|
||||
*--s = '0';
|
||||
}
|
||||
if (sign)
|
||||
*--s = sign;
|
||||
}
|
||||
|
||||
return pc + prints(out, out_len, s, width, flags);
|
||||
|
|
Loading…
Add table
Reference in a new issue