Back-ported the rsbetween from zebra 1.4
[idzebra-moved-to-github.git] / data1 / d1_marc.c
index a1fc8d1..d9e2a83 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: d1_marc.c,v 1.4 2003-11-13 23:57:41 adam Exp $
+/* $Id: d1_marc.c,v 1.6.2.1 2004-11-30 16:39:42 oleg Exp $
    Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003
    Index Data Aps
 
@@ -174,7 +174,8 @@ static char *get_data(data1_node *n, int *len)
         {
             int i;
             *len = n->u.data.len;
-
+           
+           /* Fixme: don't delete leader/final whitespaces
             for (i = 0; i<*len; i++)
                 if (!d1_isspace(n->u.data.data[i]))
                     break;
@@ -183,6 +184,9 @@ static char *get_data(data1_node *n, int *len)
             *len = *len - i;
             if (*len > 0)
                 return n->u.data.data + i;
+           */
+           if (*len > 0)
+               return n->u.data.data;
         }
         if (n->which == DATA1N_tag)
             n = n->child;
@@ -231,16 +235,15 @@ static int nodetomarc(data1_handle dh,
     char *op;
     data1_node *field, *subf;
 
-    data1_pr_tree (dh, n, stdout);
-
-    yaz_log (LOG_DEBUG, "nodetomarc");
+#if 0
     data1_pr_tree(dh, n, stdout);
+#endif
+    yaz_log (LOG_DEBUG, "nodetomarc");
 
     memcpy (leader+5, p->record_status, 1);
     memcpy (leader+6, p->implementation_codes, 4);
     memint (leader+10, p->indicator_length, 1);
     memint (leader+11, p->identifier_length, 1);
-    memint (leader+12, base_address, 5);
     memcpy (leader+17, p->user_systems, 3);
     memint (leader+20, p->length_data_entry, 1);
     memint (leader+21, p->length_starting, 1);
@@ -322,6 +325,11 @@ static int nodetomarc(data1_handle dh,
        *buf = (char *)xrealloc(*buf, *size = len);
        
     op = *buf;
+
+    /* we know the base address now */
+    memint (leader+12, base_address, 5);
+
+    /* copy temp leader to real output buf op */
     memcpy (op, leader, 24);
     memint (op, len, 5);