X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=blobdiff_plain;f=index%2Funtrans.c;h=8143342354d657d0784980db6c4c6c62d0c6dd1b;hp=0e9adf1b10a65eda2cbb6db88aaabff7ee12f3b0;hb=ba0720e26f508ba3396e232d2f82037c0e701698;hpb=46d18b14e7af411cd9b9a4614e6bb0cb1a99069c diff --git a/index/untrans.c b/index/untrans.c index 0e9adf1..8143342 100644 --- a/index/untrans.c +++ b/index/untrans.c @@ -1,8 +1,5 @@ -/* $Id: untrans.c,v 1.3 2007-03-20 22:07:35 adam Exp $ - Copyright (C) 1995-2007 - Index Data ApS - -This file is part of the Zebra server. +/* This file is part of the Zebra server. + Copyright (C) 1994-2011 Index Data Zebra is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -20,6 +17,9 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#if HAVE_CONFIG_H +#include +#endif #include #include #include @@ -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) { - 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(zh->reg->zebra_maps, - reg_type, &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; } @@ -89,7 +106,9 @@ void zebra_term_untrans_iconv(ZebraHandle zh, NMEM stream, int reg_type, /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab */ +