aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/rc/tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/rc/tree.c')
-rw-r--r--src/cmd/rc/tree.c19
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)
{