Function icu_chain_xml_config allows certain obsolete elements.
[yaz-moved-to-github.git] / src / icu_I18N.c
index 0bbd010..b2119b6 100644 (file)
@@ -3,6 +3,11 @@
  * See the file LICENSE for details.
  */
 
+/**
+ * \file icu_I18N.c
+ * \brief ICU utilities
+ */
+
 #if HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -667,7 +672,7 @@ struct icu_normalizer * icu_normalizer_create(const char *rules, char action,
                            normalizer->rules16->utf16_len,
                            UTRANS_FORWARD,
                            0, 0, 
-                           normalizer->parse_error, status);
+                           &normalizer->parse_error, status);
         break;
     case 'r':
     case 'R':
@@ -676,7 +681,7 @@ struct icu_normalizer * icu_normalizer_create(const char *rules, char action,
                            normalizer->rules16->utf16_len,
                            UTRANS_REVERSE ,
                            0, 0,
-                           normalizer->parse_error, status);
+                           &normalizer->parse_error, status);
         break;
     default:
         *status = U_UNSUPPORTED_ERROR;
@@ -909,14 +914,31 @@ struct icu_chain * icu_chain_xml_config(const xmlNode *xml_node,
         else if (!strcmp((const char *) node->name, "display"))
             step = icu_chain_insert_step(chain, ICU_chain_step_type_display, 
                                          (const uint8_t *) "", status);
+        else if (!strcmp((const char *) node->name, "normalize"))
+        {
+            yaz_log(YLOG_WARN, "Element %s is deprecated. "
+                    "Use transform instead", node->name);
+            step = icu_chain_insert_step(chain, ICU_chain_step_type_normalize, 
+                                         (const uint8_t *) xml_rule, status);
+        }
+        else if (!strcmp((const char *) node->name, "index")
+                 || !strcmp((const char *) node->name, "sortkey"))
+        {
+            yaz_log(YLOG_WARN, "Element %s is no longer needed. "
+                    "Remove it from the configuration", node->name);
+        }
+        else
+        {
+            yaz_log(YLOG_WARN, "Unknown element %s", node->name);
+            icu_chain_destroy(chain);
+            return 0;
+        }
         xmlFree(xml_rule);
-        if (!step || U_FAILURE(*status))
+        if (step && U_FAILURE(*status))
         {
             icu_chain_destroy(chain);
             return 0;
         }
-        
-
     }
     return chain;
 }