From fe70332f7f29f146a364c73450729a8b3274daee Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Tue, 14 Aug 2001 12:18:09 +0000 Subject: [PATCH] count() was broken on Result Value Tree fixed file:/// accesses on _WIN32 * xpath.c: count() was broken on Result Value Tree * xmlIO.c: fixed file:/// accesses on _WIN32 Daniel --- ChangeLog | 5 +++++ xmlIO.c | 32 ++++++++++++++++++++++++-------- xpath.c | 21 ++++++++++++++++++++- 3 files changed, 49 insertions(+), 9 deletions(-) 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); }