diff options
-rw-r--r-- | shell/ash.c | 51 |
1 files changed, 20 insertions, 31 deletions
diff --git a/shell/ash.c b/shell/ash.c index 0d3ab0ff5..4aaea2803 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -354,39 +354,25 @@ raise_interrupt(void) } while (0) #endif -#if ENABLE_ASH_OPTIMIZE_FOR_SIZE -static void +static USE_ASH_OPTIMIZE_FOR_SIZE(inline) void int_on(void) { + xbarrier(); if (--suppressint == 0 && intpending) { raise_interrupt(); } } #define INT_ON int_on() -static void +static USE_ASH_OPTIMIZE_FOR_SIZE(inline) void force_int_on(void) { + xbarrier(); suppressint = 0; if (intpending) raise_interrupt(); } #define FORCE_INT_ON force_int_on() -#else /* !ASH_OPTIMIZE_FOR_SIZE */ - -#define INT_ON do { \ - xbarrier(); \ - if (--suppressint == 0 && intpending) \ - raise_interrupt(); \ -} while (0) -#define FORCE_INT_ON do { \ - xbarrier(); \ - suppressint = 0; \ - if (intpending) \ - raise_interrupt(); \ -} while (0) -#endif /* !ASH_OPTIMIZE_FOR_SIZE */ - #define SAVE_INT(v) ((v) = suppressint) #define RESTORE_INT(v) do { \ @@ -2700,23 +2686,26 @@ SIT(int c, int syntax) const char *s; int indx; - if (c == PEOF) /* 2^8+2 */ + if (c == PEOF) { /* 2^8+2 */ return CENDFILE; + } #if ENABLE_ASH_ALIAS - if (c == PEOA) /* 2^8+1 */ + if (c == PEOA) { /* 2^8+1 */ indx = 0; - else + } else #endif - - if ((unsigned char)c >= (unsigned char)(CTLESC) - && (unsigned char)c <= (unsigned char)(CTLQUOTEMARK) - ) { - return CCTL; + { + if ((unsigned char)c >= (unsigned char)(CTLESC) + && (unsigned char)c <= (unsigned char)(CTLQUOTEMARK) + ) { + return CCTL; + } + s = strchrnul(spec_symbls, c); + if (*s == '\0') { + return CWORD; + } + indx = syntax_index_table[s - spec_symbls]; } - s = strchrnul(spec_symbls, c); - if (*s == '\0') - return CWORD; - indx = syntax_index_table[s - spec_symbls]; return S_I_T[indx][syntax]; } @@ -3019,7 +3008,7 @@ static const char syntax_index_table[258] = { /* 257 127 */ CWORD_CWORD_CWORD_CWORD, }; -#define SIT(c, syntax) (S_I_T[(int)syntax_index_table[((int)c)+SYNBASE]][syntax]) +#define SIT(c, syntax) (S_I_T[(int)syntax_index_table[(int)(c) + SYNBASE]][syntax]) #endif /* USE_SIT_FUNCTION */ |