struct cmd* parsepipe(char **ps, char *es) { struct cmd *cmd; char *q, *eq; if( 1 == scan(ps, es, "|", &q, &eq) ) { cmd = parseexec(&q, eq); (*ps)++; cmd = pipecmd(cmd, parsepipe(ps, es)); } else { cmd = parseexec(&q, eq); } return cmd; }
struct cmd* parsepipe(char** ps, char* es) { struct cmd* cmd = parseexec(ps, es); if (peek(ps, es, "|")) { gettoken(ps, es, 0, 0); cmd = pipecmd(cmd, parsepipe(ps, es)); } return cmd; }