In zebra_register_open, only call zebraExplain_open if all previous
[idzebra-moved-to-github.git] / index / zebraapi.c
index 3296732..35d02d8 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: zebraapi.c,v 1.206 2006-03-26 14:17:01 adam Exp $
+/* $Id: zebraapi.c,v 1.209 2006-03-31 08:51:26 adam Exp $
    Copyright (C) 1995-2005
    Index Data ApS
 
@@ -297,7 +297,7 @@ struct zebra_register *zebra_register_open(ZebraService zs, const char *name,
     yaz_log (YLOG_DEBUG, "zebra_register_open rw=%d useshadow=%d p=%p n=%s rp=%s",
              rw, useshadow, reg, name, reg_path ? reg_path : "(none)");
     
-    reg->dh = data1_createx (DATA1_FLAG_XML);
+    reg->dh = data1_create();
     if (!reg->dh)
     {
        xfree(reg->name);
@@ -332,7 +332,9 @@ struct zebra_register *zebra_register_open(ZebraService zs, const char *name,
     data1_set_tabroot (reg->dh, reg_path);
     reg->recTypes = recTypes_init (zs->record_classes, reg->dh);
 
-    if ((reg->zebra_maps = zebra_maps_open (res, reg_path)) == 0)
+    reg->zebra_maps =
+       zebra_maps_open(res, reg_path, profilePath);
+    if (!reg->zebra_maps)
     {
        recTypes_destroy(reg->recTypes);
        bfs_destroy(reg->bfs);
@@ -341,7 +343,6 @@ struct zebra_register *zebra_register_open(ZebraService zs, const char *name,
        xfree(reg);
        return 0;
     }
-
     reg->rank_classes = NULL;
 
     reg->key_buf = 0;
@@ -376,6 +377,16 @@ struct zebra_register *zebra_register_open(ZebraService zs, const char *name,
     if (!strcmp (recordCompression, "bzip2"))
        record_compression = REC_COMPRESS_BZIP2;
 
+    if (1)
+    {
+       const char *index_fname = res_get_def(res, "index", "default.idx");
+       if (index_fname && *index_fname)
+       {
+           if (zebra_maps_read_file(reg->zebra_maps, index_fname) != ZEBRA_OK)
+               ret = ZEBRA_FAIL;
+       }
+    }
+
     if (!(reg->records = rec_open (reg->bfs, rw, record_compression)))
     {
        yaz_log (YLOG_WARN, "rec_open failed");
@@ -448,7 +459,7 @@ struct zebra_register *zebra_register_open(ZebraService zs, const char *name,
            ret = ZEBRA_FAIL;
        }
     }
-    if (reg->records)
+    if (ret == ZEBRA_OK)
     {
        reg->zei = zebraExplain_open(reg->records, reg->dh,
                                     res, rw, reg,