<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 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"><title>FileUtil.stat</title> </head> <body> <code class="code"><span class="keyword">let</span> stat (fln: filename) =<br> <span class="keyword">try</span><br> <span class="keyword">let</span> ustat = <br> <span class="constructor">Unix</span>.<span class="constructor">LargeFile</span>.lstat fln<br> <span class="keyword">in</span><br> <span class="keyword">let</span> stat_of_kind knd = <br> {<br> kind = knd;<br> is_link = <span class="keyword">false</span>;<br> permission = permission_of_int ustat.<span class="constructor">Unix</span>.<span class="constructor">LargeFile</span>.st_perm;<br> size = <span class="constructor">B</span> ustat.<span class="constructor">Unix</span>.<span class="constructor">LargeFile</span>.st_size;<br> owner = ustat.<span class="constructor">Unix</span>.<span class="constructor">LargeFile</span>.st_uid;<br> group_owner = ustat.<span class="constructor">Unix</span>.<span class="constructor">LargeFile</span>.st_gid;<br> access_time = ustat.<span class="constructor">Unix</span>.<span class="constructor">LargeFile</span>.st_atime;<br> modification_time = ustat.<span class="constructor">Unix</span>.<span class="constructor">LargeFile</span>.st_mtime;<br> creation_time = ustat.<span class="constructor">Unix</span>.<span class="constructor">LargeFile</span>.st_ctime;<br> }<br> <span class="keyword">in</span><br> <span class="keyword">match</span> ustat.<span class="constructor">Unix</span>.<span class="constructor">LargeFile</span>.st_kind <span class="keyword">with</span><br> <span class="keywordsign">|</span> <span class="constructor">Unix</span>.<span class="constructor">S_REG</span> <span class="keywordsign">-></span> <br> stat_of_kind <span class="constructor">File</span> <br> <span class="keywordsign">|</span> <span class="constructor">Unix</span>.<span class="constructor">S_DIR</span> <span class="keywordsign">-></span> <br> stat_of_kind <span class="constructor">Dir</span> <br> <span class="keywordsign">|</span> <span class="constructor">Unix</span>.<span class="constructor">S_CHR</span> <span class="keywordsign">-></span> <br> stat_of_kind <span class="constructor">Dev_char</span> <br> <span class="keywordsign">|</span> <span class="constructor">Unix</span>.<span class="constructor">S_BLK</span> <span class="keywordsign">-></span> <br> stat_of_kind <span class="constructor">Dev_block</span><br> <span class="keywordsign">|</span> <span class="constructor">Unix</span>.<span class="constructor">S_FIFO</span> <span class="keywordsign">-></span> <br> stat_of_kind <span class="constructor">Fifo</span> <br> <span class="keywordsign">|</span> <span class="constructor">Unix</span>.<span class="constructor">S_SOCK</span> <span class="keywordsign">-></span> <br> stat_of_kind <span class="constructor">Socket</span><br> <span class="keywordsign">|</span> <span class="constructor">Unix</span>.<span class="constructor">S_LNK</span> <span class="keywordsign">-></span> <br> (<br> <span class="keyword">let</span> stat_of_kind knd =<br> {(stat_of_kind knd) <span class="keyword">with</span> is_link = <span class="keyword">true</span>}<br> <span class="keyword">in</span><br> <span class="keyword">match</span> (<span class="constructor">Unix</span>.stat fln).<span class="constructor">Unix</span>.st_kind <span class="keyword">with</span><br> <span class="keywordsign">|</span> <span class="constructor">Unix</span>.<span class="constructor">S_REG</span> <span class="keywordsign">-></span> <br> stat_of_kind <span class="constructor">File</span> <br> <span class="keywordsign">|</span> <span class="constructor">Unix</span>.<span class="constructor">S_DIR</span> <span class="keywordsign">-></span> <br> stat_of_kind <span class="constructor">Dir</span> <br> <span class="keywordsign">|</span> <span class="constructor">Unix</span>.<span class="constructor">S_CHR</span> <span class="keywordsign">-></span> <br> stat_of_kind <span class="constructor">Dev_char</span> <br> <span class="keywordsign">|</span> <span class="constructor">Unix</span>.<span class="constructor">S_BLK</span> <span class="keywordsign">-></span> <br> stat_of_kind <span class="constructor">Dev_block</span><br> <span class="keywordsign">|</span> <span class="constructor">Unix</span>.<span class="constructor">S_FIFO</span> <span class="keywordsign">-></span> <br> stat_of_kind <span class="constructor">Fifo</span> <br> <span class="keywordsign">|</span> <span class="constructor">Unix</span>.<span class="constructor">S_SOCK</span> <span class="keywordsign">-></span> <br> stat_of_kind <span class="constructor">Socket</span><br> <span class="keywordsign">|</span> <span class="constructor">Unix</span>.<span class="constructor">S_LNK</span> <span class="keywordsign">-></span> <br> failwith <br> (<span class="constructor">Printf</span>.sprintf <br> <span class="string">"Unix.stat of file '%s' return a link"</span><br> fln)<br> )<br> <span class="keyword">with</span> <span class="constructor">Unix</span>.<span class="constructor">Unix_error</span>(_) <span class="keywordsign">-></span><br> raise (<span class="constructor">FileDoesntExist</span> fln)</code></body></html>