More work toward 2.2.5, integrated a number of patches
- configure.in Makefile.am win32config.h.in: trying to cleanup
make distcheck .... huh ...
- include/Makefile.am include/win32config.h: new directory
for includes
- win32/Makefile.mingw win32/README.MSDev win32/libxml2/libxml2.dsp
updated teh makefiles and instructions for WIN32
- xpath.c: small fixes
- test/XPath/ results/XPath: updated the testcases and results
- HTMLparser.c nanohttp.c testXPath.c: incorporated provided or
suggested patches
- valid.c: fixed an ID bug
Daniel
diff --git a/ChangeLog b/ChangeLog
index b0b1fbe..bac9e39 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+Wed Oct 11 02:53:10 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org>
+
+ * More work toward 2.2.5, integrated a number of patches
+ * configure.in Makefile.am win32config.h.in: trying to cleanup
+ make distcheck .... huh ...
+ * include/Makefile.am include/win32config.h: new directory
+ for includes
+ * win32/Makefile.mingw win32/README.MSDev win32/libxml2/libxml2.dsp
+ updated teh makefiles and instructions for WIN32
+ * xpath.c: small fixes
+ * test/XPath/ results/XPath: updated the testcases and results
+ * HTMLparser.c nanohttp.c testXPath.c: incorporated provided or
+ suggested patches
+ * valid.c: fixed an ID bug
+
Mon Oct 9 14:28:56 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org>
* moved xml-error.h to xmlerror.h: seems this allowed to bypass
diff --git a/HTMLparser.c b/HTMLparser.c
index 9de8bdc..40a15a4 100644
--- a/HTMLparser.c
+++ b/HTMLparser.c
@@ -14,7 +14,6 @@
#include <libxml/xmlversion.h>
#ifdef LIBXML_HTML_ENABLED
-
#include <stdio.h>
#include <string.h>
#ifdef HAVE_CTYPE_H
@@ -1786,7 +1785,7 @@
while ((i < HTML_PARSER_BUFFER_SIZE) &&
((IS_LETTER(CUR)) || (IS_DIGIT(CUR)) ||
- (CUR == ':') || (CUR == '_'))) {
+ (CUR == ':') || (CUR == '-') || (CUR == '_'))) {
if ((CUR >= 'A') && (CUR <= 'Z')) loc[i] = CUR + 0x20;
else loc[i] = CUR;
i++;
diff --git a/Makefile.am b/Makefile.am
index 5c98db0..e0ae860 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,8 +1,8 @@
## Process this file with automake to produce Makefile.in
-SUBDIRS = doc
+SUBDIRS = include doc
-INCLUDES = -I@srcdir@/include @Z_CFLAGS@ @CORBA_CFLAGS@
+INCLUDES = -I@srcdir@/include -I./include @Z_CFLAGS@ @CORBA_CFLAGS@
noinst_PROGRAMS=testSAX testHTML testXPath testURI
@@ -35,29 +35,6 @@
nanohttp.c \
nanoftp.c
-xmlincdir = $(includedir)/libxml
-
-xmlinc_HEADERS = \
- include/libxml/SAX.h \
- include/libxml/entities.h \
- include/libxml/encoding.h \
- include/libxml/parser.h \
- include/libxml/parserInternals.h \
- include/libxml/xmlerror.h \
- include/libxml/HTMLparser.h \
- include/libxml/HTMLtree.h \
- include/libxml/debugXML.h \
- include/libxml/tree.h \
- include/libxml/xpath.h \
- include/libxml/xmlIO.h \
- include/libxml/xmlmemory.h \
- include/libxml/nanohttp.h \
- include/libxml/nanoftp.h \
- include/libxml/uri.h \
- include/libxml/valid.h \
- include/libxml/xlink.h \
- include/libxml/xmlversion.h
-
DEPS = $(top_builddir)/libxml.la
LDADDS = $(top_builddir)/libxml.la @Z_LIBS@ @M_LIBS@
@@ -357,8 +334,8 @@
confexec_DATA = xmlConf.sh
EXTRA_DIST = xmlConf.sh.in libxml.spec.in libxml.spec libxml.m4 \
example/Makefile.am example/gjobread.c example/gjobs.xml \
- $(man_MANS) libxml-2.0.pc.in include/libxml/*.h.in \
- win32/README.MSDev win32/libxml2/libxml2.dsp
+ $(man_MANS) libxml-2.0.pc.in include/libxml/*.h xmlversion.h.in \
+ win32/README.MSDev win32/Makefile.mingw win32/libxml2/libxml2.dsp
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libxml-2.0.pc
diff --git a/configure.in b/configure.in
index 22e98d9..df7bc37 100644
--- a/configure.in
+++ b/configure.in
@@ -116,7 +116,7 @@
[M_LIBS="-lm"; AC_DEFINE(HAVE_ISINF)]))
XML_LIBDIR='-L${libdir}'
-XML_INCLUDEDIR='-I${srcdir}/include -I${includedir}/libxml -I${includedir}'
+XML_INCLUDEDIR='-I${includedir}/libxml -I${includedir}'
XML_LIBS="-lxml $Z_LIBS $M_LIBS $LIBS"
dnl
@@ -299,18 +299,26 @@
dnl
if test ! -d $srcdir/include/libxml
then
- rm -f $srcdir/include
+ rm -rf $srcdir/include
rm -f $srcdir/libxml
- (cd $srcdir ; ln -s . include)
- (cd $srcdir ; ln -s . libxml)
+ mkdir $srcdir/include
+ (cd $srcdir/include ; ln -s .. libxml)
+fi
+if test ! -e $srcdir/libxml
+then
+ (cd $srcdir ; ln -s include/libxml libxml)
fi
if test ! -e include/libxml
then
- rm -f include
- rm -f libxml
- (ln -s $srcdir/include include)
- (ln -s $srcdir/include/libxml libxml)
+ rm -rf include
+ mkdir include
+ (cd include ; ln -s ../libxml libxml)
+fi
+if test ! -e libxml
+then
+ rm -rf libxml
+ ln -s $srcdir/include/libxml libxml
fi
-AC_OUTPUT(libxml.spec Makefile doc/Makefile example/Makefile include/libxml/xmlversion.h xml-config include/libxml/win32config.h libxml-2.0.pc)
+AC_OUTPUT(libxml.spec Makefile include/Makefile doc/Makefile example/Makefile libxml/xmlversion.h xml-config libxml-2.0.pc)
diff --git a/include/Makefile.am b/include/Makefile.am
new file mode 100644
index 0000000..eea4e9c
--- /dev/null
+++ b/include/Makefile.am
@@ -0,0 +1,28 @@
+## Process this file with automake to produce Makefile.in
+
+xmlincdir = $(includedir)
+
+xmlinc_HEADERS = \
+ libxml/xmlversion.h.in \
+ libxml/SAX.h \
+ libxml/entities.h \
+ libxml/encoding.h \
+ libxml/parser.h \
+ libxml/parserInternals.h \
+ libxml/xmlerror.h \
+ libxml/HTMLparser.h \
+ libxml/HTMLtree.h \
+ libxml/debugXML.h \
+ libxml/tree.h \
+ libxml/xpath.h \
+ libxml/xmlIO.h \
+ libxml/xmlmemory.h \
+ libxml/nanohttp.h \
+ libxml/nanoftp.h \
+ libxml/uri.h \
+ libxml/valid.h \
+ libxml/xlink.h
+
+install-exec-hook:
+ $(mkinstalldirs) $(xmlincdir) $(xmlincdir)/libxml
+
diff --git a/win32config.h.in b/include/win32config.h
similarity index 95%
rename from win32config.h.in
rename to include/win32config.h
index 0bb3a4f..f09c840 100644
--- a/win32config.h.in
+++ b/include/win32config.h
@@ -4,10 +4,6 @@
#define HAVE_TIME_H
#define HAVE_FCNTL_H
-#define LIBXML_VERSION @LIBXML_VERSION_NUMBER@
-#define LIBXML_VERSION_STRING "@LIBXML_VERSION@"
-
-
#include <io.h>
#ifdef INCLUDE_WINSOCK
diff --git a/nanohttp.c b/nanohttp.c
index 88db9fc..df717cb 100644
--- a/nanohttp.c
+++ b/nanohttp.c
@@ -105,6 +105,27 @@
static int proxyPort; /* the proxy port if any */
/**
+ * A bit of portability macros and functions
+ */
+#ifdef _WINSOCKAPI_
+
+WSADATA wsaData;
+
+#else
+
+#define closesocket(s) close(s)
+
+#endif
+
+int socket_errno(void) {
+#ifdef _WINSOCKAPI_
+ return(WSAGetLastError());
+#else
+ return(errno);
+#endif
+}
+
+/**
* xmlNanoHTTPInit:
*
* Initialize the HTTP protocol layer.
@@ -118,6 +139,11 @@
if (initialized)
return;
+#ifdef _WINSOCKAPI_
+ if (WSAStartup(0x0101, &wsaData) != 0)
+ WSACleanup();
+#endif
+
if (proxy == NULL) {
proxyPort = 80;
env = getenv("no_proxy");
@@ -149,6 +175,9 @@
if (proxy != NULL)
xmlFree(proxy);
initialized = 0;
+#ifdef _WINSOCKAPI_
+ WSACleanup();
+#endif
return;
}
@@ -344,7 +373,7 @@
if (ctxt->contentType != NULL) xmlFree(ctxt->contentType);
if (ctxt->location != NULL) xmlFree(ctxt->location);
ctxt->state = XML_NANO_HTTP_NONE;
- if (ctxt->fd >= 0) close(ctxt->fd);
+ if (ctxt->fd >= 0) closesocket(ctxt->fd);
ctxt->fd = -1;
xmlFree(ctxt);
}
@@ -359,7 +388,7 @@
static void
xmlNanoHTTPSend(xmlNanoHTTPCtxtPtr ctxt) {
if (ctxt->state & XML_NANO_HTTP_WRITE)
- ctxt->last = write(ctxt->fd, ctxt->outptr, strlen(ctxt->outptr));
+ ctxt->last = send(ctxt->fd, ctxt->outptr, strlen(ctxt->outptr), 0);
}
/**
@@ -412,7 +441,7 @@
ctxt->content = ctxt->in + d_content;
ctxt->inrptr = ctxt->in + d_inrptr;
}
- ctxt->last = read(ctxt->fd, ctxt->inptr, XML_NANO_HTTP_CHUNK);
+ ctxt->last = recv(ctxt->fd, ctxt->inptr, XML_NANO_HTTP_CHUNK, 0);
if (ctxt->last > 0) {
ctxt->inptr += ctxt->last;
return(ctxt->last);
@@ -420,17 +449,25 @@
if (ctxt->last == 0) {
return(0);
}
-#ifdef EWOULDBLOCK
- if ((ctxt->last == -1) && (errno != EWOULDBLOCK)) {
- return(0);
- }
+ if (ctxt->last == -1) {
+ switch (socket_errno()) {
+ case EINPROGRESS:
+ case EWOULDBLOCK:
+#if defined(EAGAIN) && EAGAIN != EWOULDBLOCK
+ case EAGAIN:
#endif
- tv.tv_sec=10;
- tv.tv_usec=0;
+ break;
+ default:
+ return(0);
+ }
+ }
+
+ tv.tv_sec = 10;
+ tv.tv_usec = 0;
FD_ZERO(&rfd);
FD_SET(ctxt->fd, &rfd);
- if(select(ctxt->fd+1, &rfd, NULL, NULL, &tv)<1)
+ if (select(ctxt->fd+1, &rfd, NULL, NULL, &tv)<1)
return(0);
}
return(0);
@@ -450,10 +487,10 @@
static char *
xmlNanoHTTPReadLine(xmlNanoHTTPCtxtPtr ctxt) {
char buf[4096];
- char *bp=buf;
+ char *bp = buf;
- while(bp - buf < 4095) {
- if(ctxt->inrptr == ctxt->inptr) {
+ while (bp - buf < 4095) {
+ if (ctxt->inrptr == ctxt->inptr) {
if (xmlNanoHTTPRecv(ctxt) == 0) {
if (bp == buf)
return(NULL);
@@ -463,11 +500,11 @@
}
}
*bp = *ctxt->inrptr++;
- if(*bp == '\n') {
+ if (*bp == '\n') {
*bp = 0;
return(xmlMemStrdup(buf));
}
- if(*bp != '\r')
+ if (*bp != '\r')
bp++;
}
buf[4095] = 0;
@@ -567,7 +604,7 @@
struct timeval tv;
int status;
- if(s==-1) {
+ if (s==-1) {
#ifdef DEBUG_HTTP
perror("socket");
#endif
@@ -576,9 +613,6 @@
#ifdef _WINSOCKAPI_
{
- long levents = FD_READ | FD_WRITE | FD_ACCEPT |
- FD_CONNECT | FD_CLOSE ;
- int rv = 0 ;
u_long one = 1;
status = ioctlsocket(s, FIONBIO, &one) == SOCKET_ERROR ? -1 : 0;
@@ -590,7 +624,7 @@
status = IOCTL(s, FIONBIO, &enable);
}
#else /* VMS */
- if((status = fcntl(s, F_GETFL, 0)) != -1) {
+ if ((status = fcntl(s, F_GETFL, 0)) != -1) {
#ifdef O_NONBLOCK
status |= O_NONBLOCK;
#else /* O_NONBLOCK */
@@ -600,11 +634,11 @@
#endif /* !O_NONBLOCK */
status = fcntl(s, F_SETFL, status);
}
- if(status < 0) {
+ if (status < 0) {
#ifdef DEBUG_HTTP
perror("nonblocking");
#endif
- close(s);
+ closesocket(s);
return(-1);
}
#endif /* !VMS */
@@ -615,10 +649,10 @@
sin.sin_addr = ia;
sin.sin_port = htons(port);
- if((connect(s, (struct sockaddr *)&sin, sizeof(sin))==-1) &&
- (errno != EINPROGRESS)) {
+ if ((connect(s, (struct sockaddr *)&sin, sizeof(sin))==-1) &&
+ (socket_errno() != EINPROGRESS) && (socket_errno() != EWOULDBLOCK)) {
perror("connect");
- close(s);
+ closesocket(s);
return(-1);
}
@@ -632,14 +666,14 @@
{
case 0:
/* Time out */
- close(s);
+ closesocket(s);
return(-1);
case -1:
/* Ermm.. ?? */
#ifdef DEBUG_HTTP
perror("select");
#endif
- close(s);
+ closesocket(s);
return(-1);
}
@@ -655,7 +689,7 @@
return (-1);
}
if ( status ) {
- close (s);
+ closesocket(s);
errno = status;
return (-1);
}
@@ -686,7 +720,7 @@
int s;
h=gethostbyname(host);
- if(h==NULL)
+ if (h==NULL)
{
#ifdef DEBUG_HTTP
fprintf(stderr,"unable to resolve '%s'.\n", host);
@@ -699,7 +733,7 @@
struct in_addr ia;
memcpy(&ia, h->h_addr_list[i],4);
s = xmlNanoHTTPConnectAttempt(ia, port);
- if(s != -1)
+ if (s != -1)
return(s);
}
@@ -839,7 +873,7 @@
}
xmlNanoHTTPFreeCtxt(ctxt);
#ifdef DEBUG_HTTP
- printf("Too many redirrects, aborting ...\n");
+ printf("Too many redirects, aborting ...\n");
#endif
return(NULL);
diff --git a/result/XPath/tests/chaptersbase b/result/XPath/tests/chaptersbase
index 4b5b9cc..b004efe 100644
--- a/result/XPath/tests/chaptersbase
+++ b/result/XPath/tests/chaptersbase
@@ -3,79 +3,79 @@
Expression: /child::EXAMPLE
Object is a Node Set :
Set contains 1 nodes:
-1 ELEMENT EXAMPLE
- ATTRIBUTE prop1
- TEXT
- content=gnome is great
- ATTRIBUTE prop2
- TEXT
- content=& linux too
+1 ELEMENT EXAMPLE
+ ATTRIBUTE prop1
+ TEXT
+ content=gnome is great
+ ATTRIBUTE prop2
+ TEXT
+ content=& linux too
========================
Expression: /child::*
Object is a Node Set :
Set contains 1 nodes:
-1 ELEMENT EXAMPLE
- ATTRIBUTE prop1
- TEXT
- content=gnome is great
- ATTRIBUTE prop2
- TEXT
- content=& linux too
+1 ELEMENT EXAMPLE
+ ATTRIBUTE prop1
+ TEXT
+ content=gnome is great
+ ATTRIBUTE prop2
+ TEXT
+ content=& linux too
========================
Expression: /child::EXAMPLE/child::head
Object is a Node Set :
Set contains 1 nodes:
-1 ELEMENT head
+1 ELEMENT head
========================
Expression: /child::EXAMPLE/child::*
Object is a Node Set :
Set contains 6 nodes:
-1 ELEMENT head
-2 ELEMENT chapter
-3 ELEMENT chapter
-4 ELEMENT chapter
-5 ELEMENT chapter
-6 ELEMENT chapter
+1 ELEMENT head
+2 ELEMENT chapter
+3 ELEMENT chapter
+4 ELEMENT chapter
+5 ELEMENT chapter
+6 ELEMENT chapter
========================
Expression: /child::EXAMPLE/child::head/child::title
Object is a Node Set :
Set contains 1 nodes:
-1 ELEMENT title
+1 ELEMENT title
========================
Expression: /child::EXAMPLE/child::head/child::title/child::text()
Object is a Node Set :
Set contains 1 nodes:
-1 TEXT
- content=Welcome to Gnome
+1 TEXT
+ content=Welcome to Gnome
========================
Expression: /child::EXAMPLE/child::head/node()
Object is a Node Set :
Set contains 1 nodes:
-1 ELEMENT title
+1 ELEMENT title
========================
Expression: /descendant::title
Object is a Node Set :
Set contains 6 nodes:
-1 ELEMENT title
-2 ELEMENT title
-3 ELEMENT title
-4 ELEMENT title
-5 ELEMENT title
-6 ELEMENT title
+1 ELEMENT title
+2 ELEMENT title
+3 ELEMENT title
+4 ELEMENT title
+5 ELEMENT title
+6 ELEMENT title
========================
Expression: /descendant::p/ancestor::chapter
Object is a Node Set :
Set contains 5 nodes:
-1 ELEMENT chapter
-2 ELEMENT chapter
-3 ELEMENT chapter
-4 ELEMENT chapter
-5 ELEMENT chapter
+1 ELEMENT chapter
+2 ELEMENT chapter
+3 ELEMENT chapter
+4 ELEMENT chapter
+5 ELEMENT chapter
diff --git a/result/XPath/tests/chaptersprefol b/result/XPath/tests/chaptersprefol
index 5c33f2d..930bb7a 100644
--- a/result/XPath/tests/chaptersprefol
+++ b/result/XPath/tests/chaptersprefol
@@ -23,54 +23,54 @@
Expression: /child::EXAMPLE/child::chapter[3]/preceding::*
Object is a Node Set :
Set contains 10 nodes:
-1 ELEMENT p
-2 ELEMENT title
-3 ELEMENT chapter
-4 ELEMENT p
-5 ELEMENT image
- ATTRIBUTE href
- TEXT
- content=linus.gif
-6 ELEMENT p
-7 ELEMENT title
-8 ELEMENT chapter
-9 ELEMENT title
-10 ELEMENT head
+1 ELEMENT p
+2 ELEMENT title
+3 ELEMENT chapter
+4 ELEMENT p
+5 ELEMENT image
+ ATTRIBUTE href
+ TEXT
+ content=linus.gif
+6 ELEMENT p
+7 ELEMENT title
+8 ELEMENT chapter
+9 ELEMENT title
+10 ELEMENT head
========================
Expression: /child::EXAMPLE/child::chapter[3]/following::*
Object is a Node Set :
Set contains 6 nodes:
-1 ELEMENT chapter
-2 ELEMENT title
-3 ELEMENT p
-4 ELEMENT chapter
-5 ELEMENT title
-6 ELEMENT p
+1 ELEMENT chapter
+2 ELEMENT title
+3 ELEMENT p
+4 ELEMENT chapter
+5 ELEMENT title
+6 ELEMENT p
========================
Expression: /child::EXAMPLE/child::chapter[1]/image/preceding::*
Object is a Node Set :
Set contains 4 nodes:
-1 ELEMENT p
-2 ELEMENT title
-3 ELEMENT title
-4 ELEMENT head
+1 ELEMENT p
+2 ELEMENT title
+3 ELEMENT title
+4 ELEMENT head
========================
Expression: /child::EXAMPLE/child::chapter[1]/image/following::*
Object is a Node Set :
Set contains 13 nodes:
-1 ELEMENT p
-2 ELEMENT chapter
-3 ELEMENT title
-4 ELEMENT p
-5 ELEMENT chapter
-6 ELEMENT title
-7 ELEMENT p
-8 ELEMENT chapter
-9 ELEMENT title
-10 ELEMENT p
-11 ELEMENT chapter
-12 ELEMENT title
-13 ELEMENT p
+1 ELEMENT p
+2 ELEMENT chapter
+3 ELEMENT title
+4 ELEMENT p
+5 ELEMENT chapter
+6 ELEMENT title
+7 ELEMENT p
+8 ELEMENT chapter
+9 ELEMENT title
+10 ELEMENT p
+11 ELEMENT chapter
+12 ELEMENT title
+13 ELEMENT p
diff --git a/result/XPath/tests/idsimple b/result/XPath/tests/idsimple
index 3d15841..891b52e 100644
--- a/result/XPath/tests/idsimple
+++ b/result/XPath/tests/idsimple
@@ -3,31 +3,31 @@
Expression: //*[@id="root"]
Object is a Node Set :
Set contains 1 nodes:
-1 ELEMENT EXAMPLE
- ATTRIBUTE id
- TEXT
- content=root
- ATTRIBUTE prop1
- TEXT
- content=gnome is great
- ATTRIBUTE prop2
- TEXT
- content=& linux too
+1 ELEMENT EXAMPLE
+ ATTRIBUTE id
+ TEXT
+ content=root
+ ATTRIBUTE prop1
+ TEXT
+ content=gnome is great
+ ATTRIBUTE prop2
+ TEXT
+ content=& linux too
========================
Expression: //*[@id="chapter2"]
Object is a Node Set :
Set contains 1 nodes:
-1 ELEMENT chapter
- ATTRIBUTE id
- TEXT
- content=chapter2
+1 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter2
========================
Expression: //*[@id="chapter5"]
Object is a Node Set :
Set contains 1 nodes:
-1 ELEMENT chapter
- ATTRIBUTE id
- TEXT
- content=chapter5
+1 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter5
diff --git a/result/XPath/tests/simpleabbr b/result/XPath/tests/simpleabbr
index 188a719..e8d5d97 100644
--- a/result/XPath/tests/simpleabbr
+++ b/result/XPath/tests/simpleabbr
@@ -3,61 +3,61 @@
Expression: /EXAMPLE
Object is a Node Set :
Set contains 1 nodes:
-1 ELEMENT EXAMPLE
- ATTRIBUTE prop1
- TEXT
- content=gnome is great
- ATTRIBUTE prop2
- TEXT
- content=& linux too
+1 ELEMENT EXAMPLE
+ ATTRIBUTE prop1
+ TEXT
+ content=gnome is great
+ ATTRIBUTE prop2
+ TEXT
+ content=& linux too
========================
Expression: /EXAMPLE/head
Object is a Node Set :
Set contains 1 nodes:
-1 ELEMENT head
+1 ELEMENT head
========================
Expression: /EXAMPLE/chapter[1]
Object is a Node Set :
Set contains 1 nodes:
-1 ELEMENT chapter
+1 ELEMENT chapter
========================
Expression: //p
Object is a Node Set :
Set contains 2 nodes:
-1 ELEMENT p
-2 ELEMENT p
+1 ELEMENT p
+2 ELEMENT p
========================
Expression: //chapter/image
Object is a Node Set :
Set contains 1 nodes:
-1 ELEMENT image
- ATTRIBUTE href
- TEXT
- content=linus.gif
+1 ELEMENT image
+ ATTRIBUTE href
+ TEXT
+ content=linus.gif
========================
Expression: //p/text()
Object is a Node Set :
Set contains 2 nodes:
-1 TEXT
- content=bla bla bla ...
-2 TEXT
- content=...
+1 TEXT
+ content=bla bla bla ...
+2 TEXT
+ content=...
========================
Expression: //p/text()[position()=1]
Object is a Node Set :
Set contains 1 nodes:
-1 TEXT
- content=bla bla bla ...
+1 TEXT
+ content=bla bla bla ...
========================
Expression: //p/text()[position()=last()]
Object is a Node Set :
Set contains 1 nodes:
-1 TEXT
- content=...
+1 TEXT
+ content=...
diff --git a/result/XPath/tests/simplebase b/result/XPath/tests/simplebase
index 2e9687c..2ee65cb 100644
--- a/result/XPath/tests/simplebase
+++ b/result/XPath/tests/simplebase
@@ -3,67 +3,67 @@
Expression: /child::*
Object is a Node Set :
Set contains 1 nodes:
-1 ELEMENT EXAMPLE
- ATTRIBUTE prop1
- TEXT
- content=gnome is great
- ATTRIBUTE prop2
- TEXT
- content=& linux too
+1 ELEMENT EXAMPLE
+ ATTRIBUTE prop1
+ TEXT
+ content=gnome is great
+ ATTRIBUTE prop2
+ TEXT
+ content=& linux too
========================
Expression: /child::EXAMPLE
Object is a Node Set :
Set contains 1 nodes:
-1 ELEMENT EXAMPLE
- ATTRIBUTE prop1
- TEXT
- content=gnome is great
- ATTRIBUTE prop2
- TEXT
- content=& linux too
+1 ELEMENT EXAMPLE
+ ATTRIBUTE prop1
+ TEXT
+ content=gnome is great
+ ATTRIBUTE prop2
+ TEXT
+ content=& linux too
========================
Expression: /child::EXAMPLE/child::head
Object is a Node Set :
Set contains 1 nodes:
-1 ELEMENT head
+1 ELEMENT head
========================
Expression: /child::EXAMPLE/child::*
Object is a Node Set :
Set contains 2 nodes:
-1 ELEMENT head
-2 ELEMENT chapter
+1 ELEMENT head
+2 ELEMENT chapter
========================
Expression: /child::EXAMPLE/child::head/child::title
Object is a Node Set :
Set contains 1 nodes:
-1 ELEMENT title
+1 ELEMENT title
========================
Expression: /child::EXAMPLE/child::head/child::title/child::text()
Object is a Node Set :
Set contains 1 nodes:
-1 TEXT
- content=Welcome to Gnome
+1 TEXT
+ content=Welcome to Gnome
========================
Expression: /child::EXAMPLE/child::head/node()
Object is a Node Set :
Set contains 1 nodes:
-1 ELEMENT title
+1 ELEMENT title
========================
Expression: /descendant::title
Object is a Node Set :
Set contains 2 nodes:
-1 ELEMENT title
-2 ELEMENT title
+1 ELEMENT title
+2 ELEMENT title
========================
Expression: /descendant::p/ancestor::chapter
Object is a Node Set :
Set contains 1 nodes:
-1 ELEMENT chapter
+1 ELEMENT chapter
diff --git a/result/XPath/tests/usr1check b/result/XPath/tests/usr1check
index f1f2faa..0308991 100644
--- a/result/XPath/tests/usr1check
+++ b/result/XPath/tests/usr1check
@@ -3,10 +3,10 @@
Expression: //ITEM[1]
Object is a Node Set :
Set contains 1 nodes:
-1 ELEMENT ITEM
- ATTRIBUTE monto
- TEXT
- content=50.12
- ATTRIBUTE divisa
- TEXT
- content=DOL
+1 ELEMENT ITEM
+ ATTRIBUTE monto
+ TEXT
+ content=50.12
+ ATTRIBUTE divisa
+ TEXT
+ content=DOL
diff --git a/test/XPath/docs/chapters b/test/XPath/docs/chapters
index bf402d1..c48f65e 100644
--- a/test/XPath/docs/chapters
+++ b/test/XPath/docs/chapters
@@ -3,25 +3,25 @@
<head>
<title>Welcome to Gnome</title>
</head>
- <chapter>
+ <chapter id="chapter1">
<title>The Linux adventure</title>
<p>bla bla bla ...</p>
<image href="linus.gif"/>
<p>...</p>
</chapter>
- <chapter>
+ <chapter id="chapter2">
<title>Chapter 2</title>
<p>this is chapter 2 ...</p>
</chapter>
- <chapter>
+ <chapter id="chapter3">
<title>Chapter 3</title>
<p>this is chapter 3 ...</p>
</chapter>
- <chapter>
+ <chapter id="chapter4">
<title>Chapter 4</title>
<p>this is chapter 4 ...</p>
</chapter>
- <chapter>
+ <chapter id="chapter5">
<title>Chapter 5</title>
<p>this is chapter 5 ...</p>
</chapter>
diff --git a/test/XPath/tests/chaptersprefol b/test/XPath/tests/chaptersprefol
index e95995b..8f1e65b 100644
--- a/test/XPath/tests/chaptersprefol
+++ b/test/XPath/tests/chaptersprefol
@@ -1 +1,8 @@
-/following::* /preceding::* /child::EXAMPLE/preceding::* /child::EXAMPLE/following::* /child::EXAMPLE/child::chapter[3]/preceding::* /child::EXAMPLE/child::chapter[3]/following::* /child::EXAMPLE/child::chapter[1]/image/preceding::* /child::EXAMPLE/child::chapter[1]/image/following::*
+/following::*
+/preceding::*
+/child::EXAMPLE/preceding::*
+/child::EXAMPLE/following::*
+/child::EXAMPLE/child::chapter[3]/preceding::*
+/child::EXAMPLE/child::chapter[3]/following::*
+/child::EXAMPLE/child::chapter[1]/image/preceding::*
+/child::EXAMPLE/child::chapter[1]/image/following::*
diff --git a/testXPath.c b/testXPath.c
index 65fc545..1133d4c 100644
--- a/testXPath.c
+++ b/testXPath.c
@@ -150,7 +150,7 @@
for (i = 0;i < cur->locNr;i++) {
fprintf(output, shift);
- fprintf(output, "%d :\n", i + 1);
+ fprintf(output, "%d : ", i + 1);
xmlXPAthDebugDumpObject(output, cur->locTab[i], depth + 1);
}
}
@@ -197,16 +197,18 @@
fprintf(output, "\n");
break;
case XPATH_RANGE:
- fprintf(output, "Object is a range : from ");
+ fprintf(output, "Object is a range :\n");
+ fprintf(output, shift);
+ fprintf(output, "From ");
if (cur->index >= 0)
fprintf(output, "index %d in ", cur->index);
- fprintf(output, "node");
+ fprintf(output, "node\n");
xmlXPAthDebugDumpNode(output, (xmlNodePtr) cur->user, depth + 1);
fprintf(output, shift);
- fprintf(output, " to ");
+ fprintf(output, "To ");
if (cur->index2 >= 0)
fprintf(output, "index %d in ", cur->index2);
- fprintf(output, "node");
+ fprintf(output, "node\n");
xmlXPAthDebugDumpNode(output, (xmlNodePtr) cur->user2, depth + 1);
fprintf(output, "\n");
break;
diff --git a/valid.c b/valid.c
index 4b2f620..f5b40e2 100644
--- a/valid.c
+++ b/valid.c
@@ -1823,9 +1823,7 @@
if (doc == NULL) return(0);
if (attr == NULL) return(0);
if ((doc->intSubset == NULL) && (doc->extSubset == NULL)) {
- if (((attr->name[0] == 'I') || (attr->name[0] == 'i')) &&
- ((attr->name[1] == 'D') || (attr->name[1] == 'd')) &&
- (attr->name[2] == 0)) return(1);
+ return(0);
} else if (doc->type == XML_HTML_DOCUMENT_NODE) {
if ((xmlStrEqual(BAD_CAST "id", attr->name)) ||
(xmlStrEqual(BAD_CAST "name", attr->name)))
diff --git a/win32/Makefile.mingw b/win32/Makefile.mingw
new file mode 100644
index 0000000..11ff7bc
--- /dev/null
+++ b/win32/Makefile.mingw
@@ -0,0 +1,95 @@
+# This Makefile will allow you to build the static library, a DLL, the
+# DLL-import library, and the test executables using the "mingw" gcc
+# compiler environment. This Makefile is based on Alfred Reibenschuh's
+# version for 2.1.1, and was modified by Wayne Davison.
+
+# Set "PREFIX" to the root of the mingw installed files.
+
+PREFIX = /mingw
+
+CC=gcc
+CFLAGS=-O -Iinclude -I$(PREFIX)/include -D_WINSOCKAPI_ -fnative-struct
+LDFLAGS=-L. -L$(PREFIX)/lib
+LIBS=-lwsock32 -lz
+
+AR=ar rc
+DLLTOOL=dlltool
+DLLWRAP=dllwrap
+
+LIBSRCS=HTMLparser.c \
+ HTMLtree.c \
+ SAX.c \
+ debugXML.c \
+ encoding.c \
+ entities.c \
+ error.c \
+ nanoftp.c \
+ nanohttp.c \
+ parser.c \
+ parserInternals.c \
+ tree.c \
+ valid.c \
+ xlink.c \
+ xmlIO.c \
+ xmlmemory.c \
+ xpath.c \
+ uri.c
+
+LIBOBJS=$(LIBSRCS:.c=.o)
+
+OBJS=$(LIBOBJS)
+
+LIBBASE=xml
+LIB=lib$(LIBBASE).a
+DLL=$(LIB:.a=.dll)
+
+OBJ1=testHTML.o
+OBJ2=testSAX.o
+OBJ3=testURI.o
+EXE1=$(OBJ1:.o=.exe)
+EXE2=$(OBJ2:.o=.exe)
+EXE3=$(OBJ3:.o=.exe)
+
+IMPBASE=$(LIBBASE)_dll
+IMP=lib$(IMPBASE).a
+
+DEF=$(DLL:.dll=.def)
+
+all: $(LIB) $(DLL) $(DEF) $(IMP) $(EXE1) $(EXE2) $(EXE3)
+
+dll: $(DLL)
+
+lib: $(LIB)
+
+$(DLL): $(LIB) $(DEF) $(IMP)
+ $(DLLWRAP) --def $(DEF) --dllname $@ --output-lib $@ $(LIB) $(LDFLAGS) $(LIBS) -mwindows
+
+$(LIB): $(LIBOBJS)
+ $(AR) $@ $^
+
+$(DEF): $(LIBOBJS)
+ $(DLLTOOL) --kill-at --export-all -D $(DLL) --output-def $@ $^
+
+$(IMP): $(DEF)
+ $(DLLTOOL) -d $< -l $@ -D $(DLL)
+
+$(EXE1): $(OBJ1) $(LIBOBJS) $(DLL)
+ $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS) -l$(IMPBASE) $(LIBS)
+ strip $@
+
+$(EXE2): $(OBJ2) $(LIBOBJS) $(DLL)
+ $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS) -l$(IMPBASE) $(LIBS)
+ strip $@
+
+$(EXE3): $(OBJ3) $(LIBOBJS) $(LIB)
+ $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS) -l$(LIBBASE) $(LIBS)
+ strip $@
+
+.c.o:
+ $(CC) $(CFLAGS) -c $< -o $@
+
+clean:
+ rm *.o *.a *.dll *.def
+
+test: all
+ ./$(EXE1) -c $(OBJS) | xxd | head -3
diff --git a/win32/README.MSDev b/win32/README.MSDev
index 47b8dd8..411a607 100644
--- a/win32/README.MSDev
+++ b/win32/README.MSDev
@@ -1,41 +1,30 @@
-The configuration stuff (i.e. what should be enabled/disabled) is in xmlversion.h
-I only tested it compiled fine with the current settings
+If you're creating libxml2 with the "mingw" compiler, just copy the
+Makefile.mingw to the root directory as "Makefile", edit the PREFIX
+value, and run "make".
+
+If you're using MSVC, here are some instructions for how you can
+proceed:
+
+The configuration stuff (i.e. what should be enabled/disabled) is in
+xmlversion.h I only tested it compiled fine with the current settings
(that is nearly everything disabled, I didn't need many features)
----------------------------
-How did I get everything in place so the MSDev project works from the original archive?
+How did I get everything in place so the MSDev project works from the
+original archive?
from the cygwin prompt (http://sources.redhat.com/cygwin) :
$ ./configure --disable-corba --without-ftp --without-http --without-html --wit
hout-xpath --without-iconv --without-debug
-created a libxml directory and copied the following headers in:
-HTMLparser.h entities.h tree.h xmlIO.h
-HTMLtree.h nanoftp.h uri.h xmlmemory.h
-SAX.h nanohttp.h valid.h xmlversion.h
-debugXML.h parser.h xlink.h xpath.h
-encoding.h parserInternals.h xml-error.h
-
-modified win32config.h to comment out
-#define LIBXML_VERSION 20204
-#define LIBXML_VERSION_STRING "2.2.4"
-(is already in xmlversion.h)
-
built the project file for the static library
----------------------------
diff after doing the changes and cleaning up the generated stuff:
-Only in libxml2-2.2.4: MSDev
-Common subdirectories: libxml2-2.2.4/SAXresult and libxml2-2.2.4-reference/SAXresult
-Common subdirectories: libxml2-2.2.4/doc and libxml2-2.2.4-reference/doc
-Common subdirectories: libxml2-2.2.4/example and libxml2-2.2.4-reference/example
-Only in libxml2-2.2.4: libxml
-Common subdirectories: libxml2-2.2.4/result and libxml2-2.2.4-reference/result
-Common subdirectories: libxml2-2.2.4/test and libxml2-2.2.4-reference/test
-Only in libxml2-2.2.4: win32config.h
+[Note: this is out of date]
diff libxml2-2.2.4/xmlversion.h libxml2-2.2.4-reference/xmlversion.h
38c38
< #if 0
diff --git a/win32/libxml2/libxml2.dsp b/win32/libxml2/libxml2.dsp
index 286b250..52c24fd 100644
--- a/win32/libxml2/libxml2.dsp
+++ b/win32/libxml2/libxml2.dsp
@@ -1,166 +1,169 @@
-# Microsoft Developer Studio Project File - Name="libxml2" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=libxml2 - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "libxml2.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "libxml2.mak" CFG="libxml2 - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "libxml2 - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "libxml2 - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "libxml2 - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Target_Dir ""
-F90=df.exe
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "..\.." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "libxml2 - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Target_Dir ""
-F90=df.exe
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "libxml2 - Win32 Release"
-# Name "libxml2 - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\debugXML.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\encoding.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\entities.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\error.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\HTMLparser.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\HTMLtree.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\nanoftp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\nanohttp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\parser.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\parserInternals.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\SAX.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\tree.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\uri.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\valid.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\xlink.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\xmlIO.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\xmlmemory.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\xpath.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="libxml2" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=libxml2 - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "libxml2.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "libxml2.mak" CFG="libxml2 - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "libxml2 - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "libxml2 - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+F90=df.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "libxml2 - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE F90 /include:"Release/"
+# ADD F90 /include:"Release/"
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "libxml2 - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE F90 /include:"Debug/"
+# ADD F90 /include:"Debug/"
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "libxml2 - Win32 Release"
+# Name "libxml2 - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\debugXML.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\encoding.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\entities.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\error.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\HTMLparser.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\HTMLtree.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\nanoftp.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\nanohttp.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\parser.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\parserInternals.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\SAX.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\tree.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\uri.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\valid.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\xlink.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\xmlIO.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\xmlmemory.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\xpath.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# End Target
+# End Project