Finished.
[idzebra-moved-to-github.git] / util / zebramap.c
index d2cd37f..4361fda 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: zebramap.c,v 1.73 2007-12-07 14:09:10 adam Exp $
+/* $Id: zebramap.c,v 1.75 2007-12-13 18:08:26 adam Exp $
    Copyright (C) 1995-2007
    Index Data ApS
 
@@ -230,8 +230,16 @@ static int parse_command(zebra_maps_t zms, int argc, char **argv,
     }
     else if (!yaz_matchstr(argv[0], "icuchain"))
     {
+        char full_path[1024];
+        if (!yaz_filepath_resolve(argv[1], zms->tabpath, zms->tabroot,
+                                  full_path))
+        {
+            yaz_log(YLOG_WARN, "%s:%d: Could not locate icuchain config '%s'",
+                    fname, lineno, argv[1]);
+            return -1;
+        }
 #if YAZ_HAVE_XML2
-        zm->doc = xmlParseFile(argv[1]);
+        zm->doc = xmlParseFile(full_path);
         if (!zm->doc)
         {
             yaz_log(YLOG_WARN, "%s:%d: Could not load icuchain config '%s'",
@@ -641,7 +649,8 @@ static int tokenize_simple(zebra_map_t zm,
 
 
 int zebra_map_tokenize_next(zebra_map_t zm,
-                            const char **result_buf, size_t *result_len)
+                            const char **result_buf, size_t *result_len,
+                            const char **display_buf, size_t *display_len)
 {
     assert(zm->use_chain);
 
@@ -659,6 +668,12 @@ int zebra_map_tokenize_next(zebra_map_t zm,
 
             *result_len = strlen(*result_buf);
 
+            if (display_buf)
+            {
+                *display_buf = icu_chain_token_display(zm->icu_chain);
+                if (display_len)
+                    *display_len = strlen(*display_buf);
+            }
             if (zm->debug)
             {
                 wrbuf_rewind(zm->print_str);