Lines Matching refs:cmd

55 	register Cmdarg_t*	cmd;  in cmdopen()  local
105 if (!(cmd = newof(0, Cmdarg_t, 1, n + m))) in cmdopen()
113 s = cmd->buf; in cmdopen()
117 cmd->echo = 1; in cmdopen()
121 cmd->echo = 1; in cmdopen()
133 free(cmd); in cmdopen()
141 cmd->insert = strcpy(s, argpat); in cmdopen()
142 cmd->insertlen = m - 1; in cmdopen()
145 s += sizeof(char**) - (s - cmd->buf) % sizeof(char**); in cmdopen()
148 cmd->argv = p; in cmdopen()
155 cmd->insertarg = p; in cmdopen()
156 argv = cmd->argv; in cmdopen()
157 c = *cmd->insert; in cmdopen()
160 while ((s = strchr(s, c)) && strncmp(cmd->insert, s, cmd->insertlen)) in cmdopen()
167 cmd->firstarg = cmd->nextarg = p; in cmdopen()
168 cmd->laststr = cmd->nextstr = cmd->buf + n; in cmdopen()
169 cmd->argmax = argmax; in cmdopen()
170 cmd->flags = flags; in cmdopen()
171 cmd->offset = ((cmd->postarg = post) ? (argc - (post - argv)) : 0) + 3; in cmdopen()
172 return cmd; in cmdopen()
180 cmdflush(register Cmdarg_t* cmd) in cmdflush() argument
186 if (cmd->flags & CMD_EMPTY) in cmdflush()
187 cmd->flags &= ~CMD_EMPTY; in cmdflush()
188 else if (cmd->nextarg <= cmd->firstarg) in cmdflush()
190 if ((cmd->flags & CMD_MINIMUM) && cmd->argcount < cmd->argmax) in cmdflush()
192 if (!(cmd->flags & CMD_SILENT)) in cmdflush()
193 error(2, "%d arg command would be too long", cmd->argcount); in cmdflush()
196 cmd->total.args += cmd->argcount; in cmdflush()
197 cmd->total.commands++; in cmdflush()
198 cmd->argcount = 0; in cmdflush()
199 if (p = cmd->postarg) in cmdflush()
200 while (*cmd->nextarg++ = *p++); in cmdflush()
202 *cmd->nextarg = 0; in cmdflush()
203 if (s = cmd->insert) in cmdflush()
213 a = cmd->firstarg[0]; in cmdflush()
214 b = (char*)&cmd->nextarg[1]; in cmdflush()
215 e = cmd->nextstr; in cmdflush()
217 m = cmd->insertlen; in cmdflush()
218 for (n = 1; cmd->argv[n]; n++) in cmdflush()
219 if (t = cmd->insertarg[n]) in cmdflush()
221 cmd->argv[n] = b; in cmdflush()
247 if (!(cmd->flags & CMD_SILENT)) in cmdflush()
252 cmd->nextarg = cmd->firstarg; in cmdflush()
253 cmd->nextstr = cmd->laststr; in cmdflush()
254 if (cmd->flags & (CMD_QUERY|CMD_TRACE)) in cmdflush()
256 p = cmd->argv; in cmdflush()
260 if (!(cmd->flags & CMD_QUERY)) in cmdflush()
265 if (cmd->echo) in cmdflush()
267 n = (cmd->flags & CMD_NEWLINE) ? '\n' : ' '; in cmdflush()
268 for (p = cmd->argv + 1; s = *p++;) in cmdflush()
272 else if ((n = procrun(*cmd->argv, cmd->argv, PROC_ARGMOD|PROC_IGNOREPATH)) == -1) in cmdflush()
274 if (!(cmd->flags & CMD_SILENT)) in cmdflush()
276 error(ERROR_SYSTEM|2, "%s: command exec error", *cmd->argv); in cmdflush()
283 if (!(cmd->flags & CMD_SILENT)) in cmdflush()
286 else if (!(cmd->flags & CMD_IGNORE)) in cmdflush()
288 if (n == EXIT_QUIT && !(cmd->flags & CMD_SILENT)) in cmdflush()
301 cmdarg(register Cmdarg_t* cmd, const char* file, register int len) in cmdarg() argument
309 while ((cmd->nextstr -= len + 1) < (char*)(cmd->nextarg + cmd->offset)) in cmdarg()
311 if (cmd->nextarg == cmd->firstarg) in cmdarg()
316 if (i = cmdflush(cmd)) in cmdarg()
320 if (!(cmd->flags & CMD_IGNORE)) in cmdarg()
324 *cmd->nextarg++ = cmd->nextstr; in cmdarg()
325 memcpy(cmd->nextstr, file, len); in cmdarg()
326 cmd->nextstr[len] = 0; in cmdarg()
327 cmd->argcount++; in cmdarg()
328 if (cmd->argcount >= cmd->argmax && (i = cmdflush(cmd)) > r) in cmdarg()
339 cmdclose(Cmdarg_t* cmd) in cmdclose() argument
343 if ((cmd->flags & CMD_EXACT) && cmd->argcount < cmd->argmax) in cmdclose()
345 if (!(cmd->flags & CMD_SILENT)) in cmdclose()
346 error(2, "only %d arguments for last command", cmd->argcount); in cmdclose()
349 cmd->flags &= ~CMD_MINIMUM; in cmdclose()
350 n = cmdflush(cmd); in cmdclose()
351 free(cmd); in cmdclose()