From 584ea503ec3ce2e29f5a674bc702978c9f3a9fde Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Tue, 11 Jul 1995 12:28:53 +0000 Subject: [PATCH] New functions ccl_token_simple and ccl_token_del used. --- kernel/urp.c | 73 ++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 51 insertions(+), 22 deletions(-) diff --git a/kernel/urp.c b/kernel/urp.c index 313d7e6..33a426e 100644 --- a/kernel/urp.c +++ b/kernel/urp.c @@ -45,7 +45,10 @@ * Europagate, 1995 * * $Log: urp.c,v $ - * Revision 1.43 1995/07/11 11:49:13 adam + * Revision 1.44 1995/07/11 12:28:53 adam + * New functions ccl_token_simple and ccl_token_del used. + * + * Revision 1.43 1995/07/11 11:49:13 adam * LINE_MAX renamed to STR_LINE_MAX. * * Revision 1.42 1995/07/03 12:59:29 adam @@ -270,14 +273,13 @@ struct command_word { char *resource_suffix; }; -static int command_search (struct command_word *tab, struct ccl_token *cmd, -const char *resource_prefix) +static int command_search_str (struct command_word *tab, const char *cmd_name, + int cmd_len, const char *resource_prefix) { int no = 1; assert (resource_prefix); assert (tab); - assert (cmd); while (tab->default_value) { char *cp, command_names[60]; @@ -296,8 +298,8 @@ const char *resource_prefix) if ((split = strchr (cp, ' '))) *split = '\0'; - if (cmd->len == strlen(cp) && - !memcmp (cmd->name, cp, cmd->len)) + if (cmd_len == strlen(cp) && + !memcmp (cmd_name, cp, cmd_len)) return no; if (!split) break; @@ -309,6 +311,12 @@ const char *resource_prefix) return 0; } +static int command_search (struct command_word *tab, struct ccl_token *cmd, + const char *resource_prefix) +{ + return command_search_str (tab, cmd->name, cmd->len, resource_prefix); +} + static struct error_no_struct { int no; char *resource_name; @@ -980,12 +988,16 @@ static int exec_command (const char *str, int *stop_flag) { NULL, NULL } }; - struct ccl_token *cmd = ccl_tokenize (str); + struct ccl_token *cmd; + const char *cp = str; int no; + while (*cp != ' ' && *cp != '\n' && *cp != '\t' && *cp != '\r') + cp++; + *stop_flag = 0; - if (cmd->kind != CCL_TOK_EOL && - (no = command_search (command_tab, cmd, "ccl.command."))) + no = command_search_str (command_tab, str, cp-str, "ccl.command."); + if (no) { if (no == 1 || no == 2 || no == 3) /* find/show/base? */ { @@ -1005,33 +1017,50 @@ static int exec_command (const char *str, int *stop_flag) fprintf (reply_fd, "\n> %s\n", str); switch (no) { - case 1: - return exec_find (cmd->next, str); - case 2: - return exec_show (cmd->next); - case 3: - return exec_base (cmd->next); - case 4: - return exec_help (cmd->next); + case 1: /* find */ + cmd = ccl_tokenize (cp); + exec_find (cmd, str); + break; + case 2: /* show */ + cmd = ccl_tokenize (cp); + exec_show (cmd); + break; + case 3: /* base */ + cmd = ccl_token_simple (cp); + exec_base (cmd); + break; + case 4: /* help */ + cmd = ccl_token_simple (cp); + exec_help (cmd); + break; case 6: /* continue */ *stop_flag = 2; return 0; case 7: /* status */ - return exec_status (cmd->next); + exec_status (cmd); + return 0; case 8: /* stop */ *stop_flag = 1; return 0; case 9: /* target */ - return exec_target (cmd->next); + cmd = ccl_token_simple (cp); + exec_target (cmd); + break; case 10: /* def */ - return exec_def (cmd->next); - case 11: - return exec_account (cmd->next); + cmd = ccl_token_simple (cp); + exec_def (cmd); + break; + case 11: /* account */ + cmd = ccl_token_simple (cp); + exec_account (cmd); + break; default: + cmd = NULL; fprintf (reply_fd, "%s\n", gw_res_get (info.kernel_res, "gw.err.unimplemented", "Not implemented yet")); } + ccl_token_del (cmd); } else { -- 1.7.10.4