Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > ee20b853417d05e895bb39af877e8913 > files > 34

ocaml-fileutils-devel-0.4.0-5.fc15.i686.rpm

<!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="next" href="FileUtilStr.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="FileUtil" rel="Chapter" href="FileUtil.html">
<link title="FileUtilStr" rel="Chapter" href="FileUtilStr.html">
<link title="FilePath" rel="Chapter" href="FilePath.html"><link title="Types and exceptions " rel="Section" href="#2_Typesandexceptions">
<link title="Classical permission " rel="Section" href="#2_Classicalpermission">
<link title="Size operation" rel="Section" href="#2_Sizeoperation">
<link title="Operations on files and directories" rel="Section" href="#2_Operationsonfilesanddirectories">
<title>FileUtil</title>
</head>
<body>
<div class="navbar">&nbsp;<a href="index.html">Up</a>
&nbsp;<a href="FileUtilStr.html">Next</a>
</div>
<center><h1>Module <a href="type_FileUtil.html">FileUtil</a></h1></center>
<br>
<pre><span class="keyword">module</span> FileUtil: <code class="code">sig</code> <a href="FileUtil.html">..</a> <code class="code">end</code></pre>POSIX utilities for files and directories.
<p>

    A module to provide the core POSIX utilities to manipulate files and
    directories. All function nearly match common POSIX utilities but in
    rewritten OCaml.<br>
<b>Author(s):</b> Sylvain Le Gall<br>
<hr width="100%">
<br>
<span id="2_Typesandexceptions"><h2>Types and exceptions </h2></span><br>
<pre><span id="EXCEPTIONSizeInvalid"><span class="keyword">exception</span> SizeInvalid</span></pre>
<pre><span id="EXCEPTIONFileDoesntExist"><span class="keyword">exception</span> FileDoesntExist</span> <span class="keyword">of</span> <code class="type"><a href="FilePath.html#TYPEfilename">FilePath.filename</a></code></pre>
<pre><span id="EXCEPTIONRecursiveLink"><span class="keyword">exception</span> RecursiveLink</span> <span class="keyword">of</span> <code class="type"><a href="FilePath.html#TYPEfilename">FilePath.filename</a></code></pre>
<pre><span id="EXCEPTIONRmDirNotEmpty"><span class="keyword">exception</span> RmDirNotEmpty</span> <span class="keyword">of</span> <code class="type"><a href="FilePath.html#TYPEfilename">FilePath.filename</a></code></pre>
<pre><span id="EXCEPTIONRmDirNoRecurse"><span class="keyword">exception</span> RmDirNoRecurse</span> <span class="keyword">of</span> <code class="type"><a href="FilePath.html#TYPEfilename">FilePath.filename</a></code></pre>
<pre><span id="EXCEPTIONMkdirMissingComponentPath"><span class="keyword">exception</span> MkdirMissingComponentPath</span> <span class="keyword">of</span> <code class="type"><a href="FilePath.html#TYPEfilename">FilePath.filename</a></code></pre>
<pre><span id="EXCEPTIONMkdirDirnameAlreadyUsed"><span class="keyword">exception</span> MkdirDirnameAlreadyUsed</span> <span class="keyword">of</span> <code class="type"><a href="FilePath.html#TYPEfilename">FilePath.filename</a></code></pre>
<pre><span id="EXCEPTIONCpCannotCopy"><span class="keyword">exception</span> CpCannotCopy</span> <span class="keyword">of</span> <code class="type"><a href="FilePath.html#TYPEfilename">FilePath.filename</a></code></pre>
<pre><span id="EXCEPTIONCpNoSourceFile"><span class="keyword">exception</span> CpNoSourceFile</span> <span class="keyword">of</span> <code class="type"><a href="FilePath.html#TYPEfilename">FilePath.filename</a></code></pre>
<pre><span id="EXCEPTIONCpCannotCopyFilesToFile"><span class="keyword">exception</span> CpCannotCopyFilesToFile</span> <span class="keyword">of</span> <code class="type"><a href="FilePath.html#TYPEfilename">FilePath.filename</a> list * <a href="FilePath.html#TYPEfilename">FilePath.filename</a></code></pre>
<pre><span id="EXCEPTIONCpCannotCopyDir"><span class="keyword">exception</span> CpCannotCopyDir</span> <span class="keyword">of</span> <code class="type"><a href="FilePath.html#TYPEfilename">FilePath.filename</a></code></pre>
<pre><span id="EXCEPTIONMvNoSourceFile"><span class="keyword">exception</span> MvNoSourceFile</span></pre>
<br><code><span id="TYPEaction_link"><span class="keyword">type</span> <code class="type"></code>action_link</span> = </code><table class="typetable">
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">Follow</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >We consider link as simple directory (it is dangerous)</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 class="constructor">Skip</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Just skip it</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 class="constructor">SkipInform</span> <span class="keyword">of</span> <code class="type">(<a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> unit)</code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Skip and execute an action</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 class="constructor">AskFollow</span> <span class="keyword">of</span> <code class="type">(<a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> bool)</code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Ask and wait for input, false means skip</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr></table>

<div class="info">
Policy concerning links which are directories<br>
</div>

<br><code><span id="TYPEinteractive"><span class="keyword">type</span> <code class="type"></code>interactive</span> = </code><table class="typetable">
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">Force</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Do it anyway</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 class="constructor">Ask</span> <span class="keyword">of</span> <code class="type">(<a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> bool)</code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Promp the user</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr></table>

<div class="info">
For certain command, you should need to ask the user wether
    or not he wants to act.<br>
</div>

<br><code><span id="TYPEsize"><span class="keyword">type</span> <code class="type"></code>size</span> = </code><table class="typetable">
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">TB</span> <span class="keyword">of</span> <code class="type">int64</code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Tera bytes</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 class="constructor">GB</span> <span class="keyword">of</span> <code class="type">int64</code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Giga bytes</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 class="constructor">MB</span> <span class="keyword">of</span> <code class="type">int64</code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Mega bytes</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 class="constructor">KB</span> <span class="keyword">of</span> <code class="type">int64</code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Kilo bytes</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 class="constructor">B</span> <span class="keyword">of</span> <code class="type">int64</code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Bytes</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr></table>

<div class="info">
File size<br>
</div>

<br><code><span id="TYPEkind"><span class="keyword">type</span> <code class="type"></code>kind</span> = </code><table class="typetable">
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">Dir</span></code></td>

</tr>
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">File</span></code></td>

</tr>
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">Dev_char</span></code></td>

</tr>
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">Dev_block</span></code></td>

</tr>
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">Fifo</span></code></td>

</tr>
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">Socket</span></code></td>

</tr></table>

<div class="info">
Kind of file. This set is a combination of all POSIX file, some of them
    doesn't exist at all on certain file system or OS.<br>
</div>

<br><code><span id="TYPEbase_permission"><span class="keyword">type</span> <code class="type"></code>base_permission</span> = {</code><table class="typetable">
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>sticky&nbsp;: <code class="type">bool</code>;</code></td>

</tr>
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>exec&nbsp;: <code class="type">bool</code>;</code></td>

</tr>
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>write&nbsp;: <code class="type">bool</code>;</code></td>

</tr>
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>read&nbsp;: <code class="type">bool</code>;</code></td>

</tr></table>
}

<div class="info">
Base permission. This is the permission corresponding to one user or group.<br>
</div>

<br><code><span id="TYPEpermission"><span class="keyword">type</span> <code class="type"></code>permission</span> = {</code><table class="typetable">
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>user&nbsp;: <code class="type"><a href="FileUtil.html#TYPEbase_permission">base_permission</a></code>;</code></td>

</tr>
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>group&nbsp;: <code class="type"><a href="FileUtil.html#TYPEbase_permission">base_permission</a></code>;</code></td>

</tr>
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>other&nbsp;: <code class="type"><a href="FileUtil.html#TYPEbase_permission">base_permission</a></code>;</code></td>

</tr></table>
}

<div class="info">
Full permission. All the base permissions of a file.<br>
</div>

<br><code><span id="TYPEstat"><span class="keyword">type</span> <code class="type"></code>stat</span> = {</code><table class="typetable">
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>kind&nbsp;: <code class="type"><a href="FileUtil.html#TYPEkind">kind</a></code>;</code></td>

</tr>
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>is_link&nbsp;: <code class="type">bool</code>;</code></td>

</tr>
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>permission&nbsp;: <code class="type"><a href="FileUtil.html#TYPEpermission">permission</a></code>;</code></td>

</tr>
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>size&nbsp;: <code class="type"><a href="FileUtil.html#TYPEsize">size</a></code>;</code></td>

</tr>
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>owner&nbsp;: <code class="type">int</code>;</code></td>

</tr>
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>group_owner&nbsp;: <code class="type">int</code>;</code></td>

</tr>
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>access_time&nbsp;: <code class="type">float</code>;</code></td>

</tr>
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>modification_time&nbsp;: <code class="type">float</code>;</code></td>

</tr>
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>creation_time&nbsp;: <code class="type">float</code>;</code></td>

</tr></table>
}

<div class="info">
Information about a file. This type is derived from Unix.stat<br>
</div>

<br><code><span id="TYPEtest_file"><span class="keyword">type</span> <code class="type"></code>test_file</span> = </code><table class="typetable">
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">Is_dev_block</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE is block special</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 class="constructor">Is_dev_char</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE is character special</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 class="constructor">Is_dir</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE is a 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 class="constructor">Exists</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE exists</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 class="constructor">Is_file</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE is a 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 class="constructor">Is_set_group_ID</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE is set-group-ID</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 class="constructor">Has_sticky_bit</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE has its sticky bit set</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 class="constructor">Is_link</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE is a 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 class="constructor">Is_pipe</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE is a 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 class="constructor">Is_readable</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE is readable</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 class="constructor">Is_writeable</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE is writeable</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 class="constructor">Size_not_null</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE has a size greater than zero</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 class="constructor">Size_bigger_than</span> <span class="keyword">of</span> <code class="type"><a href="FileUtil.html#TYPEsize">size</a></code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE has a size greater than given size</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 class="constructor">Size_smaller_than</span> <span class="keyword">of</span> <code class="type"><a href="FileUtil.html#TYPEsize">size</a></code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE has a size smaller than given size</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 class="constructor">Size_equal_to</span> <span class="keyword">of</span> <code class="type"><a href="FileUtil.html#TYPEsize">size</a></code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE has the same size as given size</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 class="constructor">Size_fuzzy_equal_to</span> <span class="keyword">of</span> <code class="type"><a href="FileUtil.html#TYPEsize">size</a></code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE has approximatively the same size as given size</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 class="constructor">Is_socket</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE is a socket</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 class="constructor">Has_set_user_ID</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE its set-user-ID bit is set</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 class="constructor">Is_exec</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE is executable</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 class="constructor">Is_owned_by_user_ID</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE is owned by the effective user ID</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 class="constructor">Is_owned_by_group_ID</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE is owned by the effective group ID</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 class="constructor">Is_newer_than</span> <span class="keyword">of</span> <code class="type"><a href="FilePath.html#TYPEfilename">FilePath.filename</a></code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE1 is newer (modification date) than FILE2</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 class="constructor">Is_older_than</span> <span class="keyword">of</span> <code class="type"><a href="FilePath.html#TYPEfilename">FilePath.filename</a></code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >FILE1 is older than FILE2</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 class="constructor">Is_newer_than_date</span> <span class="keyword">of</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" >FILE is newer than given date</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 class="constructor">Is_older_than_date</span> <span class="keyword">of</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" >FILE is older than given date</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 class="constructor">And</span> <span class="keyword">of</span> <code class="type"><a href="FileUtil.html#TYPEtest_file">test_file</a> * <a href="FileUtil.html#TYPEtest_file">test_file</a></code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Result of TEST1 and TEST2</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 class="constructor">Or</span> <span class="keyword">of</span> <code class="type"><a href="FileUtil.html#TYPEtest_file">test_file</a> * <a href="FileUtil.html#TYPEtest_file">test_file</a></code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Result of TEST1 or TEST2</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 class="constructor">Not</span> <span class="keyword">of</span> <code class="type"><a href="FileUtil.html#TYPEtest_file">test_file</a></code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Result of not TEST</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 class="constructor">Match</span> <span class="keyword">of</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" >Compilable match (Str or PCRE or ...)</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 class="constructor">True</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Always true</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 class="constructor">False</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Always false</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 class="constructor">Has_extension</span> <span class="keyword">of</span> <code class="type"><a href="FilePath.html#TYPEextension">FilePath.extension</a></code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Check extension</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 class="constructor">Has_no_extension</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Check absence of extension</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 class="constructor">Is_parent_dir</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Basename is the parent dir</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 class="constructor">Is_current_dir</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Basename is the current dir</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 class="constructor">Basename_is</span> <span class="keyword">of</span> <code class="type"><a href="FilePath.html#TYPEfilename">FilePath.filename</a></code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Check the basename</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 class="constructor">Dirname_is</span> <span class="keyword">of</span> <code class="type"><a href="FilePath.html#TYPEfilename">FilePath.filename</a></code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Check the dirname</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 class="constructor">Custom</span> <span class="keyword">of</span> <code class="type">(<a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> bool)</code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Custom operation on filename</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr></table>

<div class="info">
Pattern you can use to test file. If the file doesn't exist the result is
    always false.<br>
</div>

<br><code><span id="TYPEtouch_time_t"><span class="keyword">type</span> <code class="type"></code>touch_time_t</span> = </code><table class="typetable">
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">Touch_now</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Use Unix.gettimeofday</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 class="constructor">Touch_file_time</span> <span class="keyword">of</span> <code class="type"><a href="FilePath.html#TYPEfilename">FilePath.filename</a></code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Get mtime of 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 class="constructor">Touch_timestamp</span> <span class="keyword">of</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" >Use GMT timestamp</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr></table>

<div class="info">
Time for file<br>
</div>

<br>
<span id="2_Classicalpermission"><h2>Classical permission </h2></span><br>
<pre><span id="VALpermission_of_int"><span class="keyword">val</span> <a href="code_VALFileUtil.permission_of_int.html">permission_of_int</a></span> : <code class="type">int -> <a href="FileUtil.html#TYPEpermission">permission</a></code></pre><div class="info">
Translate POSIX integer permission.<br>
</div>
<pre><span id="VALint_of_permission"><span class="keyword">val</span> <a href="code_VALFileUtil.int_of_permission.html">int_of_permission</a></span> : <code class="type"><a href="FileUtil.html#TYPEpermission">permission</a> -> int</code></pre><div class="info">
Return the POSIX integer permission<br>
</div>
<br>
<span id="2_Sizeoperation"><h2>Size operation</h2></span><br>
<pre><span id="VALbyte_of_size"><span class="keyword">val</span> <a href="code_VALFileUtil.byte_of_size.html">byte_of_size</a></span> : <code class="type"><a href="FileUtil.html#TYPEsize">size</a> -> int64</code></pre><div class="info">
Convert size to bytes<br>
</div>
<pre><span id="VALsize_add"><span class="keyword">val</span> <a href="code_VALFileUtil.size_add.html">size_add</a></span> : <code class="type"><a href="FileUtil.html#TYPEsize">size</a> -> <a href="FileUtil.html#TYPEsize">size</a> -> <a href="FileUtil.html#TYPEsize">size</a></code></pre><div class="info">
Add two size<br>
</div>
<pre><span id="VALsize_compare"><span class="keyword">val</span> <a href="code_VALFileUtil.size_compare.html">size_compare</a></span> : <code class="type">?fuzzy:bool -> <a href="FileUtil.html#TYPEsize">size</a> -> <a href="FileUtil.html#TYPEsize">size</a> -> int</code></pre><div class="info">
Compare two size, using the classical compare function. If fuzzy is set to
    true, the comparison is done on the most significant size unit of both
    value.<br>
</div>
<pre><span id="VALstring_of_size"><span class="keyword">val</span> <a href="code_VALFileUtil.string_of_size.html">string_of_size</a></span> : <code class="type">?fuzzy:bool -> <a href="FileUtil.html#TYPEsize">size</a> -> string</code></pre><div class="info">
Convert a value to a string representation. If fuzzy is set to true, only
    consider the most significant unit<br>
</div>
<br>
<span id="2_Operationsonfilesanddirectories"><h2>Operations on files and directories</h2></span><br>
<pre><span id="VALstat"><span class="keyword">val</span> <a href="code_VALFileUtil.stat.html">stat</a></span> : <code class="type"><a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> <a href="FileUtil.html#TYPEstat">stat</a></code></pre><div class="info">
<code class="code">stat fln</code> Return information about the file (like Unix.stat)<br>
</div>
<pre><span id="VALtest"><span class="keyword">val</span> <a href="code_VALFileUtil.test.html">test</a></span> : <code class="type">?match_compile:(<a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> <a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> bool) -><br>       <a href="FileUtil.html#TYPEtest_file">test_file</a> -> <a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> bool</code></pre><div class="info">
Test a file<br>
</div>
<pre><span id="VALpwd"><span class="keyword">val</span> <a href="code_VALFileUtil.pwd.html">pwd</a></span> : <code class="type">unit -> <a href="FilePath.html#TYPEfilename">FilePath.filename</a></code></pre><div class="info">
Return the currend dir<br>
</div>
<pre><span id="VALreadlink"><span class="keyword">val</span> <a href="code_VALFileUtil.readlink.html">readlink</a></span> : <code class="type"><a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> SetFilename.elt</code></pre><div class="info">
Resolve to the real filename removing symlink<br>
</div>
<pre><span id="VALls"><span class="keyword">val</span> <a href="code_VALFileUtil.ls.html">ls</a></span> : <code class="type"><a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> <a href="FilePath.html#TYPEfilename">FilePath.filename</a> list</code></pre><div class="info">
List the content of a directory<br>
</div>
<pre><span id="VALfilter"><span class="keyword">val</span> <a href="code_VALFileUtil.filter.html">filter</a></span> : <code class="type"><a href="FileUtil.html#TYPEtest_file">test_file</a> -> <a href="FilePath.html#TYPEfilename">FilePath.filename</a> list -> <a href="FilePath.html#TYPEfilename">FilePath.filename</a> list</code></pre><div class="info">
Apply a filtering pattern to a filename<br>
</div>
<pre><span id="VALwhich"><span class="keyword">val</span> <a href="code_VALFileUtil.which.html">which</a></span> : <code class="type">?path:<a href="FilePath.html#TYPEfilename">FilePath.filename</a> list -> <a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> <a href="FilePath.html#TYPEfilename">FilePath.filename</a></code></pre><div class="info">
Try to find the executable in the PATH. Use environement variable
    PATH if none is provided<br>
</div>
<pre><span id="VALmkdir"><span class="keyword">val</span> <a href="code_VALFileUtil.mkdir.html">mkdir</a></span> : <code class="type">?parent:bool -> ?mode:Unix.file_perm -> <a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> unit</code></pre><div class="info">
Create the directory which name is provided. Turn parent to true
    if you also want to create every topdir of the path. Use mode to 
    provide some specific right (default 755).<br>
</div>
<pre><span id="VALtouch"><span class="keyword">val</span> <a href="code_VALFileUtil.touch.html">touch</a></span> : <code class="type">?atime:bool -><br>       ?mtime:bool -><br>       ?create:bool -> ?time:<a href="FileUtil.html#TYPEtouch_time_t">touch_time_t</a> -> <a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> unit</code></pre><div class="info">
Modify the timestamp of the given filename.<br>
</div>
<div class="param_info"><code class="code">atime</code> : modify access time, default true</div>
<div class="param_info"><code class="code">mtime</code> : modify modification time, default true</div>
<div class="param_info"><code class="code">create</code> : if file doesn't exist, create it, default true</div>
<div class="param_info"><code class="code">time</code> : what time to set, default Touch_now</div>
<pre><span id="VALfind"><span class="keyword">val</span> <a href="code_VALFileUtil.find.html">find</a></span> : <code class="type">?follow:<a href="FileUtil.html#TYPEaction_link">action_link</a> -><br>       ?match_compile:(<a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> <a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> bool) -><br>       <a href="FileUtil.html#TYPEtest_file">test_file</a> -><br>       <a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> ('a -> <a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> 'a) -> 'a -> 'a</code></pre><div class="info">
<code class="code">find ~follow:fol tst fln exec accu</code> Descend the directory tree starting 
    from the given filename and using the test provided. You cannot match
    <code class="code">current_dir</code> and <code class="code">parent_dir</code>. For every file found, the action <code class="code">exec</code> is
    done, using the <code class="code">accu</code> to start. For a simple file listing, you can use 
    <code class="code">find True "." (fun x y -&gt; x :: y) []</code><br>
</div>
<pre><span id="VALrm"><span class="keyword">val</span> <a href="code_VALFileUtil.rm.html">rm</a></span> : <code class="type">?force:<a href="FileUtil.html#TYPEinteractive">interactive</a> -><br>       ?recurse:bool -> <a href="FilePath.html#TYPEfilename">FilePath.filename</a> list -> unit</code></pre><div class="info">
Remove the filename provided. Turn recurse to true in order to 
    completely delete a directory<br>
</div>
<pre><span id="VALcp"><span class="keyword">val</span> <a href="code_VALFileUtil.cp.html">cp</a></span> : <code class="type">?follow:<a href="FileUtil.html#TYPEaction_link">action_link</a> -><br>       ?force:<a href="FileUtil.html#TYPEinteractive">interactive</a> -><br>       ?recurse:bool -> <a href="FilePath.html#TYPEfilename">FilePath.filename</a> list -> <a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> unit</code></pre><div class="info">
Copy the hierarchy of files/directory to another destination<br>
</div>
<pre><span id="VALmv"><span class="keyword">val</span> <a href="code_VALFileUtil.mv.html">mv</a></span> : <code class="type">?force:<a href="FileUtil.html#TYPEinteractive">interactive</a> -> <a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> <a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> unit</code></pre><div class="info">
Move files/directories to another destination<br>
</div>
<pre><span id="VALcmp"><span class="keyword">val</span> <a href="code_VALFileUtil.cmp.html">cmp</a></span> : <code class="type">?skip1:int -><br>       <a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> ?skip2:int -> <a href="FilePath.html#TYPEfilename">FilePath.filename</a> -> int option</code></pre><div class="info">
<code class="code">cmp skip1 fln1 skip2 fln2</code> Compare files <code class="code">fln1</code> and <code class="code">fln2</code> starting at pos
    <code class="code">skip1</code> <code class="code">skip2</code> and returning the first octect where a difference occurs.
    Returns <code class="code">Some -1</code> if one of the file is not readable or if it is not a
    file.<br>
</div>
<pre><span id="VALdu"><span class="keyword">val</span> <a href="code_VALFileUtil.du.html">du</a></span> : <code class="type"><a href="FilePath.html#TYPEfilename">FilePath.filename</a> list -><br>       <a href="FileUtil.html#TYPEsize">size</a> * (<a href="FilePath.html#TYPEfilename">FilePath.filename</a> * <a href="FileUtil.html#TYPEsize">size</a>) list</code></pre><div class="info">
<code class="code">du fln_lst</code> Return the amount of space of all the file 
    which are subdir of fln_lst. Also return details for each 
    file scanned<br>
</div>
<br>
For future release : <ul>
<li><code class="code">val pathchk: filename -&gt; boolean * string</code>, check whether file names are valid or portable</li>
<li><code class="code">val chmod: filename -&gt; permission -&gt; unit</code>, change file mode bits (only UNIX bit mask)</li>
<li><code class="code">val setfacl: filename -&gt; permission -&gt; unit</code>, set file access control lists (UNIX + extended attribute)</li>
<li><code class="code">val getfacl: filename -&gt; permission</code>, get file access control lists </li>
</ul>

   ACL related function will be handled through a plugin system to handle at runtime which 
   attribute can be read/write (i.e. Win32 ACL, NFS acl, Linux ACL -- or none).<br>
</body></html>