diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2018-12-11 19:52:25 +0100 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2018-12-11 19:52:25 +0100 |
| commit | 9f657e0f7deae5e27f95d783f52f897f42eafa57 (patch) | |
| tree | dd85f9dfc4095c047b7b8bd8c6087c6d78c48832 | |
| parent | 259137d0f0600150cd783c796e4011164c44a7f0 (diff) | |
| download | busybox-w32-9f657e0f7deae5e27f95d783f52f897f42eafa57.tar.gz busybox-w32-9f657e0f7deae5e27f95d783f52f897f42eafa57.tar.bz2 busybox-w32-9f657e0f7deae5e27f95d783f52f897f42eafa57.zip | |
bc: shrink bc_program_printString
function old new delta
zbc_program_print 665 642 -23
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| -rw-r--r-- | miscutils/bc.c | 110 |
1 files changed, 39 insertions, 71 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c index be118d81d..5f1baf431 100644 --- a/miscutils/bc.c +++ b/miscutils/bc.c | |||
| @@ -5585,87 +5585,55 @@ static char *bc_program_name(char *code, size_t *bgn) | |||
| 5585 | 5585 | ||
| 5586 | static void bc_program_printString(const char *str) | 5586 | static void bc_program_printString(const char *str) |
| 5587 | { | 5587 | { |
| 5588 | size_t i, len = strlen(str); | ||
| 5589 | |||
| 5590 | #if ENABLE_DC | 5588 | #if ENABLE_DC |
| 5591 | if (len == 0) { | 5589 | // Huh? Example when this happens? |
| 5590 | if (!str[0]) { | ||
| 5592 | bb_putchar('\0'); | 5591 | bb_putchar('\0'); |
| 5593 | return; | 5592 | return; |
| 5594 | } | 5593 | } |
| 5595 | #endif | 5594 | #endif |
| 5596 | 5595 | while (*str) { | |
| 5597 | for (i = 0; i < len; ++i, ++G.prog.nchars) { | 5596 | int c = *str++; |
| 5598 | 5597 | if (c != '\\' || !*str) | |
| 5599 | int c = str[i]; | ||
| 5600 | |||
| 5601 | if (c != '\\' || i == len - 1) | ||
| 5602 | bb_putchar(c); | 5598 | bb_putchar(c); |
| 5603 | else { | 5599 | else { |
| 5604 | 5600 | c = *str++; | |
| 5605 | c = str[++i]; | ||
| 5606 | |||
| 5607 | switch (c) { | 5601 | switch (c) { |
| 5608 | 5602 | case 'a': | |
| 5609 | case 'a': | 5603 | bb_putchar('\a'); |
| 5610 | { | 5604 | break; |
| 5611 | bb_putchar('\a'); | 5605 | case 'b': |
| 5612 | break; | 5606 | bb_putchar('\b'); |
| 5613 | } | 5607 | break; |
| 5614 | 5608 | case '\\': | |
| 5615 | case 'b': | 5609 | case 'e': |
| 5616 | { | 5610 | bb_putchar('\\'); |
| 5617 | bb_putchar('\b'); | 5611 | break; |
| 5618 | break; | 5612 | case 'f': |
| 5619 | } | 5613 | bb_putchar('\f'); |
| 5620 | 5614 | break; | |
| 5621 | case '\\': | 5615 | case 'n': |
| 5622 | case 'e': | 5616 | bb_putchar('\n'); |
| 5623 | { | 5617 | G.prog.nchars = SIZE_MAX; |
| 5624 | bb_putchar('\\'); | 5618 | break; |
| 5625 | break; | 5619 | case 'r': |
| 5626 | } | 5620 | bb_putchar('\r'); |
| 5627 | 5621 | break; | |
| 5628 | case 'f': | 5622 | case 'q': |
| 5629 | { | 5623 | bb_putchar('"'); |
| 5630 | bb_putchar('\f'); | 5624 | break; |
| 5631 | break; | 5625 | case 't': |
| 5632 | } | 5626 | bb_putchar('\t'); |
| 5633 | 5627 | break; | |
| 5634 | case 'n': | 5628 | default: |
| 5635 | { | 5629 | // Just print the backslash and following character. |
| 5636 | bb_putchar('\n'); | 5630 | bb_putchar('\\'); |
| 5637 | G.prog.nchars = SIZE_MAX; | 5631 | ++G.prog.nchars; |
| 5638 | break; | 5632 | bb_putchar(c); |
| 5639 | } | 5633 | break; |
| 5640 | |||
| 5641 | case 'r': | ||
| 5642 | { | ||
| 5643 | bb_putchar('\r'); | ||
| 5644 | break; | ||
| 5645 | } | ||
| 5646 | |||
| 5647 | case 'q': | ||
| 5648 | { | ||
| 5649 | bb_putchar('"'); | ||
| 5650 | break; | ||
| 5651 | } | ||
| 5652 | |||
| 5653 | case 't': | ||
| 5654 | { | ||
| 5655 | bb_putchar('\t'); | ||
| 5656 | break; | ||
| 5657 | } | ||
| 5658 | |||
| 5659 | default: | ||
| 5660 | { | ||
| 5661 | // Just print the backslash and following character. | ||
| 5662 | bb_putchar('\\'); | ||
| 5663 | ++G.prog.nchars; | ||
| 5664 | bb_putchar(c); | ||
| 5665 | break; | ||
| 5666 | } | ||
| 5667 | } | 5634 | } |
| 5668 | } | 5635 | } |
| 5636 | ++G.prog.nchars; | ||
| 5669 | } | 5637 | } |
| 5670 | } | 5638 | } |
| 5671 | 5639 | ||
