diff options
Diffstat (limited to 'sys/cmd/rc/exec.c')
-rw-r--r-- | sys/cmd/rc/exec.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/sys/cmd/rc/exec.c b/sys/cmd/rc/exec.c index fbcfb9b..5f3c6d6 100644 --- a/sys/cmd/rc/exec.c +++ b/sys/cmd/rc/exec.c @@ -656,6 +656,31 @@ Xfalse(void) runner->code.i = runner->code.exe[runner->code.i].i; } +void +Xgoto(void) +{ + runner->code.i = runner->code.exe[runner->code.i].i; +} + +void +Xfor(void) +{ + if(!runner->args->word){ + poplist(); + runner->code.i = runner->code.exe[runner->code.i].i; + }else{ + freelist(runner->local->val); + + runner->local->val = runner->args->word; + runner->local->new = 1; + runner->args->word = runner->args->word->link; + + runner->local->val->link = nil; + runner->code.i++; + } + +} + static Word* catlist(Word *l, Word *r, Word *tail) |