More work on Def-settings.
authorAdam Dickmeiss <adam@indexdata.dk>
Thu, 4 May 1995 10:40:06 +0000 (10:40 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Thu, 4 May 1995 10:40:06 +0000 (10:40 +0000)
kernel/lang.dk.res
kernel/lang.uk.res
kernel/main.c
kernel/urp.c

index fa14969..7e0e24b 100644 (file)
@@ -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.
index c6c269b..be120c6 100644 (file)
@@ -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
index daa054a..8f72b91 100644 (file)
@@ -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);
         }
     }
index b608e1d..0e5ed8d 100644 (file)
@@ -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
 #include <strqueue.h>
 #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)
         {