diff --git a/ChangeLog b/ChangeLog index 556bb7cd..70b842ca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Tue Aug 14 14:16:24 CEST 2001 Daniel Veillard + + * xpath.c: count() was broken on Result Value Tree + * xmlIO.c: fixed file:/// accesses on _WIN32 + Mon Aug 13 13:22:53 CEST 2001 Daniel Veillard * libxml.m4: s/LIBXML_VERSION_NUMBER/LIBXML_VERSION/ seems the diff --git a/xmlIO.c b/xmlIO.c index c21a168e..b78ccbe7 100644 --- a/xmlIO.c +++ b/xmlIO.c @@ -244,9 +244,13 @@ xmlFileOpen (const char *filename) { if (!strncmp(filename, "file://localhost", 16)) path = &filename[16]; - else if (!strncmp(filename, "file:///", 8)) + else if (!strncmp(filename, "file:///", 8)) { +#ifdef _WIN32 + path = &filename[8]; +#else path = &filename[7]; - else +#endif + } else path = filename; if (path == NULL) @@ -283,9 +287,13 @@ xmlFileOpenW (const char *filename) { if (!strncmp(filename, "file://localhost", 16)) path = &filename[16]; - else if (!strncmp(filename, "file:///", 8)) + else if (!strncmp(filename, "file:///", 8)) { +#ifdef _WIN32 + path = &filename[8]; +#else path = &filename[7]; - else +#endif + } else path = filename; if (path == NULL) @@ -387,9 +395,13 @@ xmlGzfileOpen (const char *filename) { if (!strncmp(filename, "file://localhost", 16)) path = &filename[16]; - else if (!strncmp(filename, "file:///", 8)) + else if (!strncmp(filename, "file:///", 8)) { +#ifdef _WIN32 + path = &filename[8]; +#else path = &filename[7]; - else +#endif + } else path = filename; if (path == NULL) @@ -425,9 +437,13 @@ xmlGzfileOpenW (const char *filename, int compression) { if (!strncmp(filename, "file://localhost", 16)) path = &filename[16]; - else if (!strncmp(filename, "file:///", 8)) + else if (!strncmp(filename, "file:///", 8)) { +#ifdef _WIN32 + path = &filename[8]; +#else path = &filename[7]; - else +#endif + } else path = filename; if (path == NULL) diff --git a/xpath.c b/xpath.c index 1c8c1a85..2de4e1d5 100644 --- a/xpath.c +++ b/xpath.c @@ -5193,8 +5193,27 @@ xmlXPathCountFunction(xmlXPathParserContextPtr ctxt, int nargs) { if ((cur == NULL) || (cur->nodesetval == NULL)) valuePush(ctxt, xmlXPathNewFloat((double) 0)); - else + else if (cur->type == XPATH_NODESET) { valuePush(ctxt, xmlXPathNewFloat((double) cur->nodesetval->nodeNr)); + } else { + if ((cur->nodesetval->nodeNr != 1) || + (cur->nodesetval->nodeTab == NULL)) { + valuePush(ctxt, xmlXPathNewFloat((double) 0)); + } else { + xmlNodePtr tmp; + int i = 0; + + tmp = cur->nodesetval->nodeTab[0]; + if (tmp != NULL) { + tmp = tmp->children; + while (tmp != NULL) { + tmp = tmp->next; + i++; + } + } + valuePush(ctxt, xmlXPathNewFloat((double) i)); + } + } xmlXPathFreeObject(cur); }