Bug fix in iso2709 module.
[egate.git] / util / iso2709.c
index 927df07..1bd46e3 100644 (file)
@@ -1,14 +1,22 @@
 /*
-   gw-res.c: Iso2709 record management
+   Iso2709 record management
 
    Europagate, 1994-1995.
 
    $Log: iso2709.c,v $
-   Revision 1.2  1995/02/10 16:50:32  adam
-   Indicator field moved to 'struct iso2709_dir' from 'struct
-   iso2709_field'.
-   Function iso2709_rm implemented - to delete a MARC record.
+   Revision 1.4  1995/02/15 17:45:44  adam
+   Bug fix in iso2709 module.
 
+ * Revision 1.3  1995/02/10  17:05:18  adam
+ * New function iso2709_display to display MARC records in a
+ * line-by-line format. The iso2709_cvt function no longer
+ * prints the record to stderr.
+ *
+ * Revision 1.2  1995/02/10  16:50:32  adam
+ * Indicator field moved to 'struct iso2709_dir' from 'struct
+ * iso2709_field'.
+ * Function iso2709_rm implemented - to delete a MARC record.
+ *
  * Revision 1.1.1.1  1995/02/09  17:27:11  adam
  * Initial version of email gateway under CVS control.
  *
@@ -115,10 +123,6 @@ Iso2709Rec iso2709_cvt (const char *buf)
     }
     pos++;
     /* deal with datafields */
-#if 0
-    fprintf (stderr, "indicator_len=%d, identifier_len=%d\n", 
-             p->indicator_length, p->identifier_length);
-#endif
     for (dp = p->directory; dp; dp = dp->next)
     {
         int tag00;
@@ -142,9 +146,6 @@ Iso2709Rec iso2709_cvt (const char *buf)
             tag00 = 0;
         else
             tag00 = 1;
-        fprintf (stderr, "%s", dp->tag);
-        if (dp->indicator)
-            fprintf (stderr, " %s", dp->indicator);
         while (1)
         {
             int dpos_n;
@@ -159,24 +160,21 @@ Iso2709Rec iso2709_cvt (const char *buf)
                 (*fpp)->identifier = NULL;
 
             dpos_n = dpos;
-            while (buf[dpos_n] != ISO2709_FS && buf[dpos_n] != ISO2709_IDFS)
+            while (buf[dpos_n] != ISO2709_FS && buf[dpos_n] != ISO2709_IDFS &&
+                   buf[dpos_n] != ISO2709_RS)
                 dpos_n++;
 
             (*fpp)->data = malloc (dpos_n - dpos + 1);
             strncpyx ((*fpp)->data, buf+dpos, dpos_n - dpos);
             dpos = dpos_n;
             
-            if ((*fpp)->identifier)
-                fprintf (stderr, " *%s", (*fpp)->identifier);
-            fprintf (stderr, " %s", (*fpp)->data);
-            if (buf[dpos] == ISO2709_FS)
+            if (buf[dpos] == ISO2709_FS || buf[dpos] == ISO2709_RS)
                 break;
             
             fpp = &(*fpp)->next;
             *fpp = malloc (sizeof(**fpp));
             (*fpp)->next = NULL;
         }
-        fprintf (stderr, "\n");
     }
     return p;
 }