summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-12-18 00:34:49 (GMT)
committer Denys Vlasenko <vda.linux@googlemail.com>2010-12-18 00:34:49 (GMT)
commit0d6a4ecb30f596570585bbde29f7c9b42a60b623 (patch)
tree58419b886d755c88346b590ba297a1f38407d0f5
parenta6041860f878142e91be7889a26742e25f323c8f (diff)
downloadbusybox-0d6a4ecb30f596570585bbde29f7c9b42a60b623.tar.gz
busybox-0d6a4ecb30f596570585bbde29f7c9b42a60b623.tar.bz2
hush: fix build breakage (variable declared in for())
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--shell/hush.c45
1 files changed, 24 insertions, 21 deletions
diff --git a/shell/hush.c b/shell/hush.c
index 087636b..2bca9aa 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -7013,27 +7013,30 @@ static int run_list(struct pipe *pi)
#if ENABLE_HUSH_LOOPS
/* Check syntax for "for" */
- for (struct pipe *cpipe = pi; cpipe; cpipe = cpipe->next) {
- if (cpipe->res_word != RES_FOR && cpipe->res_word != RES_IN)
- continue;
- /* current word is FOR or IN (BOLD in comments below) */
- if (cpipe->next == NULL) {
- syntax_error("malformed for");
- debug_leave();
- debug_printf_exec("run_list lvl %d return 1\n", G.run_list_level);
- return 1;
- }
- /* "FOR v; do ..." and "for v IN a b; do..." are ok */
- if (cpipe->next->res_word == RES_DO)
- continue;
- /* next word is not "do". It must be "in" then ("FOR v in ...") */
- if (cpipe->res_word == RES_IN /* "for v IN a b; not_do..."? */
- || cpipe->next->res_word != RES_IN /* FOR v not_do_and_not_in..."? */
- ) {
- syntax_error("malformed for");
- debug_leave();
- debug_printf_exec("run_list lvl %d return 1\n", G.run_list_level);
- return 1;
+ {
+ struct pipe *cpipe;
+ for (cpipe = pi; cpipe; cpipe = cpipe->next) {
+ if (cpipe->res_word != RES_FOR && cpipe->res_word != RES_IN)
+ continue;
+ /* current word is FOR or IN (BOLD in comments below) */
+ if (cpipe->next == NULL) {
+ syntax_error("malformed for");
+ debug_leave();
+ debug_printf_exec("run_list lvl %d return 1\n", G.run_list_level);
+ return 1;
+ }
+ /* "FOR v; do ..." and "for v IN a b; do..." are ok */
+ if (cpipe->next->res_word == RES_DO)
+ continue;
+ /* next word is not "do". It must be "in" then ("FOR v in ...") */
+ if (cpipe->res_word == RES_IN /* "for v IN a b; not_do..."? */
+ || cpipe->next->res_word != RES_IN /* FOR v not_do_and_not_in..."? */
+ ) {
+ syntax_error("malformed for");
+ debug_leave();
+ debug_printf_exec("run_list lvl %d return 1\n", G.run_list_level);
+ return 1;
+ }
}
}
#endif