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 | } |