X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=blobdiff_plain;f=util%2Fcharmap.c;h=1913a5f70ddea57f5cfce0c0aa8c61b81e94505c;hp=f5f62074737876e2c345dab8b8d83844547347b8;hb=89d3a004b7c651fd5673abfc192e1472dc4d4197;hpb=be32b4e5c154545c2b91b76144d6cbf1238f969a diff --git a/util/charmap.c b/util/charmap.c index f5f6207..1913a5f 100644 --- a/util/charmap.c +++ b/util/charmap.c @@ -1,5 +1,5 @@ -/* $Id: charmap.c,v 1.38 2005-06-15 21:31:45 adam Exp $ - Copyright (C) 1995-2005 +/* $Id: charmap.c,v 1.44 2007-01-15 15:10:26 adam Exp $ + Copyright (C) 1995-2007 Index Data ApS This file is part of the Zebra server. @@ -15,9 +15,9 @@ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with Zebra; see the file LICENSE.zebra. If not, write to the -Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ @@ -46,7 +46,7 @@ const unsigned char CHR_FIELD_BEGIN = '^'; const char *CHR_UNKNOWN = "\001"; const char *CHR_SPACE = "\002"; const char *CHR_CUT = "\003"; -const char *CHR_BASE = "\005"; +const char *CHR_BASE = "\005"; /* CHECK CHR_BASE_CHAR as well */ struct chrmaptab_info { @@ -101,11 +101,12 @@ static chr_t_entry *set_map_string(chr_t_entry *root, NMEM nmem, } if (!len) { - if (!root->target || !root->target[0] || strcmp(root->target[0], to)) + if (!root->target || !root->target[0] || + strcmp((const char *) root->target[0], to)) { if (from_0 && root->target && root->target[0] && root->target[0][0] && - strcmp (root->target[0], CHR_UNKNOWN)) + strcmp((const char *) root->target[0], CHR_UNKNOWN)) { yaz_log (YLOG_WARN, "duplicate entry for charmap from '%s'", from_0); @@ -237,8 +238,11 @@ const char **chr_map_q_input(chrmaptab maptab, const char *chr_map_output(chrmaptab maptab, const char **from, int len) { unsigned char c = ** (unsigned char **) from; - (*from)++; - return (const char*) maptab->output[c]; + const char *out = (const char*) maptab->output[c]; + + if (out) + (*from)++; + return out; } static int zebra_ucs4_strlen(ucs4_t *s) @@ -762,3 +766,11 @@ void chrmaptab_destroy(chrmaptab tab) } +/* + * Local variables: + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ +