Updated.
[yaz-moved-to-github.git] / retrieval / d1_marc.c
index 69a06d6..dd35a5e 100644 (file)
@@ -4,7 +4,13 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: d1_marc.c,v $
- * Revision 1.8  1997-09-17 12:10:37  adam
+ * Revision 1.10  1997-09-30 11:50:04  adam
+ * Added handler data1_get_map_buf that is used by data1_nodetomarc.
+ *
+ * Revision 1.9  1997/09/24 13:35:45  adam
+ * Added two members to data1_marctab to ease reading of weird MARC records.
+ *
+ * Revision 1.8  1997/09/17 12:10:37  adam
  * YAZ version 1.4.
  *
  * Revision 1.7  1997/09/05 09:50:57  adam
@@ -71,6 +77,8 @@ data1_marctab *data1_read_marctab (data1_handle dh, const char *file)
     strcpy(res->implementation_codes, "    ");
     res->indicator_length = 2;
     res->identifier_length = 2;
+    res->force_indicator_length = -1;
+    res->force_identifier_length = -1;
     strcpy(res->user_systems, "z  ");
 
     while ((argc = readconf_line(f, line, 512, argv, 50)))
@@ -133,6 +141,24 @@ data1_marctab *data1_read_marctab (data1_handle dh, const char *file)
            }
            strncpy(res->future_use, argv[1], 2);
        }
+       else if (!strcmp(argv[0], "force-indicator-length"))
+       {
+           if (argc != 2)
+           {
+               logf(LOG_WARN, "%s: Bad future-use");
+               continue;
+           }
+           res->force_indicator_length = atoi(argv[1]);
+       }
+       else if (!strcmp(argv[0], "force-identifier-length"))
+       {
+           if (argc != 2)
+           {
+               logf(LOG_WARN, "%s: Bad future-use");
+               continue;
+           }
+           res->force_identifier_length = atoi(argv[1]);
+       }
        else
            logf(LOG_WARN, "%s: Bad directive '%s'", file, argv[0]);
 
@@ -199,6 +225,7 @@ static int nodetomarc(data1_marctab *p, data1_node *n, int selected,
     char *op;
     data1_node *field, *subf;
 
+    logf (LOG_DEBUG, "nodetomarc");
     for (field = n->child; field; field = field->next)
     {
        if (field->which != DATA1N_tag)
@@ -310,7 +337,7 @@ char *data1_nodetomarc(data1_handle dh, data1_marctab *p, data1_node *n,
                       int selected, int *len)
 {
     int *size;
-    char **buf = data1_get_read_buf (dh, &size);
+    char **buf = data1_get_map_buf (dh, &size);
 
     *len = nodetomarc(p, n, selected, buf, size);
     return *buf;