Lines Matching refs:cmd
106 struct command *cmd; member
127 static char *parse_word(char *start, struct command **cmd) in parse_word() argument
137 (*cmd)->argv[(*cmd)->argc++] = xstrndup(start, end-start); in parse_word()
141 if (!((*cmd)->argc & 7)) in parse_word()
142 *cmd=xrealloc(*cmd, in parse_word()
143 sizeof(struct command) + ((*cmd)->argc+8)*sizeof(char *)); in parse_word()
144 (*cmd)->argv[(*cmd)->argc] = 0; in parse_word()
153 struct command **cmd = &(line->cmd); in parse_pipeline() local
172 if (!*cmd) *cmd = xzalloc(sizeof(struct command)+8*sizeof(char *)); in parse_pipeline()
175 end = parse_word(start, cmd); in parse_pipeline()
200 struct command *cmd = line->cmd; in run_pipeline() local
201 if (!cmd || !cmd->argc) return; in run_pipeline()
203 tl = toy_find(cmd->argv[0]); in run_pipeline()
216 toy_init(tl, cmd->argv); in run_pipeline()
219 cmd->pid = toys.exitval; in run_pipeline()
226 cmd->pid = vfork(); in run_pipeline()
227 if (!cmd->pid) xexec(cmd->argv); in run_pipeline()
228 else waitpid(cmd->pid, &status, 0); in run_pipeline()
230 if (WIFEXITED(status)) cmd->pid = WEXITSTATUS(status); in run_pipeline()
231 if (WIFSIGNALED(status)) cmd->pid = WTERMSIG(status); in run_pipeline()
240 struct command *cmd=(struct command *)data; in free_cmd() local
242 while(cmd->argc) free(cmd->argv[--cmd->argc]); in free_cmd()
260 if (!line.cmd) break; in handle()
265 llist_traverse(line.cmd, free_cmd); in handle()