mirror of
https://github.com/CTCaer/hekate
synced 2024-12-22 03:11:16 +00:00
bdk: sprintf: add negative number support for %d
This will now force a number as negative if bit31 is set and properly create the relevant string. That means that external handling in order to show sign is now not needed.
This commit is contained in:
parent
81730c5f7e
commit
ebf0db77ee
1 changed files with 13 additions and 1 deletions
|
@ -40,10 +40,19 @@ static void _s_putn(u32 v, int base, char fill, int fcnt)
|
|||
static const char digits[] = "0123456789ABCDEFghijklmnopqrstuvwxyz";
|
||||
char *p;
|
||||
int c = fcnt;
|
||||
bool negative = false;
|
||||
|
||||
if (base > 36)
|
||||
return;
|
||||
|
||||
// Account for negative numbers.
|
||||
if (base == 10 && v & 0x80000000)
|
||||
{
|
||||
negative = true;
|
||||
v = (int)v * -1;
|
||||
c--;
|
||||
}
|
||||
|
||||
p = buf + 64;
|
||||
*p = 0;
|
||||
do
|
||||
|
@ -53,9 +62,12 @@ static void _s_putn(u32 v, int base, char fill, int fcnt)
|
|||
v /= base;
|
||||
} while (v);
|
||||
|
||||
if (negative)
|
||||
*--p = '-';
|
||||
|
||||
if (fill != 0)
|
||||
{
|
||||
while (c > 0)
|
||||
while (c > 0 && p > buf)
|
||||
{
|
||||
*--p = fill;
|
||||
c--;
|
||||
|
|
Loading…
Reference in a new issue