From c8f538425f4e92e1e438b9bd25cb08e250a93d5b Mon Sep 17 00:00:00 2001 From: rsc Date: Mon, 26 Mar 2007 12:02:41 +0000 Subject: sync with plan 9 --- src/cmd/rc/tree.c | 132 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 82 insertions(+), 50 deletions(-) (limited to 'src/cmd/rc/tree.c') diff --git a/src/cmd/rc/tree.c b/src/cmd/rc/tree.c index 9bf76d8e..897597e2 100644 --- a/src/cmd/rc/tree.c +++ b/src/cmd/rc/tree.c @@ -7,108 +7,140 @@ tree *treenodes; * create and clear a new tree node, and add it * to the node list. */ -tree *newtree(void){ - tree *t=new(tree); - t->iskw=0; - t->str=0; - t->child[0]=t->child[1]=t->child[2]=0; - t->next=treenodes; - treenodes=t; + +tree* +newtree(void) +{ + tree *t = new(tree); + t->iskw = 0; + t->str = 0; + t->child[0] = t->child[1] = t->child[2] = 0; + t->next = treenodes; + treenodes = t; return t; } -void freenodes(void){ + +void +freenodes(void) +{ tree *t, *u; - for(t=treenodes;t;t=u){ - u=t->next; - if(t->str) efree(t->str); + for(t = treenodes;t;t = u){ + u = t->next; + if(t->str) + efree(t->str); efree((char *)t); } - treenodes=0; + treenodes = 0; } -tree *tree1(int type, tree *c0) + +tree* +tree1(int type, tree *c0) { return tree3(type, c0, (tree *)0, (tree *)0); } -tree *tree2(int type, tree *c0, tree *c1) + +tree* +tree2(int type, tree *c0, tree *c1) { return tree3(type, c0, c1, (tree *)0); } -tree *tree3(int type, tree *c0, tree *c1, tree *c2) + +tree* +tree3(int type, tree *c0, tree *c1, tree *c2) { tree *t; if(type==';'){ - if(c0==0) return c1; - if(c1==0) return c0; + if(c0==0) + return c1; + if(c1==0) + return c0; } - t=newtree(); - t->type=type; - t->child[0]=c0; - t->child[1]=c1; - t->child[2]=c2; + t = newtree(); + t->type = type; + t->child[0] = c0; + t->child[1] = c1; + t->child[2] = c2; return t; } -tree *mung1(tree *t, tree *c0) + +tree* +mung1(tree *t, tree *c0) { - t->child[0]=c0; + t->child[0] = c0; return t; } -tree *mung2(tree *t, tree *c0, tree *c1) + +tree* +mung2(tree *t, tree *c0, tree *c1) { - t->child[0]=c0; - t->child[1]=c1; + t->child[0] = c0; + t->child[1] = c1; return t; } -tree *mung3(tree *t, tree *c0, tree *c1, tree *c2) + +tree* +mung3(tree *t, tree *c0, tree *c1, tree *c2) { - t->child[0]=c0; - t->child[1]=c1; - t->child[2]=c2; + t->child[0] = c0; + t->child[1] = c1; + t->child[2] = c2; return t; } -tree *epimung(tree *comp, tree *epi) + +tree* +epimung(tree *comp, tree *epi) { tree *p; - if(epi==0) return comp; - for(p=epi;p->child[1];p=p->child[1]); - p->child[1]=comp; + if(epi==0) + return comp; + for(p = epi;p->child[1];p = p->child[1]); + p->child[1] = comp; return epi; } /* * Add a SIMPLE node at the root of t and percolate all the redirections * up to the root. */ -tree *simplemung(tree *t) + +tree* +simplemung(tree *t) { tree *u; struct io *s; - t=tree1(SIMPLE, t); - s=openstr(); + t = tree1(SIMPLE, t); + s = openstr(); pfmt(s, "%t", t); - t->str=strdup(s->strp); + t->str = strdup(s->strp); closeio(s); - for(u=t->child[0];u->type==ARGLIST;u=u->child[0]){ + for(u = t->child[0];u->type==ARGLIST;u = u->child[0]){ if(u->child[1]->type==DUP || u->child[1]->type==REDIR){ - u->child[1]->child[1]=t; - t=u->child[1]; - u->child[1]=0; + u->child[1]->child[1] = t; + t = u->child[1]; + u->child[1] = 0; } } return t; } -tree *token(char *str, int type) + +tree* +token(char *str, int type) { - tree *t=newtree(); - t->type=type; - t->str=strdup(str); + tree *t = newtree(); + t->type = type; + t->str = strdup(str); return t; } -void freetree(tree *p) + +void +freetree(tree *p) { - if(p==0) return; + if(p==0) + return; freetree(p->child[0]); freetree(p->child[1]); freetree(p->child[2]); - if(p->str) efree(p->str); + if(p->str) + efree(p->str); efree((char *)p); } -- cgit v1.2.3