From e235e309ee9ffa4f0e13afafb536fa2cac517e7a Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Thu, 18 Jan 1996 13:54:47 +0000 Subject: [PATCH] Help gives help information about individual commands. Status without arguments gives list of available predefined targets. --- kernel/default.res | 5 +- kernel/urp.c | 146 ++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 112 insertions(+), 39 deletions(-) diff --git a/kernel/default.res b/kernel/default.res index 5a3cf47..d82bb18 100644 --- a/kernel/default.res +++ b/kernel/default.res @@ -1,5 +1,5 @@ # Email gateway - general kernel resources -# $Id: default.res,v 1.28 1995/07/20 08:16:36 adam Exp $ +# $Id: default.res,v 1.29 1996/01/18 13:54:47 adam Exp $ # # Important directories, programs, etc. gw.reply.mta: /usr/lib/sendmail @@ -200,6 +200,9 @@ gw.help.def:\n gw.help.account:\n \taccount \n Sets authentication string. Necessary for some targets.\n +gw.help.status:\n + \tstatus\n + Displays information about previous result sets and how they were obtained.\n gw.help.general: You have triggered the "help"-information on the Email gateway. \n\n This preliminary service is a very early alpha release of a Email service diff --git a/kernel/urp.c b/kernel/urp.c index 1f1315b..ff59ae0 100644 --- a/kernel/urp.c +++ b/kernel/urp.c @@ -45,7 +45,11 @@ * Europagate, 1995 * * $Log: urp.c,v $ - * Revision 1.46 1995/07/28 10:51:09 adam + * Revision 1.47 1996/01/18 13:54:48 adam + * Help gives help information about individual commands. + * Status without arguments gives list of available predefined targets. + * + * Revision 1.46 1995/07/28 10:51:09 adam * Bug fix: account from previous session had effect when new target command * was executed. * @@ -380,33 +384,83 @@ static void help_general (void) "Commands available in this service:\n")); } +static struct command_word command_tab [] = +{ +{ "find", "find"}, +{ "show", "show"}, +{ "base", "base" }, +{ "help", "help" }, +{ "info", "info" }, +{ "continue", "continue" }, +{ "status", "status" }, +{ "stop", "stop" }, +{ "target", "target" }, +{ "def", "def" }, +{ "account", "account" }, +{ NULL, NULL } +}; + + static int exec_help (struct ccl_token *list) { + int no = 0; static char *sep = "-------------------------------\\n"; - help_general (); + if (list->kind != CCL_TOK_EOL) + no = command_search_str (command_tab, list->name, list->len, + "ccl.command."); + if (!no) + help_general (); - put_esc_str (sep); - put_esc_str (gw_res_get (info.kernel_res, "gw.help.target", - "target - selects a given target\n")); + if (!no || no == 9) + { + put_esc_str (sep); + put_esc_str (gw_res_get (info.kernel_res, "gw.help.target", + "target - selects a given target\n")); + } - put_esc_str (sep); - put_esc_str (gw_res_get (info.kernel_res, "gw.help.base", + if (!no || no == 3) + { + put_esc_str (sep); + put_esc_str (gw_res_get (info.kernel_res, "gw.help.base", "base .. - selects databases\n")); + } + + if (!no || no == 1) + { + put_esc_str (sep); + put_esc_str (gw_res_get (info.kernel_res, "gw.help.find", + "find - performs a search\n")); + } + + if (!no || no == 2) + { + put_esc_str (sep); + put_esc_str (gw_res_get (info.kernel_res, "gw.help.show", + "show - retrieves and displays " + "records\n")); + } + + if (!no || no == 10) + { + put_esc_str (sep); + put_esc_str (gw_res_get (info.kernel_res, "gw.help.def", + "def user definitons\n")); + } + + if (!no || no == 11) + { + put_esc_str (sep); + put_esc_str (gw_res_get (info.kernel_res, "gw.help.account", + "account sets authentication\n")); + } + + if (!no || no == 7) + { + put_esc_str (sep); + put_esc_str (gw_res_get (info.kernel_res, "gw.help.status", + "status status information\n")); + } - put_esc_str (sep); - put_esc_str (gw_res_get (info.kernel_res, "gw.help.find", - "find - performs a search request\n")); - - put_esc_str (sep); - put_esc_str (gw_res_get (info.kernel_res, "gw.help.show", - "show - retrieves and displays " - "records\n")); - put_esc_str (sep); - put_esc_str (gw_res_get (info.kernel_res, "gw.help.def", - "def sets/gets definitons\n")); - put_esc_str (sep); - put_esc_str (gw_res_get (info.kernel_res, "gw.help.account", - "account sets authentication string\n")); return 0; } @@ -520,11 +574,43 @@ static int exec_account (struct ccl_token *list) return 0; } +void handle_target_list (const char *name, const char *value) +{ + GwRes res; + const char *p; + + if (strlen(name) < 10) + return; + if (memcmp (name, "gw.target.", 10)) + return; + fprintf (reply_fd, "%s\n", name+10); + res = gw_res_init (); + gw_res_merge (res, value); + p = gw_res_get (res, "gw.description", NULL); + if (p) + { + put_esc_str (p); + put_esc_str ("\\n"); + } + p = gw_res_get (res, "gw.databases", NULL); + if (p) + fprintf (reply_fd, " Databases: %s\n", p); + fprintf (reply_fd, "\n"); + gw_res_close (res); +} + +static int exec_target_list (void) +{ + gw_res_trav (info.kernel_res, NULL, handle_target_list); + fprintf (reply_fd, "\n"); + return 0; +} + static int exec_target (struct ccl_token *list) { int len; if (list->kind == CCL_TOK_EOL) - return -1; + return exec_target_list (); len = list->len; memcpy (info.target, list->name, len); info.target [len] = '\0'; @@ -983,22 +1069,6 @@ static int exec_def (struct ccl_token *list) */ static int exec_command (const char *str, int *stop_flag) { - static struct command_word command_tab [] = - { - { "find", "find"}, - { "show", "show"}, - { "base", "base" }, - { "help", "help" }, - { "info", "info" }, - { "continue", "continue" }, - { "status", "status" }, - { "stop", "stop" }, - { "target", "target" }, - { "def", "def" }, - { "account", "account" }, - { NULL, NULL } - }; - struct ccl_token *cmd; const char *cp = str; int no; -- 1.7.10.4