<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.readlink</title> </head> <body> <code class="code"><span class="keyword">let</span> readlink fln =<br> <span class="keyword">let</span> ctst = <br> compile_filter <span class="constructor">Is_link</span><br> <span class="keyword">in</span><br> <span class="keyword">let</span> <span class="keyword">rec</span> readlink_aux already_read fln = <br> <span class="keyword">let</span> newly_read = <br> prevent_recursion already_read fln<br> <span class="keyword">in</span><br> <span class="keyword">let</span> dirs = <br> all_upper_dir fln<br> <span class="keyword">in</span> <br> <span class="keyword">try</span> <br> <span class="keyword">let</span> src_link = <br> <span class="constructor">List</span>.find ctst (<span class="constructor">List</span>.rev dirs)<br> <span class="keyword">in</span><br> <span class="keyword">let</span> dst_link = <br> <span class="constructor">Unix</span>.readlink src_link <br> <span class="keyword">in</span><br> <span class="keyword">let</span> real_link = <br> <span class="keyword">if</span> is_relative dst_link <span class="keyword">then</span><br> reduce (concat (dirname src_link) dst_link)<br> <span class="keyword">else</span><br> reduce dst_link<br> <span class="keyword">in</span><br> readlink_aux newly_read (reparent src_link real_link fln)<br> <span class="keyword">with</span> <span class="constructor">Not_found</span> <span class="keywordsign">-></span><br> fln<br> <span class="keyword">in</span> <br> readlink_aux <span class="constructor">SetFilename</span>.empty (make_absolute (pwd ()) fln)</code></body></html>