diff options
Diffstat (limited to 'src/cmd/rc/tree.c')
-rw-r--r-- | src/cmd/rc/tree.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/cmd/rc/tree.c b/src/cmd/rc/tree.c index 3703a25..3b7aeb8 100644 --- a/src/cmd/rc/tree.c +++ b/src/cmd/rc/tree.c @@ -78,6 +78,25 @@ hangchild3(Tree *node, Tree *c0, Tree *c1, Tree *c2) return node; } +/* + * add a Tbasic node. + * percolate all the redirections up to the root + */ +Tree* +basictree(Tree *cmd) +{ + Tree *c; + cmd = maketree1(Tbasic, cmd); + for(c=cmd->child[0]; c->type==Targs; c = c->child[0]){ + if(c->child[1]->type == Tdup || c->child[1]->type == Tredir){ + c->child[1]->child[1] = cmd; + cmd = c->child[1]; + c->child[1] = nil; + } + } + return cmd; +} + Tree* hangepilog(Tree *cmd, Tree *epi) { |