diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2018-12-24 01:53:55 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2018-12-24 02:01:32 +0100 |
commit | 81293c8af04913a632c32a305e505dcbf059d9d5 (patch) | |
tree | 4ec3eeb4b815ad84018cbafa4c0e227d8abc2e8b | |
parent | 73b2c6082574aff51e5bb6560449c5fc746cf7bf (diff) | |
download | busybox-w32-81293c8af04913a632c32a305e505dcbf059d9d5.tar.gz busybox-w32-81293c8af04913a632c32a305e505dcbf059d9d5.tar.bz2 busybox-w32-81293c8af04913a632c32a305e505dcbf059d9d5.zip |
dc: without -x, do not parse extended regs: 's p' means: store to ' ' reg, print
function old new delta
zbc_lex_next 2240 2233 -7
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-7) Total: -7 bytes
text data bss dec hex filename
981437 485 7296 989218 f1822 busybox_old
981412 485 7296 989193 f1809 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | miscutils/bc.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c index d2583313c..ac3eaff96 100644 --- a/miscutils/bc.c +++ b/miscutils/bc.c | |||
@@ -3352,16 +3352,13 @@ static BC_STATUS zbc_lex_token(BcLex *l) | |||
3352 | #if ENABLE_DC | 3352 | #if ENABLE_DC |
3353 | static BC_STATUS zdc_lex_register(BcLex *l) | 3353 | static BC_STATUS zdc_lex_register(BcLex *l) |
3354 | { | 3354 | { |
3355 | if (isspace(l->buf[l->i - 1])) { | 3355 | if (G_exreg && isspace(l->buf[l->i])) { |
3356 | bc_lex_whitespace(l); | 3356 | bc_lex_whitespace(l); // eats whitespace (but not newline) |
3357 | ++l->i; | 3357 | l->i++; // bc_lex_name() expects this |
3358 | if (!G_exreg) | ||
3359 | RETURN_STATUS(bc_error("extended register")); | ||
3360 | bc_lex_name(l); | 3358 | bc_lex_name(l); |
3361 | } | 3359 | } else { |
3362 | else { | ||
3363 | bc_vec_pop_all(&l->t.v); | 3360 | bc_vec_pop_all(&l->t.v); |
3364 | bc_vec_push(&l->t.v, &l->buf[l->i - 1]); | 3361 | bc_vec_push(&l->t.v, &l->buf[l->i++]); |
3365 | bc_vec_pushZeroByte(&l->t.v); | 3362 | bc_vec_pushZeroByte(&l->t.v); |
3366 | l->t.t = BC_LEX_NAME; | 3363 | l->t.t = BC_LEX_NAME; |
3367 | } | 3364 | } |
@@ -3425,8 +3422,8 @@ static BC_STATUS zdc_lex_token(BcLex *l) | |||
3425 | BC_LEX_STORE_PUSH, | 3422 | BC_LEX_STORE_PUSH, |
3426 | }; | 3423 | }; |
3427 | 3424 | ||
3428 | BcStatus s = BC_STATUS_SUCCESS; | 3425 | BcStatus s; |
3429 | char c = l->buf[l->i++], c2; | 3426 | char c, c2; |
3430 | size_t i; | 3427 | size_t i; |
3431 | 3428 | ||
3432 | for (i = 0; i < ARRAY_SIZE(dc_lex_regs); ++i) { | 3429 | for (i = 0; i < ARRAY_SIZE(dc_lex_regs); ++i) { |
@@ -3434,6 +3431,8 @@ static BC_STATUS zdc_lex_token(BcLex *l) | |||
3434 | RETURN_STATUS(zdc_lex_register(l)); | 3431 | RETURN_STATUS(zdc_lex_register(l)); |
3435 | } | 3432 | } |
3436 | 3433 | ||
3434 | s = BC_STATUS_SUCCESS; | ||
3435 | c = l->buf[l->i++]; | ||
3437 | if (c >= '%' && c <= '~' | 3436 | if (c >= '%' && c <= '~' |
3438 | && (l->t.t = dc_char_to_LEX[c - '%']) != BC_LEX_INVALID | 3437 | && (l->t.t = dc_char_to_LEX[c - '%']) != BC_LEX_INVALID |
3439 | ) { | 3438 | ) { |
@@ -3462,7 +3461,7 @@ static BC_STATUS zdc_lex_token(BcLex *l) | |||
3462 | case '\f': | 3461 | case '\f': |
3463 | case '\r': | 3462 | case '\r': |
3464 | case ' ': | 3463 | case ' ': |
3465 | l->newline = (c == '\n'); | 3464 | l->newline = 0; // was (c == '\n') |
3466 | bc_lex_whitespace(l); | 3465 | bc_lex_whitespace(l); |
3467 | break; | 3466 | break; |
3468 | case '!': | 3467 | case '!': |