aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2018-12-24 01:53:55 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2018-12-24 02:01:32 +0100
commit81293c8af04913a632c32a305e505dcbf059d9d5 (patch)
tree4ec3eeb4b815ad84018cbafa4c0e227d8abc2e8b
parent73b2c6082574aff51e5bb6560449c5fc746cf7bf (diff)
downloadbusybox-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.c21
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
3353static BC_STATUS zdc_lex_register(BcLex *l) 3353static 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 '!':