X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=util%2Fcharmap.c;h=0f87f60ed397088c15bd5b4ecbd791acd545de1c;hb=151f14593b5b81be4a65f64e402a73023d9b0022;hp=3f5abdf97c074e6aa6b6b03445a01827b7382806;hpb=cb1317543281a64aeb8b389d5cdfffa5bb2cde90;p=idzebra-moved-to-github.git diff --git a/util/charmap.c b/util/charmap.c index 3f5abdf..0f87f60 100644 --- a/util/charmap.c +++ b/util/charmap.c @@ -4,7 +4,19 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: charmap.c,v $ - * Revision 1.6 1996-06-04 13:28:00 quinn + * Revision 1.10 1997-07-01 13:01:08 adam + * Bug fix in routine find_entry: didn't take into account the len arg. + * + * Revision 1.9 1996/10/29 13:48:14 adam + * Updated to use zebrautl.h instead of alexutil.h. + * + * Revision 1.8 1996/10/18 12:39:23 adam + * Uses LOG_DEBUG instead of LOG_WARN for "Character map overlap". + * + * Revision 1.7 1996/06/06 12:08:56 quinn + * Fixed bug. + * + * Revision 1.6 1996/06/04 13:28:00 quinn * More work on charmapping * * Revision 1.5 1996/06/04 08:32:15 quinn @@ -34,7 +46,7 @@ #include #include -#include +#include #include #include #include @@ -85,7 +97,7 @@ static chr_t_entry *set_map_string(chr_t_entry *root, char *from, int len, (char*) root->target == CHR_UNKNOWN) root->target = (unsigned char *) xstrdup(to); else if ((char*) to != CHR_SPACE) - logf(LOG_WARN, "Character map overlap"); + logf(LOG_DEBUG, "Character map overlap"); } else { @@ -136,7 +148,7 @@ static chr_t_entry *find_entry(chr_t_entry *t, char **from, int len) { chr_t_entry *res; - if (t->children && t->children[(unsigned char) **from]) + if (len && t->children && t->children[(unsigned char) **from]) { char *pos = *from; @@ -147,8 +159,8 @@ static chr_t_entry *find_entry(chr_t_entry *t, char **from, int len) /* no match */ *from = pos; } - /* no children match. use ourselves */ - return t; + /* no children match. use ourselves, if we have a target */ + return t->target ? t : 0; } char **chr_map_input(chr_t_entry *t, char **from, int len)