diff options
Diffstat (limited to 'shell')
-rw-r--r-- | shell/hush.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/shell/hush.c b/shell/hush.c index c71ddb1..aab53c3 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -2931,8 +2931,10 @@ static int done_word(o_string *word, struct p_context *ctx) } #if HAS_KEYWORDS if (!child->argv /* if it's the first word... */ +#if ENABLE_HUSH_LOOPS && ctx->ctx_res_w != RES_FOR /* ...not after FOR or IN */ && ctx->ctx_res_w != RES_IN +#endif ) { debug_printf_parse(": checking '%s' for reserved-ness\n", word->data); if (reserved_word(word, ctx)) { @@ -3049,9 +3051,11 @@ static void done_pipe(struct p_context *ctx, pipe_style type) * RES_FOR and RES_IN are NOT sticky (needed to support * cases where variable or value happens to match a keyword): */ +#if ENABLE_HUSH_LOOPS if (ctx->ctx_res_w == RES_FOR || ctx->ctx_res_w == RES_IN) ctx->ctx_res_w = RES_NONE; +#endif /* Create the memory for child, roughly: * ctx->pipe->progs = new struct child_prog; * ctx->pipe->progs[0].family = ctx->pipe; |