Implemented the 'equivalent' directive for .chr-files.
[idzebra-moved-to-github.git] / util / zebramap.c
index df1a50c..0a95eda 100644 (file)
@@ -1,6 +1,6 @@
-/* $Id: zebramap.c,v 1.35 2004-11-19 10:27:18 heikki Exp $
-   Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
-   Index Data Aps
+/* $Id: zebramap.c,v 1.40 2005-03-11 17:56:36 adam Exp $
+   Copyright (C) 1995-2005
+   Index Data ApS
 
 This file is part of the Zebra server.
 
@@ -20,13 +20,13 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 02111-1307, USA.
 */
 
-
-
 #include <assert.h>
+#include <stdlib.h>
 #include <ctype.h>
 
-#include <yaz/yaz-util.h>
 #include <charmap.h>
+#include <yaz/yaz-util.h>
+
 #include <idzebra/zebramap.h>
 
 #define ZEBRA_MAP_TYPE_SORT  1
@@ -305,6 +305,32 @@ const char **zebra_maps_input (ZebraMaps zms, unsigned reg_id,
     return zms->temp_map_ptr;
 }
 
+const char **zebra_maps_search(ZebraMaps zms, unsigned reg_id,
+                              const char **from, int len,  int *q_map_match)
+{
+    chrmaptab maptab;
+    
+    *q_map_match = 0;
+    maptab = zebra_charmap_get (zms, reg_id);
+    if (maptab)
+    {
+       const char **map;
+       map = chr_map_q_input(maptab, from, len, 0);
+       if (map && map[0])
+       {
+           *q_map_match = 1;
+           return map;
+       }
+       map = chr_map_input(maptab, from, len, 0);
+       if (map)
+           return map;
+    }
+    zms->temp_map_str[0] = **from;
+
+    (*from)++;
+    return zms->temp_map_ptr;
+}
+
 const char *zebra_maps_output(ZebraMaps zms, unsigned reg_id,
                              const char **from)
 {