From 05050ea4fb95b95dd08ba645b65f342218f8cc3f Mon Sep 17 00:00:00 2001 From: Daiki Ueno Date: Tue, 29 Sep 2015 17:53:52 +0900 Subject: [PATCH] its, locating-rule: Add messages for parse error --- gettext-tools/src/its.c | 29 ++++++++++++++--------------- gettext-tools/src/locating-rule.c | 6 +++++- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/gettext-tools/src/its.c b/gettext-tools/src/its.c index fc2fa01c2..56b9a5981 100644 --- a/gettext-tools/src/its.c +++ b/gettext-tools/src/its.c @@ -1135,31 +1135,26 @@ its_rule_list_free (struct its_rule_list_ty *rules) its_pool_destroy (&rules->pool); } + bool its_rule_list_add_file (struct its_rule_list_ty *rules, const char *filename) { xmlDoc *doc; xmlNode *root, *node; - FILE *fp; - fp = fopen (filename, "r"); - if (fp == NULL) + doc = xmlReadFile (filename, "utf-8", + XML_PARSE_NONET + | XML_PARSE_NOWARNING + | XML_PARSE_NOBLANKS + | XML_PARSE_NOERROR); + if (doc == NULL) { - error (0, errno, - _("error while opening \"%s\" for reading"), filename); + xmlError *err = xmlGetLastError (); + error (0, 0, _("cannot read %s: %s"), filename, err->message); return false; } - doc = xmlReadFd (fileno (fp), filename, "utf-8", - XML_PARSE_NONET - | XML_PARSE_NOWARNING - | XML_PARSE_NOBLANKS - | XML_PARSE_NOERROR); - fclose (fp); - if (doc == NULL) - return false; - root = xmlDocGetRootElement (doc); if (!(xmlStrEqual (root->name, BAD_CAST "rules") && xmlStrEqual (root->ns->href, BAD_CAST ITS_NS))) @@ -1475,7 +1470,11 @@ its_rule_list_extract (its_rule_list_ty *rules, | XML_PARSE_NOBLANKS | XML_PARSE_NOERROR); if (doc == NULL) - return; + { + xmlError *err = xmlGetLastError (); + error (0, 0, _("cannot read %s: %s"), logical_filename, err->message); + return; + } its_rule_list_apply (rules, doc); diff --git a/gettext-tools/src/locating-rule.c b/gettext-tools/src/locating-rule.c index a487814ef..3d42d0267 100644 --- a/gettext-tools/src/locating-rule.c +++ b/gettext-tools/src/locating-rule.c @@ -139,7 +139,11 @@ locating_rule_match (struct locating_rule_ty *rule, | XML_PARSE_NOBLANKS | XML_PARSE_NOERROR); if (doc == NULL) - return NULL; + { + xmlError *err = xmlGetLastError (); + error (0, 0, _("cannot read %s: %s"), filename, err->message); + return NULL; + } for (i = 0; i < rule->doc_rules.nitems; i++) { -- 2.47.2