Esempio n. 1
0
int
docmd(void)
{
	char *p = NULL;
	const struct cmd_table *ct = cmd_table, *cs;

	cmd.argc = 1;
	if (cmd.cmd == NULL) {

		/* command */
		for (p = cmd_buf; *p == ' ' || *p == '\t'; p++)
			;
		if (*p == '#' || *p == '\0') { /* comment or empty string */
#ifdef DEBUG
			printf("rem\n");
#endif
			return 0;
		}
		ct = cmd_table;
		cs = NULL;
		cmd.argv[cmd.argc] = p; /* in case it's shortcut boot */
		p = whatcmd(&ct, p);
		if (ct == NULL) {
			cmd.argc++;
			ct = cmd_table;
		} else if (ct->cmd_type == CMDT_SET && p != NULL) {
			cs = cmd_set;
#ifdef MACHINE_CMD
		} else if (ct->cmd_type == CMDT_MDC && p != NULL) {
			cs = MACHINE_CMD;
#endif
		}

		if (cs != NULL) {
			p = whatcmd(&cs, p);
			if (cs == NULL) {
				printf("%s: syntax error\n", ct->cmd_name);
				return 0;
			}
			ct = cs;
		}
		cmd.cmd = ct;
	}

	cmd.argv[0] = ct->cmd_name;
	while (p && cmd.argc+1 < sizeof(cmd.argv) / sizeof(cmd.argv[0])) {
		cmd.argv[cmd.argc++] = p;
		p = nextword(p);
	}
	cmd.argv[cmd.argc] = NULL;

#ifdef REGRESS
	printf("%s %s\n", cmd.argv[0],
	    (cmd.argv[1] == NULL) ? "(null)" : cmd.argv[1]);
#else
	return (*cmd.cmd->cmd_exec)();
#endif
}
Esempio n. 2
0
File: aoi.c Progetto: lhw/wargame
int
handlecommand(int c, char *buf)
{
	char *msg = "unknown command\n";
	switch(whatcmd(buf)) {
	case CMD_LIST:
		dolist(c);
		break;
	case CMD_VIEW:
		doview(c, buf);
		break;
	case CMD_HELP:
		dohelp(c, buf);
		break;
	case CMD_NONE:
		send(c, msg, strlen(msg), 0);
		break;
	}
}