Remove Emilda section
[idzebra-moved-to-github.git] / util / charmap.c
index c1e95f9..c67cae9 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is part of the Zebra server.
-   Copyright (C) 1994-2010 Index Data
+   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
@@ -26,6 +26,9 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  * Zebra dictionary.
  */
 
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
 #include <ctype.h>
 #include <string.h>
 #include <stdlib.h>
@@ -239,7 +242,6 @@ ucs4_t zebra_prim_w(ucs4_t **s)
     ucs4_t i = 0;
     char fmtstr[8];
 
-    yaz_log(YLOG_DEBUG, "prim_w %.3s", (char *) *s);
     if (**s == '\\' && 1[*s])
     {
        (*s)++;
@@ -425,7 +427,7 @@ static int scan_string(char *s_native,
 
     ucs4_t arg[512];
     ucs4_t arg_prim[512];
-    ucs4_t *s0, *s = arg;
+    ucs4_t *s = arg;
     ucs4_t c, begin, end;
     size_t i;
 
@@ -482,9 +484,16 @@ static int scan_string(char *s_native,
            break;
        case '(':
             ++s;
-           s0 = s; i = 0;
+           i = 0;
            while (*s != ')' || s[-1] == '\\')
+            {
+                if (*s == '\0')
+                {
+                    yaz_log(YLOG_FATAL, "Missing ) in charmap");
+                    return -1;
+                }
                arg_prim[i++] = zebra_prim_w(&s);
+            }
            arg_prim[i] = 0;
             if (scan_to_utf8(t_utf8, arg_prim, zebra_ucs4_strlen(arg_prim), str, sizeof(str)-1))
                 return -1;
@@ -728,7 +737,7 @@ chrmaptab chrmaptab_create(const char *tabpath, const char *name,
        chrmaptab_destroy(res);
        res = 0;
     }
-    yaz_log(YLOG_DEBUG, "maptab %s close %d errors", name, errors);
+    yaz_log(YLOG_DEBUG, "maptab %s num=%d close %d errors", name, num, errors);
     if (t_utf8 != 0)
         yaz_iconv_close(t_utf8);
     if (t_unicode != 0)