1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>nanoftp</title><meta name="generator" content="DocBook XSL Stylesheets V1.58.1"><style xmlns="http://www.w3.org/TR/xhtml1/transitional" type="text/css">
2 .synopsis, .classsynopsis {
4 border: solid 1px #aaaaaa;
9 border: solid 1px #aaaaff;
18 border: solid 1px #ffaaaa;
25 .navigation a:visited {
31 </style><link rel="home" href="index.html" title="Gnome XML Library Reference Manual"><link rel="up" href="libxml-lib.html" title="Libxml Library Reference"><link rel="previous" href="libxml-nanohttp.html" title="nanohttp"><link rel="next" href="libxml-xmlIO.html" title="xmlIO"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-nanohttp.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></img></a></td><td><a accesskey="u" href="libxml-lib.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></img></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></img></a></td><th width="100%" align="center">Gnome XML Library Reference Manual</th><td><a accesskey="n" href="libxml-xmlIO.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></img></a></td></tr></table><div class="refentry" lang="en"><a name="libxml-nanoftp"></a><div class="titlepage"></div><div class="refnamediv"><h2>nanoftp</h2><p>nanoftp — </p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis">
35 void (<a href="libxml-nanoftp.html#ftpListCallback">*ftpListCallback</a>) (void *userData,
40 unsigned <GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="long-size">long size</GTKDOCLINK>,
47 void (<a href="libxml-nanoftp.html#ftpDataCallback">*ftpDataCallback</a>) (void *userData,
50 void <a href="libxml-nanoftp.html#xmlNanoFTPInit">xmlNanoFTPInit</a> (void);
51 void <a href="libxml-nanoftp.html#xmlNanoFTPCleanup">xmlNanoFTPCleanup</a> (void);
52 void* <a href="libxml-nanoftp.html#xmlNanoFTPNewCtxt">xmlNanoFTPNewCtxt</a> (const char *URL);
53 void <a href="libxml-nanoftp.html#xmlNanoFTPFreeCtxt">xmlNanoFTPFreeCtxt</a> (void *ctx);
54 void* <a href="libxml-nanoftp.html#xmlNanoFTPConnectTo">xmlNanoFTPConnectTo</a> (const char *server,
56 void* <a href="libxml-nanoftp.html#xmlNanoFTPOpen">xmlNanoFTPOpen</a> (const char *URL);
57 int <a href="libxml-nanoftp.html#xmlNanoFTPConnect">xmlNanoFTPConnect</a> (void *ctx);
58 int <a href="libxml-nanoftp.html#xmlNanoFTPClose">xmlNanoFTPClose</a> (void *ctx);
59 int <a href="libxml-nanoftp.html#xmlNanoFTPQuit">xmlNanoFTPQuit</a> (void *ctx);
60 void <a href="libxml-nanoftp.html#xmlNanoFTPScanProxy">xmlNanoFTPScanProxy</a> (const char *URL);
61 void <a href="libxml-nanoftp.html#xmlNanoFTPProxy">xmlNanoFTPProxy</a> (const char *host,
66 int <a href="libxml-nanoftp.html#xmlNanoFTPUpdateURL">xmlNanoFTPUpdateURL</a> (void *ctx,
68 int <a href="libxml-nanoftp.html#xmlNanoFTPGetResponse">xmlNanoFTPGetResponse</a> (void *ctx);
69 int <a href="libxml-nanoftp.html#xmlNanoFTPCheckResponse">xmlNanoFTPCheckResponse</a> (void *ctx);
70 int <a href="libxml-nanoftp.html#xmlNanoFTPCwd">xmlNanoFTPCwd</a> (void *ctx,
72 int <a href="libxml-nanoftp.html#xmlNanoFTPDele">xmlNanoFTPDele</a> (void *ctx,
74 int <a href="libxml-nanoftp.html#xmlNanoFTPGetConnection">xmlNanoFTPGetConnection</a> (void *ctx);
75 int <a href="libxml-nanoftp.html#xmlNanoFTPCloseConnection">xmlNanoFTPCloseConnection</a> (void *ctx);
76 int <a href="libxml-nanoftp.html#xmlNanoFTPList">xmlNanoFTPList</a> (void *ctx,
77 <a href="libxml-nanoftp.html#ftpListCallback">ftpListCallback</a> callback,
80 int <a href="libxml-nanoftp.html#xmlNanoFTPGetSocket">xmlNanoFTPGetSocket</a> (void *ctx,
81 const char *filename);
82 int <a href="libxml-nanoftp.html#xmlNanoFTPGet">xmlNanoFTPGet</a> (void *ctx,
83 <a href="libxml-nanoftp.html#ftpDataCallback">ftpDataCallback</a> callback,
85 const char *filename);
86 int <a href="libxml-nanoftp.html#xmlNanoFTPRead">xmlNanoFTPRead</a> (void *ctx,
89 </pre></div><div class="refsect1" lang="en"><h2>Description</h2><p>
91 </p></div><div class="refsect1" lang="en"><h2>Details</h2><div class="refsect2" lang="en"><h3><a name="ftpListCallback"></a>ftpListCallback ()</h3><pre class="programlisting">void (*ftpListCallback) (void *userData,
96 unsigned <GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="long-size">long size</GTKDOCLINK>,
102 int minute);</pre><p>
103 A callback for the xmlNanoFTPList command.
104 Note that only one of year and day:minute are specified.</p><p>
106 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>userData</tt></i> :</span></td><td> user provided data for the callback
107 </td></tr><tr><td><span class="term"><i><tt>filename</tt></i> :</span></td><td> the file name (including "->" when links are shown)
108 </td></tr><tr><td><span class="term"><i><tt>attrib</tt></i> :</span></td><td> the attribute string
109 </td></tr><tr><td><span class="term"><i><tt>owner</tt></i> :</span></td><td> the owner string
110 </td></tr><tr><td><span class="term"><i><tt>group</tt></i> :</span></td><td> the group string
111 </td></tr><tr><td><span class="term"><i><tt>Param6</tt></i> :</span></td><td>
112 </td></tr><tr><td><span class="term"><i><tt>links</tt></i> :</span></td><td> the link count
113 </td></tr><tr><td><span class="term"><i><tt>year</tt></i> :</span></td><td> the year
114 </td></tr><tr><td><span class="term"><i><tt>month</tt></i> :</span></td><td> the month
115 </td></tr><tr><td><span class="term"><i><tt>day</tt></i> :</span></td><td> the day
116 </td></tr><tr><td><span class="term"><i><tt>hour</tt></i> :</span></td><td> the hour
117 </td></tr><tr><td><span class="term"><i><tt>minute</tt></i> :</span></td><td> the minute
118 </td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="ftpDataCallback"></a>ftpDataCallback ()</h3><pre class="programlisting">void (*ftpDataCallback) (void *userData,
121 A callback for the xmlNanoFTPGet command.</p><p>
123 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>userData</tt></i> :</span></td><td> the user provided context
124 </td></tr><tr><td><span class="term"><i><tt>data</tt></i> :</span></td><td> the data received
125 </td></tr><tr><td><span class="term"><i><tt>len</tt></i> :</span></td><td> its size in bytes
126 </td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPInit"></a>xmlNanoFTPInit ()</h3><pre class="programlisting">void xmlNanoFTPInit (void);</pre><p>
127 Initialize the FTP protocol layer.
128 Currently it just checks for proxy informations,
129 and get the hostname</p><p>
131 </p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPCleanup"></a>xmlNanoFTPCleanup ()</h3><pre class="programlisting">void xmlNanoFTPCleanup (void);</pre><p>
132 Cleanup the FTP protocol layer. This cleanup proxy informations.</p><p>
134 </p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPNewCtxt"></a>xmlNanoFTPNewCtxt ()</h3><pre class="programlisting">void* xmlNanoFTPNewCtxt (const char *URL);</pre><p>
135 Allocate and initialize a new FTP context.</p><p>
137 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>URL</tt></i> :</span></td><td> The URL used to initialize the context
138 </td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPFreeCtxt"></a>xmlNanoFTPFreeCtxt ()</h3><pre class="programlisting">void xmlNanoFTPFreeCtxt (void *ctx);</pre><p>
139 Frees the context after closing the connection.</p><p>
141 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ctx</tt></i> :</span></td><td> an FTP context
142 </td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPConnectTo"></a>xmlNanoFTPConnectTo ()</h3><pre class="programlisting">void* xmlNanoFTPConnectTo (const char *server,
144 Tries to open a control connection to the given server/port</p><p>
146 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>server</tt></i> :</span></td><td> an FTP server name
147 </td></tr><tr><td><span class="term"><i><tt>port</tt></i> :</span></td><td> the port (use 21 if 0)
148 </td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPOpen"></a>xmlNanoFTPOpen ()</h3><pre class="programlisting">void* xmlNanoFTPOpen (const char *URL);</pre><p>
149 Start to fetch the given ftp:// resource</p><p>
151 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>URL</tt></i> :</span></td><td> the URL to the resource
152 </td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPConnect"></a>xmlNanoFTPConnect ()</h3><pre class="programlisting">int xmlNanoFTPConnect (void *ctx);</pre><p>
153 Tries to open a control connection</p><p>
155 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ctx</tt></i> :</span></td><td> an FTP context
156 </td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>-1 in case of error, 0 otherwise
157 </td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPClose"></a>xmlNanoFTPClose ()</h3><pre class="programlisting">int xmlNanoFTPClose (void *ctx);</pre><p>
158 Close the connection and both control and transport</p><p>
160 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ctx</tt></i> :</span></td><td> an FTP context
161 </td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>-1 incase of error, 0 otherwise
162 </td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPQuit"></a>xmlNanoFTPQuit ()</h3><pre class="programlisting">int xmlNanoFTPQuit (void *ctx);</pre><p>
163 Send a QUIT command to the server</p><p>
165 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ctx</tt></i> :</span></td><td> an FTP context
166 </td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>-1 in case of error, 0 otherwise
167 </td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPScanProxy"></a>xmlNanoFTPScanProxy ()</h3><pre class="programlisting">void xmlNanoFTPScanProxy (const char *URL);</pre><p>
168 (Re)Initialize the FTP Proxy context by parsing the URL and finding
169 the protocol host port it indicates.
170 Should be like ftp://myproxy/ or ftp://myproxy:3128/
171 A NULL URL cleans up proxy informations.</p><p>
173 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>URL</tt></i> :</span></td><td> The proxy URL used to initialize the proxy context
174 </td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPProxy"></a>xmlNanoFTPProxy ()</h3><pre class="programlisting">void xmlNanoFTPProxy (const char *host,
179 Setup the FTP proxy informations.
180 This can also be done by using ftp_proxy ftp_proxy_user and
181 ftp_proxy_password environment variables.</p><p>
183 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>host</tt></i> :</span></td><td> the proxy host name
184 </td></tr><tr><td><span class="term"><i><tt>port</tt></i> :</span></td><td> the proxy port
185 </td></tr><tr><td><span class="term"><i><tt>user</tt></i> :</span></td><td> the proxy user name
186 </td></tr><tr><td><span class="term"><i><tt>passwd</tt></i> :</span></td><td> the proxy password
187 </td></tr><tr><td><span class="term"><i><tt>type</tt></i> :</span></td><td> the type of proxy 1 for using SITE, 2 for USER a<i><tt>b</tt></i>
188 </td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPUpdateURL"></a>xmlNanoFTPUpdateURL ()</h3><pre class="programlisting">int xmlNanoFTPUpdateURL (void *ctx,
189 const char *URL);</pre><p>
190 Update an FTP context by parsing the URL and finding
191 new path it indicates. If there is an error in the
192 protocol, hostname, port or other information, the
193 error is raised. It indicates a new connection has to
194 be established.</p><p>
196 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ctx</tt></i> :</span></td><td> an FTP context
197 </td></tr><tr><td><span class="term"><i><tt>URL</tt></i> :</span></td><td> The URL used to update the context
198 </td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>0 if Ok, -1 in case of error (other host).
199 </td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPGetResponse"></a>xmlNanoFTPGetResponse ()</h3><pre class="programlisting">int xmlNanoFTPGetResponse (void *ctx);</pre><p>
200 Get the response from the FTP server after a command.</p><p>
202 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ctx</tt></i> :</span></td><td> an FTP context
203 </td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the code number
204 </td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPCheckResponse"></a>xmlNanoFTPCheckResponse ()</h3><pre class="programlisting">int xmlNanoFTPCheckResponse (void *ctx);</pre><p>
205 Check if there is a response from the FTP server after a command.</p><p>
207 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ctx</tt></i> :</span></td><td> an FTP context
208 </td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the code number, or 0
209 </td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPCwd"></a>xmlNanoFTPCwd ()</h3><pre class="programlisting">int xmlNanoFTPCwd (void *ctx,
210 char *directory);</pre><p>
211 Tries to change the remote directory</p><p>
213 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ctx</tt></i> :</span></td><td> an FTP context
214 </td></tr><tr><td><span class="term"><i><tt>directory</tt></i> :</span></td><td> a directory on the server
215 </td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>-1 incase of error, 1 if CWD worked, 0 if it failed
216 </td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPDele"></a>xmlNanoFTPDele ()</h3><pre class="programlisting">int xmlNanoFTPDele (void *ctx,
217 char *file);</pre><p>
218 Tries to delete an item (file or directory) from server</p><p>
220 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ctx</tt></i> :</span></td><td> an FTP context
221 </td></tr><tr><td><span class="term"><i><tt>file</tt></i> :</span></td><td> a file or directory on the server
222 </td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>-1 incase of error, 1 if DELE worked, 0 if it failed
223 </td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPGetConnection"></a>xmlNanoFTPGetConnection ()</h3><pre class="programlisting">int xmlNanoFTPGetConnection (void *ctx);</pre><p>
224 Try to open a data connection to the server. Currently only
225 passive mode is supported.</p><p>
227 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ctx</tt></i> :</span></td><td> an FTP context
228 </td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>-1 incase of error, 0 otherwise
229 </td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPCloseConnection"></a>xmlNanoFTPCloseConnection ()</h3><pre class="programlisting">int xmlNanoFTPCloseConnection (void *ctx);</pre><p>
230 Close the data connection from the server</p><p>
232 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ctx</tt></i> :</span></td><td> an FTP context
233 </td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>-1 incase of error, 0 otherwise
234 </td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPList"></a>xmlNanoFTPList ()</h3><pre class="programlisting">int xmlNanoFTPList (void *ctx,
235 <a href="libxml-nanoftp.html#ftpListCallback">ftpListCallback</a> callback,
237 char *filename);</pre><p>
238 Do a listing on the server. All files info are passed back
239 in the callbacks.</p><p>
241 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ctx</tt></i> :</span></td><td> an FTP context
242 </td></tr><tr><td><span class="term"><i><tt>callback</tt></i> :</span></td><td> the user callback
243 </td></tr><tr><td><span class="term"><i><tt>userData</tt></i> :</span></td><td> the user callback data
244 </td></tr><tr><td><span class="term"><i><tt>filename</tt></i> :</span></td><td> optional files to list
245 </td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>-1 incase of error, 0 otherwise
246 </td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPGetSocket"></a>xmlNanoFTPGetSocket ()</h3><pre class="programlisting">int xmlNanoFTPGetSocket (void *ctx,
247 const char *filename);</pre><p>
248 Initiate fetch of the given file from the server.</p><p>
250 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ctx</tt></i> :</span></td><td> an FTP context
251 </td></tr><tr><td><span class="term"><i><tt>filename</tt></i> :</span></td><td> the file to retrieve (or NULL if path is in context).
252 </td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the socket for the data connection, or <0 in case of error
253 </td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPGet"></a>xmlNanoFTPGet ()</h3><pre class="programlisting">int xmlNanoFTPGet (void *ctx,
254 <a href="libxml-nanoftp.html#ftpDataCallback">ftpDataCallback</a> callback,
256 const char *filename);</pre><p>
257 Fetch the given file from the server. All data are passed back
258 in the callbacks. The last callback has a size of 0 block.</p><p>
260 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ctx</tt></i> :</span></td><td> an FTP context
261 </td></tr><tr><td><span class="term"><i><tt>callback</tt></i> :</span></td><td> the user callback
262 </td></tr><tr><td><span class="term"><i><tt>userData</tt></i> :</span></td><td> the user callback data
263 </td></tr><tr><td><span class="term"><i><tt>filename</tt></i> :</span></td><td> the file to retrieve
264 </td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>-1 incase of error, 0 otherwise
265 </td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNanoFTPRead"></a>xmlNanoFTPRead ()</h3><pre class="programlisting">int xmlNanoFTPRead (void *ctx,
268 This function tries to read <i><tt>len</tt></i> bytes from the existing FTP connection
269 and saves them in <i><tt>dest</tt></i>. This is a blocking call.</p><p>
271 </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>ctx</tt></i> :</span></td><td> the FTP context
272 </td></tr><tr><td><span class="term"><i><tt>dest</tt></i> :</span></td><td> a buffer
273 </td></tr><tr><td><span class="term"><i><tt>len</tt></i> :</span></td><td> the buffer length
274 </td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the number of byte read. 0 is an indication of an end of connection.
275 -1 indicates a parameter error.
276 </td></tr></tbody></table></div></div></div></div><table xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"><a accesskey="p" href="libxml-nanohttp.html"><b><< nanohttp</b></a></td><td align="right"><a accesskey="n" href="libxml-xmlIO.html"><b>xmlIO >></b></a></td></tr></table></body></html>