bc: eliminate always the same params to bc_num_printBase()

function                                             old     new   delta
bc_program_print                                     739     736      -3

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2018-12-08 23:48:53 +01:00
parent ebc41c9d94
commit 0f37b3286a

View File

@ -2436,28 +2436,31 @@ err:
return s;
}
static BcStatus bc_num_printBase(BcNum *n, BcNum *base, size_t base_t)
static BcStatus bc_num_printBase(BcNum *n)
{
BcStatus s;
size_t width, i;
BcNumDigitOp print;
bool neg = n->neg;
if (neg) bb_putchar('-');
G.prog.nchars += neg;
if (neg) {
bb_putchar('-');
G.prog.nchars++;
}
n->neg = false;
if (base_t <= BC_NUM_MAX_IBASE) {
if (G.prog.ob_t <= BC_NUM_MAX_IBASE) {
width = 1;
print = bc_num_printHex;
}
else {
for (i = base_t - 1, width = 0; i != 0; i /= 10, ++width);
for (i = G.prog.ob_t - 1, width = 0; i != 0; i /= 10, ++width)
continue;
print = bc_num_printDigits;
}
s = bc_num_printNum(n, base, width, print);
s = bc_num_printNum(n, &G.prog.ob, width, print);
n->neg = neg;
return s;
@ -2486,9 +2489,6 @@ static BcStatus bc_num_parse(BcNum *n, const char *val, BcNum *base,
static BcStatus bc_num_print(BcNum *n, bool newline)
{
BcNum *base = &G.prog.ob;
size_t base_t = G.prog.ob_t;
BcStatus s = BC_STATUS_SUCCESS;
bc_num_printNewline();
@ -2497,10 +2497,10 @@ static BcStatus bc_num_print(BcNum *n, bool newline)
bb_putchar('0');
++G.prog.nchars;
}
else if (base_t == 10)
else if (G.prog.ob_t == 10)
bc_num_printDecimal(n);
else
s = bc_num_printBase(n, base, base_t);
s = bc_num_printBase(n);
if (newline) {
bb_putchar('\n');