<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <link rel="stylesheet" href="style.css" type="text/css"> <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"> <link rel="Start" href="index.html"> <link rel="Up" href="index.html"> <link title="Index of types" rel=Appendix href="index_types.html"> <link title="Index of exceptions" rel=Appendix href="index_exceptions.html"> <link title="Index of values" rel=Appendix href="index_values.html"> <link title="Index of modules" rel=Appendix href="index_modules.html"> <link title="Index of module types" rel=Appendix href="index_module_types.html"> <link title="Ftp" rel="Chapter" href="Ftp.html"><title>Ftp</title> </head> <body> <div class="navbar"> <a class="up" href="index.html" title="Index">Up</a> </div> <h1>Module <a href="type_Ftp.html">Ftp</a></h1> <pre><span class="keyword">module</span> Ftp: <code class="code">sig</code> <a href="Ftp.html">..</a> <code class="code">end</code></pre><div class="info module top"> Functions for accessing files via ftp.<br> <b>Author(s):</b> Samuel Mimram<br> </div> <hr width="100%"> <pre><span id="TYPEftp_connection"><span class="keyword">type</span> <code class="type"></code>ftp_connection</span> </pre> <div class="info "> An ftp connection to an ftp server.<br> </div> <pre><code><span id="TYPEfile_kind"><span class="keyword">type</span> <code class="type"></code>file_kind</span> = </code></pre><table class="typetable"> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTfile_kind.S_REG"><span class="constructor">S_REG</span></span></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >regular file</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTfile_kind.S_DIR"><span class="constructor">S_DIR</span></span></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >directory</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTfile_kind.S_CHR"><span class="constructor">S_CHR</span></span></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >character device</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTfile_kind.S_BLK"><span class="constructor">S_BLK</span></span></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >block device</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTfile_kind.S_LNK"><span class="constructor">S_LNK</span></span></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >symbolic link</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTfile_kind.S_FIFO"><span class="constructor">S_FIFO</span></span></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >named pipe</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTfile_kind.S_SOCK"><span class="constructor">S_SOCK</span></span></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >socket</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr></table> <div class="info "> Kind of a file.<br> </div> <pre><span id="TYPEfile_perm"><span class="keyword">type</span> <code class="type"></code>file_perm</span> = <code class="type">int</code> </pre> <div class="info "> Permissions of a file.<br> </div> <pre><code><span id="TYPEstats"><span class="keyword">type</span> <code class="type"></code>stats</span> = {</code></pre><table class="typetable"> <tr> <td align="left" valign="top" > <code> </code></td> <td align="left" valign="top" > <code><span id="TYPEELTstats.st_kind">st_kind</span> : <code class="type"><a href="Ftp.html#TYPEfile_kind">file_kind</a></code>;</code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >kind of the file</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code> </code></td> <td align="left" valign="top" > <code><span id="TYPEELTstats.st_perm">st_perm</span> : <code class="type"><a href="Ftp.html#TYPEfile_perm">file_perm</a></code>;</code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >access rights</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code> </code></td> <td align="left" valign="top" > <code><span id="TYPEELTstats.st_nlink">st_nlink</span> : <code class="type">int</code>;</code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >number of links</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code> </code></td> <td align="left" valign="top" > <code><span id="TYPEELTstats.st_un">st_un</span> : <code class="type">string</code>;</code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >user name of the owner</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code> </code></td> <td align="left" valign="top" > <code><span id="TYPEELTstats.st_gn">st_gn</span> : <code class="type">string</code>;</code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >group of the file's group</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code> </code></td> <td align="left" valign="top" > <code><span id="TYPEELTstats.st_size">st_size</span> : <code class="type">int</code>;</code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >size in bytes</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code> </code></td> <td align="left" valign="top" > <code><span id="TYPEELTstats.st_mtime">st_mtime</span> : <code class="type">float</code>;</code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >last modification time</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr></table> } <div class="info "> Properties of a file.<br> </div> <pre><span id="EXCEPTIONUnrecognised_format"><span class="keyword">exception</span> Unrecognised_format</span></pre> <div class="info "> The library could not <code class="code">stat</code> correctly (the rfc of the ftp is infamous and does not specify the format of the output of the command LIST).<br> </div> <pre><span id="VALconnect"><span class="keyword">val</span> connect</span> : <code class="type">string -> int -> string -> string -> <a href="Ftp.html#TYPEftp_connection">ftp_connection</a></code></pre><div class="info "> <code class="code">connect server port login pass</code> connects to the server named <code class="code">server</code> on port <code class="code">port</code> using the given login and password.<br> </div> <pre><span id="VALdisconnect"><span class="keyword">val</span> disconnect</span> : <code class="type"><a href="Ftp.html#TYPEftp_connection">ftp_connection</a> -> unit</code></pre><div class="info "> Close a previously opened connection.<br> </div> <pre><span id="VALset_passive"><span class="keyword">val</span> set_passive</span> : <code class="type"><a href="Ftp.html#TYPEftp_connection">ftp_connection</a> -> bool -> unit</code></pre><div class="info "> Shoud the data connection be done in passive mode? (not used for now: the connection is always in passive mode).<br> </div> <pre><span id="VALget_cur_dir"><span class="keyword">val</span> get_cur_dir</span> : <code class="type"><a href="Ftp.html#TYPEftp_connection">ftp_connection</a> -> string</code></pre><div class="info "> Get the directory we're currently in on the server.<br> </div> <pre><span id="VALchdir"><span class="keyword">val</span> chdir</span> : <code class="type"><a href="Ftp.html#TYPEftp_connection">ftp_connection</a> -> string -> unit</code></pre><div class="info "> Change the current directory.<br> </div> <pre><span id="VALchdir_up"><span class="keyword">val</span> chdir_up</span> : <code class="type"><a href="Ftp.html#TYPEftp_connection">ftp_connection</a> -> unit</code></pre><div class="info "> Change the current directory to the surrounding one.<br> </div> <pre><span id="VALlist_files"><span class="keyword">val</span> list_files</span> : <code class="type"><a href="Ftp.html#TYPEftp_connection">ftp_connection</a> -> string -> string list</code></pre><div class="info "> List all the files contained in a directory.<br> </div> <pre><span id="VALget_file_size"><span class="keyword">val</span> get_file_size</span> : <code class="type"><a href="Ftp.html#TYPEftp_connection">ftp_connection</a> -> string -> int</code></pre><div class="info "> Get the size of a file (in bytes).<br> </div> <pre><span id="VALls"><span class="keyword">val</span> ls</span> : <code class="type"><a href="Ftp.html#TYPEftp_connection">ftp_connection</a> -> string -> (string * <a href="Ftp.html#TYPEstats">stats</a>) list</code></pre><div class="info "> List all the files contained in a directory, specifying its properties. WARNING: it does not always work yet (in fact it has only been tested with proftpd).<br> </div> <pre><span id="VALstat"><span class="keyword">val</span> stat</span> : <code class="type"><a href="Ftp.html#TYPEftp_connection">ftp_connection</a> -> string -> <a href="Ftp.html#TYPEstats">stats</a></code></pre><div class="info "> Get the properties of a file. If you only want its size, you should use <code class="code">get_size</code> which is supposed to work better.<br> </div> <pre><span id="VALget_file"><span class="keyword">val</span> get_file</span> : <code class="type"><a href="Ftp.html#TYPEftp_connection">ftp_connection</a> -> string -> string -> unit</code></pre><div class="info "> <code class="code">get_file fc src dst</code> downloads the file <code class="code">src</code> and stores it in <code class="code">dst</code>. Warning: if the file already exists it is replaced.<br> </div> <pre><span id="VALresume_file"><span class="keyword">val</span> resume_file</span> : <code class="type"><a href="Ftp.html#TYPEftp_connection">ftp_connection</a> -> string -> string -> int -> unit</code></pre><div class="info "> <code class="code">resume_file fc src dst ofs</code> downloads the file <code class="code">src</code> starting at offset <code class="code">ofs</code> and appends it to <code class="code">dst</code>. Raises <code class="code">Not_found</code> if the file does not already exists.<br> </div> <pre><span id="VALget_file_portion"><span class="keyword">val</span> get_file_portion</span> : <code class="type"><a href="Ftp.html#TYPEftp_connection">ftp_connection</a> -> string -> int -> string -> int -> int -> int</code></pre><div class="info "> <code class="code">get_file_portion fc src file_ofs buf ofs len</code> downloads <code class="code">len</code> octets of file <code class="code">src</code> starting at position <code class="code">file_ofs</code> and stores it in <code class="code">buf</code> starting at position <code class="code">ofs</code>. Returns the number of bytes actually read.<br> </div> <pre><span id="VALmv"><span class="keyword">val</span> mv</span> : <code class="type"><a href="Ftp.html#TYPEftp_connection">ftp_connection</a> -> string -> string -> unit</code></pre><div class="info "> <code class="code">mv fc src dst</code> moves the file <code class="code">src</code> to <code class="code">dst</code>.<br> </div> <pre><span id="VALrm"><span class="keyword">val</span> rm</span> : <code class="type"><a href="Ftp.html#TYPEftp_connection">ftp_connection</a> -> string -> unit</code></pre><div class="info "> Remove a file.<br> </div> <pre><span id="VALrmdir"><span class="keyword">val</span> rmdir</span> : <code class="type"><a href="Ftp.html#TYPEftp_connection">ftp_connection</a> -> string -> unit</code></pre><div class="info "> Remove a directory.<br> </div> <pre><span id="VALmkdir"><span class="keyword">val</span> mkdir</span> : <code class="type"><a href="Ftp.html#TYPEftp_connection">ftp_connection</a> -> string -> unit</code></pre><div class="info "> Create a directory.<br> </div> <pre><span id="VALnop"><span class="keyword">val</span> nop</span> : <code class="type"><a href="Ftp.html#TYPEftp_connection">ftp_connection</a> -> unit</code></pre><div class="info "> Don't do anything :)<br> </div> <pre><span class="keyword">module type</span> <a href="Ftp.FILE.html">FILE</a> = <code class="code">sig</code> <a href="Ftp.FILE.html">..</a> <code class="code">end</code></pre><div class="info"> Type of the module providing high-level functions to access files via ftp. </div> <pre><span class="keyword">module</span> <a href="Ftp.File.html">File</a>: <code class="type"><a href="Ftp.FILE.html">FILE</a></code><code class="type"> </code></pre><div class="info"> High-level functions to access files via ftp. </div> </body></html>