Added peer_name member for bend_init handler. Changed the YAZ
authorAdam Dickmeiss <adam@indexdata.dk>
Mon, 2 Oct 2000 11:07:44 +0000 (11:07 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Mon, 2 Oct 2000 11:07:44 +0000 (11:07 +0000)
client so that tcp: can be avoided in target spec.

client/client.c
include/yaz/backend.h
server/seshigh.c
util/marcdisp.c
util/marcdump.c

index 7f007ab..d7e71f8 100644 (file)
@@ -4,7 +4,11 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: client.c,v $
- * Revision 1.104  2000-09-04 08:58:15  adam
+ * Revision 1.105  2000-10-02 11:07:44  adam
+ * Added peer_name member for bend_init handler. Changed the YAZ
+ * client so that tcp: can be avoided in target spec.
+ *
+ * Revision 1.104  2000/09/04 08:58:15  adam
  * Added prefix yaz_ for most logging utility functions.
  *
  * Revision 1.103  2000/08/10 08:41:26  adam
@@ -560,7 +564,8 @@ static int cmd_base(char *arg)
 int cmd_open(char *arg)
 {
     void *add;
-    char type[100], addr[100], base[100];
+    char type_and_host[101], base[101];
+    char *host = 0;
     CS_TYPE t;
 
     if (conn)
@@ -576,37 +581,23 @@ int cmd_open(char *arg)
        }
     }
     base[0] = '\0';
-    if (!*arg || sscanf(arg, "%[^:]:%[^/]/%s", type, addr, base) < 2)
-    {
-        fprintf(stderr, "Usage: open (osi|tcp) ':' [tsel '/']host[':'port]\n");
-        return 0;
-    }
+    if (sscanf (arg, "%100[^/]/%100s", type_and_host, base) < 1)
+       return 0;
+    if (strncmp (type_and_host, "tcp:", 4) == 0)
+       host = type_and_host + 4;
+    else
+       host = type_and_host;
     if (*base)
         cmd_base (base);
-    if (!strcmp(type, "tcp"))
-    {
-       t = tcpip_type;
-       protocol = PROTO_Z3950;
-    }
-    else
-#ifdef USE_XTIMOSI
-    if (!strcmp(type, "osi"))
-    {
-        t = mosi_type;
-        protocol = PROTO_SR;
-    }
-    else
-#endif
-    {
-       fprintf(stderr, "Bad type: %s\n", type);
-       return 0;
-    }
+    t = tcpip_type;
+    protocol = PROTO_Z3950;
+
     if (!(conn = cs_create(t, 1, protocol)))
     {
         perror("cs_create");
         return 0;
     }
-    if (!(add = cs_straddr(conn, addr)))
+    if (!(add = cs_straddr(conn, host)))
     {
        perror(arg);
        return 0;
index 4a43f41..ca346ca 100644 (file)
  * OF THIS SOFTWARE.
  *
  * $Log: backend.h,v $
- * Revision 1.9  2000-08-31 10:20:12  adam
+ * Revision 1.10  2000-10-02 11:07:44  adam
+ * Added peer_name member for bend_init handler. Changed the YAZ
+ * client so that tcp: can be avoided in target spec.
+ *
+ * Revision 1.9  2000/08/31 10:20:12  adam
  * Added member request_format and output_format for backend fetch method.
  *
  * Revision 1.8  2000/08/31 09:51:25  adam
@@ -253,6 +257,7 @@ typedef struct bend_initrequest
     ODR stream;                /* encoding stream */
     ODR print;                 /* printing stream */
     Z_ReferenceId *referenceId;/* reference ID */
+    char *peer_name;           /* dns host of peer (client) */
     
     char *implementation_name;
     char *implementation_version;
index 11815cf..8c01796 100644 (file)
@@ -3,7 +3,11 @@
  * See the file LICENSE for details.
  *
  * $Log: seshigh.c,v $
- * Revision 1.108  2000-09-04 08:58:15  adam
+ * Revision 1.109  2000-10-02 11:07:44  adam
+ * Added peer_name member for bend_init handler. Changed the YAZ
+ * client so that tcp: can be avoided in target spec.
+ *
+ * Revision 1.108  2000/09/04 08:58:15  adam
  * Added prefix yaz_ for most logging utility functions.
  *
  * Revision 1.107  2000/08/31 10:20:12  adam
@@ -893,6 +897,9 @@ static Z_APDU *process_initRequest(association *assoc, request *reqb)
     assoc->init->bend_scan = NULL;
     assoc->init->bend_segment = NULL;
     assoc->init->bend_fetch = NULL;
+    
+    assoc->init->peer_name =
+       odr_strdup (assoc->decode, cs_addrstr(assoc->client_link));
     if (!(binitres = (*cb->bend_init)(assoc->init)))
     {
        yaz_log(LOG_WARN, "Bad response from backend.");
index ecbd86c..a0ae412 100644 (file)
@@ -3,7 +3,11 @@
  * See the file LICENSE for details.
  *
  * $Log: marcdisp.c,v $
- * Revision 1.11  2000-02-29 13:44:55  adam
+ * Revision 1.12  2000-10-02 11:07:44  adam
+ * Added peer_name member for bend_init handler. Changed the YAZ
+ * client so that tcp: can be avoided in target spec.
+ *
+ * Revision 1.11  2000/02/29 13:44:55  adam
  * Check for config.h (currently not generated).
  *
  * Revision 1.10  2000/02/05 10:47:19  adam
@@ -63,7 +67,14 @@ int marc_display_ex (const char *buf, FILE *outf, int debug)
         outf = stdout;
     record_length = atoi_n (buf, 5);
     if (record_length < 25)
+    {
+       if (debug)
+       {
+          fprintf (outf, "Record length %d - aborting\n", record_length);
+
+       }
         return -1;
+    }
     if (isdigit(buf[10]))
         indicator_length = atoi_n (buf+10, 1);
     else
index 9adc585..551bd07 100644 (file)
@@ -4,7 +4,11 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: marcdump.c,v $
- * Revision 1.11  2000-07-04 08:53:22  adam
+ * Revision 1.12  2000-10-02 11:07:45  adam
+ * Added peer_name member for bend_init handler. Changed the YAZ
+ * client so that tcp: can be avoided in target spec.
+ *
+ * Revision 1.11  2000/07/04 08:53:22  adam
  * Fixed bug.
  *
  * Revision 1.10  2000/02/29 13:44:55  adam
@@ -69,12 +73,18 @@ int main (int argc, char **argv)
     char *prog = *argv;
     int count = 0;
     int no = 0;
+    FILE *cfile = 0;
 
-    while ((ret = options("v", argv, argc, &arg)) != -2)
+    while ((ret = options("vc:", argv, argc, &arg)) != -2)
     {
        no++;
         switch (ret)
         {
+       case 'c':
+           if (cfile)
+               fclose (cfile);
+           cfile = fopen (arg, "w");
+           break;
         case 0:
            inf = fopen (arg, "r");
            if (!inf)
@@ -109,11 +119,37 @@ int main (int argc, char **argv)
                         prog, arg, strerror (errno));
                exit (1);
            }
+           if (cfile)
+           {
+               fprintf (cfile, "char *marc_records[] = {\n");
+           }
            for (p = buf; (ret = marc_display_ex (p, stdout, verbose)) > 0;)
            {
+               if (cfile)
+               {
+                   int i;
+                   if (p != buf)
+                       fprintf (cfile, ",");
+                   fprintf (cfile, "{\n");
+                   for (i = 0; i<ret; i++)
+                   {
+                       if ((i & 15) == 0)
+                           fprintf (cfile, "  \"");
+                       fprintf (cfile, "\\x%02X", p[i] & 255);
+                       
+                       if (i < ret - 1 && (i & 15) == 15)
+                           fprintf (cfile, "\"\n");
+                       
+                   }
+                   fprintf (cfile, "\"\n}");
+               }
                p += ret;
                count++;
            }
+           if (cfile)
+           {
+               fprintf (cfile, "};\n");
+           }
            fclose (inf);
            xfree (buf);
             break;
@@ -121,10 +157,12 @@ int main (int argc, char **argv)
            verbose++;
             break;
         default:
-            fprintf (stderr, "Usage: %s [-v] file...\n", prog);
+            fprintf (stderr, "Usage: %s [-c cfile] [-v] file...\n", prog);
             exit (1);
         }
     }
+    if (cfile)
+       fclose (cfile);
     if (!no)
     {
        fprintf (stderr, "Usage: %s [-v] file...\n", prog);