Released 1.8.6, Daniel.
diff --git a/ChangeLog b/ChangeLog
index 2d5603b..a1c6a7c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+Mon Jan 31 14:25:57 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org>
+
+ * nanoftp.[ch]: cleanup, bug fixes, integration in rpmfind, added
+ xmlNanoFTPUpdateURL for persistent control connections.
+ * configure.in: 1.8.6
+
+Thu Jan 27 17:52:29 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org>
+
+ * nanohttp.[ch], nanoftp.[ch]: cleanup, added proxy support
+ * tree.[ch] : added xmlSaveNoEmptyTags
+
2000-01-29 James Henstridge <james@daa.com.au>
* nanoftp.c: include <netinet/in.h> for IPPROTO_TCP.
diff --git a/configure.in b/configure.in
index e3b5844..3665b54 100644
--- a/configure.in
+++ b/configure.in
@@ -5,7 +5,7 @@
LIBXML_MAJOR_VERSION=1
LIBXML_MINOR_VERSION=8
-LIBXML_MICRO_VERSION=5
+LIBXML_MICRO_VERSION=6
LIBXML_VERSION=$LIBXML_MAJOR_VERSION.$LIBXML_MINOR_VERSION.$LIBXML_MICRO_VERSION
LIBXML_VERSION_INFO=`expr $LIBXML_MAJOR_VERSION + $LIBXML_MINOR_VERSION`:$LIBXML_MICRO_VERSION:$LIBXML_MINOR_VERSION
diff --git a/doc/html/gnome-xml-debugxml.html b/doc/html/gnome-xml-debugxml.html
index ba39ab4..03fdbad 100644
--- a/doc/html/gnome-xml-debugxml.html
+++ b/doc/html/gnome-xml-debugxml.html
@@ -115,7 +115,7 @@
><DIV
CLASS="REFNAMEDIV"
><A
-NAME="AEN12232"
+NAME="AEN12350"
></A
><H2
>Name</H2
@@ -123,7 +123,7 @@
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN12235"
+NAME="AEN12353"
></A
><H2
>Synopsis</H2
@@ -304,7 +304,7 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN12279"
+NAME="AEN12397"
></A
><H2
>Description</H2
@@ -314,14 +314,14 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN12282"
+NAME="AEN12400"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12284"
+NAME="AEN12402"
></A
><H3
><A
@@ -403,7 +403,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12304"
+NAME="AEN12422"
></A
><H3
><A
@@ -503,7 +503,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12328"
+NAME="AEN12446"
></A
><H3
><A
@@ -603,7 +603,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12352"
+NAME="AEN12470"
></A
><H3
><A
@@ -703,7 +703,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12376"
+NAME="AEN12494"
></A
><H3
><A
@@ -803,7 +803,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12400"
+NAME="AEN12518"
></A
><H3
><A
@@ -903,7 +903,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12424"
+NAME="AEN12542"
></A
><H3
><A
@@ -985,7 +985,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12444"
+NAME="AEN12562"
></A
><H3
><A
@@ -1067,7 +1067,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12464"
+NAME="AEN12582"
></A
><H3
><A
@@ -1149,7 +1149,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12484"
+NAME="AEN12602"
></A
><H3
><A
@@ -1231,7 +1231,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12504"
+NAME="AEN12622"
></A
><H3
><A
@@ -1304,7 +1304,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12522"
+NAME="AEN12640"
></A
><H3
><A
@@ -1338,7 +1338,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12527"
+NAME="AEN12645"
></A
><H3
><A
@@ -1364,7 +1364,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12532"
+NAME="AEN12650"
></A
><H3
><A
@@ -1500,7 +1500,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12565"
+NAME="AEN12683"
></A
><H3
><A
diff --git a/doc/html/gnome-xml-encoding.html b/doc/html/gnome-xml-encoding.html
index 18c1a4c..fadb5d4 100644
--- a/doc/html/gnome-xml-encoding.html
+++ b/doc/html/gnome-xml-encoding.html
@@ -115,7 +115,7 @@
><DIV
CLASS="REFNAMEDIV"
><A
-NAME="AEN12015"
+NAME="AEN12133"
></A
><H2
>Name</H2
@@ -123,7 +123,7 @@
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN12018"
+NAME="AEN12136"
></A
><H2
>Synopsis</H2
@@ -219,7 +219,7 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN12039"
+NAME="AEN12157"
></A
><H2
>Description</H2
@@ -229,14 +229,14 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN12042"
+NAME="AEN12160"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12044"
+NAME="AEN12162"
></A
><H3
><A
@@ -286,7 +286,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12049"
+NAME="AEN12167"
></A
><H3
><A
@@ -413,7 +413,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12079"
+NAME="AEN12197"
></A
><H3
><A
@@ -540,7 +540,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12109"
+NAME="AEN12227"
></A
><H3
><A
@@ -570,7 +570,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12114"
+NAME="AEN12232"
></A
><H3
><A
@@ -596,7 +596,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12119"
+NAME="AEN12237"
></A
><H3
><A
@@ -627,7 +627,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12125"
+NAME="AEN12243"
></A
><H3
><A
@@ -656,7 +656,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12131"
+NAME="AEN12249"
></A
><H3
><A
@@ -719,7 +719,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12147"
+NAME="AEN12265"
></A
><H3
><A
@@ -799,7 +799,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12167"
+NAME="AEN12285"
></A
><H3
><A
@@ -880,7 +880,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12187"
+NAME="AEN12305"
></A
><H3
><A
@@ -962,7 +962,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12208"
+NAME="AEN12326"
></A
><H3
><A
diff --git a/doc/html/gnome-xml-entities.html b/doc/html/gnome-xml-entities.html
index bfb9447..abe300d 100644
--- a/doc/html/gnome-xml-entities.html
+++ b/doc/html/gnome-xml-entities.html
@@ -115,7 +115,7 @@
><DIV
CLASS="REFNAMEDIV"
><A
-NAME="AEN5870"
+NAME="AEN5876"
></A
><H2
>Name</H2
@@ -123,7 +123,7 @@
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN5873"
+NAME="AEN5879"
></A
><H2
>Synopsis</H2
@@ -356,7 +356,7 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN5933"
+NAME="AEN5939"
></A
><H2
>Description</H2
@@ -366,14 +366,14 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN5936"
+NAME="AEN5942"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5938"
+NAME="AEN5944"
></A
><H3
><A
@@ -399,7 +399,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5943"
+NAME="AEN5949"
></A
><H3
><A
@@ -425,7 +425,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5948"
+NAME="AEN5954"
></A
><H3
><A
@@ -451,7 +451,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5953"
+NAME="AEN5959"
></A
><H3
><A
@@ -477,7 +477,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5958"
+NAME="AEN5964"
></A
><H3
><A
@@ -503,7 +503,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5963"
+NAME="AEN5969"
></A
><H3
><A
@@ -529,7 +529,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5968"
+NAME="AEN5974"
></A
><H3
><A
@@ -564,7 +564,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5973"
+NAME="AEN5979"
></A
><H3
><A
@@ -590,7 +590,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5978"
+NAME="AEN5984"
></A
><H3
><A
@@ -616,7 +616,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5983"
+NAME="AEN5989"
></A
><H3
><A
@@ -646,7 +646,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5988"
+NAME="AEN5994"
></A
><H3
><A
@@ -672,7 +672,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5993"
+NAME="AEN5999"
></A
><H3
><A
@@ -837,7 +837,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6033"
+NAME="AEN6039"
></A
><H3
><A
@@ -1002,7 +1002,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6073"
+NAME="AEN6079"
></A
><H3
><A
@@ -1083,7 +1083,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6094"
+NAME="AEN6100"
></A
><H3
><A
@@ -1187,7 +1187,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6120"
+NAME="AEN6126"
></A
><H3
><A
@@ -1290,7 +1290,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6146"
+NAME="AEN6152"
></A
><H3
><A
@@ -1393,7 +1393,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6172"
+NAME="AEN6178"
></A
><H3
><A
@@ -1502,7 +1502,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6200"
+NAME="AEN6206"
></A
><H3
><A
@@ -1610,7 +1610,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6227"
+NAME="AEN6233"
></A
><H3
><A
@@ -1671,7 +1671,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6243"
+NAME="AEN6249"
></A
><H3
><A
@@ -1752,7 +1752,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6264"
+NAME="AEN6270"
></A
><H3
><A
@@ -1815,7 +1815,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6280"
+NAME="AEN6286"
></A
><H3
><A
@@ -1899,7 +1899,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6301"
+NAME="AEN6307"
></A
><H3
><A
diff --git a/doc/html/gnome-xml-htmlparser.html b/doc/html/gnome-xml-htmlparser.html
index 125e023..cac830f 100644
--- a/doc/html/gnome-xml-htmlparser.html
+++ b/doc/html/gnome-xml-htmlparser.html
@@ -115,7 +115,7 @@
><DIV
CLASS="REFNAMEDIV"
><A
-NAME="AEN8057"
+NAME="AEN8063"
></A
><H2
>Name</H2
@@ -123,7 +123,7 @@
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN8060"
+NAME="AEN8066"
></A
><H2
>Synopsis</H2
@@ -354,7 +354,7 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN8117"
+NAME="AEN8123"
></A
><H2
>Description</H2
@@ -364,14 +364,14 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN8120"
+NAME="AEN8126"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8122"
+NAME="AEN8128"
></A
><H3
><A
@@ -397,7 +397,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8127"
+NAME="AEN8133"
></A
><H3
><A
@@ -423,7 +423,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8132"
+NAME="AEN8138"
></A
><H3
><A
@@ -449,7 +449,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8137"
+NAME="AEN8143"
></A
><H3
><A
@@ -475,7 +475,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8142"
+NAME="AEN8148"
></A
><H3
><A
@@ -501,7 +501,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8147"
+NAME="AEN8153"
></A
><H3
><A
@@ -527,7 +527,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8152"
+NAME="AEN8158"
></A
><H3
><A
@@ -553,7 +553,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8157"
+NAME="AEN8163"
></A
><H3
><A
@@ -579,7 +579,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8162"
+NAME="AEN8168"
></A
><H3
><A
@@ -605,7 +605,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8167"
+NAME="AEN8173"
></A
><H3
><A
@@ -639,7 +639,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8172"
+NAME="AEN8178"
></A
><H3
><A
@@ -665,7 +665,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8177"
+NAME="AEN8183"
></A
><H3
><A
@@ -695,7 +695,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8182"
+NAME="AEN8188"
></A
><H3
><A
@@ -721,7 +721,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8187"
+NAME="AEN8193"
></A
><H3
><A
@@ -802,7 +802,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8208"
+NAME="AEN8214"
></A
><H3
><A
@@ -885,7 +885,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8230"
+NAME="AEN8236"
></A
><H3
><A
@@ -986,7 +986,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8255"
+NAME="AEN8261"
></A
><H3
><A
@@ -1109,7 +1109,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8285"
+NAME="AEN8291"
></A
><H3
><A
@@ -1214,7 +1214,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8312"
+NAME="AEN8318"
></A
><H3
><A
@@ -1298,7 +1298,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8334"
+NAME="AEN8340"
></A
><H3
><A
@@ -1365,7 +1365,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8352"
+NAME="AEN8358"
></A
><H3
><A
@@ -1505,7 +1505,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8386"
+NAME="AEN8392"
></A
><H3
><A
@@ -1604,7 +1604,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8411"
+NAME="AEN8417"
></A
><H3
><A
@@ -1742,7 +1742,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8444"
+NAME="AEN8450"
></A
><H3
><A
@@ -1839,7 +1839,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8468"
+NAME="AEN8474"
></A
><H3
><A
@@ -1903,7 +1903,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8484"
+NAME="AEN8490"
></A
><H3
><A
@@ -2090,7 +2090,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8528"
+NAME="AEN8534"
></A
><H3
><A
diff --git a/doc/html/gnome-xml-htmltree.html b/doc/html/gnome-xml-htmltree.html
index 9e0e4b2..0cb5281 100644
--- a/doc/html/gnome-xml-htmltree.html
+++ b/doc/html/gnome-xml-htmltree.html
@@ -115,7 +115,7 @@
><DIV
CLASS="REFNAMEDIV"
><A
-NAME="AEN8565"
+NAME="AEN8571"
></A
><H2
>Name</H2
@@ -123,7 +123,7 @@
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN8568"
+NAME="AEN8574"
></A
><H2
>Synopsis</H2
@@ -188,7 +188,7 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN8582"
+NAME="AEN8588"
></A
><H2
>Description</H2
@@ -198,14 +198,14 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN8585"
+NAME="AEN8591"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8587"
+NAME="AEN8593"
></A
><H3
><A
@@ -231,7 +231,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8592"
+NAME="AEN8598"
></A
><H3
><A
@@ -257,7 +257,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8597"
+NAME="AEN8603"
></A
><H3
><A
@@ -283,7 +283,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8602"
+NAME="AEN8608"
></A
><H3
><A
@@ -386,7 +386,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8627"
+NAME="AEN8633"
></A
><H3
><A
@@ -470,7 +470,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8648"
+NAME="AEN8654"
></A
><H3
><A
diff --git a/doc/html/gnome-xml-nanoftp.html b/doc/html/gnome-xml-nanoftp.html
index a4692c9..19b332e 100644
--- a/doc/html/gnome-xml-nanoftp.html
+++ b/doc/html/gnome-xml-nanoftp.html
@@ -115,7 +115,7 @@
><DIV
CLASS="REFNAMEDIV"
><A
-NAME="AEN9291"
+NAME="AEN9326"
></A
><H2
>Name</H2
@@ -123,7 +123,7 @@
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN9294"
+NAME="AEN9329"
></A
><H2
>Synopsis</H2
@@ -154,6 +154,7 @@
int year,
const char *month,
int day,
+ int hour,
int minute);
void (<A
HREF="gnome-xml-nanoftp.html#FTPDATACALLBACK"
@@ -165,6 +166,10 @@
HREF="gnome-xml-nanoftp.html#XMLNANOFTPINIT"
>xmlNanoFTPInit</A
> (void);
+void <A
+HREF="gnome-xml-nanoftp.html#XMLNANOFTPCLEANUP"
+>xmlNanoFTPCleanup</A
+> (void);
void* <A
HREF="gnome-xml-nanoftp.html#XMLNANOFTPNEWCTXT"
>xmlNanoFTPNewCtxt</A
@@ -194,6 +199,23 @@
HREF="gnome-xml-nanoftp.html#XMLNANOFTPQUIT"
>xmlNanoFTPQuit</A
> (void *ctx);
+void <A
+HREF="gnome-xml-nanoftp.html#XMLNANOFTPSCANPROXY"
+>xmlNanoFTPScanProxy</A
+> (const char *URL);
+void <A
+HREF="gnome-xml-nanoftp.html#XMLNANOFTPPROXY"
+>xmlNanoFTPProxy</A
+> (const char *host,
+ int port,
+ const char *user,
+ const char *passwd,
+ int type);
+int <A
+HREF="gnome-xml-nanoftp.html#XMLNANOFTPUPDATEURL"
+>xmlNanoFTPUpdateURL</A
+> (void *ctx,
+ const char *URL);
int <A
HREF="gnome-xml-nanoftp.html#XMLNANOFTPGETRESPONSE"
>xmlNanoFTPGetResponse</A
@@ -253,7 +275,7 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN9319"
+NAME="AEN9358"
></A
><H2
>Description</H2
@@ -263,14 +285,14 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN9322"
+NAME="AEN9361"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9324"
+NAME="AEN9363"
></A
><H3
><A
@@ -299,6 +321,7 @@
int year,
const char *month,
int day,
+ int hour,
int minute);</PRE
></TD
></TR
@@ -494,6 +517,23 @@
><TT
CLASS="PARAMETER"
><I
+>hour</I
+></TT
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> </TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
>minute</I
></TT
> :</TD
@@ -511,7 +551,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9379"
+NAME="AEN9422"
></A
><H3
><A
@@ -605,7 +645,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9401"
+NAME="AEN9444"
></A
><H3
><A
@@ -626,14 +666,42 @@
></TR
></TABLE
><P
->Initialize the FTP handling.</P
+>Initialize the FTP protocol layer.
+Currently it just checks for proxy informations,
+and get the hostname</P
><P
></P
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9407"
+NAME="AEN9450"
+></A
+><H3
+><A
+NAME="XMLNANOFTPCLEANUP"
+></A
+>xmlNanoFTPCleanup ()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#D6E8FF"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>void xmlNanoFTPCleanup (void);</PRE
+></TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN9455"
></A
><H3
><A
@@ -693,7 +761,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9422"
+NAME="AEN9470"
></A
><H3
><A
@@ -753,7 +821,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9437"
+NAME="AEN9485"
></A
><H3
><A
@@ -831,7 +899,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9456"
+NAME="AEN9504"
></A
><H3
><A
@@ -891,7 +959,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9471"
+NAME="AEN9519"
></A
><H3
><A
@@ -966,7 +1034,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9490"
+NAME="AEN9538"
></A
><H3
><A
@@ -1041,7 +1109,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9509"
+NAME="AEN9557"
></A
><H3
><A
@@ -1116,7 +1184,306 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9528"
+NAME="AEN9576"
+></A
+><H3
+><A
+NAME="XMLNANOFTPSCANPROXY"
+></A
+>xmlNanoFTPScanProxy ()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#D6E8FF"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>void xmlNanoFTPScanProxy (const char *URL);</PRE
+></TD
+></TR
+></TABLE
+><P
+>(Re)Initialize the FTP Proxy context by parsing the URL and finding
+the protocol host port it indicates.
+Should be like ftp://myproxy/ or ftp://myproxy:3128/
+A NULL URL cleans up proxy informations.</P
+><P
+></P
+><DIV
+CLASS="INFORMALTABLE"
+><P
+></P
+><TABLE
+BORDER="0"
+WIDTH="100%"
+BGCOLOR="#FFD0D0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>URL</I
+></TT
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> The proxy URL used to initialize the proxy context</TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN9591"
+></A
+><H3
+><A
+NAME="XMLNANOFTPPROXY"
+></A
+>xmlNanoFTPProxy ()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#D6E8FF"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>void xmlNanoFTPProxy (const char *host,
+ int port,
+ const char *user,
+ const char *passwd,
+ int type);</PRE
+></TD
+></TR
+></TABLE
+><P
+>Setup the FTP proxy informations.
+This can also be done by using ftp_proxy ftp_proxy_user and
+ftp_proxy_password environment variables.</P
+><P
+></P
+><DIV
+CLASS="INFORMALTABLE"
+><P
+></P
+><TABLE
+BORDER="0"
+WIDTH="100%"
+BGCOLOR="#FFD0D0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>host</I
+></TT
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> the proxy host name</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>port</I
+></TT
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> the proxy port</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>user</I
+></TT
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> the proxy user name</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>passwd</I
+></TT
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> the proxy password</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>type</I
+></TT
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> the type of proxy 1 for using SITE, 2 for USER a<TT
+CLASS="PARAMETER"
+><I
+>b</I
+></TT
+></TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN9623"
+></A
+><H3
+><A
+NAME="XMLNANOFTPUPDATEURL"
+></A
+>xmlNanoFTPUpdateURL ()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#D6E8FF"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>int xmlNanoFTPUpdateURL (void *ctx,
+ const char *URL);</PRE
+></TD
+></TR
+></TABLE
+><P
+>Update an FTP context by parsing the URL and finding
+new path it indicates. If there is an error in the
+protocol, hostname, port or other information, the
+error is raised. It indicates a new connection has to
+be established.</P
+><P
+></P
+><DIV
+CLASS="INFORMALTABLE"
+><P
+></P
+><TABLE
+BORDER="0"
+WIDTH="100%"
+BGCOLOR="#FFD0D0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>ctx</I
+></TT
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> an FTP context</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>URL</I
+></TT
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> The URL used to update the context</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><I
+CLASS="EMPHASIS"
+>Returns</I
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>0 if Ok, -1 in case of error (other host).</TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN9646"
></A
><H3
><A
@@ -1191,7 +1558,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9547"
+NAME="AEN9665"
></A
><H3
><A
@@ -1266,7 +1633,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9566"
+NAME="AEN9684"
></A
><H3
><A
@@ -1357,7 +1724,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9588"
+NAME="AEN9706"
></A
><H3
><A
@@ -1433,7 +1800,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9607"
+NAME="AEN9725"
></A
><H3
><A
@@ -1508,7 +1875,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9626"
+NAME="AEN9744"
></A
><H3
><A
@@ -1641,7 +2008,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9658"
+NAME="AEN9776"
></A
><H3
><A
@@ -1709,7 +2076,7 @@
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
-> the file to retrieve</TD
+> the file to retrieve (or NULL if path is in context).</TD
></TR
><TR
><TD
@@ -1734,7 +2101,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9681"
+NAME="AEN9799"
></A
><H3
><A
@@ -1867,7 +2234,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9713"
+NAME="AEN9831"
></A
><H3
><A
diff --git a/doc/html/gnome-xml-nanohttp.html b/doc/html/gnome-xml-nanohttp.html
index 03619d9..5b715a4 100644
--- a/doc/html/gnome-xml-nanohttp.html
+++ b/doc/html/gnome-xml-nanohttp.html
@@ -115,7 +115,7 @@
><DIV
CLASS="REFNAMEDIV"
><A
-NAME="AEN9104"
+NAME="AEN9110"
></A
><H2
>Name</H2
@@ -123,7 +123,7 @@
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN9107"
+NAME="AEN9113"
></A
><H2
>Synopsis</H2
@@ -138,6 +138,18 @@
CLASS="SYNOPSIS"
>
+void <A
+HREF="gnome-xml-nanohttp.html#XMLNANOHTTPINIT"
+>xmlNanoHTTPInit</A
+> (void);
+void <A
+HREF="gnome-xml-nanohttp.html#XMLNANOHTTPCLEANUP"
+>xmlNanoHTTPCleanup</A
+> (void);
+void <A
+HREF="gnome-xml-nanohttp.html#XMLNANOHTTPSCANPROXY"
+>xmlNanoHTTPScanProxy</A
+> (const char *URL);
int <A
HREF="gnome-xml-nanohttp.html#XMLNANOHTTPFETCH"
>xmlNanoHTTPFetch</A
@@ -183,7 +195,7 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN9117"
+NAME="AEN9126"
></A
><H2
>Description</H2
@@ -193,14 +205,132 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN9120"
+NAME="AEN9129"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9122"
+NAME="AEN9131"
+></A
+><H3
+><A
+NAME="XMLNANOHTTPINIT"
+></A
+>xmlNanoHTTPInit ()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#D6E8FF"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>void xmlNanoHTTPInit (void);</PRE
+></TD
+></TR
+></TABLE
+><P
+>Initialize the HTTP protocol layer.
+Currently it just checks for proxy informations</P
+><P
+></P
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN9137"
+></A
+><H3
+><A
+NAME="XMLNANOHTTPCLEANUP"
+></A
+>xmlNanoHTTPCleanup ()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#D6E8FF"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>void xmlNanoHTTPCleanup (void);</PRE
+></TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN9142"
+></A
+><H3
+><A
+NAME="XMLNANOHTTPSCANPROXY"
+></A
+>xmlNanoHTTPScanProxy ()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#D6E8FF"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>void xmlNanoHTTPScanProxy (const char *URL);</PRE
+></TD
+></TR
+></TABLE
+><P
+>(Re)Initialize the HTTP Proxy context by parsing the URL and finding
+the protocol host port it indicates.
+Should be like http://myproxy/ or http://myproxy:3128/
+A NULL URL cleans up proxy informations.</P
+><P
+></P
+><DIV
+CLASS="INFORMALTABLE"
+><P
+></P
+><TABLE
+BORDER="0"
+WIDTH="100%"
+BGCOLOR="#FFD0D0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>URL</I
+></TT
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> The proxy URL used to initialize the proxy context</TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN9157"
></A
><H3
><A
@@ -314,7 +444,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9149"
+NAME="AEN9184"
></A
><H3
><A
@@ -453,7 +583,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9181"
+NAME="AEN9216"
></A
><H3
><A
@@ -533,7 +663,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9200"
+NAME="AEN9235"
></A
><H3
><A
@@ -608,7 +738,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9219"
+NAME="AEN9254"
></A
><H3
><A
@@ -731,7 +861,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9248"
+NAME="AEN9283"
></A
><H3
><A
@@ -825,7 +955,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9271"
+NAME="AEN9306"
></A
><H3
><A
diff --git a/doc/html/gnome-xml-parserinternals.html b/doc/html/gnome-xml-parserinternals.html
index f0fa84d..19b8f89 100644
--- a/doc/html/gnome-xml-parserinternals.html
+++ b/doc/html/gnome-xml-parserinternals.html
@@ -115,7 +115,7 @@
><DIV
CLASS="REFNAMEDIV"
><A
-NAME="AEN10004"
+NAME="AEN10122"
></A
><H2
>Name</H2
@@ -123,7 +123,7 @@
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN10007"
+NAME="AEN10125"
></A
><H2
>Synopsis</H2
@@ -882,7 +882,7 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN10217"
+NAME="AEN10335"
></A
><H2
>Description</H2
@@ -892,14 +892,14 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN10220"
+NAME="AEN10338"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10222"
+NAME="AEN10340"
></A
><H3
><A
@@ -925,7 +925,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10227"
+NAME="AEN10345"
></A
><H3
><A
@@ -938,7 +938,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10231"
+NAME="AEN10349"
></A
><H3
><A
@@ -996,7 +996,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10245"
+NAME="AEN10363"
></A
><H3
><A
@@ -1054,7 +1054,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10259"
+NAME="AEN10377"
></A
><H3
><A
@@ -1112,7 +1112,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10273"
+NAME="AEN10391"
></A
><H3
><A
@@ -1170,7 +1170,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10287"
+NAME="AEN10405"
></A
><H3
><A
@@ -1228,7 +1228,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10301"
+NAME="AEN10419"
></A
><H3
><A
@@ -1286,7 +1286,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10315"
+NAME="AEN10433"
></A
><H3
><A
@@ -1344,7 +1344,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10329"
+NAME="AEN10447"
></A
><H3
><A
@@ -1402,7 +1402,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10343"
+NAME="AEN10461"
></A
><H3
><A
@@ -1460,7 +1460,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10357"
+NAME="AEN10475"
></A
><H3
><A
@@ -1518,7 +1518,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10371"
+NAME="AEN10489"
></A
><H3
><A
@@ -1576,7 +1576,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10385"
+NAME="AEN10503"
></A
><H3
><A
@@ -1634,7 +1634,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10399"
+NAME="AEN10517"
></A
><H3
><A
@@ -1692,7 +1692,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10413"
+NAME="AEN10531"
></A
><H3
><A
@@ -1750,7 +1750,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10427"
+NAME="AEN10545"
></A
><H3
><A
@@ -1831,7 +1831,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10448"
+NAME="AEN10566"
></A
><H3
><A
@@ -1911,7 +1911,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10468"
+NAME="AEN10586"
></A
><H3
><A
@@ -2007,7 +2007,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10492"
+NAME="AEN10610"
></A
><H3
><A
@@ -2071,7 +2071,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10508"
+NAME="AEN10626"
></A
><H3
><A
@@ -2132,7 +2132,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10524"
+NAME="AEN10642"
></A
><H3
><A
@@ -2217,7 +2217,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10545"
+NAME="AEN10663"
></A
><H3
><A
@@ -2304,7 +2304,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10567"
+NAME="AEN10685"
></A
><H3
><A
@@ -2406,7 +2406,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10593"
+NAME="AEN10711"
></A
><H3
><A
@@ -2491,7 +2491,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10614"
+NAME="AEN10732"
></A
><H3
><A
@@ -2573,7 +2573,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10635"
+NAME="AEN10753"
></A
><H3
><A
@@ -2636,7 +2636,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10651"
+NAME="AEN10769"
></A
><H3
><A
@@ -2735,7 +2735,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10676"
+NAME="AEN10794"
></A
><H3
><A
@@ -2844,7 +2844,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10705"
+NAME="AEN10823"
></A
><H3
><A
@@ -2930,7 +2930,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10728"
+NAME="AEN10846"
></A
><H3
><A
@@ -3039,7 +3039,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10757"
+NAME="AEN10875"
></A
><H3
><A
@@ -3124,7 +3124,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10780"
+NAME="AEN10898"
></A
><H3
><A
@@ -3206,7 +3206,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10801"
+NAME="AEN10919"
></A
><H3
><A
@@ -3275,7 +3275,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10819"
+NAME="AEN10937"
></A
><H3
><A
@@ -3364,7 +3364,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10843"
+NAME="AEN10961"
></A
><H3
><A
@@ -3452,7 +3452,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10867"
+NAME="AEN10985"
></A
><H3
><A
@@ -3537,7 +3537,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10890"
+NAME="AEN11008"
></A
><H3
><A
@@ -3642,7 +3642,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10917"
+NAME="AEN11035"
></A
><H3
><A
@@ -3780,7 +3780,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10951"
+NAME="AEN11069"
></A
><H3
><A
@@ -3863,7 +3863,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10973"
+NAME="AEN11091"
></A
><H3
><A
@@ -3946,7 +3946,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN10995"
+NAME="AEN11113"
></A
><H3
><A
@@ -4030,7 +4030,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11016"
+NAME="AEN11134"
></A
><H3
><A
@@ -4161,7 +4161,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11049"
+NAME="AEN11167"
></A
><H3
><A
@@ -4228,7 +4228,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11066"
+NAME="AEN11184"
></A
><H3
><A
@@ -4311,7 +4311,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11088"
+NAME="AEN11206"
></A
><H3
><A
@@ -4378,7 +4378,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11106"
+NAME="AEN11224"
></A
><H3
><A
@@ -4453,7 +4453,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11126"
+NAME="AEN11244"
></A
><H3
><A
@@ -4531,7 +4531,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11149"
+NAME="AEN11267"
></A
><H3
><A
@@ -4670,7 +4670,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11186"
+NAME="AEN11304"
></A
><H3
><A
@@ -4759,7 +4759,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11210"
+NAME="AEN11328"
></A
><H3
><A
@@ -4846,7 +4846,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11233"
+NAME="AEN11351"
></A
><H3
><A
@@ -4949,7 +4949,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11260"
+NAME="AEN11378"
></A
><H3
><A
@@ -5093,7 +5093,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11298"
+NAME="AEN11416"
></A
><H3
><A
@@ -5160,7 +5160,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11316"
+NAME="AEN11434"
></A
><H3
><A
@@ -5258,7 +5258,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11342"
+NAME="AEN11460"
></A
><H3
><A
@@ -5361,7 +5361,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11368"
+NAME="AEN11486"
></A
><H3
><A
@@ -5484,7 +5484,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11399"
+NAME="AEN11517"
></A
><H3
><A
@@ -5567,7 +5567,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11421"
+NAME="AEN11539"
></A
><H3
><A
@@ -5646,7 +5646,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11440"
+NAME="AEN11558"
></A
><H3
><A
@@ -5734,7 +5734,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11463"
+NAME="AEN11581"
></A
><H3
><A
@@ -5835,7 +5835,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11487"
+NAME="AEN11605"
></A
><H3
><A
@@ -5909,7 +5909,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11506"
+NAME="AEN11624"
></A
><H3
><A
@@ -5995,7 +5995,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11527"
+NAME="AEN11645"
></A
><H3
><A
@@ -6065,7 +6065,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11545"
+NAME="AEN11663"
></A
><H3
><A
@@ -6190,7 +6190,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11579"
+NAME="AEN11697"
></A
><H3
><A
@@ -6292,7 +6292,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11608"
+NAME="AEN11726"
></A
><H3
><A
@@ -6361,7 +6361,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11627"
+NAME="AEN11745"
></A
><H3
><A
@@ -6432,7 +6432,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11647"
+NAME="AEN11765"
></A
><H3
><A
@@ -6497,7 +6497,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11664"
+NAME="AEN11782"
></A
><H3
><A
@@ -6579,7 +6579,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11683"
+NAME="AEN11801"
></A
><H3
><A
@@ -6662,7 +6662,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11705"
+NAME="AEN11823"
></A
><H3
><A
@@ -6747,7 +6747,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11728"
+NAME="AEN11846"
></A
><H3
><A
@@ -6830,7 +6830,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11750"
+NAME="AEN11868"
></A
><H3
><A
@@ -6915,7 +6915,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11773"
+NAME="AEN11891"
></A
><H3
><A
@@ -7010,7 +7010,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11795"
+NAME="AEN11913"
></A
><H3
><A
@@ -7075,7 +7075,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11812"
+NAME="AEN11930"
></A
><H3
><A
@@ -7140,7 +7140,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11829"
+NAME="AEN11947"
></A
><H3
><A
@@ -7249,7 +7249,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11857"
+NAME="AEN11975"
></A
><H3
><A
@@ -7275,7 +7275,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11862"
+NAME="AEN11980"
></A
><H3
><A
@@ -7301,7 +7301,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11867"
+NAME="AEN11985"
></A
><H3
><A
@@ -7327,7 +7327,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11872"
+NAME="AEN11990"
></A
><H3
><A
@@ -7353,7 +7353,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11877"
+NAME="AEN11995"
></A
><H3
><A
@@ -7536,7 +7536,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11922"
+NAME="AEN12040"
></A
><H3
><A
@@ -7633,7 +7633,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11946"
+NAME="AEN12064"
></A
><H3
><A
@@ -7712,7 +7712,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11966"
+NAME="AEN12084"
></A
><H3
><A
@@ -7809,7 +7809,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN11990"
+NAME="AEN12108"
></A
><H3
><A
diff --git a/doc/html/gnome-xml-tree.html b/doc/html/gnome-xml-tree.html
index d14b4c6..c645c4a 100644
--- a/doc/html/gnome-xml-tree.html
+++ b/doc/html/gnome-xml-tree.html
@@ -302,6 +302,10 @@
HREF="gnome-xml-tree.html#XMLBUFFERALLOCSCHEME"
>xmlBufferAllocScheme</A
>;
+extern int <A
+HREF="gnome-xml-tree.html#XMLSAVENOEMPTYTAGS"
+>xmlSaveNoEmptyTags</A
+>;
<A
HREF="gnome-xml-tree.html#XMLBUFFERPTR"
>xmlBufferPtr</A
@@ -1455,7 +1459,7 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN3349"
+NAME="AEN3350"
></A
><H2
>Description</H2
@@ -1465,14 +1469,14 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN3352"
+NAME="AEN3353"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3354"
+NAME="AEN3355"
></A
><H3
><A
@@ -1512,7 +1516,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3359"
+NAME="AEN3360"
></A
><H3
><A
@@ -1525,7 +1529,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3363"
+NAME="AEN3364"
></A
><H3
><A
@@ -1551,7 +1555,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3368"
+NAME="AEN3369"
></A
><H3
><A
@@ -1577,7 +1581,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3373"
+NAME="AEN3374"
></A
><H3
><A
@@ -1607,7 +1611,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3378"
+NAME="AEN3379"
></A
><H3
><A
@@ -1633,7 +1637,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3383"
+NAME="AEN3384"
></A
><H3
><A
@@ -1670,7 +1674,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3388"
+NAME="AEN3389"
></A
><H3
><A
@@ -1701,7 +1705,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3393"
+NAME="AEN3394"
></A
><H3
><A
@@ -1730,7 +1734,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3398"
+NAME="AEN3399"
></A
><H3
><A
@@ -1756,7 +1760,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3403"
+NAME="AEN3404"
></A
><H3
><A
@@ -1791,7 +1795,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3408"
+NAME="AEN3409"
></A
><H3
><A
@@ -1817,7 +1821,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3413"
+NAME="AEN3414"
></A
><H3
><A
@@ -1848,7 +1852,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3418"
+NAME="AEN3419"
></A
><H3
><A
@@ -1879,7 +1883,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3423"
+NAME="AEN3424"
></A
><H3
><A
@@ -1911,7 +1915,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3428"
+NAME="AEN3429"
></A
><H3
><A
@@ -1937,7 +1941,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3433"
+NAME="AEN3434"
></A
><H3
><A
@@ -1968,7 +1972,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3438"
+NAME="AEN3439"
></A
><H3
><A
@@ -1999,7 +2003,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3443"
+NAME="AEN3444"
></A
><H3
><A
@@ -2025,7 +2029,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3448"
+NAME="AEN3449"
></A
><H3
><A
@@ -2054,7 +2058,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3453"
+NAME="AEN3454"
></A
><H3
><A
@@ -2085,7 +2089,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3458"
+NAME="AEN3459"
></A
><H3
><A
@@ -2111,7 +2115,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3463"
+NAME="AEN3464"
></A
><H3
><A
@@ -2146,7 +2150,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3468"
+NAME="AEN3469"
></A
><H3
><A
@@ -2172,7 +2176,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3473"
+NAME="AEN3474"
></A
><H3
><A
@@ -2209,7 +2213,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3478"
+NAME="AEN3479"
></A
><H3
><A
@@ -2235,7 +2239,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3483"
+NAME="AEN3484"
></A
><H3
><A
@@ -2265,7 +2269,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3488"
+NAME="AEN3489"
></A
><H3
><A
@@ -2291,7 +2295,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3493"
+NAME="AEN3494"
></A
><H3
><A
@@ -2321,7 +2325,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3498"
+NAME="AEN3499"
></A
><H3
><A
@@ -2347,7 +2351,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3503"
+NAME="AEN3504"
></A
><H3
><A
@@ -2378,7 +2382,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3509"
+NAME="AEN3510"
></A
><H3
><A
@@ -2409,7 +2413,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3514"
+NAME="AEN3515"
></A
><H3
><A
@@ -2435,7 +2439,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3519"
+NAME="AEN3520"
></A
><H3
><A
@@ -2482,7 +2486,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3524"
+NAME="AEN3525"
></A
><H3
><A
@@ -2508,7 +2512,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3529"
+NAME="AEN3530"
></A
><H3
><A
@@ -2551,7 +2555,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3534"
+NAME="AEN3535"
></A
><H3
><A
@@ -2577,7 +2581,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3539"
+NAME="AEN3540"
></A
><H3
><A
@@ -2603,7 +2607,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3544"
+NAME="AEN3545"
></A
><H3
><A
@@ -2629,7 +2633,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3549"
+NAME="AEN3550"
></A
><H3
><A
@@ -2655,7 +2659,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3554"
+NAME="AEN3555"
></A
><H3
><A
@@ -2681,7 +2685,33 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3559"
+NAME="AEN3560"
+></A
+><H3
+><A
+NAME="XMLSAVENOEMPTYTAGS"
+></A
+>xmlSaveNoEmptyTags</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#D6E8FF"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>extern int xmlSaveNoEmptyTags; /* save empty tags as <empty></empty> */</PRE
+></TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN3565"
></A
><H3
><A
@@ -2742,7 +2772,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3575"
+NAME="AEN3581"
></A
><H3
><A
@@ -2823,7 +2853,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3596"
+NAME="AEN3602"
></A
><H3
><A
@@ -2886,7 +2916,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3612"
+NAME="AEN3618"
></A
><H3
><A
@@ -2985,7 +3015,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3637"
+NAME="AEN3643"
></A
><H3
><A
@@ -3088,7 +3118,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3662"
+NAME="AEN3668"
></A
><H3
><A
@@ -3172,7 +3202,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3683"
+NAME="AEN3689"
></A
><H3
><A
@@ -3253,7 +3283,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3703"
+NAME="AEN3709"
></A
><H3
><A
@@ -3349,7 +3379,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3727"
+NAME="AEN3733"
></A
><H3
><A
@@ -3412,7 +3442,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3743"
+NAME="AEN3749"
></A
><H3
><A
@@ -3493,7 +3523,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3764"
+NAME="AEN3770"
></A
><H3
><A
@@ -3569,7 +3599,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3783"
+NAME="AEN3789"
></A
><H3
><A
@@ -3651,7 +3681,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3803"
+NAME="AEN3809"
></A
><H3
><A
@@ -3729,7 +3759,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3823"
+NAME="AEN3829"
></A
><H3
><A
@@ -3873,7 +3903,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3859"
+NAME="AEN3865"
></A
><H3
><A
@@ -4017,7 +4047,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3895"
+NAME="AEN3901"
></A
><H3
><A
@@ -4080,7 +4110,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3911"
+NAME="AEN3917"
></A
><H3
><A
@@ -4205,7 +4235,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3942"
+NAME="AEN3948"
></A
><H3
><A
@@ -4330,7 +4360,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3973"
+NAME="AEN3979"
></A
><H3
><A
@@ -4393,7 +4423,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3989"
+NAME="AEN3995"
></A
><H3
><A
@@ -4474,7 +4504,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4010"
+NAME="AEN4016"
></A
><H3
><A
@@ -4538,7 +4568,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4026"
+NAME="AEN4032"
></A
><H3
><A
@@ -4661,7 +4691,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4057"
+NAME="AEN4063"
></A
><H3
><A
@@ -4784,7 +4814,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4088"
+NAME="AEN4094"
></A
><H3
><A
@@ -4928,7 +4958,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4124"
+NAME="AEN4130"
></A
><H3
><A
@@ -4991,7 +5021,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4140"
+NAME="AEN4146"
></A
><H3
><A
@@ -5054,7 +5084,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4156"
+NAME="AEN4162"
></A
><H3
><A
@@ -5156,7 +5186,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4182"
+NAME="AEN4188"
></A
><H3
><A
@@ -5258,7 +5288,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4208"
+NAME="AEN4214"
></A
><H3
><A
@@ -5339,7 +5369,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4229"
+NAME="AEN4235"
></A
><H3
><A
@@ -5439,7 +5469,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4254"
+NAME="AEN4260"
></A
><H3
><A
@@ -5609,7 +5639,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4295"
+NAME="AEN4301"
></A
><H3
><A
@@ -5764,7 +5794,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4333"
+NAME="AEN4339"
></A
><H3
><A
@@ -5878,7 +5908,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4361"
+NAME="AEN4367"
></A
><H3
><A
@@ -6054,7 +6084,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4403"
+NAME="AEN4409"
></A
><H3
><A
@@ -6215,7 +6245,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4442"
+NAME="AEN4448"
></A
><H3
><A
@@ -6317,7 +6347,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4468"
+NAME="AEN4474"
></A
><H3
><A
@@ -6398,7 +6428,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4489"
+NAME="AEN4495"
></A
><H3
><A
@@ -6500,7 +6530,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4515"
+NAME="AEN4521"
></A
><H3
><A
@@ -6621,7 +6651,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4545"
+NAME="AEN4551"
></A
><H3
><A
@@ -6720,7 +6750,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4570"
+NAME="AEN4576"
></A
><H3
><A
@@ -6822,7 +6852,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4596"
+NAME="AEN4602"
></A
><H3
><A
@@ -6903,7 +6933,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4617"
+NAME="AEN4623"
></A
><H3
><A
@@ -7023,7 +7053,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4647"
+NAME="AEN4653"
></A
><H3
><A
@@ -7125,7 +7155,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4673"
+NAME="AEN4679"
></A
><H3
><A
@@ -7224,7 +7254,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4698"
+NAME="AEN4704"
></A
><H3
><A
@@ -7305,7 +7335,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4719"
+NAME="AEN4725"
></A
><H3
><A
@@ -7386,7 +7416,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4740"
+NAME="AEN4746"
></A
><H3
><A
@@ -7468,7 +7498,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4761"
+NAME="AEN4767"
></A
><H3
><A
@@ -7549,7 +7579,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4782"
+NAME="AEN4788"
></A
><H3
><A
@@ -7627,7 +7657,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4802"
+NAME="AEN4808"
></A
><H3
><A
@@ -7730,7 +7760,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4828"
+NAME="AEN4834"
></A
><H3
><A
@@ -7815,7 +7845,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4849"
+NAME="AEN4855"
></A
><H3
><A
@@ -7922,7 +7952,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4876"
+NAME="AEN4882"
></A
><H3
><A
@@ -8026,7 +8056,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4902"
+NAME="AEN4908"
></A
><H3
><A
@@ -8140,7 +8170,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4930"
+NAME="AEN4936"
></A
><H3
><A
@@ -8254,7 +8284,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4958"
+NAME="AEN4964"
></A
><H3
><A
@@ -8368,7 +8398,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4986"
+NAME="AEN4992"
></A
><H3
><A
@@ -8431,7 +8461,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5002"
+NAME="AEN5008"
></A
><H3
><A
@@ -8533,7 +8563,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5028"
+NAME="AEN5034"
></A
><H3
><A
@@ -8640,7 +8670,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5054"
+NAME="AEN5060"
></A
><H3
><A
@@ -8704,7 +8734,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5070"
+NAME="AEN5076"
></A
><H3
><A
@@ -8767,7 +8797,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5086"
+NAME="AEN5092"
></A
><H3
><A
@@ -8846,7 +8876,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5106"
+NAME="AEN5112"
></A
><H3
><A
@@ -8977,7 +9007,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5138"
+NAME="AEN5144"
></A
><H3
><A
@@ -9101,7 +9131,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5169"
+NAME="AEN5175"
></A
><H3
><A
@@ -9205,7 +9235,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5195"
+NAME="AEN5201"
></A
><H3
><A
@@ -9289,7 +9319,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5216"
+NAME="AEN5222"
></A
><H3
><A
@@ -9370,7 +9400,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5237"
+NAME="AEN5243"
></A
><H3
><A
@@ -9451,7 +9481,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5258"
+NAME="AEN5264"
></A
><H3
><A
@@ -9574,7 +9604,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5289"
+NAME="AEN5295"
></A
><H3
><A
@@ -9683,7 +9713,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5316"
+NAME="AEN5322"
></A
><H3
><A
@@ -9814,7 +9844,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5348"
+NAME="AEN5354"
></A
><H3
><A
@@ -9917,7 +9947,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5374"
+NAME="AEN5380"
></A
><H3
><A
@@ -10038,7 +10068,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5404"
+NAME="AEN5410"
></A
><H3
><A
@@ -10159,7 +10189,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5434"
+NAME="AEN5440"
></A
><H3
><A
@@ -10243,7 +10273,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5455"
+NAME="AEN5461"
></A
><H3
><A
@@ -10350,7 +10380,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5481"
+NAME="AEN5487"
></A
><H3
><A
@@ -10434,7 +10464,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5502"
+NAME="AEN5508"
></A
><H3
><A
@@ -10541,7 +10571,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5528"
+NAME="AEN5534"
></A
><H3
><A
@@ -10626,7 +10656,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5549"
+NAME="AEN5555"
></A
><H3
><A
@@ -10709,7 +10739,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5570"
+NAME="AEN5576"
></A
><H3
><A
@@ -10794,7 +10824,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5591"
+NAME="AEN5597"
></A
><H3
><A
@@ -10898,7 +10928,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5617"
+NAME="AEN5623"
></A
><H3
><A
@@ -10974,7 +11004,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5636"
+NAME="AEN5642"
></A
><H3
><A
@@ -11059,7 +11089,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5657"
+NAME="AEN5663"
></A
><H3
><A
@@ -11141,7 +11171,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5677"
+NAME="AEN5683"
></A
><H3
><A
@@ -11227,7 +11257,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5698"
+NAME="AEN5704"
></A
><H3
><A
@@ -11330,7 +11360,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5723"
+NAME="AEN5729"
></A
><H3
><A
@@ -11414,7 +11444,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5744"
+NAME="AEN5750"
></A
><H3
><A
@@ -11519,7 +11549,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5770"
+NAME="AEN5776"
></A
><H3
><A
@@ -11622,7 +11652,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5795"
+NAME="AEN5801"
></A
><H3
><A
@@ -11700,7 +11730,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5815"
+NAME="AEN5821"
></A
><H3
><A
@@ -11782,7 +11812,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5835"
+NAME="AEN5841"
></A
><H3
><A
@@ -11840,7 +11870,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5850"
+NAME="AEN5856"
></A
><H3
><A
diff --git a/doc/html/gnome-xml-valid.html b/doc/html/gnome-xml-valid.html
index 27ed67b..e618211 100644
--- a/doc/html/gnome-xml-valid.html
+++ b/doc/html/gnome-xml-valid.html
@@ -115,7 +115,7 @@
><DIV
CLASS="REFNAMEDIV"
><A
-NAME="AEN6312"
+NAME="AEN6318"
></A
><H2
>Name</H2
@@ -123,7 +123,7 @@
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN6315"
+NAME="AEN6321"
></A
><H2
>Synopsis</H2
@@ -859,7 +859,7 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN6511"
+NAME="AEN6517"
></A
><H2
>Description</H2
@@ -869,14 +869,14 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN6514"
+NAME="AEN6520"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6516"
+NAME="AEN6522"
></A
><H3
><A
@@ -970,7 +970,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6538"
+NAME="AEN6544"
></A
><H3
><A
@@ -1064,7 +1064,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6560"
+NAME="AEN6566"
></A
><H3
><A
@@ -1094,7 +1094,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6565"
+NAME="AEN6571"
></A
><H3
><A
@@ -1120,7 +1120,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6570"
+NAME="AEN6576"
></A
><H3
><A
@@ -1146,7 +1146,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6575"
+NAME="AEN6581"
></A
><H3
><A
@@ -1176,7 +1176,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6580"
+NAME="AEN6586"
></A
><H3
><A
@@ -1202,7 +1202,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6585"
+NAME="AEN6591"
></A
><H3
><A
@@ -1228,7 +1228,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6590"
+NAME="AEN6596"
></A
><H3
><A
@@ -1258,7 +1258,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6595"
+NAME="AEN6601"
></A
><H3
><A
@@ -1284,7 +1284,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6600"
+NAME="AEN6606"
></A
><H3
><A
@@ -1310,7 +1310,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6605"
+NAME="AEN6611"
></A
><H3
><A
@@ -1340,7 +1340,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6610"
+NAME="AEN6616"
></A
><H3
><A
@@ -1366,7 +1366,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6615"
+NAME="AEN6621"
></A
><H3
><A
@@ -1392,7 +1392,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6620"
+NAME="AEN6626"
></A
><H3
><A
@@ -1422,7 +1422,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6625"
+NAME="AEN6631"
></A
><H3
><A
@@ -1448,7 +1448,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6630"
+NAME="AEN6636"
></A
><H3
><A
@@ -1474,7 +1474,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6635"
+NAME="AEN6641"
></A
><H3
><A
@@ -1504,7 +1504,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6640"
+NAME="AEN6646"
></A
><H3
><A
@@ -1530,7 +1530,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6645"
+NAME="AEN6651"
></A
><H3
><A
@@ -1695,7 +1695,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6686"
+NAME="AEN6692"
></A
><H3
><A
@@ -1776,7 +1776,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6707"
+NAME="AEN6713"
></A
><H3
><A
@@ -1839,7 +1839,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6723"
+NAME="AEN6729"
></A
><H3
><A
@@ -1923,7 +1923,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6744"
+NAME="AEN6750"
></A
><H3
><A
@@ -2025,7 +2025,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6770"
+NAME="AEN6776"
></A
><H3
><A
@@ -2106,7 +2106,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6791"
+NAME="AEN6797"
></A
><H3
><A
@@ -2169,7 +2169,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6807"
+NAME="AEN6813"
></A
><H3
><A
@@ -2334,7 +2334,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6848"
+NAME="AEN6854"
></A
><H3
><A
@@ -2415,7 +2415,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6869"
+NAME="AEN6875"
></A
><H3
><A
@@ -2478,7 +2478,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6885"
+NAME="AEN6891"
></A
><H3
><A
@@ -2562,7 +2562,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6906"
+NAME="AEN6912"
></A
><H3
><A
@@ -2644,7 +2644,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6927"
+NAME="AEN6933"
></A
><H3
><A
@@ -2707,7 +2707,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6943"
+NAME="AEN6949"
></A
><H3
><A
@@ -2789,7 +2789,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN6964"
+NAME="AEN6970"
></A
><H3
><A
@@ -3017,7 +3017,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7020"
+NAME="AEN7026"
></A
><H3
><A
@@ -3098,7 +3098,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7041"
+NAME="AEN7047"
></A
><H3
><A
@@ -3161,7 +3161,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7057"
+NAME="AEN7063"
></A
><H3
><A
@@ -3245,7 +3245,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7078"
+NAME="AEN7084"
></A
><H3
><A
@@ -3389,7 +3389,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7114"
+NAME="AEN7120"
></A
><H3
><A
@@ -3468,7 +3468,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7134"
+NAME="AEN7140"
></A
><H3
><A
@@ -3531,7 +3531,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7150"
+NAME="AEN7156"
></A
><H3
><A
@@ -3633,7 +3633,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7176"
+NAME="AEN7182"
></A
><H3
><A
@@ -3755,7 +3755,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7206"
+NAME="AEN7212"
></A
><H3
><A
@@ -3854,7 +3854,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7231"
+NAME="AEN7237"
></A
><H3
><A
@@ -3998,7 +3998,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7267"
+NAME="AEN7273"
></A
><H3
><A
@@ -4077,7 +4077,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7287"
+NAME="AEN7293"
></A
><H3
><A
@@ -4140,7 +4140,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7303"
+NAME="AEN7309"
></A
><H3
><A
@@ -4262,7 +4262,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7333"
+NAME="AEN7339"
></A
><H3
><A
@@ -4361,7 +4361,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7358"
+NAME="AEN7364"
></A
><H3
><A
@@ -4464,7 +4464,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7383"
+NAME="AEN7389"
></A
><H3
><A
@@ -4589,7 +4589,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7413"
+NAME="AEN7419"
></A
><H3
><A
@@ -4716,7 +4716,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7444"
+NAME="AEN7450"
></A
><H3
><A
@@ -4830,7 +4830,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7473"
+NAME="AEN7479"
></A
><H3
><A
@@ -4954,7 +4954,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7503"
+NAME="AEN7509"
></A
><H3
><A
@@ -5076,7 +5076,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7534"
+NAME="AEN7540"
></A
><H3
><A
@@ -5179,7 +5179,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7560"
+NAME="AEN7566"
></A
><H3
><A
@@ -5299,7 +5299,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7590"
+NAME="AEN7596"
></A
><H3
><A
@@ -5429,7 +5429,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7622"
+NAME="AEN7628"
></A
><H3
><A
@@ -5603,7 +5603,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7663"
+NAME="AEN7669"
></A
><H3
><A
@@ -5705,7 +5705,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7689"
+NAME="AEN7695"
></A
><H3
><A
@@ -5826,7 +5826,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7719"
+NAME="AEN7725"
></A
><H3
><A
@@ -5926,7 +5926,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7744"
+NAME="AEN7750"
></A
><H3
><A
@@ -6050,7 +6050,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7775"
+NAME="AEN7781"
></A
><H3
><A
@@ -6152,7 +6152,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7801"
+NAME="AEN7807"
></A
><H3
><A
@@ -6254,7 +6254,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7827"
+NAME="AEN7833"
></A
><H3
><A
@@ -6420,7 +6420,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7865"
+NAME="AEN7871"
></A
><H3
><A
diff --git a/doc/html/gnome-xml-xml-error.html b/doc/html/gnome-xml-xml-error.html
index 84e5899..56a1bd6 100644
--- a/doc/html/gnome-xml-xml-error.html
+++ b/doc/html/gnome-xml-xml-error.html
@@ -115,7 +115,7 @@
><DIV
CLASS="REFNAMEDIV"
><A
-NAME="AEN7903"
+NAME="AEN7909"
></A
><H2
>Name</H2
@@ -123,7 +123,7 @@
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN7906"
+NAME="AEN7912"
></A
><H2
>Synopsis</H2
@@ -187,7 +187,7 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN7918"
+NAME="AEN7924"
></A
><H2
>Description</H2
@@ -197,14 +197,14 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN7921"
+NAME="AEN7927"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7923"
+NAME="AEN7929"
></A
><H3
><A
@@ -341,7 +341,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7928"
+NAME="AEN7934"
></A
><H3
><A
@@ -438,7 +438,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7951"
+NAME="AEN7957"
></A
><H3
><A
@@ -535,7 +535,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7974"
+NAME="AEN7980"
></A
><H3
><A
@@ -632,7 +632,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN7997"
+NAME="AEN8003"
></A
><H3
><A
@@ -729,7 +729,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8020"
+NAME="AEN8026"
></A
><H3
><A
@@ -792,7 +792,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8036"
+NAME="AEN8042"
></A
><H3
><A
diff --git a/doc/html/gnome-xml-xmlio.html b/doc/html/gnome-xml-xmlio.html
index 77dc6be..b5a495f 100644
--- a/doc/html/gnome-xml-xmlio.html
+++ b/doc/html/gnome-xml-xmlio.html
@@ -115,7 +115,7 @@
><DIV
CLASS="REFNAMEDIV"
><A
-NAME="AEN9747"
+NAME="AEN9865"
></A
><H2
>Name</H2
@@ -123,7 +123,7 @@
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN9750"
+NAME="AEN9868"
></A
><H2
>Synopsis</H2
@@ -239,7 +239,7 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN9777"
+NAME="AEN9895"
></A
><H2
>Description</H2
@@ -249,14 +249,14 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN9780"
+NAME="AEN9898"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9782"
+NAME="AEN9900"
></A
><H3
><A
@@ -293,7 +293,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9787"
+NAME="AEN9905"
></A
><H3
><A
@@ -319,7 +319,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9792"
+NAME="AEN9910"
></A
><H3
><A
@@ -401,7 +401,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9813"
+NAME="AEN9931"
></A
><H3
><A
@@ -504,7 +504,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9838"
+NAME="AEN9956"
></A
><H3
><A
@@ -608,7 +608,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9864"
+NAME="AEN9982"
></A
><H3
><A
@@ -709,7 +709,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9889"
+NAME="AEN10007"
></A
><H3
><A
@@ -808,7 +808,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9913"
+NAME="AEN10031"
></A
><H3
><A
@@ -908,7 +908,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9937"
+NAME="AEN10055"
></A
><H3
><A
@@ -1025,7 +1025,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9965"
+NAME="AEN10083"
></A
><H3
><A
@@ -1088,7 +1088,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9981"
+NAME="AEN10099"
></A
><H3
><A
diff --git a/doc/html/gnome-xml-xmlmemory.html b/doc/html/gnome-xml-xmlmemory.html
index a9781b1..306ed02 100644
--- a/doc/html/gnome-xml-xmlmemory.html
+++ b/doc/html/gnome-xml-xmlmemory.html
@@ -103,7 +103,7 @@
><DIV
CLASS="REFNAMEDIV"
><A
-NAME="AEN12600"
+NAME="AEN12718"
></A
><H2
>Name</H2
@@ -111,7 +111,7 @@
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN12603"
+NAME="AEN12721"
></A
><H2
>Synopsis</H2
@@ -212,7 +212,7 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN12624"
+NAME="AEN12742"
></A
><H2
>Description</H2
@@ -222,14 +222,14 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN12627"
+NAME="AEN12745"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12629"
+NAME="AEN12747"
></A
><H3
><A
@@ -255,7 +255,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12634"
+NAME="AEN12752"
></A
><H3
><A
@@ -318,7 +318,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12650"
+NAME="AEN12768"
></A
><H3
><A
@@ -381,7 +381,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12666"
+NAME="AEN12784"
></A
><H3
><A
@@ -462,7 +462,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12686"
+NAME="AEN12804"
></A
><H3
><A
@@ -540,7 +540,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12706"
+NAME="AEN12824"
></A
><H3
><A
@@ -598,7 +598,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12721"
+NAME="AEN12839"
></A
><H3
><A
@@ -656,7 +656,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12736"
+NAME="AEN12854"
></A
><H3
><A
@@ -684,7 +684,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12742"
+NAME="AEN12860"
></A
><H3
><A
@@ -748,7 +748,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12758"
+NAME="AEN12876"
></A
><H3
><A
@@ -835,7 +835,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12779"
+NAME="AEN12897"
></A
><H3
><A
@@ -861,7 +861,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12784"
+NAME="AEN12902"
></A
><H3
><A
@@ -887,7 +887,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12789"
+NAME="AEN12907"
></A
><H3
><A
@@ -913,7 +913,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12794"
+NAME="AEN12912"
></A
><H3
><A
@@ -1018,7 +1018,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12819"
+NAME="AEN12937"
></A
><H3
><A
@@ -1135,7 +1135,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN12847"
+NAME="AEN12965"
></A
><H3
><A
diff --git a/doc/html/gnome-xml-xpath.html b/doc/html/gnome-xml-xpath.html
index ede908b..0877026 100644
--- a/doc/html/gnome-xml-xpath.html
+++ b/doc/html/gnome-xml-xpath.html
@@ -115,7 +115,7 @@
><DIV
CLASS="REFNAMEDIV"
><A
-NAME="AEN8677"
+NAME="AEN8683"
></A
><H2
>Name</H2
@@ -123,7 +123,7 @@
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN8680"
+NAME="AEN8686"
></A
><H2
>Synopsis</H2
@@ -347,7 +347,7 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN8737"
+NAME="AEN8743"
></A
><H2
>Description</H2
@@ -357,14 +357,14 @@
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN8740"
+NAME="AEN8746"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8742"
+NAME="AEN8748"
></A
><H3
><A
@@ -415,7 +415,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8747"
+NAME="AEN8753"
></A
><H3
><A
@@ -441,7 +441,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8752"
+NAME="AEN8758"
></A
><H3
><A
@@ -478,7 +478,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8757"
+NAME="AEN8763"
></A
><H3
><A
@@ -504,7 +504,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8762"
+NAME="AEN8768"
></A
><H3
><A
@@ -534,7 +534,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8767"
+NAME="AEN8773"
></A
><H3
><A
@@ -560,7 +560,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8772"
+NAME="AEN8778"
></A
><H3
><A
@@ -586,7 +586,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8777"
+NAME="AEN8783"
></A
><H3
><A
@@ -612,7 +612,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8782"
+NAME="AEN8788"
></A
><H3
><A
@@ -638,7 +638,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8787"
+NAME="AEN8793"
></A
><H3
><A
@@ -664,7 +664,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8792"
+NAME="AEN8798"
></A
><H3
><A
@@ -690,7 +690,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8797"
+NAME="AEN8803"
></A
><H3
><A
@@ -716,7 +716,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8802"
+NAME="AEN8808"
></A
><H3
><A
@@ -749,7 +749,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8807"
+NAME="AEN8813"
></A
><H3
><A
@@ -775,7 +775,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8812"
+NAME="AEN8818"
></A
><H3
><A
@@ -869,7 +869,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8835"
+NAME="AEN8841"
></A
><H3
><A
@@ -898,7 +898,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8840"
+NAME="AEN8846"
></A
><H3
><A
@@ -924,7 +924,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8845"
+NAME="AEN8851"
></A
><H3
><A
@@ -953,7 +953,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8850"
+NAME="AEN8856"
></A
><H3
><A
@@ -979,7 +979,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8855"
+NAME="AEN8861"
></A
><H3
><A
@@ -1058,7 +1058,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8874"
+NAME="AEN8880"
></A
><H3
><A
@@ -1087,7 +1087,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8879"
+NAME="AEN8885"
></A
><H3
><A
@@ -1113,7 +1113,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8884"
+NAME="AEN8890"
></A
><H3
><A
@@ -1213,7 +1213,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8909"
+NAME="AEN8915"
></A
><H3
><A
@@ -1242,7 +1242,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8914"
+NAME="AEN8920"
></A
><H3
><A
@@ -1268,7 +1268,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8919"
+NAME="AEN8925"
></A
><H3
><A
@@ -1347,7 +1347,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8938"
+NAME="AEN8944"
></A
><H3
><A
@@ -1428,7 +1428,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8959"
+NAME="AEN8965"
></A
><H3
><A
@@ -1491,7 +1491,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN8975"
+NAME="AEN8981"
></A
><H3
><A
@@ -1594,7 +1594,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9001"
+NAME="AEN9007"
></A
><H3
><A
@@ -1657,7 +1657,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9017"
+NAME="AEN9023"
></A
><H3
><A
@@ -1760,7 +1760,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9043"
+NAME="AEN9049"
></A
><H3
><A
@@ -1846,7 +1846,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9065"
+NAME="AEN9071"
></A
><H3
><A
@@ -1918,7 +1918,7 @@
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN9083"
+NAME="AEN9089"
></A
><H3
><A
diff --git a/doc/html/index.sgml b/doc/html/index.sgml
index d9edaba..56ee8c6 100644
--- a/doc/html/index.sgml
+++ b/doc/html/index.sgml
@@ -171,6 +171,7 @@
<ANCHOR id ="OLDXMLWDCOMPATIBILITY" href="gnome-xml/gnome-xml-tree.html#OLDXMLWDCOMPATIBILITY">
<ANCHOR id ="XMLINDENTTREEOUTPUT" href="gnome-xml/gnome-xml-tree.html#XMLINDENTTREEOUTPUT">
<ANCHOR id ="XMLBUFFERALLOCSCHEME" href="gnome-xml/gnome-xml-tree.html#XMLBUFFERALLOCSCHEME">
+<ANCHOR id ="XMLSAVENOEMPTYTAGS" href="gnome-xml/gnome-xml-tree.html#XMLSAVENOEMPTYTAGS">
<ANCHOR id ="XMLBUFFERCREATE" href="gnome-xml/gnome-xml-tree.html#XMLBUFFERCREATE">
<ANCHOR id ="XMLBUFFERCREATESIZE" href="gnome-xml/gnome-xml-tree.html#XMLBUFFERCREATESIZE">
<ANCHOR id ="XMLBUFFERFREE" href="gnome-xml/gnome-xml-tree.html#XMLBUFFERFREE">
@@ -437,6 +438,9 @@
<ANCHOR id ="XMLXPATHFREENODESETLIST" href="gnome-xml/gnome-xml-xpath.html#XMLXPATHFREENODESETLIST">
<ANCHOR id ="XMLXPATHFREENODESET" href="gnome-xml/gnome-xml-xpath.html#XMLXPATHFREENODESET">
<ANCHOR id ="GNOME-XML-NANOHTTP" href="gnome-xml/gnome-xml-nanohttp.html">
+<ANCHOR id ="XMLNANOHTTPINIT" href="gnome-xml/gnome-xml-nanohttp.html#XMLNANOHTTPINIT">
+<ANCHOR id ="XMLNANOHTTPCLEANUP" href="gnome-xml/gnome-xml-nanohttp.html#XMLNANOHTTPCLEANUP">
+<ANCHOR id ="XMLNANOHTTPSCANPROXY" href="gnome-xml/gnome-xml-nanohttp.html#XMLNANOHTTPSCANPROXY">
<ANCHOR id ="XMLNANOHTTPFETCH" href="gnome-xml/gnome-xml-nanohttp.html#XMLNANOHTTPFETCH">
<ANCHOR id ="XMLNANOHTTPMETHOD" href="gnome-xml/gnome-xml-nanohttp.html#XMLNANOHTTPMETHOD">
<ANCHOR id ="XMLNANOHTTPOPEN" href="gnome-xml/gnome-xml-nanohttp.html#XMLNANOHTTPOPEN">
@@ -448,6 +452,7 @@
<ANCHOR id ="FTPLISTCALLBACK" href="gnome-xml/gnome-xml-nanoftp.html#FTPLISTCALLBACK">
<ANCHOR id ="FTPDATACALLBACK" href="gnome-xml/gnome-xml-nanoftp.html#FTPDATACALLBACK">
<ANCHOR id ="XMLNANOFTPINIT" href="gnome-xml/gnome-xml-nanoftp.html#XMLNANOFTPINIT">
+<ANCHOR id ="XMLNANOFTPCLEANUP" href="gnome-xml/gnome-xml-nanoftp.html#XMLNANOFTPCLEANUP">
<ANCHOR id ="XMLNANOFTPNEWCTXT" href="gnome-xml/gnome-xml-nanoftp.html#XMLNANOFTPNEWCTXT">
<ANCHOR id ="XMLNANOFTPFREECTXT" href="gnome-xml/gnome-xml-nanoftp.html#XMLNANOFTPFREECTXT">
<ANCHOR id ="XMLNANOFTPCONNECTTO" href="gnome-xml/gnome-xml-nanoftp.html#XMLNANOFTPCONNECTTO">
@@ -455,6 +460,9 @@
<ANCHOR id ="XMLNANOFTPCONNECT" href="gnome-xml/gnome-xml-nanoftp.html#XMLNANOFTPCONNECT">
<ANCHOR id ="XMLNANOFTPCLOSE" href="gnome-xml/gnome-xml-nanoftp.html#XMLNANOFTPCLOSE">
<ANCHOR id ="XMLNANOFTPQUIT" href="gnome-xml/gnome-xml-nanoftp.html#XMLNANOFTPQUIT">
+<ANCHOR id ="XMLNANOFTPSCANPROXY" href="gnome-xml/gnome-xml-nanoftp.html#XMLNANOFTPSCANPROXY">
+<ANCHOR id ="XMLNANOFTPPROXY" href="gnome-xml/gnome-xml-nanoftp.html#XMLNANOFTPPROXY">
+<ANCHOR id ="XMLNANOFTPUPDATEURL" href="gnome-xml/gnome-xml-nanoftp.html#XMLNANOFTPUPDATEURL">
<ANCHOR id ="XMLNANOFTPGETRESPONSE" href="gnome-xml/gnome-xml-nanoftp.html#XMLNANOFTPGETRESPONSE">
<ANCHOR id ="XMLNANOFTPCHECKRESPONSE" href="gnome-xml/gnome-xml-nanoftp.html#XMLNANOFTPCHECKRESPONSE">
<ANCHOR id ="XMLNANOFTPCWD" href="gnome-xml/gnome-xml-nanoftp.html#XMLNANOFTPCWD">
diff --git a/doc/xml.html b/doc/xml.html
index 105b197..ebf534b 100644
--- a/doc/xml.html
+++ b/doc/xml.html
@@ -149,7 +149,13 @@
<li>there is some kind of roadmap to libxml-2.0: fix I18N, and <a
href="http://rpmfind.net/tools/gdome/messages/0039.html">change structures
to accomodate DOM</a></li>
- <li>added a nanoFTP transport module</li>
+</ul>
+
+<h3>1.8.6: Jan 31 2000</h3>
+<ul>
+ <li>added a nanoFTP transport module, debugged until the new version of <a
+ href="http://rpmfind.net/linux/rpm2html/rpmfind.html">rpmfind</a> can use
+ it without troubles</li>
</ul>
<h3>1.8.5: Jan 21 2000</h3>
@@ -1004,6 +1010,6 @@
<p><a href="mailto:Daniel.Veillard@w3.org">Daniel Veillard</a></p>
-<p>$Id: xml.html,v 1.22 2000/01/18 18:01:01 veillard Exp $</p>
+<p>$Id: xml.html,v 1.23 2000/01/25 18:31:22 veillard Exp $</p>
</body>
</html>
diff --git a/include/libxml/nanoftp.h b/include/libxml/nanoftp.h
index 84ee18d..0a41b97 100644
--- a/include/libxml/nanoftp.h
+++ b/include/libxml/nanoftp.h
@@ -14,13 +14,28 @@
/**
* ftpListCallback:
+ * @userData: user provided data for the callback
+ * @filename: the file name (including "->" when links are shown)
+ * @attrib: the attribute string
+ * @owner: the owner string
+ * @group: the group string
+ * @size: the file size
+ * @links: the link count
+ * @year: the year
+ * @month: the month
+ * @day: the day
+ * @hour: the hour
+ * @minute: the minute
+ *
* A callback for the xmlNanoFTPList command
+ * Note that only one of year and day:minute are specified
*/
typedef void (*ftpListCallback) (void *userData,
const char *filename, const char* attrib,
const char *owner, const char *group,
unsigned long size, int links, int year,
- const char *month, int day, int minute);
+ const char *month, int day, int hour,
+ int minute);
/**
* ftpDataCallback:
* A callback for the xmlNanoFTPGet command
@@ -31,6 +46,7 @@
* Init
*/
void xmlNanoFTPInit (void);
+void xmlNanoFTPCleanup (void);
/*
* Creating/freeing contexts
@@ -46,7 +62,14 @@
int xmlNanoFTPConnect (void *ctx);
int xmlNanoFTPClose (void *ctx);
int xmlNanoFTPQuit (void *ctx);
-
+void xmlNanoFTPScanProxy (const char *URL);
+void xmlNanoFTPProxy (const char *host,
+ int port,
+ const char *user,
+ const char *passwd,
+ int type);
+int xmlNanoFTPUpdateURL (void *ctx,
+ const char *URL);
/*
* Rathern internal commands
diff --git a/include/libxml/nanohttp.h b/include/libxml/nanohttp.h
index aeefe40..7e0e2ce 100644
--- a/include/libxml/nanohttp.h
+++ b/include/libxml/nanohttp.h
@@ -11,6 +11,9 @@
#ifdef __cplusplus
extern "C" {
#endif
+void xmlNanoHTTPInit (void);
+void xmlNanoHTTPCleanup (void);
+void xmlNanoHTTPScanProxy (const char *URL);
int xmlNanoHTTPFetch (const char *URL,
const char *filename,
char **contentType);
diff --git a/include/libxml/tree.h b/include/libxml/tree.h
index f53c4ca..0968229 100644
--- a/include/libxml/tree.h
+++ b/include/libxml/tree.h
@@ -317,6 +317,7 @@
extern int oldXMLWDcompatibility;/* maintain compatibility with old WD */
extern int xmlIndentTreeOutput; /* try to indent the tree dumps */
extern xmlBufferAllocationScheme xmlBufferAllocScheme; /* alloc scheme to use */
+extern int xmlSaveNoEmptyTags; /* save empty tags as <empty></empty> */
/*
* Handling Buffers.
diff --git a/nanoftp.c b/nanoftp.c
index 69ddc02..9af52c0 100644
--- a/nanoftp.c
+++ b/nanoftp.c
@@ -31,20 +31,40 @@
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
#ifdef HAVE_NETDB_H
#include <netdb.h>
#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
#ifdef HAVE_RESOLV_H
#include <resolv.h>
#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
#include "xmlmemory.h"
#include "nanoftp.h"
/* #define DEBUG_FTP 1 */
#ifdef STANDALONE
+#ifndef DEBUG_FTP
#define DEBUG_FTP 1
#endif
+#endif
static char hostname[100];
@@ -67,6 +87,111 @@
int returnValue; /* the protocol return value */
} xmlNanoFTPCtxt, *xmlNanoFTPCtxtPtr;
+static int initialized = 0;
+static char *proxy = NULL; /* the proxy name if any */
+static int proxyPort = 0; /* the proxy port if any */
+static char *proxyUser = NULL; /* user for proxy authentication */
+static char *proxyPasswd = NULL;/* passwd for proxy authentication */
+static int proxyType = 0; /* uses TYPE or a@b ? */
+
+/**
+ * xmlNanoFTPInit:
+ *
+ * Initialize the FTP protocol layer.
+ * Currently it just checks for proxy informations,
+ * and get the hostname
+ */
+
+void
+xmlNanoFTPInit(void) {
+ const char *env;
+
+ if (initialized)
+ return;
+
+ gethostname(hostname, sizeof(hostname));
+
+ proxyPort = 21;
+ env = getenv("no_proxy");
+ if (env != NULL)
+ return;
+ env = getenv("ftp_proxy");
+ if (env != NULL) {
+ xmlNanoFTPScanProxy(env);
+ } else {
+ env = getenv("FTP_PROXY");
+ if (env != NULL) {
+ xmlNanoFTPScanProxy(env);
+ }
+ }
+ env = getenv("ftp_proxy_user");
+ if (env != NULL) {
+ proxyUser = xmlMemStrdup(env);
+ }
+ env = getenv("ftp_proxy_password");
+ if (env != NULL) {
+ proxyPasswd = xmlMemStrdup(env);
+ }
+ initialized = 1;
+}
+
+/**
+ * xmlNanoFTPClenup:
+ *
+ * Cleanup the FTP protocol layer. This cleanup proxy informations.
+ */
+
+void
+xmlNanoFTPCleanup(void) {
+ if (proxy != NULL) {
+ xmlFree(proxy);
+ proxy = NULL;
+ }
+ if (proxyUser != NULL) {
+ xmlFree(proxyUser);
+ proxyUser = NULL;
+ }
+ if (proxyPasswd != NULL) {
+ xmlFree(proxyPasswd);
+ proxyPasswd = NULL;
+ }
+ hostname[0] = 0;
+ initialized = 0;
+ return;
+}
+
+/**
+ * xmlNanoFTPProxy:
+ * @host: the proxy host name
+ * @port: the proxy port
+ * @user: the proxy user name
+ * @passwd: the proxy password
+ * @type: the type of proxy 1 for using SITE, 2 for USER a@b
+ *
+ * Setup the FTP proxy informations.
+ * This can also be done by using ftp_proxy ftp_proxy_user and
+ * ftp_proxy_password environment variables.
+ */
+
+void
+xmlNanoFTPProxy(const char *host, int port, const char *user,
+ const char *passwd, int type) {
+ if (proxy != NULL)
+ xmlFree(proxy);
+ if (proxyUser != NULL)
+ xmlFree(proxyUser);
+ if (proxyPasswd != NULL)
+ xmlFree(proxyPasswd);
+ if (host)
+ proxy = xmlMemStrdup(host);
+ if (user)
+ proxyUser = xmlMemStrdup(user);
+ if (passwd)
+ proxyPasswd = xmlMemStrdup(passwd);
+ proxyPort = port;
+ proxyType = type;
+}
+
/**
* xmlNanoFTPScanURL:
* @ctx: an FTP context
@@ -96,6 +221,7 @@
xmlFree(ctxt->path);
ctxt->path = NULL;
}
+ if (URL == NULL) return;
buf[index] = 0;
while (*cur != 0) {
if ((cur[0] == ':') && (cur[1] == '/') && (cur[2] == '/')) {
@@ -149,6 +275,169 @@
}
/**
+ * xmlNanoFTPUpdateURL:
+ * @ctx: an FTP context
+ * @URL: The URL used to update the context
+ *
+ * Update an FTP context by parsing the URL and finding
+ * new path it indicates. If there is an error in the
+ * protocol, hostname, port or other information, the
+ * error is raised. It indicates a new connection has to
+ * be established.
+ *
+ * Returns 0 if Ok, -1 in case of error (other host).
+ */
+
+int
+xmlNanoFTPUpdateURL(void *ctx, const char *URL) {
+ xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
+ const char *cur = URL;
+ char buf[4096];
+ int index = 0;
+ int port = 0;
+
+ if (URL == NULL)
+ return(-1);
+ if (ctxt == NULL)
+ return(-1);
+ if (ctxt->protocol == NULL)
+ return(-1);
+ if (ctxt->hostname == NULL)
+ return(-1);
+ buf[index] = 0;
+ while (*cur != 0) {
+ if ((cur[0] == ':') && (cur[1] == '/') && (cur[2] == '/')) {
+ buf[index] = 0;
+ if (strcmp(ctxt->protocol, buf))
+ return(-1);
+ index = 0;
+ cur += 3;
+ break;
+ }
+ buf[index++] = *cur++;
+ }
+ if (*cur == 0)
+ return(-1);
+
+ buf[index] = 0;
+ while (1) {
+ if (cur[0] == ':') {
+ buf[index] = 0;
+ if (strcmp(ctxt->hostname, buf))
+ return(-1);
+ index = 0;
+ cur += 1;
+ while ((*cur >= '0') && (*cur <= '9')) {
+ port *= 10;
+ port += *cur - '0';
+ cur++;
+ }
+ if (port != ctxt->port)
+ return(-1);
+ while ((cur[0] != '/') && (*cur != 0))
+ cur++;
+ break;
+ }
+ if ((*cur == '/') || (*cur == 0)) {
+ buf[index] = 0;
+ if (strcmp(ctxt->hostname, buf))
+ return(-1);
+ index = 0;
+ break;
+ }
+ buf[index++] = *cur++;
+ }
+ if (ctxt->path != NULL) {
+ xmlFree(ctxt->path);
+ ctxt->path = NULL;
+ }
+
+ if (*cur == 0)
+ ctxt->path = xmlMemStrdup("/");
+ else {
+ buf[index] = 0;
+ while (*cur != 0) {
+ if ((cur[0] == '#') || (cur[0] == '?'))
+ break;
+ buf[index++] = *cur++;
+ }
+ buf[index] = 0;
+ ctxt->path = xmlMemStrdup(buf);
+ }
+ return(0);
+}
+
+/**
+ * xmlNanoFTPScanProxy:
+ * @URL: The proxy URL used to initialize the proxy context
+ *
+ * (Re)Initialize the FTP Proxy context by parsing the URL and finding
+ * the protocol host port it indicates.
+ * Should be like ftp://myproxy/ or ftp://myproxy:3128/
+ * A NULL URL cleans up proxy informations.
+ */
+
+void
+xmlNanoFTPScanProxy(const char *URL) {
+ const char *cur = URL;
+ char buf[4096];
+ int index = 0;
+ int port = 0;
+
+ if (proxy != NULL) {
+ xmlFree(proxy);
+ proxy = NULL;
+ }
+ if (proxyPort != 0) {
+ proxyPort = 0;
+ }
+#ifdef DEBUG_FTP
+ if (URL == NULL)
+ printf("Removing FTP proxy info\n");
+ else
+ printf("Using FTP proxy %s\n", URL);
+#endif
+ if (URL == NULL) return;
+ buf[index] = 0;
+ while (*cur != 0) {
+ if ((cur[0] == ':') && (cur[1] == '/') && (cur[2] == '/')) {
+ buf[index] = 0;
+ index = 0;
+ cur += 3;
+ break;
+ }
+ buf[index++] = *cur++;
+ }
+ if (*cur == 0) return;
+
+ buf[index] = 0;
+ while (1) {
+ if (cur[0] == ':') {
+ buf[index] = 0;
+ proxy = xmlMemStrdup(buf);
+ index = 0;
+ cur += 1;
+ while ((*cur >= '0') && (*cur <= '9')) {
+ port *= 10;
+ port += *cur - '0';
+ cur++;
+ }
+ if (port != 0) proxyPort = port;
+ while ((cur[0] != '/') && (*cur != 0))
+ cur++;
+ break;
+ }
+ if ((*cur == '/') || (*cur == 0)) {
+ buf[index] = 0;
+ proxy = xmlMemStrdup(buf);
+ index = 0;
+ break;
+ }
+ buf[index++] = *cur++;
+ }
+}
+
+/**
* xmlNanoFTPNewCtxt:
* @URL: The URL used to initialize the context
*
@@ -196,20 +485,6 @@
}
/**
- * xmlNanoFTPInit:
- *
- * Initialize the FTP handling.
- */
-
-void
-xmlNanoFTPInit(void) {
- static int done = 0;
- if (done) return;
- gethostname(hostname, sizeof(hostname));
- done = 1;
-}
-
-/**
* Parsing of the server answer, we just extract the code.
* return 0 for errors
* +XXX for last line of response
@@ -446,6 +721,7 @@
xmlNanoFTPConnect(void *ctx) {
xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
struct hostent *hp;
+ int port;
int res;
if (ctxt == NULL)
@@ -456,7 +732,10 @@
/*
* do the blocking DNS query.
*/
- hp = gethostbyname(ctxt->hostname);
+ if (proxy)
+ hp = gethostbyname(proxy);
+ else
+ hp = gethostbyname(ctxt->hostname);
if (hp == NULL)
return(-1);
@@ -466,9 +745,14 @@
memset(&ctxt->ftpAddr, 0, sizeof(ctxt->ftpAddr));
ctxt->ftpAddr.sin_family = AF_INET;
memcpy(&ctxt->ftpAddr.sin_addr, hp->h_addr_list[0], hp->h_length);
- if (ctxt->port == 0)
- ctxt->port = 21;
- ctxt->ftpAddr.sin_port = htons(ctxt->port);
+ if (proxy) {
+ port = proxyPort;
+ } else {
+ port = ctxt->port;
+ }
+ if (port == 0)
+ port = 21;
+ ctxt->ftpAddr.sin_port = htons(port);
ctxt->controlFd = socket(AF_INET, SOCK_STREAM, 0);
if (ctxt->controlFd < 0)
return(-1);
@@ -524,6 +808,157 @@
* +---+ ACCT +---+-- | ----->+---+
* | |---------->| W | 4,5 -------->| F |
* +---+ +---+------------->+---+
+ *
+ * Of course in case of using a proxy this get really nasty and is not
+ * standardized at all :-(
+ */
+ if (proxy) {
+ int len;
+ char buf[400];
+
+ if (proxyUser != NULL) {
+ /*
+ * We need proxy auth
+ */
+ len = snprintf(buf, sizeof(buf), "USER %s\r\n", proxyUser);
+#ifdef DEBUG_FTP
+ printf(buf);
+#endif
+ res = send(ctxt->controlFd, buf, len, 0);
+ if (res < 0) {
+ close(ctxt->controlFd);
+ ctxt->controlFd = -1;
+ return(res);
+ }
+ res = xmlNanoFTPGetResponse(ctxt);
+ switch (res) {
+ case 2:
+ if (proxyPasswd == NULL)
+ break;
+ case 3:
+ if (proxyPasswd != NULL)
+ len = snprintf(buf, sizeof(buf), "PASS %s\r\n", proxyPasswd);
+ else
+ len = snprintf(buf, sizeof(buf), "PASS libxml@%s\r\n",
+ hostname);
+#ifdef DEBUG_FTP
+ printf(buf);
+#endif
+ res = send(ctxt->controlFd, buf, len, 0);
+ if (res < 0) {
+ close(ctxt->controlFd);
+ ctxt->controlFd = -1;
+ return(res);
+ }
+ res = xmlNanoFTPGetResponse(ctxt);
+ if (res > 3) {
+ close(ctxt->controlFd);
+ ctxt->controlFd = -1;
+ return(-1);
+ }
+ break;
+ case 1:
+ break;
+ case 4:
+ case 5:
+ case -1:
+ default:
+ close(ctxt->controlFd);
+ ctxt->controlFd = -1;
+ return(-1);
+ }
+ }
+
+ /*
+ * We assume we don't need more authentication to the proxy
+ * and that it succeeded :-\
+ */
+ switch (proxyType) {
+ case 0:
+ /* we will try in seqence */
+ case 1:
+ /* Using SITE command */
+ len = snprintf(buf, sizeof(buf), "SITE %s\r\n", ctxt->hostname);
+#ifdef DEBUG_FTP
+ printf(buf);
+#endif
+ res = send(ctxt->controlFd, buf, len, 0);
+ if (res < 0) {
+ close(ctxt->controlFd); ctxt->controlFd = -1;
+ ctxt->controlFd = -1;
+ return(res);
+ }
+ res = xmlNanoFTPGetResponse(ctxt);
+ if (res == 2) {
+ /* we assume it worked :-\ 1 is error for SITE command */
+ proxyType = 1;
+ break;
+ }
+ if (proxyType == 1) {
+ close(ctxt->controlFd); ctxt->controlFd = -1;
+ ctxt->controlFd = -1;
+ return(-1);
+ }
+ case 2:
+ /* USER user@host command */
+ if (ctxt->user == NULL)
+ len = snprintf(buf, sizeof(buf), "USER anonymous@%s\r\n",
+ ctxt->hostname);
+ else
+ len = snprintf(buf, sizeof(buf), "USER %s@%s\r\n",
+ ctxt->user, ctxt->hostname);
+#ifdef DEBUG_FTP
+ printf(buf);
+#endif
+ res = send(ctxt->controlFd, buf, len, 0);
+ if (res < 0) {
+ close(ctxt->controlFd); ctxt->controlFd = -1;
+ ctxt->controlFd = -1;
+ return(res);
+ }
+ res = xmlNanoFTPGetResponse(ctxt);
+ if ((res == 1) || (res == 2)) {
+ /* we assume it worked :-\ */
+ proxyType = 2;
+ return(0);
+ }
+ if (ctxt->passwd == NULL)
+ len = snprintf(buf, sizeof(buf), "PASS libxml@%s\r\n", hostname);
+ else
+ len = snprintf(buf, sizeof(buf), "PASS %s\r\n", ctxt->passwd);
+#ifdef DEBUG_FTP
+ printf(buf);
+#endif
+ res = send(ctxt->controlFd, buf, len, 0);
+ if (res < 0) {
+ close(ctxt->controlFd); ctxt->controlFd = -1;
+ ctxt->controlFd = -1;
+ return(res);
+ }
+ res = xmlNanoFTPGetResponse(ctxt);
+ if ((res == 1) || (res == 2)) {
+ /* we assume it worked :-\ */
+ proxyType = 2;
+ return(0);
+ }
+ if (proxyType == 2) {
+ close(ctxt->controlFd); ctxt->controlFd = -1;
+ ctxt->controlFd = -1;
+ return(-1);
+ }
+ case 3:
+ /*
+ * If you need support for other Proxy authentication scheme
+ * send the code or at least the sequence in use.
+ */
+ default:
+ close(ctxt->controlFd); ctxt->controlFd = -1;
+ ctxt->controlFd = -1;
+ return(-1);
+ }
+ }
+ /*
+ * Non-proxy handling.
*/
res = xmlNanoFTPSendUser(ctxt);
if (res < 0) {
@@ -896,7 +1331,7 @@
}
if (callback != NULL) {
callback(userData, filename, attrib, owner, group, size, links,
- year, month, day, minute);
+ year, month, day, hour, minute);
}
return(cur - list);
}
@@ -924,12 +1359,19 @@
fd_set rfd, efd;
struct timeval tv;
- ctxt->dataFd = xmlNanoFTPGetConnection(ctxt);
-
- if (filename != NULL)
- len = snprintf(buf, sizeof(buf), "LIST -L %s\r\n", filename);
- else
+ if (filename == NULL) {
+ if (xmlNanoFTPCwd(ctxt, ctxt->path) < 1)
+ return(-1);
+ ctxt->dataFd = xmlNanoFTPGetConnection(ctxt);
len = snprintf(buf, sizeof(buf), "LIST -L\r\n");
+ } else {
+ if (filename[0] != '/') {
+ if (xmlNanoFTPCwd(ctxt, ctxt->path) < 1)
+ return(-1);
+ }
+ ctxt->dataFd = xmlNanoFTPGetConnection(ctxt);
+ len = snprintf(buf, sizeof(buf), "LIST -L %s\r\n", filename);
+ }
#ifdef DEBUG_FTP
printf(buf);
#endif
@@ -1003,7 +1445,7 @@
/**
* xmlNanoFTPGetSocket:
* @ctx: an FTP context
- * @filename: the file to retrieve
+ * @filename: the file to retrieve (or NULL if path is in context).
*
* Initiate fetch of the given file from the server.
*
@@ -1016,7 +1458,7 @@
xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
char buf[300];
int res, len;
- if (filename == NULL)
+ if ((filename == NULL) && (ctxt->path == NULL))
return(-1);
ctxt->dataFd = xmlNanoFTPGetConnection(ctxt);
@@ -1034,7 +1476,10 @@
close(ctxt->dataFd); ctxt->dataFd = -1;
return(-res);
}
- len = snprintf(buf, sizeof(buf), "RETR %s\r\n", filename);
+ if (filename == NULL)
+ len = snprintf(buf, sizeof(buf), "RETR %s\r\n", ctxt->path);
+ else
+ len = snprintf(buf, sizeof(buf), "RETR %s\r\n", filename);
#ifdef DEBUG_FTP
printf(buf);
#endif
@@ -1073,7 +1518,7 @@
fd_set rfd;
struct timeval tv;
- if (filename == NULL)
+ if ((filename == NULL) && (ctxt->path == NULL))
return(-1);
if (callback == NULL)
return(-1);
@@ -1218,7 +1663,7 @@
************************************************************************/
void ftpList(void *userData, const char *filename, const char* attrib,
const char *owner, const char *group, unsigned long size, int links,
- int year, const char *month, int day, int minute) {
+ int year, const char *month, int day, int hour, int minute) {
printf("%s %s %s %ld %s\n", attrib, owner, group, size, filename);
}
void ftpData(void *userData, const char *data, int len) {
@@ -1233,12 +1678,15 @@
int main(int argc, char **argv) {
void *ctxt;
FILE *output;
- int res;
- const char *tstfile = "tstfile";
+ char *tstfile = NULL;
xmlNanoFTPInit();
if (argc > 1) {
- ctxt = xmlNanoFTPConnectTo(argv[1], 0);
+ ctxt = xmlNanoFTPNewCtxt(argv[1]);
+ if (xmlNanoFTPConnect(ctxt) < 0) {
+ fprintf(stderr, "Couldn't connect to %s\n", argv[1]);
+ exit(1);
+ }
if (argc > 2)
tstfile = argv[2];
} else
@@ -1247,33 +1695,11 @@
fprintf(stderr, "Couldn't connect to localhost\n");
exit(1);
}
- res = xmlNanoFTPCwd(ctxt, "/linux");
- if (res < 0) {
- fprintf(stderr, "disconnected\n");
- xmlNanoFTPClose(ctxt);
- exit(1);
- }
- if (res == 0) {
- fprintf(stderr, "/linux : CWD failed\n");
- } else {
- fprintf(stderr, "/linux : CWD successful\n");
- }
- res = xmlNanoFTPCwd(ctxt, "/toto");
- if (res < 0) {
- fprintf(stderr, "disconnected\n");
- xmlNanoFTPClose(ctxt);
- exit(1);
- }
- if (res == 0) {
- fprintf(stderr, "/toto : CWD failed\n");
- } else {
- fprintf(stderr, "/toto : CWD successful\n");
- }
- xmlNanoFTPList(ctxt, ftpList, NULL, NULL);
+ xmlNanoFTPList(ctxt, ftpList, NULL, tstfile);
output = fopen("/tmp/tstdata", "w");
if (output != NULL) {
if (xmlNanoFTPGet(ctxt, ftpData, (void *) output, tstfile) < 0)
- fprintf(stderr, "Failed to get file %s\n", tstfile);
+ fprintf(stderr, "Failed to get file\n");
}
xmlNanoFTPClose(ctxt);
diff --git a/nanoftp.h b/nanoftp.h
index 84ee18d..0a41b97 100644
--- a/nanoftp.h
+++ b/nanoftp.h
@@ -14,13 +14,28 @@
/**
* ftpListCallback:
+ * @userData: user provided data for the callback
+ * @filename: the file name (including "->" when links are shown)
+ * @attrib: the attribute string
+ * @owner: the owner string
+ * @group: the group string
+ * @size: the file size
+ * @links: the link count
+ * @year: the year
+ * @month: the month
+ * @day: the day
+ * @hour: the hour
+ * @minute: the minute
+ *
* A callback for the xmlNanoFTPList command
+ * Note that only one of year and day:minute are specified
*/
typedef void (*ftpListCallback) (void *userData,
const char *filename, const char* attrib,
const char *owner, const char *group,
unsigned long size, int links, int year,
- const char *month, int day, int minute);
+ const char *month, int day, int hour,
+ int minute);
/**
* ftpDataCallback:
* A callback for the xmlNanoFTPGet command
@@ -31,6 +46,7 @@
* Init
*/
void xmlNanoFTPInit (void);
+void xmlNanoFTPCleanup (void);
/*
* Creating/freeing contexts
@@ -46,7 +62,14 @@
int xmlNanoFTPConnect (void *ctx);
int xmlNanoFTPClose (void *ctx);
int xmlNanoFTPQuit (void *ctx);
-
+void xmlNanoFTPScanProxy (const char *URL);
+void xmlNanoFTPProxy (const char *host,
+ int port,
+ const char *user,
+ const char *passwd,
+ int type);
+int xmlNanoFTPUpdateURL (void *ctx,
+ const char *URL);
/*
* Rathern internal commands
diff --git a/nanohttp.c b/nanohttp.c
index 4b27225..e2dfda3 100644
--- a/nanohttp.c
+++ b/nanohttp.c
@@ -92,6 +92,58 @@
char *location; /* the new URL in case of redirect */
} xmlNanoHTTPCtxt, *xmlNanoHTTPCtxtPtr;
+static int initialized = 0;
+static char *proxy = NULL; /* the proxy name if any */
+static int proxyPort; /* the proxy port if any */
+
+/**
+ * xmlNanoHTTPInit:
+ *
+ * Initialize the HTTP protocol layer.
+ * Currently it just checks for proxy informations
+ */
+
+void
+xmlNanoHTTPInit(void) {
+ const char *env;
+
+ if (initialized)
+ return;
+
+ if (proxy == NULL) {
+ proxyPort = 80;
+ env = getenv("no_proxy");
+ if (env != NULL)
+ goto done;
+ env = getenv("http_proxy");
+ if (env != NULL) {
+ xmlNanoHTTPScanProxy(env);
+ goto done;
+ }
+ env = getenv("HTTP_PROXY");
+ if (env != NULL) {
+ xmlNanoHTTPScanProxy(env);
+ goto done;
+ }
+ }
+done:
+ initialized = 1;
+}
+
+/**
+ * xmlNanoHTTPClenup:
+ *
+ * Cleanup the HTTP protocol layer.
+ */
+
+void
+xmlNanoHTTPCleanup(void) {
+ if (proxy != NULL)
+ xmlFree(proxy);
+ initialized = 0;
+ return;
+}
+
/**
* xmlNanoHTTPScanURL:
* @ctxt: an HTTP context
@@ -120,6 +172,7 @@
xmlFree(ctxt->path);
ctxt->path = NULL;
}
+ if (URL == NULL) return;
buf[index] = 0;
while (*cur != 0) {
if ((cur[0] == ':') && (cur[1] == '/') && (cur[2] == '/')) {
@@ -173,6 +226,76 @@
}
/**
+ * xmlNanoHTTPScanProxy:
+ * @URL: The proxy URL used to initialize the proxy context
+ *
+ * (Re)Initialize the HTTP Proxy context by parsing the URL and finding
+ * the protocol host port it indicates.
+ * Should be like http://myproxy/ or http://myproxy:3128/
+ * A NULL URL cleans up proxy informations.
+ */
+
+void
+xmlNanoHTTPScanProxy(const char *URL) {
+ const char *cur = URL;
+ char buf[4096];
+ int index = 0;
+ int port = 0;
+
+ if (proxy != NULL) {
+ xmlFree(proxy);
+ proxy = NULL;
+ }
+ if (proxyPort != 0) {
+ proxyPort = 0;
+ }
+#ifdef DEBUG_HTTP
+ if (URL == NULL)
+ printf("Removing HTTP proxy info\n");
+ else
+ printf("Using HTTP proxy %s\n", URL);
+#endif
+ if (URL == NULL) return;
+ buf[index] = 0;
+ while (*cur != 0) {
+ if ((cur[0] == ':') && (cur[1] == '/') && (cur[2] == '/')) {
+ buf[index] = 0;
+ index = 0;
+ cur += 3;
+ break;
+ }
+ buf[index++] = *cur++;
+ }
+ if (*cur == 0) return;
+
+ buf[index] = 0;
+ while (1) {
+ if (cur[0] == ':') {
+ buf[index] = 0;
+ proxy = xmlMemStrdup(buf);
+ index = 0;
+ cur += 1;
+ while ((*cur >= '0') && (*cur <= '9')) {
+ port *= 10;
+ port += *cur - '0';
+ cur++;
+ }
+ if (port != 0) proxyPort = port;
+ while ((cur[0] != '/') && (*cur != 0))
+ cur++;
+ break;
+ }
+ if ((*cur == '/') || (*cur == 0)) {
+ buf[index] = 0;
+ proxy = xmlMemStrdup(buf);
+ index = 0;
+ break;
+ }
+ buf[index++] = *cur++;
+ }
+}
+
+/**
* xmlNanoHTTPNewCtxt:
* @URL: The URL used to initialize the context
*
@@ -598,6 +721,7 @@
int nbRedirects = 0;
char *redirURL = NULL;
+ xmlNanoHTTPInit();
if (contentType != NULL) *contentType = NULL;
retry:
@@ -618,23 +742,54 @@
xmlNanoHTTPFreeCtxt(ctxt);
return(NULL);
}
- ret = xmlNanoHTTPConnectHost(ctxt->hostname, ctxt->port);
+ if (proxy)
+ ret = xmlNanoHTTPConnectHost(proxy, proxyPort);
+ else
+ ret = xmlNanoHTTPConnectHost(ctxt->hostname, ctxt->port);
if (ret < 0) {
xmlNanoHTTPFreeCtxt(ctxt);
return(NULL);
}
ctxt->fd = ret;
-#ifdef HAVE_SNPRINTF
- snprintf(buf, sizeof(buf),"GET %s HTTP/1.0\r\nHost: %s\r\n\r\n",
- ctxt->path, ctxt->hostname);
+ if (proxy) {
+#ifdef have_snprintf
+ if (ctxt->port != 80)
+ snprintf(buf, sizeof(buf),
+ "GET http://%s:%d%s HTTP/1.0\r\nHost: %s\r\n\r\n",
+ ctxt->hostname, ctxt->port, ctxt->path, ctxt->hostname);
+ else
+ snprintf(buf, sizeof(buf),"GET http://%s%s HTTP/1.0\r\nHost: %s\r\n\r\n",
+ ctxt->hostname, ctxt->path, ctxt->hostname);
#else
- sprintf(buf, "GET %s HTTP/1.0\r\nHost: %s\r\n\r\n",
- ctxt->path, ctxt->hostname);
+ if (ctxt->port != 80)
+ sprintf(buf,
+ "GET http://%s:%d%s HTTP/1.0\r\nHost: %s\r\n\r\n",
+ ctxt->hostname, ctxt->port, ctxt->path, ctxt->hostname);
+ else
+ sprintf(buf, "GET http://%s%s HTTP/1.0\r\nHost: %s\r\n\r\n",
+ ctxt->hostname, ctxt->path, ctxt->hostname);
#endif
#ifdef DEBUG_HTTP
- printf("-> GET %s HTTP/1.0\n-> Host: %s\n\n",
- ctxt->path, ctxt->hostname);
+ if (ctxt->port != 80)
+ printf("-> Proxy GET http://%s:%d%s HTTP/1.0\n-> Host: %s\n\n",
+ ctxt->hostname, ctxt->port, ctxt->path, ctxt->hostname);
+ else
+ printf("-> Proxy GET http://%s%s HTTP/1.0\n-> Host: %s\n\n",
+ ctxt->hostname, ctxt->path, ctxt->hostname);
#endif
+ } else {
+#ifdef HAVE_SNPRINTF
+ snprintf(buf, sizeof(buf),"GET %s HTTP/1.0\r\nHost: %s\r\n\r\n",
+ ctxt->path, ctxt->hostname);
+#else
+ sprintf(buf, "GET %s HTTP/1.0\r\nHost: %s\r\n\r\n",
+ ctxt->path, ctxt->hostname);
+#endif
+#ifdef DEBUG_HTTP
+ printf("-> GET %s HTTP/1.0\n-> Host: %s\n\n",
+ ctxt->path, ctxt->hostname);
+#endif
+ }
ctxt->outptr = ctxt->out = xmlMemStrdup(buf);
ctxt->state = XML_NANO_HTTP_WRITE;
xmlNanoHTTPSend(ctxt);
@@ -645,6 +800,7 @@
if (head && (*p == 0)) {
head = 0;
ctxt->content = ctxt->inrptr;
+ xmlFree(p);
break;
}
xmlNanoHTTPScanAnswer(ctxt, p);
@@ -984,7 +1140,7 @@
if (!strcmp(filename, "-"))
fd = 0;
else {
- fd = open(filename, O_CREAT | O_WRONLY);
+ fd = open(filename, O_CREAT | O_WRONLY, 00644);
if (fd < 0) {
xmlNanoHTTPClose(ctxt);
if ((contentType != NULL) && (*contentType != NULL)) {
@@ -1000,6 +1156,7 @@
}
xmlNanoHTTPClose(ctxt);
+ close(fd);
return(0);
}
@@ -1068,6 +1225,8 @@
printf("%s: minimal HTTP GET implementation\n", argv[0]);
printf("\tusage %s [ URL [ filename ] ]\n", argv[0]);
}
+ xmlNanoHTTPCleanup();
+ xmlMemoryDump();
return(0);
}
#endif /* STANDALONE */
diff --git a/nanohttp.h b/nanohttp.h
index aeefe40..7e0e2ce 100644
--- a/nanohttp.h
+++ b/nanohttp.h
@@ -11,6 +11,9 @@
#ifdef __cplusplus
extern "C" {
#endif
+void xmlNanoHTTPInit (void);
+void xmlNanoHTTPCleanup (void);
+void xmlNanoHTTPScanProxy (const char *URL);
int xmlNanoHTTPFetch (const char *URL,
const char *filename,
char **contentType);
diff --git a/tree.c b/tree.c
index db2b5d2..466c11f 100644
--- a/tree.c
+++ b/tree.c
@@ -38,6 +38,7 @@
static int xmlCompressMode = 0;
static int xmlCheckDTD = 1;
+int xmlSaveNoEmptyTags = 0;
#define UPDATE_LAST_CHILD(n) if ((n) != NULL) { \
xmlNodePtr ulccur = (n)->childs; \
@@ -4299,7 +4300,8 @@
if (cur->properties != NULL)
xmlAttrListDump(buf, doc, cur->properties);
- if ((cur->content == NULL) && (cur->childs == NULL)) {
+ if ((cur->content == NULL) && (cur->childs == NULL) &&
+ (!xmlSaveNoEmptyTags)) {
xmlBufferWriteChar(buf, "/>");
return;
}
diff --git a/tree.h b/tree.h
index f53c4ca..0968229 100644
--- a/tree.h
+++ b/tree.h
@@ -317,6 +317,7 @@
extern int oldXMLWDcompatibility;/* maintain compatibility with old WD */
extern int xmlIndentTreeOutput; /* try to indent the tree dumps */
extern xmlBufferAllocationScheme xmlBufferAllocScheme; /* alloc scheme to use */
+extern int xmlSaveNoEmptyTags; /* save empty tags as <empty></empty> */
/*
* Handling Buffers.