From: Adam Dickmeiss Date: Thu, 4 May 1995 10:40:06 +0000 (+0000) Subject: More work on Def-settings. X-Git-Url: http://git.indexdata.com/?a=commitdiff_plain;h=f933e3fe27e52c53ff9e453ab81f8d5d891a4512;p=egate.git More work on Def-settings. --- diff --git a/kernel/lang.dk.res b/kernel/lang.dk.res index fa14969..7e0e24b 100644 --- a/kernel/lang.dk.res +++ b/kernel/lang.dk.res @@ -1,17 +1,19 @@ # Email gateway - resources for danish conversation -# $Id: lang.dk.res,v 1.7 1995/04/19 10:46:18 adam Exp $ +# $Id: lang.dk.res,v 1.8 1995/05/04 10:40:06 adam Exp $ # # Beskeder gw.msg.subject: Din forespørgsel gw.msg.greeting: Europagate email-Z39.50 gateway, dansk udgave. -gw.msg.hits: fund +gw.msg.hits: fund i sæt gw.msg.z39errcode: Z39.50 fejl kode gw.msg.connect: Forbindelse oprettet til server gw.msg.databases: Databaser til stede gw.msg.database: Valgte databaser gw.msg.records: %d poster modtaget fra sæt %s +gw.msg.statusline: Søgesæt Fund Database Kommando # Fejlmeddelelser +gw.err.search: Søgefejl. Server har lukket forbindelsen. gw.err.no.database: Database skal vælges inden find-forespørgsel gw.err.no.set: Intet resultat genereret gw.err.nullbody: Ingen email-krop. Ingen forespørgsel foretaget. diff --git a/kernel/lang.uk.res b/kernel/lang.uk.res index c6c269b..be120c6 100644 --- a/kernel/lang.uk.res +++ b/kernel/lang.uk.res @@ -1,10 +1,10 @@ # Email gateway - resources for english conversation -# $Id: lang.uk.res,v 1.6 1995/04/19 10:46:18 adam Exp $ +# $Id: lang.uk.res,v 1.7 1995/05/04 10:40:07 adam Exp $ # # Messages gw.msg.subject: Your Z39.50 Query gw.msg.greeting: Europagate email-Z39.50 gateway -gw.msg.hits: hit(s) +gw.msg.hits: hit(s) in set gw.msg.z39errcode: Z39.50 error code gw.msg.connect: Connection established to target gw.msg.databases: Known databases @@ -12,6 +12,7 @@ gw.msg.database: Selected databases gw.msg.records: %d records found in set %s # Error messages +gw.err.search.fail: Search fail. Connection closed gw.err.no.database: You must choose database before issuing a find-query gw.err.no.target: No connection established - command ignored gw.err.no.set: No result-set generated diff --git a/kernel/main.c b/kernel/main.c index daa054a..8f72b91 100644 --- a/kernel/main.c +++ b/kernel/main.c @@ -2,7 +2,10 @@ * Europagate, 1995 * * $Log: main.c,v $ - * Revision 1.23 1995/05/03 16:34:18 adam + * Revision 1.24 1995/05/04 10:40:07 adam + * More work on Def-settings. + * + * Revision 1.23 1995/05/03 16:34:18 adam * CCL def command, i.e. user definitions - saved as resource files. * * Revision 1.22 1995/05/03 07:37:39 adam @@ -168,8 +171,14 @@ static void kernel_events (struct str_queue *queue) if (persist_flag && !continuation) load_p_state (info.userid); r = urp_command (queue); - if (persist_flag && r == 1) - del_p_state (info.userid); + if (r == 1) /* stop? */ + { + info.zass = NULL; /* delete association */ + *info.target = 0; /* indicate no target */ + read_kernel_res(); /* reread resources */ + if (persist_flag) + del_p_state (info.userid); /* remove persist file */ + } urp_end (); while (str_queue_deq (queue, 0, 0)) ; @@ -498,6 +507,8 @@ void read_kernel_res (void) if (v) { sprintf (fname, "%s/%s", path_prefix, v); + gw_log (GW_LOG_DEBUG, KERNEL_LOG, "Reading language resources %s", + fname); gw_res_merge (info.kernel_res, fname); } } diff --git a/kernel/urp.c b/kernel/urp.c index b608e1d..0e5ed8d 100644 --- a/kernel/urp.c +++ b/kernel/urp.c @@ -2,7 +2,10 @@ * Europagate, 1995 * * $Log: urp.c,v $ - * Revision 1.33 1995/05/03 16:34:19 adam + * Revision 1.34 1995/05/04 10:40:08 adam + * More work on Def-settings. + * + * Revision 1.33 1995/05/03 16:34:19 adam * CCL def command, i.e. user definitions - saved as resource files. * * Revision 1.32 1995/05/03 07:37:46 adam @@ -136,6 +139,9 @@ #include #include "kernel.h" +static void present (const char *set, int offset, int number, + struct ccl_token *format_token); + static char line_buf[LINE_MAX+1]; static void put_esc_str (const char *s) @@ -173,12 +179,12 @@ int reopen_target (void) "Connection established to"), info.hostname, info.port); if (*info.databases) - fprintf (reply_fd, "%s:\n%s\n", + fprintf (reply_fd, "%s: %s\n", gw_res_get (info.kernel_res, "gw.msg.databases", "Available databases"), info.databases); if (*info.database) - fprintf (reply_fd, "%s:\n%s\n", + fprintf (reply_fd, "%s: %s\n", gw_res_get (info.kernel_res, "gw.msg.database", "Selected databases"), info.database); @@ -330,6 +336,7 @@ static int exec_find (struct ccl_token *list, const char *search_str) const struct zass_searchent *p; struct gw_user_set *us; char setname[32]; + int autoshow; struct ccl_rpn_node *rpn; int error; @@ -374,11 +381,12 @@ static int exec_find (struct ccl_token *list, const char *search_str) gw_log (GW_LOG_DEBUG, KERNEL_LOG, "Searching in database %s", info.database ); assert (info.zass); - fprintf (reply_fd, "Searching in database %s\n", info.database); p = zass_p_search (info.zass, rpn, setname, info.database, info.sets); if (!p) { - fprintf (reply_fd, "Search fail\n"); + fprintf (reply_fd, "%s\n", + gw_res_get (info.kernel_res, "gw.err.search.fail", + "Search fail. Connection closed")); return -1; } if (p->errcode != -1) @@ -386,10 +394,24 @@ static int exec_find (struct ccl_token *list, const char *search_str) display_diag_error (p->errcode, p->errstring); return -2; } - fprintf (reply_fd, "%d %s\n", p->num, - gw_res_get (info.kernel_res, "gw.msg.hits", "hit(s)")); + fprintf (reply_fd, "%d %s %s\n", p->num, + gw_res_get (info.kernel_res, "gw.msg.hits", "hit(s) in set "), + setname); us = user_set_add (setname, p->num, info.database, rpn, 1, search_str); - fprintf (reply_fd, "Result-set %s created\n", setname); + autoshow = gw_res_int (info.kernel_res, "gw.auto.show", 0); + if (autoshow && p->num > 0) + { + if (autoshow > p->num) + { + present (setname, 1, p->num, NULL); + info.next_position = 1+p->num; + } + else + { + present (setname, 1, autoshow, NULL); + info.next_position = 1+autoshow; + } + } return 0; } @@ -430,7 +452,10 @@ static void exec_status_r (struct gw_user_set *sp) static int exec_status (struct ccl_token *list) { - fprintf (reply_fd, " Name Hits Database Find\n"); + fprintf (reply_fd, "%s\n", + gw_res_get (info.kernel_res, + "gw.msg.statusline", + " Name Hits Database Find")); exec_status_r (info.sets); return 0; } @@ -535,6 +560,9 @@ static void present (const char *set, int offset, int number, if (rec) { #if USE_FML + strcpy (format_str, + gw_res_get (info.kernel_res, + "gw.display.format", "")); if (format_token) { len = format_token->len; @@ -543,7 +571,7 @@ static void present (const char *set, int offset, int number, memcpy (format_str, format_token->name, len); format_str[len] = '\0'; } - if (info.fml && format_token && + if (info.fml && *format_str && (!strcmp (format_str, "0") || !strcmp (format_str, "1") || !strcmp(format_str, "2"))) { @@ -743,6 +771,18 @@ static int exec_show (struct ccl_token *list) return 0; } +static void show_def (void) +{ + fprintf (reply_fd, "format %s\n", gw_res_get + (info.kernel_res, "gw.display.format", "")); + fprintf (reply_fd, "autoshow %s\n", gw_res_get + (info.kernel_res, "gw.auto.show", "")); + fprintf (reply_fd, "defaultshow %s\n", gw_res_get + (info.kernel_res, "gw.default.show", "")); + fprintf (reply_fd, "language %s\n", gw_res_get + (info.kernel_res, "gw.language", "")); +} + static int exec_def (struct ccl_token *list) { const char *name = NULL; @@ -750,11 +790,12 @@ static int exec_def (struct ccl_token *list) char fname[256]; static struct command_word def_tab [] = { - { "reset", "reset" }, - { "f", "format"}, - { "maxshow", "maxshow" }, + { "reset", "reset" }, + { "show", "show" }, + { "f", "format"}, + { "autoshow", "autoshow" }, { "defaultshow", "defaultshow" }, - { "lang", "language" }, + { "lang", "language" }, { NULL, NULL } }; @@ -765,16 +806,7 @@ static int exec_def (struct ccl_token *list) info.userid); if (list->kind == CCL_TOK_EOL) - { - fprintf (reply_fd, "format %s\n", gw_res_get - (info.kernel_res, "gw.display.format", "")); - fprintf (reply_fd, "maxshow %s\n", gw_res_get - (info.kernel_res, "gw.max.show", "")); - fprintf (reply_fd, "default-show %s\n", gw_res_get - (info.kernel_res, "gw.default.show", "")); - fprintf (reply_fd, "language %s\n", gw_res_get - (info.kernel_res, "gw.language", "")); - } + show_def (); else { int setting_no = command_search (def_tab, list, "ccl.token."); @@ -790,26 +822,28 @@ static int exec_def (struct ccl_token *list) read_kernel_res (); return 0; } - list = list->next; - if (list->kind == CCL_TOK_EOL) + else if (setting_no == 2) { - fprintf (reply_fd, "Missing value\n"); - return -1; + show_def (); + return 0; } + list = list->next; + if (list->kind == CCL_TOK_EOL) + return 0; strncpy (value, list->name, 127); value[(size_t) list->len] = '\0'; switch (setting_no) { - case 2: - name = "gw.display.format"; - break; case 3: - name = "gw.max.show"; + name = "gw.display.format"; break; case 4: - name = "gw.default.show"; + name = "gw.auto.show"; break; case 5: + name = "gw.default.show"; + break; + case 6: name = "gw.language"; break; default: @@ -820,7 +854,7 @@ static int exec_def (struct ccl_token *list) gw_res_put (info.kernel_res, "gw.username", info.from_str, fname); gw_res_put (info.kernel_res, name, value, fname); gw_res_commit (info.kernel_res, fname); - if (setting_no == 5) + if (setting_no == 6) read_kernel_res (); } return 0; @@ -898,10 +932,7 @@ static int exec_command (const char *str, int *stop_flag) case 7: return exec_status (cmd->next); case 8: /* stop */ - info.zass = NULL; - *info.target = 0; *stop_flag = 1; - read_kernel_res(); return 0; case 9: return exec_target (cmd->next); @@ -941,11 +972,11 @@ int urp_start (int continuation, struct str_queue *queue) tty_init (stdout, 40, 70); if (*info.from_str) { - info.reply_fname = tempnam (gw_res_get (info.kernel_res, - "gw.reply.tmp.dir", NULL), - gw_res_get (info.kernel_res, - "gw.reply.tmp.prefix", "gwr")); - + info.reply_fname = (char *) + tempnam (gw_res_get (info.kernel_res, "gw.reply.tmp.dir", NULL), + gw_res_get (info.kernel_res, + "gw.reply.tmp.prefix", "gwr")); + reply_fd = fopen (info.reply_fname, "w"); if (!reply_fd) {