aboutsummaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2009-04-02 12:57:38 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2009-04-02 12:57:38 +0000
commit0dfe1d26a9000da4925f64c07a96b3e09ba175b1 (patch)
tree83f5161417ab92d09f43e216032a4125f25f8932 /shell
parent98c52645c02dacebccae7d68d6c2627f9318fcf7 (diff)
downloadbusybox-0dfe1d26a9000da4925f64c07a96b3e09ba175b1.tar.gz
fix ash-alias/alias.tests failure
Diffstat (limited to 'shell')
-rw-r--r--shell/ash.c51
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 */