projects
/
idzebra-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add EnvVarUpdate.nsh
[idzebra-moved-to-github.git]
/
index
/
untrans.c
diff --git
a/index/untrans.c
b/index/untrans.c
index
0551e3c
..
0643114
100644
(file)
--- a/
index/untrans.c
+++ b/
index/untrans.c
@@
-1,8
+1,5
@@
-/* $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.
+/* This file is part of the Zebra server.
+ Copyright (C) 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
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 <config.h>
+#endif
#include <stdio.h>
#include <assert.h>
#include <ctype.h>
#include <stdio.h>
#include <assert.h>
#include <ctype.h>
@@
-28,35
+28,50
@@
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#include "index.h"
#include <charmap.h>
#include "index.h"
#include <charmap.h>
-void zebra_term_untrans(ZebraHandle zh, const char *index_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, index_type);
{
zebra_map_t zm = zebra_map_get(zh->reg->zebra_maps, index_type);
- int len = 0;
- while (*src)
+ 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,
- const char *index_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];
{
char term_src[IT_MAX_WORD];
char term_dst[IT_MAX_WORD];
-
- zebra_term_untrans (zh, index_type, term_src, src);
+ int r;
+
+ r = zebra_term_untrans (zh, index_type, term_src, src);
+ if (r)
+ return r;
if (zh->iconv_from_utf8 != 0)
{
if (zh->iconv_from_utf8 != 0)
{
@@
-66,7
+81,7
@@
void zebra_term_untrans_iconv(ZebraHandle zh, NMEM stream,
char *outbuf = term_dst;
size_t outleft = sizeof(term_dst)-1;
size_t ret;
char *outbuf = term_dst;
size_t outleft = sizeof(term_dst)-1;
size_t ret;
-
+
ret = yaz_iconv (zh->iconv_from_utf8, &inbuf, &inleft,
&outbuf, &outleft);
if (ret == (size_t)(-1))
ret = yaz_iconv (zh->iconv_from_utf8, &inbuf, &inleft,
&outbuf, &outleft);
if (ret == (size_t)(-1))
@@
-83,6
+98,7
@@
void zebra_term_untrans_iconv(ZebraHandle zh, NMEM stream,
}
else
*dst = nmem_strdup(stream, term_src);
}
else
*dst = nmem_strdup(stream, term_src);
+ return 0;
}
}
@@
-90,7
+106,9
@@
void zebra_term_untrans_iconv(ZebraHandle zh, NMEM stream,
/*
* Local variables:
* c-basic-offset: 4
/*
* Local variables:
* c-basic-offset: 4
+ * c-file-style: "Stroustrup"
* indent-tabs-mode: nil
* End:
* vim: shiftwidth=4 tabstop=8 expandtab
*/
* indent-tabs-mode: nil
* End:
* vim: shiftwidth=4 tabstop=8 expandtab
*/
+