diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2009-11-29 01:37:46 +0100 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2009-11-29 01:37:46 +0100 |
| commit | 76bc2d6deb8ae6e0b55663e18ff55b225ae54bb2 (patch) | |
| tree | 10691c12bb126b371c554adb92ad48b7fab9e72b /shell | |
| parent | 0337e038a9354706f4bcfd9954c0219b0b8faba0 (diff) | |
| download | busybox-w32-76bc2d6deb8ae6e0b55663e18ff55b225ae54bb2.tar.gz busybox-w32-76bc2d6deb8ae6e0b55663e18ff55b225ae54bb2.tar.bz2 busybox-w32-76bc2d6deb8ae6e0b55663e18ff55b225ae54bb2.zip | |
ash: remove last "signed char"; make SIT() clearer. -12 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell')
| -rw-r--r-- | shell/ash.c | 135 |
1 files changed, 54 insertions, 81 deletions
diff --git a/shell/ash.c b/shell/ash.c index dac73182e..b1fc304fe 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
| @@ -2621,50 +2621,54 @@ pwdcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) | |||
| 2621 | #endif | 2621 | #endif |
| 2622 | 2622 | ||
| 2623 | #if ENABLE_SH_MATH_SUPPORT | 2623 | #if ENABLE_SH_MATH_SUPPORT |
| 2624 | static const uint8_t S_I_T[][4] = { | 2624 | # define SIT_ITEM(a,b,c,d) (a | (b << 4) | (c << 8) | (d << 12)) |
| 2625 | # if ENABLE_ASH_ALIAS | 2625 | static const uint16_t S_I_T[] = |
| 2626 | { CSPCL, CIGN, CIGN, CIGN }, /* 0, PEOA */ | ||
| 2627 | # endif | ||
| 2628 | { CSPCL, CWORD, CWORD, CWORD }, /* 1, ' ' */ | ||
| 2629 | { CNL, CNL, CNL, CNL }, /* 2, \n */ | ||
| 2630 | { CWORD, CCTL, CCTL, CWORD }, /* 3, !*-/:=?[]~ */ | ||
| 2631 | { CDQUOTE, CENDQUOTE, CWORD, CWORD }, /* 4, '"' */ | ||
| 2632 | { CVAR, CVAR, CWORD, CVAR }, /* 5, $ */ | ||
| 2633 | { CSQUOTE, CWORD, CENDQUOTE, CWORD }, /* 6, "'" */ | ||
| 2634 | { CSPCL, CWORD, CWORD, CLP }, /* 7, ( */ | ||
| 2635 | { CSPCL, CWORD, CWORD, CRP }, /* 8, ) */ | ||
| 2636 | { CBACK, CBACK, CCTL, CBACK }, /* 9, \ */ | ||
| 2637 | { CBQUOTE, CBQUOTE, CWORD, CBQUOTE }, /* 10, ` */ | ||
| 2638 | { CENDVAR, CENDVAR, CWORD, CENDVAR }, /* 11, } */ | ||
| 2639 | # ifndef USE_SIT_FUNCTION | ||
| 2640 | { CENDFILE, CENDFILE, CENDFILE, CENDFILE }, /* 12, PEOF */ | ||
| 2641 | { CWORD, CWORD, CWORD, CWORD }, /* 13, 0-9A-Za-z */ | ||
| 2642 | { CCTL, CCTL, CCTL, CCTL } /* 14, CTLESC ... */ | ||
| 2643 | # endif | ||
| 2644 | }; | ||
| 2645 | #else | 2626 | #else |
| 2646 | static const uint8_t S_I_T[][3] = { | 2627 | # define SIT_ITEM(a,b,c,d) (a | (b << 4) | (c << 8)) |
| 2647 | # if ENABLE_ASH_ALIAS | 2628 | static const uint16_t S_I_T[] = |
| 2648 | { CSPCL, CIGN, CIGN }, /* 0, PEOA */ | 2629 | #endif |
| 2649 | # endif | 2630 | { |
| 2650 | { CSPCL, CWORD, CWORD }, /* 1, ' ' */ | 2631 | #if ENABLE_ASH_ALIAS |
| 2651 | { CNL, CNL, CNL }, /* 2, \n */ | 2632 | SIT_ITEM(CSPCL , CIGN , CIGN , CIGN ), /* 0, PEOA */ |
| 2652 | { CWORD, CCTL, CCTL }, /* 3, !*-/:=?[]~ */ | 2633 | #endif |
| 2653 | { CDQUOTE, CENDQUOTE, CWORD }, /* 4, '"' */ | 2634 | SIT_ITEM(CSPCL , CWORD , CWORD, CWORD ), /* 1, ' ' */ |
| 2654 | { CVAR, CVAR, CWORD }, /* 5, $ */ | 2635 | SIT_ITEM(CNL , CNL , CNL , CNL ), /* 2, \n */ |
| 2655 | { CSQUOTE, CWORD, CENDQUOTE }, /* 6, "'" */ | 2636 | SIT_ITEM(CWORD , CCTL , CCTL , CWORD ), /* 3, !*-/:=?[]~ */ |
| 2656 | { CSPCL, CWORD, CWORD }, /* 7, ( */ | 2637 | SIT_ITEM(CDQUOTE , CENDQUOTE, CWORD, CWORD ), /* 4, '"' */ |
| 2657 | { CSPCL, CWORD, CWORD }, /* 8, ) */ | 2638 | SIT_ITEM(CVAR , CVAR , CWORD, CVAR ), /* 5, $ */ |
| 2658 | { CBACK, CBACK, CCTL }, /* 9, \ */ | 2639 | SIT_ITEM(CSQUOTE , CWORD , CENDQUOTE, CWORD), /* 6, "'" */ |
| 2659 | { CBQUOTE, CBQUOTE, CWORD }, /* 10, ` */ | 2640 | SIT_ITEM(CSPCL , CWORD , CWORD, CLP ), /* 7, ( */ |
| 2660 | { CENDVAR, CENDVAR, CWORD }, /* 11, } */ | 2641 | SIT_ITEM(CSPCL , CWORD , CWORD, CRP ), /* 8, ) */ |
| 2661 | # ifndef USE_SIT_FUNCTION | 2642 | SIT_ITEM(CBACK , CBACK , CCTL , CBACK ), /* 9, \ */ |
| 2662 | { CENDFILE, CENDFILE, CENDFILE }, /* 12, PEOF */ | 2643 | SIT_ITEM(CBQUOTE , CBQUOTE , CWORD, CBQUOTE), /* 10, ` */ |
| 2663 | { CWORD, CWORD, CWORD }, /* 13, 0-9A-Za-z */ | 2644 | SIT_ITEM(CENDVAR , CENDVAR , CWORD, CENDVAR), /* 11, } */ |
| 2664 | { CCTL, CCTL, CCTL } /* 14, CTLESC ... */ | 2645 | #ifndef USE_SIT_FUNCTION |
| 2665 | # endif | 2646 | SIT_ITEM(CENDFILE, CENDFILE , CENDFILE, CENDFILE),/* 12, PEOF */ |
| 2647 | SIT_ITEM(CWORD , CWORD , CWORD, CWORD ), /* 13, 0-9A-Za-z */ | ||
| 2648 | SIT_ITEM(CCTL , CCTL , CCTL , CCTL ) /* 14, CTLESC ... */ | ||
| 2649 | #endif | ||
| 2650 | #undef SIT_ITEM | ||
| 2651 | }; | ||
| 2652 | /* Constants below must match table above */ | ||
| 2653 | enum { | ||
| 2654 | #if ENABLE_ASH_ALIAS | ||
| 2655 | CSPCL_CIGN_CIGN_CIGN , /* 0 */ | ||
| 2656 | #endif | ||
| 2657 | CSPCL_CWORD_CWORD_CWORD , /* 1 */ | ||
| 2658 | CNL_CNL_CNL_CNL , /* 2 */ | ||
| 2659 | CWORD_CCTL_CCTL_CWORD , /* 3 */ | ||
| 2660 | CDQUOTE_CENDQUOTE_CWORD_CWORD , /* 4 */ | ||
| 2661 | CVAR_CVAR_CWORD_CVAR , /* 5 */ | ||
| 2662 | CSQUOTE_CWORD_CENDQUOTE_CWORD , /* 6 */ | ||
| 2663 | CSPCL_CWORD_CWORD_CLP , /* 7 */ | ||
| 2664 | CSPCL_CWORD_CWORD_CRP , /* 8 */ | ||
| 2665 | CBACK_CBACK_CCTL_CBACK , /* 9 */ | ||
| 2666 | CBQUOTE_CBQUOTE_CWORD_CBQUOTE , /* 10 */ | ||
| 2667 | CENDVAR_CENDVAR_CWORD_CENDVAR , /* 11 */ | ||
| 2668 | CENDFILE_CENDFILE_CENDFILE_CENDFILE, /* 12 */ | ||
| 2669 | CWORD_CWORD_CWORD_CWORD , /* 13 */ | ||
| 2670 | CCTL_CCTL_CCTL_CCTL , /* 14 */ | ||
| 2666 | }; | 2671 | }; |
| 2667 | #endif /* SH_MATH_SUPPORT */ | ||
| 2668 | 2672 | ||
| 2669 | /* c in SIT(c, syntax) must be an *unsigned char* or PEOA or PEOF, | 2673 | /* c in SIT(c, syntax) must be an *unsigned char* or PEOA or PEOF, |
| 2670 | * caller must ensure proper cast on it if c is *char_ptr! | 2674 | * caller must ensure proper cast on it if c is *char_ptr! |
| @@ -2714,45 +2718,12 @@ SIT(int c, int syntax) | |||
| 2714 | } | 2718 | } |
| 2715 | indx = syntax_index_table[s - spec_symbls]; | 2719 | indx = syntax_index_table[s - spec_symbls]; |
| 2716 | } | 2720 | } |
| 2717 | return S_I_T[indx][syntax]; | 2721 | return (S_I_T[indx] >> (syntax*4)) & 0xf; |
| 2718 | } | 2722 | } |
| 2719 | 2723 | ||
| 2720 | #else /* !USE_SIT_FUNCTION */ | 2724 | #else /* !USE_SIT_FUNCTION */ |
| 2721 | 2725 | ||
| 2722 | # if ENABLE_ASH_ALIAS | 2726 | static const uint8_t syntax_index_table[] = { |
| 2723 | # define CSPCL_CIGN_CIGN_CIGN 0 | ||
| 2724 | # define CSPCL_CWORD_CWORD_CWORD 1 | ||
| 2725 | # define CNL_CNL_CNL_CNL 2 | ||
| 2726 | # define CWORD_CCTL_CCTL_CWORD 3 | ||
| 2727 | # define CDQUOTE_CENDQUOTE_CWORD_CWORD 4 | ||
| 2728 | # define CVAR_CVAR_CWORD_CVAR 5 | ||
| 2729 | # define CSQUOTE_CWORD_CENDQUOTE_CWORD 6 | ||
| 2730 | # define CSPCL_CWORD_CWORD_CLP 7 | ||
| 2731 | # define CSPCL_CWORD_CWORD_CRP 8 | ||
| 2732 | # define CBACK_CBACK_CCTL_CBACK 9 | ||
| 2733 | # define CBQUOTE_CBQUOTE_CWORD_CBQUOTE 10 | ||
| 2734 | # define CENDVAR_CENDVAR_CWORD_CENDVAR 11 | ||
| 2735 | # define CENDFILE_CENDFILE_CENDFILE_CENDFILE 12 | ||
| 2736 | # define CWORD_CWORD_CWORD_CWORD 13 | ||
| 2737 | # define CCTL_CCTL_CCTL_CCTL 14 | ||
| 2738 | # else | ||
| 2739 | # define CSPCL_CWORD_CWORD_CWORD 0 | ||
| 2740 | # define CNL_CNL_CNL_CNL 1 | ||
| 2741 | # define CWORD_CCTL_CCTL_CWORD 2 | ||
| 2742 | # define CDQUOTE_CENDQUOTE_CWORD_CWORD 3 | ||
| 2743 | # define CVAR_CVAR_CWORD_CVAR 4 | ||
| 2744 | # define CSQUOTE_CWORD_CENDQUOTE_CWORD 5 | ||
| 2745 | # define CSPCL_CWORD_CWORD_CLP 6 | ||
| 2746 | # define CSPCL_CWORD_CWORD_CRP 7 | ||
| 2747 | # define CBACK_CBACK_CCTL_CBACK 8 | ||
| 2748 | # define CBQUOTE_CBQUOTE_CWORD_CBQUOTE 9 | ||
| 2749 | # define CENDVAR_CENDVAR_CWORD_CENDVAR 10 | ||
| 2750 | # define CENDFILE_CENDFILE_CENDFILE_CENDFILE 11 | ||
| 2751 | # define CWORD_CWORD_CWORD_CWORD 12 | ||
| 2752 | # define CCTL_CCTL_CCTL_CCTL 13 | ||
| 2753 | # endif | ||
| 2754 | |||
| 2755 | static const uint8_t syntax_index_table[258] = { | ||
| 2756 | /* BASESYNTAX_DQSYNTAX_SQSYNTAX_ARISYNTAX */ | 2727 | /* BASESYNTAX_DQSYNTAX_SQSYNTAX_ARISYNTAX */ |
| 2757 | /* 0 */ CWORD_CWORD_CWORD_CWORD, | 2728 | /* 0 */ CWORD_CWORD_CWORD_CWORD, |
| 2758 | /* 1 */ CWORD_CWORD_CWORD_CWORD, | 2729 | /* 1 */ CWORD_CWORD_CWORD_CWORD, |
| @@ -3016,9 +2987,9 @@ static const uint8_t syntax_index_table[258] = { | |||
| 3016 | /* PEOF */ CENDFILE_CENDFILE_CENDFILE_CENDFILE, | 2987 | /* PEOF */ CENDFILE_CENDFILE_CENDFILE_CENDFILE, |
| 3017 | }; | 2988 | }; |
| 3018 | 2989 | ||
| 3019 | # define SIT(c, syntax) (S_I_T[syntax_index_table[c]][syntax]) | 2990 | # define SIT(c, syntax) ((S_I_T[syntax_index_table[c]] >> (syntax*4)) & 0xf) |
| 3020 | 2991 | ||
| 3021 | #endif /* USE_SIT_FUNCTION */ | 2992 | #endif /* !USE_SIT_FUNCTION */ |
| 3022 | 2993 | ||
| 3023 | 2994 | ||
| 3024 | /* ============ Alias handling */ | 2995 | /* ============ Alias handling */ |
| @@ -10437,7 +10408,7 @@ noexpand(const char *text) | |||
| 10437 | continue; | 10408 | continue; |
| 10438 | if (c == CTLESC) | 10409 | if (c == CTLESC) |
| 10439 | text++; | 10410 | text++; |
| 10440 | else if (SIT((signed char)c, BASESYNTAX) == CCTL) | 10411 | else if (SIT(c, BASESYNTAX) == CCTL) |
| 10441 | return 0; | 10412 | return 0; |
| 10442 | } | 10413 | } |
| 10443 | return 1; | 10414 | return 1; |
| @@ -11398,8 +11369,10 @@ parsebackq: { | |||
| 11398 | continue; | 11369 | continue; |
| 11399 | } | 11370 | } |
| 11400 | if (pc != '\\' && pc != '`' && pc != '$' | 11371 | if (pc != '\\' && pc != '`' && pc != '$' |
| 11401 | && (!dblquote || pc != '"')) | 11372 | && (!dblquote || pc != '"') |
| 11373 | ) { | ||
| 11402 | STPUTC('\\', pout); | 11374 | STPUTC('\\', pout); |
| 11375 | } | ||
| 11403 | if (pc <= 255 /* not PEOA or PEOF */) { | 11376 | if (pc <= 255 /* not PEOA or PEOF */) { |
| 11404 | break; | 11377 | break; |
| 11405 | } | 11378 | } |
