+ if (!(f = yaz_fopen(zms->tabpath, fname, "r", zms->tabroot)))
+ {
+ yaz_log(YLOG_ERRNO|YLOG_FATAL, "%s", fname);
+ return ZEBRA_FAIL;
+ }
+ while ((argc = readconf_line(f, &lineno, line, 512, argv, 10)))
+ {
+ if (!yaz_matchstr(argv[0], "index") && argc == 2)
+ {
+ if (!zm)
+ zm = &zms->map_list;
+ else
+ zm = &(*zm)->next;
+ *zm = (struct zebra_map *) nmem_malloc(zms->nmem, sizeof(**zm));
+ (*zm)->reg_id = argv[1][0];
+ (*zm)->maptab_name = NULL;
+ (*zm)->maptab = NULL;
+ (*zm)->type = ZEBRA_MAP_TYPE_INDEX;
+ (*zm)->completeness = 0;
+ (*zm)->positioned = 1;
+ zms->no_maps++;
+ }
+ else if (!yaz_matchstr(argv[0], "sort") && argc == 2)
+ {
+ if (!zm)
+ zm = &zms->map_list;
+ else
+ zm = &(*zm)->next;
+ *zm = (struct zebra_map *) nmem_malloc(zms->nmem, sizeof(**zm));
+ (*zm)->reg_id = argv[1][0];
+ (*zm)->maptab_name = NULL;
+ (*zm)->type = ZEBRA_MAP_TYPE_SORT;
+ (*zm)->u.sort.entry_size = 80;
+ (*zm)->maptab = NULL;
+ (*zm)->completeness = 0;
+ (*zm)->positioned = 0;
+ zms->no_maps++;
+ }
+ else if (zm && !yaz_matchstr(argv[0], "charmap") && argc == 2)
+ {
+ (*zm)->maptab_name = nmem_strdup(zms->nmem, argv[1]);
+ }
+ else if (zm && !yaz_matchstr(argv[0], "completeness") && argc == 2)
+ {
+ (*zm)->completeness = atoi(argv[1]);
+ }
+ else if (zm && !yaz_matchstr(argv[0], "position") && argc == 2)
+ {
+ (*zm)->positioned = atoi(argv[1]);
+ }
+ else if (zm && !yaz_matchstr(argv[0], "entrysize") && argc == 2)
+ {
+ if ((*zm)->type == ZEBRA_MAP_TYPE_SORT)
+ (*zm)->u.sort.entry_size = atoi(argv[1]);
+ }