\brief MARC map implementation
*/
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
mmcur = marcmap;
while (mmcur != NULL)
{
- if (field = marchash_get_field(marchash, mmcur->field, NULL))
- do
+ field = 0;
+ while ((field = marchash_get_field(marchash, mmcur->field, field)) != 0)
+ {
+ // field value
+ if ((mmcur->subfield == '$') && (s = field->val))
{
- // field value
- if ((mmcur->subfield == '$') && (s = field->val))
- {
- meta_node = xmlNewChild(xml_out_root, ns_pz, BAD_CAST "metadata", s);
- xmlSetProp(meta_node, BAD_CAST "type", mmcur->pz);
- }
- // catenate all subfields
- else if ((mmcur->subfield == '*') && (s = marchash_catenate_subfields(field, " ", nmem)))
- {
- meta_node = xmlNewChild(xml_out_root, ns_pz, BAD_CAST "metadata", s);
- xmlSetProp(meta_node, BAD_CAST "type", mmcur->pz);
- }
- // subfield value
- else if (mmcur->subfield)
+ meta_node = xmlNewChild(xml_out_root, ns_pz, BAD_CAST "metadata", BAD_CAST s);
+ xmlSetProp(meta_node, BAD_CAST "type", BAD_CAST mmcur->pz);
+ }
+ // catenate all subfields
+ else if ((mmcur->subfield == '*') && (s = marchash_catenate_subfields(field, " ", nmem)))
+ {
+ meta_node = xmlNewChild(xml_out_root, ns_pz, BAD_CAST "metadata", BAD_CAST s);
+ xmlSetProp(meta_node, BAD_CAST "type", BAD_CAST mmcur->pz);
+ }
+ // subfield value
+ else if (mmcur->subfield)
+ {
+ subfield = 0;
+ while ((subfield =
+ marchash_get_subfield(mmcur->subfield,
+ field, subfield)) != 0)
{
- if (subfield = marchash_get_subfield(mmcur->subfield, field, NULL))
- do
- if (s = subfield->val)
- {
- meta_node = xmlNewChild(xml_out_root, ns_pz, BAD_CAST "metadata", s);
- xmlSetProp(meta_node, BAD_CAST "type", mmcur->pz);
- }
- while (subfield = marchash_get_subfield(mmcur->subfield, field, subfield));
+ if ((s = subfield->val) != 0)
+ {
+ meta_node = xmlNewChild(xml_out_root, ns_pz, BAD_CAST "metadata", BAD_CAST s);
+ xmlSetProp(meta_node, BAD_CAST "type", BAD_CAST mmcur->pz);
+ }
}
-
}
- while (field = marchash_get_field(marchash, mmcur->field, field));
+
+ }
mmcur = mmcur->next;
}