Lines Matching +full:- +full:p1

4 /*-
65 if (--aleft == 0) in alias()
67 } while (asyntax(lexp->next, lexp) != 0); in alias()
71 asyntax(struct wordent *p1, struct wordent *p2) in asyntax() argument
73 while (p1 != p2) { in asyntax()
74 if (!any(";&\n", p1->word[0])) in asyntax()
75 return asyn0(p1, p2); in asyntax()
76 p1 = p1->next; in asyntax()
82 asyn0(struct wordent *p1, struct wordent *p2) in asyn0() argument
87 for (p = p1; p != p2; p = p->next) in asyn0()
88 switch (p->word[0]) { in asyn0()
95 l--; in asyn0()
101 if (p->next != p2 && eq(p->next->word, STRand)) in asyn0()
102 p = p->next; in asyn0()
111 if (asyn3(p1, p) != 0) in asyn0()
113 return asyntax(p->next, p2); in asyn0()
119 return asyn3(p1, p2); in asyn0()
133 asyn3(struct wordent *p1, struct wordent *p2) in asyn3() argument
139 if (p1 == p2) in asyn3()
141 if (p1->word[0] == '(') { in asyn3()
142 for (p2 = p2->prev; p2->word[0] != ')'; p2 = p2->prev) in asyn3()
143 if (p2 == p1) in asyn3()
145 if (p2 == p1->next) in asyn3()
147 return asyn0(p1->next, p2); in asyn3()
149 ap = adrof1(p1->word, &aliases); in asyn3()
152 alhistp = p1->prev; in asyn3()
154 alvec = ap->vec; in asyn3()
162 if (p1->word[0] && eq(p1->word, alout.next->word)) { in asyn3()
163 Char *cp = alout.next->word; in asyn3()
165 alout.next->word = Strspl(STRQNULL, cp); in asyn3()
168 p1 = freenod(p1, redid ? p2 : p1->next); in asyn3()
170 p1->next->prev = alout.prev->prev; in asyn3()
171 alout.prev->prev->next = p1->next; in asyn3()
172 alout.next->prev = p1; in asyn3()
173 p1->next = alout.next; in asyn3()
174 xfree(alout.prev->word); in asyn3()
181 freenod(struct wordent *p1, struct wordent *p2) in freenod() argument
183 struct wordent *retp = p1->prev; in freenod()
185 while (p1 != p2) { in freenod()
186 xfree(p1->word); in freenod()
187 p1 = p1->next; in freenod()
188 xfree(p1->prev); in freenod()
190 retp->next = p2; in freenod()
191 p2->prev = retp; in freenod()
206 syntax(const struct wordent *p1, const struct wordent *p2, int flags) in syntax() argument
209 while (p1 != p2) in syntax()
210 if (any(";&\n", p1->word[0])) in syntax()
211 p1 = p1->next; in syntax()
213 return (syn0(p1, p2, flags)); in syntax()
223 syn0(const struct wordent *p1, const struct wordent *p2, int flags) in syn0() argument
230 for (p = p1; p != p2; p = p->next) in syn0()
231 switch (p->word[0]) { in syn0()
238 l--; in syn0()
244 if (p->word[1] == '|') in syn0()
249 if (p->next != p2 && eq(p->next->word, STRand)) in syn0()
250 p = p->next; in syn0()
256 if (p->word[1] == '&') in syn0()
258 t1 = syn1(p1, p, flags); in syn0()
259 if (t1->t_dtyp == NODE_LIST || in syn0()
260 t1->t_dtyp == NODE_AND || in syn0()
261 t1->t_dtyp == NODE_OR) { in syn0()
263 t->t_dtyp = NODE_PAREN; in syn0()
264 t->t_dflg = F_AMPERSAND | F_NOINTERRUPT; in syn0()
265 t->t_dspr = t1; in syn0()
269 t1->t_dflg |= F_AMPERSAND | F_NOINTERRUPT; in syn0()
271 t->t_dtyp = NODE_LIST; in syn0()
272 t->t_dflg = 0; in syn0()
273 t->t_dcar = t1; in syn0()
274 t->t_dcdr = syntax(p, p2, flags); in syn0()
280 return (syn1(p1, p2, flags)); in syn0()
291 syn1(const struct wordent *p1, const struct wordent *p2, int flags) in syn1() argument
298 for (p = p1; p != p2; p = p->next) in syn1()
299 switch (p->word[0]) { in syn1()
306 l--; in syn1()
314 t->t_dtyp = NODE_LIST; in syn1()
315 t->t_dcar = syn1a(p1, p, flags); in syn1()
316 t->t_dcdr = syntax(p->next, p2, flags); in syn1()
317 if (t->t_dcdr == 0) in syn1()
318 t->t_dcdr = t->t_dcar, t->t_dcar = 0; in syn1()
324 return (syn1a(p1, p2, flags)); in syn1()
333 syn1a(const struct wordent *p1, const struct wordent *p2, int flags) in syn1a() argument
339 for (p = p1; p != p2; p = p->next) in syn1a()
340 switch (p->word[0]) { in syn1a()
347 l--; in syn1a()
351 if (p->word[1] != '|') in syn1a()
355 t->t_dtyp = NODE_OR; in syn1a()
356 t->t_dcar = syn1b(p1, p, flags); in syn1a()
357 t->t_dcdr = syn1a(p->next, p2, flags); in syn1a()
358 t->t_dflg = 0; in syn1a()
366 return (syn1b(p1, p2, flags)); in syn1a()
375 syn1b(const struct wordent *p1, const struct wordent *p2, int flags) in syn1b() argument
381 for (p = p1; p != p2; p = p->next) in syn1b()
382 switch (p->word[0]) { in syn1b()
389 l--; in syn1b()
393 if (p->word[1] == '&' && l == 0) { in syn1b()
395 t->t_dtyp = NODE_AND; in syn1b()
396 t->t_dcar = syn2(p1, p, flags); in syn1b()
397 t->t_dcdr = syn1b(p->next, p2, flags); in syn1b()
398 t->t_dflg = 0; in syn1b()
406 return (syn2(p1, p2, flags)); in syn1b()
416 syn2(const struct wordent *p1, const struct wordent *p2, int flags) in syn2() argument
423 for (p = p1; p != p2; p = p->next) in syn2()
424 switch (p->word[0]) { in syn2()
431 l--; in syn2()
439 pn = p->next; in syn2()
440 if (pn != p2 && pn->word[0] == '&') { in syn2()
442 t->t_dflg |= F_STDERR; in syn2()
444 t->t_dtyp = NODE_PIPE; in syn2()
445 t->t_dcar = syn3(p1, p, f); in syn2()
446 if (pn != p2 && pn->word[0] == '&') in syn2()
448 t->t_dcdr = syn2(p->next, p2, flags | P_IN); in syn2()
454 return (syn3(p1, p2, flags)); in syn2()
468 syn3(const struct wordent *p1, const struct wordent *p2, int flags) in syn3() argument
478 if (p1 != p2) { in syn3()
479 p = p1; in syn3()
481 switch (srchx(p->word)) { in syn3()
484 p = p->next; in syn3()
504 for (p = p1; p != p2; p = p->next) in syn3()
505 switch (p->word[0]) { in syn3()
516 l--; in syn3()
526 if (p->next == p2) in syn3()
528 if (any(RELPAR, p->next->word[0])) in syn3()
530 n--; in syn3()
543 t->t_dcom = av; in syn3()
545 if (p2->word[0] == ')') in syn3()
546 t->t_dflg = F_NOFORK; in syn3()
550 for (p = p1; p != p2; p = p->next) { in syn3()
551 c = p->word[0]; in syn3()
558 lp = p->next; in syn3()
564 l--; in syn3()
572 if (p->word[1] == '>') in syn3()
573 t->t_dflg |= F_APPEND; in syn3()
574 if (p->next != p2 && eq(p->next->word, STRand)) { in syn3()
575 t->t_dflg |= F_STDERR, p = p->next; in syn3()
581 if (p->next != p2 && eq(p->next->word, STRbang)) in syn3()
582 t->t_dflg |= F_OVERWRITE, p = p->next; in syn3()
583 if (p->next == p2) { in syn3()
587 p = p->next; in syn3()
588 if (any(RELPAR, p->word[0])) { in syn3()
592 if (((flags & P_OUT) && (flags & P_DIAG) == 0) || t->t_drit) in syn3()
595 t->t_drit = Strsave(p->word); in syn3()
601 if (p->word[1] == '<') in syn3()
602 t->t_dflg |= F_READ; in syn3()
603 if (p->next == p2) { in syn3()
607 p = p->next; in syn3()
608 if (any(RELPAR, p->word[0])) { in syn3()
612 if ((flags & P_HERE) && (t->t_dflg & F_READ)) in syn3()
614 else if ((flags & P_IN) || t->t_dlef) in syn3()
617 t->t_dlef = Strsave(p->word); in syn3()
628 av[n] = Strsave(p->word); in syn3()
636 t->t_dtyp = NODE_PAREN; in syn3()
637 t->t_dspr = syn0(lp, rp, P_HERE); in syn3()
642 t->t_dtyp = NODE_COMMAND; in syn3()
654 switch (t->t_dtyp) { in freesyn()
657 for (v = t->t_dcom; *v; v++) in freesyn()
659 xfree(t->t_dcom); in freesyn()
660 xfree(t->t_dlef); in freesyn()
661 xfree(t->t_drit); in freesyn()
664 freesyn(t->t_dspr); in freesyn()
665 xfree(t->t_dlef); in freesyn()
666 xfree(t->t_drit); in freesyn()
673 freesyn(t->t_dcar), freesyn(t->t_dcdr); in freesyn()