X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Funtrans.c;h=0eb3ae52631577aca38256bb26f04638ead16eed;hb=131e8143a9b8da294d582f0793833679101a2672;hp=d51c25c547bd9c864a274d640993b0a208fc4254;hpb=6f7dfe3c3f09f7104c1ae7616c9d207edeab308d;p=idzebra-moved-to-github.git diff --git a/index/untrans.c b/index/untrans.c index d51c25c..0eb3ae5 100644 --- a/index/untrans.c +++ b/index/untrans.c @@ -1,4 +1,4 @@ -/* $Id: untrans.c,v 1.4 2007-10-30 19:17:15 adam Exp $ +/* $Id: untrans.c,v 1.7 2008-01-24 16:14:40 adam Exp $ Copyright (C) 1995-2007 Index Data ApS @@ -28,34 +28,50 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include "index.h" #include -void zebra_term_untrans(ZebraHandle zh, int reg_type, - char *dst, const char *src) +int 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, reg_type); - int len = 0; - while (*src) + zebra_map_t zm = zebra_map_get(zh->reg->zebra_maps, index_type); + if (!zm) { - const char *cp = zebra_maps_output(zm, &src); - if (!cp) - { - if (len < IT_MAX_WORD-1) - dst[len++] = *src; - src++; - } - else - while (*cp && len < IT_MAX_WORD-1) - dst[len++] = *cp++; + return -2; + } + if (zebra_maps_is_icu(zm)) + { + return -1; + } + else + { + int len = 0; + while (*src) + { + const char *cp = zebra_maps_output(zm, &src); + if (!cp) + { + if (len < IT_MAX_WORD-1) + dst[len++] = *src; + src++; + } + else + while (*cp && len < IT_MAX_WORD-1) + dst[len++] = *cp++; + } + dst[len] = '\0'; } - dst[len] = '\0'; + return 0; } -void zebra_term_untrans_iconv(ZebraHandle zh, NMEM stream, int reg_type, - char **dst, const char *src) +int 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]; + int r; - zebra_term_untrans (zh, reg_type, term_src, src); + r = zebra_term_untrans (zh, index_type, term_src, src); + if (r) + return r; if (zh->iconv_from_utf8 != 0) { @@ -82,6 +98,7 @@ void zebra_term_untrans_iconv(ZebraHandle zh, NMEM stream, int reg_type, } else *dst = nmem_strdup(stream, term_src); + return 0; }