Changed the index type to a string everywhere.
[idzebra-moved-to-github.git] / index / untrans.c
index f17f6e2..0551e3c 100644 (file)
@@ -1,5 +1,5 @@
-/* $Id: untrans.c,v 1.1 2006-09-21 08:39:14 adam Exp $
-   Copyright (C) 1995-2006
+/* $Id: untrans.c,v 1.5 2007-10-31 16:56:14 adam Exp $
+   Copyright (C) 1995-2007
    Index Data ApS
 
 This file is part of the Zebra server.
@@ -28,14 +28,14 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #include "index.h"
 #include <charmap.h>
 
-void zebra_term_untrans(ZebraHandle zh, int reg_type,
+void zebra_term_untrans(ZebraHandle zh, const char *index_type,
                        char *dst, const char *src)
 {
+    zebra_map_t zm = zebra_map_get(zh->reg->zebra_maps, index_type);
     int len = 0;
     while (*src)
     {
-        const char *cp = zebra_maps_output(zh->reg->zebra_maps,
-                                          reg_type, &src);
+        const char *cp = zebra_maps_output(zm, &src);
        if (!cp)
        {
            if (len < IT_MAX_WORD-1)
@@ -49,13 +49,14 @@ void zebra_term_untrans(ZebraHandle zh, int reg_type,
     dst[len] = '\0';
 }
 
-void zebra_term_untrans_iconv(ZebraHandle zh, NMEM stream, int reg_type,
+void zebra_term_untrans_iconv(ZebraHandle zh, NMEM stream, 
+                              const char *index_type,
                              char **dst, const char *src)
 {
     char term_src[IT_MAX_WORD];
     char term_dst[IT_MAX_WORD];
     
-    zebra_term_untrans (zh, reg_type, term_src, src);
+    zebra_term_untrans (zh, index_type, term_src, src);
 
     if (zh->iconv_from_utf8 != 0)
     {
@@ -71,7 +72,10 @@ void zebra_term_untrans_iconv(ZebraHandle zh, NMEM stream, int reg_type,
         if (ret == (size_t)(-1))
             len = 0;
         else
+        {
+            yaz_iconv (zh->iconv_from_utf8, 0, 0, &outbuf, &outleft);
             len = outbuf - term_dst;
+        }
         *dst = nmem_malloc(stream, len + 1);
         if (len > 0)
             memcpy (*dst, term_dst, len);