From: ehofman Date: Mon, 20 Apr 2009 17:05:03 +0000 (+0000) Subject: * Setting an error when a node isn't found isn't he best way, X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=0561c0079a88294c9b8d9ea632a3926f0a1a22ea;p=flightgear.git * Setting an error when a node isn't found isn't he best way, need to find another way to report that. * Fix a bug where an error was incorrectly set in xmlNodeCopyName --- diff --git a/utils/xmlgrep/xml.c b/utils/xmlgrep/xml.c index 6f04bb16b..9660242a0 100644 --- a/utils/xmlgrep/xml.c +++ b/utils/xmlgrep/xml.c @@ -310,6 +310,9 @@ xmlNodeCopyName(const void *id, char *buf, size_t buflen) if (slen > xid->name_len) { slen = xid->name_len; + } + else + { xmlErrorSet(xid, 0, XML_TRUNCATE_RESULT); } memcpy(buf, xid->name, slen); @@ -1238,11 +1241,10 @@ static const char *__xml_error_str[XML_MAX_ERROR] = "no error.", "unable to allocate enough memory.", "unable to open file for reading.", - "buffer us too small to hold the result, truncating.", + "buffer too small to hold all data, truncating.", "incorrect comment section.", "bad information block.", - "unexpected end of xml section (maybe a missing end tag?)", - "element not found.", + "unexpected end of section.", "incompatible opening tag for element.", "missing or invalid closing tag for element.", "missing or invalid opening quote for attribute.", @@ -1551,7 +1553,7 @@ __xmlNodeGet(const char *start, size_t *len, char **name, size_t *rlen, size_t * ret = 0; *rlen = 0; *name = start_tag; - *len = XML_ELEMENT_NOT_FOUND; + *len = XML_NO_ERROR; /* element not found */ } else { diff --git a/utils/xmlgrep/xml.h b/utils/xmlgrep/xml.h index ab1877973..5602f50b9 100644 --- a/utils/xmlgrep/xml.h +++ b/utils/xmlgrep/xml.h @@ -37,7 +37,6 @@ enum XML_INVALID_COMMENT, XML_INVALID_INFO_BLOCK, XML_UNEXPECTED_EOF, - XML_ELEMENT_NOT_FOUND, XML_ELEMENT_NO_OPENING_TAG, XML_ELEMENT_NO_CLOSING_TAG, XML_ATTRIB_NO_OPENING_QUOTE, diff --git a/utils/xmlgrep/xmlgrep.c b/utils/xmlgrep/xmlgrep.c index aa59d5300..c541b80ce 100644 --- a/utils/xmlgrep/xmlgrep.c +++ b/utils/xmlgrep/xmlgrep.c @@ -26,6 +26,9 @@ static int print_filenames = 0; static void free_and_exit(int i); +#define NODE_NAME_LEN 256 +#define STRING_LEN 2048 + #define SHOW_NOVAL(opt) \ { \ printf("option '%s' requires a value\n\n", (opt)); \ @@ -200,9 +203,9 @@ void walk_the_tree(size_t num, void *xid, char *tree) { if (xmlNodeGetPos(xid, xmid, _print, i) != 0) { - char value[1024]; + char value[STRING_LEN]; - xmlCopyString(xmid, (char *)&value, 1024); + xmlCopyString(xmid, (char *)&value, STRING_LEN); if (_value && _attribute) { if (!xmlAttributeCompareString(xmid, _attribute, _value)) @@ -228,9 +231,9 @@ void walk_the_tree(size_t num, void *xid, char *tree) { if (xmlNodeGetPos(xid, xmid, _element, i) != 0) { - char nodename[64]; + char nodename[NODE_NAME_LEN]; - xmlNodeCopyName(xmid, (char *)&nodename, 64); + xmlNodeCopyName(xmid, (char *)&nodename, NODE_NAME_LEN); if (xmlCompareString(xmid, _value) == 0) { printf("%s: <%s>%s\n", @@ -242,22 +245,22 @@ void walk_the_tree(size_t num, void *xid, char *tree) } else if (xmid && _element) { - char parentname[64]; + char parentname[NODE_NAME_LEN]; - xmlNodeCopyName(xid, (char *)&parentname, 64); + xmlNodeCopyName(xid, (char *)&parentname, NODE_NAME_LEN); no_elements = xmlNodeGetNum(xmid, _element); for (i=0; i <%s>%s \n", _filenames[num], parentname, nodename, value, nodename, parentname); @@ -319,7 +322,7 @@ void grep_file(unsigned num) r = xmlErrorGetNo(xrid, 0); if (r) { - if (r == XML_ELEMENT_NOT_FOUND) + if (r) { size_t n = xmlErrorGetLineNo(xrid, 0); char *s = xmlErrorGetString(xrid, 1); /* clear the error */