Lastest docs updated

travis build: 71
commit: ed06543981
auto-pushed to gh-pages
This commit is contained in:
travis-ci 2016-06-05 14:22:57 +00:00
parent 4afd200ce1
commit 31ab66579f
47 changed files with 796 additions and 801 deletions

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HPath.IO.Utils</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HPath.IO.Utils</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_HPath-IO-Utils.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/HPath-IO-Utils.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Copyright</th><td>&#169; 2016 Julian Ospald</td></tr><tr><th>License</th><td>BSD3</td></tr><tr><th>Maintainer</th><td>Julian Ospald &lt;hasufell@posteo.de&gt;</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Portability</th><td>portable</td></tr><tr><th>Safe Haskell</th><td>Safe</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">HPath.IO.Utils</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Random and general IO/monad utilities.</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:whenM">whenM</a> :: <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Control-Monad.html#t:Monad">Monad</a> m =&gt; m <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-Bool.html#t:Bool">Bool</a> -&gt; m () -&gt; m ()</li><li class="src short"><a href="#v:unlessM">unlessM</a> :: <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Control-Monad.html#t:Monad">Monad</a> m =&gt; m <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-Bool.html#t:Bool">Bool</a> -&gt; m () -&gt; m ()</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a id="v:whenM" class="def">whenM</a> :: <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Control-Monad.html#t:Monad">Monad</a> m =&gt; m <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-Bool.html#t:Bool">Bool</a> -&gt; m () -&gt; m () <a href="src/HPath-IO-Utils.html#whenM" class="link">Source</a> <a href="#v:whenM" class="selflink">#</a></p><div class="doc"><p>If the value of the first argument is True, then execute the action
provided in the second argument, otherwise do nothing.</p></div></div><div class="top"><p class="src"><a id="v:unlessM" class="def">unlessM</a> :: <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Control-Monad.html#t:Monad">Monad</a> m =&gt; m <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-Bool.html#t:Bool">Bool</a> -&gt; m () -&gt; m () <a href="src/HPath-IO-Utils.html#unlessM" class="link">Source</a> <a href="#v:unlessM" class="selflink">#</a></p><div class="doc"><p>If the value of the first argument is False, then execute the action
provided in the second argument, otherwise do nothing.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/HPath-IO-Utils.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Copyright</th><td>&#169; 2016 Julian Ospald</td></tr><tr><th>License</th><td>BSD3</td></tr><tr><th>Maintainer</th><td>Julian Ospald &lt;hasufell@posteo.de&gt;</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Portability</th><td>portable</td></tr><tr><th>Safe Haskell</th><td>Safe</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">HPath.IO.Utils</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Random and general IO/monad utilities.</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:whenM">whenM</a> :: <a href="https://hackage.haskell.org/package/base-4.8.1.0/docs/Control-Monad.html#t:Monad">Monad</a> m =&gt; m <a href="https://hackage.haskell.org/package/base-4.8.1.0/docs/Data-Bool.html#t:Bool">Bool</a> -&gt; m () -&gt; m ()</li><li class="src short"><a href="#v:unlessM">unlessM</a> :: <a href="https://hackage.haskell.org/package/base-4.8.1.0/docs/Control-Monad.html#t:Monad">Monad</a> m =&gt; m <a href="https://hackage.haskell.org/package/base-4.8.1.0/docs/Data-Bool.html#t:Bool">Bool</a> -&gt; m () -&gt; m ()</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:whenM" class="def">whenM</a> :: <a href="https://hackage.haskell.org/package/base-4.8.1.0/docs/Control-Monad.html#t:Monad">Monad</a> m =&gt; m <a href="https://hackage.haskell.org/package/base-4.8.1.0/docs/Data-Bool.html#t:Bool">Bool</a> -&gt; m () -&gt; m () <a href="src/HPath-IO-Utils.html#whenM" class="link">Source</a></p><div class="doc"><p>If the value of the first argument is True, then execute the action
provided in the second argument, otherwise do nothing.</p></div></div><div class="top"><p class="src"><a name="v:unlessM" class="def">unlessM</a> :: <a href="https://hackage.haskell.org/package/base-4.8.1.0/docs/Control-Monad.html#t:Monad">Monad</a> m =&gt; m <a href="https://hackage.haskell.org/package/base-4.8.1.0/docs/Data-Bool.html#t:Bool">Bool</a> -&gt; m () -&gt; m () <a href="src/HPath-IO-Utils.html#unlessM" class="link">Source</a></p><div class="doc"><p>If the value of the first argument is False, then execute the action
provided in the second argument, otherwise do nothing.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>System.Posix.FD</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>System.Posix.FD</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_System-Posix-FD.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/System-Posix-FD.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Copyright</th><td>&#169; 2016 Julian Ospald</td></tr><tr><th>License</th><td>BSD3</td></tr><tr><th>Maintainer</th><td>Julian Ospald &lt;hasufell@posteo.de&gt;</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Portability</th><td>portable</td></tr><tr><th>Safe Haskell</th><td>Safe</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">System.Posix.FD</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Provides an alternative for <code><a href="https://hackage.haskell.org/package/unix-2.7.2.0/docs/System-Posix-IO-ByteString.html#v:openFd">openFd</a></code>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/System-Posix-FD.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Copyright</th><td>&#169; 2016 Julian Ospald</td></tr><tr><th>License</th><td>BSD3</td></tr><tr><th>Maintainer</th><td>Julian Ospald &lt;hasufell@posteo.de&gt;</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Portability</th><td>portable</td></tr><tr><th>Safe Haskell</th><td>Safe</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">System.Posix.FD</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Provides an alternative for <code><a href="https://hackage.haskell.org/package/unix-2.7.1.0/docs/System-Posix-IO-ByteString.html#v:openFd">openFd</a></code>
which gives us more control on what status flags to pass to the
low-level <code>open(2)</code> call, in contrast to the unix package.</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:openFd">openFd</a> :: <a href="https://hackage.haskell.org/package/unix-2.7.2.0/docs/System-Posix-ByteString-FilePath.html#t:RawFilePath">RawFilePath</a> -&gt; <a href="https://hackage.haskell.org/package/unix-2.7.2.0/docs/System-Posix-IO-ByteString.html#t:OpenMode">OpenMode</a> -&gt; [<a href="System-Posix-Directory-Foreign.html#t:Flags">Flags</a>] -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-Maybe.html#t:Maybe">Maybe</a> <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-Posix-Types.html#t:FileMode">FileMode</a> -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-Posix-Types.html#t:Fd">Fd</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a id="v:openFd" class="def">openFd</a> <a href="src/System-Posix-FD.html#openFd" class="link">Source</a> <a href="#v:openFd" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="https://hackage.haskell.org/package/unix-2.7.2.0/docs/System-Posix-ByteString-FilePath.html#t:RawFilePath">RawFilePath</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">-&gt; <a href="https://hackage.haskell.org/package/unix-2.7.2.0/docs/System-Posix-IO-ByteString.html#t:OpenMode">OpenMode</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">-&gt; [<a href="System-Posix-Directory-Foreign.html#t:Flags">Flags</a>]</td><td class="doc"><p>status flags of <code>open(2)</code></p></td></tr><tr><td class="src">-&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-Maybe.html#t:Maybe">Maybe</a> <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-Posix-Types.html#t:FileMode">FileMode</a></td><td class="doc"><p><code>Just x</code> =&gt; creates the file with the given modes, Nothing =&gt; the file must exist.</p></td></tr><tr><td class="src">-&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-Posix-Types.html#t:Fd">Fd</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>Open and optionally create this file. See <code><a href="https://hackage.haskell.org/package/unix-2.7.2.0/docs/System-Posix.html#v:Files">Files</a></code>
low-level <code>open(2)</code> call, in contrast to the unix package.</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:openFd">openFd</a> :: <a href="https://hackage.haskell.org/package/unix-2.7.1.0/docs/System-Posix-ByteString-FilePath.html#t:RawFilePath">RawFilePath</a> -&gt; <a href="https://hackage.haskell.org/package/unix-2.7.1.0/docs/System-Posix-IO-ByteString.html#t:OpenMode">OpenMode</a> -&gt; [<a href="System-Posix-Directory-Foreign.html#t:Flags">Flags</a>] -&gt; <a href="https://hackage.haskell.org/package/base-4.8.1.0/docs/Data-Maybe.html#t:Maybe">Maybe</a> <a href="https://hackage.haskell.org/package/base-4.8.1.0/docs/System-Posix-Types.html#t:FileMode">FileMode</a> -&gt; <a href="https://hackage.haskell.org/package/base-4.8.1.0/docs/System-IO.html#t:IO">IO</a> <a href="https://hackage.haskell.org/package/base-4.8.1.0/docs/System-Posix-Types.html#t:Fd">Fd</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:openFd" class="def">openFd</a> <a href="src/System-Posix-FD.html#openFd" class="link">Source</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="https://hackage.haskell.org/package/unix-2.7.1.0/docs/System-Posix-ByteString-FilePath.html#t:RawFilePath">RawFilePath</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">-&gt; <a href="https://hackage.haskell.org/package/unix-2.7.1.0/docs/System-Posix-IO-ByteString.html#t:OpenMode">OpenMode</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">-&gt; [<a href="System-Posix-Directory-Foreign.html#t:Flags">Flags</a>]</td><td class="doc"><p>status flags of <code>open(2)</code></p></td></tr><tr><td class="src">-&gt; <a href="https://hackage.haskell.org/package/base-4.8.1.0/docs/Data-Maybe.html#t:Maybe">Maybe</a> <a href="https://hackage.haskell.org/package/base-4.8.1.0/docs/System-Posix-Types.html#t:FileMode">FileMode</a></td><td class="doc"><p><code>Just x</code> =&gt; creates the file with the given modes, Nothing =&gt; the file must exist.</p></td></tr><tr><td class="src">-&gt; <a href="https://hackage.haskell.org/package/base-4.8.1.0/docs/System-IO.html#t:IO">IO</a> <a href="https://hackage.haskell.org/package/base-4.8.1.0/docs/System-Posix-Types.html#t:Fd">Fd</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>Open and optionally create this file. See <code><a href="https://hackage.haskell.org/package/unix-2.7.1.0/docs/System-Posix.html#v:Files">Files</a></code>
for information on how to use the <code>FileMode</code> type.</p><p>Note that passing <code>Just x</code> as the 4th argument triggers the
<code><a href="System-Posix-Directory-Foreign.html#v:oCreat">oCreat</a></code> status flag, which must be set when you pass in <code><a href="System-Posix-Directory-Foreign.html#v:oExcl">oExcl</a></code>
to the status flags. Also see the manpage for <code>open(2)</code>.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
to the status flags. Also see the manpage for <code>open(2)</code>.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - &lt;)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - &lt;)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - &lt;</p><table><tr><td class="src">&lt;.&gt;</td><td class="module"><a href="System-Posix-FilePath.html#v:-60-.-62-">System.Posix.FilePath</a></td></tr><tr><td class="src">&lt;/&gt;</td><td>&nbsp;</td></tr><tr><td class="alt">1 (Function)</td><td class="module"><a href="System-Posix-FilePath.html#v:-60--47--62-">System.Posix.FilePath</a></td></tr><tr><td class="alt">2 (Function)</td><td class="module"><a href="HPath.html#v:-60--47--62-">HPath</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - &lt;</p><table><tr><td class="src">&lt;.&gt;</td><td class="module"><a href="System-Posix-FilePath.html#v:-60-.-62-">System.Posix.FilePath</a></td></tr><tr><td class="src">&lt;/&gt;</td><td>&nbsp;</td></tr><tr><td class="alt">1 (Function)</td><td class="module"><a href="System-Posix-FilePath.html#v:-60--47--62-">System.Posix.FilePath</a></td></tr><tr><td class="alt">2 (Function)</td><td class="module"><a href="HPath.html#v:-60--47--62-">HPath</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - A)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - A)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - A</p><table><tr><td class="src">Abs</td><td class="module"><a href="HPath.html#t:Abs">HPath</a></td></tr><tr><td class="src">addExtension</td><td class="module"><a href="System-Posix-FilePath.html#v:addExtension">System.Posix.FilePath</a></td></tr><tr><td class="src">addTrailingPathSeparator</td><td class="module"><a href="System-Posix-FilePath.html#v:addTrailingPathSeparator">System.Posix.FilePath</a></td></tr><tr><td class="src">allDirectoryContents</td><td class="module"><a href="System-Posix-Directory-Traversals.html#v:allDirectoryContents">System.Posix.Directory.Traversals</a></td></tr><tr><td class="src">allDirectoryContents'</td><td class="module"><a href="System-Posix-Directory-Traversals.html#v:allDirectoryContents-39-">System.Posix.Directory.Traversals</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - A</p><table><tr><td class="src">Abs</td><td class="module"><a href="HPath.html#t:Abs">HPath</a></td></tr><tr><td class="src">addExtension</td><td class="module"><a href="System-Posix-FilePath.html#v:addExtension">System.Posix.FilePath</a></td></tr><tr><td class="src">addTrailingPathSeparator</td><td class="module"><a href="System-Posix-FilePath.html#v:addTrailingPathSeparator">System.Posix.FilePath</a></td></tr><tr><td class="src">allDirectoryContents</td><td class="module"><a href="System-Posix-Directory-Traversals.html#v:allDirectoryContents">System.Posix.Directory.Traversals</a></td></tr><tr><td class="src">allDirectoryContents'</td><td class="module"><a href="System-Posix-Directory-Traversals.html#v:allDirectoryContents-39-">System.Posix.Directory.Traversals</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - B)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - B)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - B</p><table><tr><td class="src">basename</td><td class="module"><a href="HPath.html#v:basename">HPath</a></td></tr><tr><td class="src">BlockDevice</td><td class="module"><a href="HPath-IO.html#v:BlockDevice">HPath.IO</a></td></tr><tr><td class="src">bracketeer</td><td class="module"><a href="HPath-IO-Errors.html#v:bracketeer">HPath.IO.Errors</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - B</p><table><tr><td class="src">basename</td><td class="module"><a href="HPath.html#v:basename">HPath</a></td></tr><tr><td class="src">BlockDevice</td><td class="module"><a href="HPath-IO.html#v:BlockDevice">HPath.IO</a></td></tr><tr><td class="src">bracketeer</td><td class="module"><a href="HPath-IO-Errors.html#v:bracketeer">HPath.IO.Errors</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - C)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - C)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - C</p><table><tr><td class="src">Can'tOpenDirectory</td><td class="module"><a href="HPath-IO-Errors.html#v:Can-39-tOpenDirectory">HPath.IO.Errors</a></td></tr><tr><td class="src">canonicalizePath</td><td class="module"><a href="HPath-IO.html#v:canonicalizePath">HPath.IO</a></td></tr><tr><td class="src">canOpenDirectory</td><td class="module"><a href="HPath-IO-Errors.html#v:canOpenDirectory">HPath.IO.Errors</a></td></tr><tr><td class="src">catchErrno</td><td class="module"><a href="HPath-IO-Errors.html#v:catchErrno">HPath.IO.Errors</a></td></tr><tr><td class="src">CharacterDevice</td><td class="module"><a href="HPath-IO.html#v:CharacterDevice">HPath.IO</a></td></tr><tr><td class="src">CollectFailures</td><td class="module"><a href="HPath-IO.html#v:CollectFailures">HPath.IO</a></td></tr><tr><td class="src">combine</td><td class="module"><a href="System-Posix-FilePath.html#v:combine">System.Posix.FilePath</a></td></tr><tr><td class="src">copyDirRecursive</td><td class="module"><a href="HPath-IO.html#v:copyDirRecursive">HPath.IO</a></td></tr><tr><td class="src">CopyFailed</td><td class="module"><a href="HPath-IO-Errors.html#v:CopyFailed">HPath.IO.Errors</a></td></tr><tr><td class="src">copyFile</td><td class="module"><a href="HPath-IO.html#v:copyFile">HPath.IO</a></td></tr><tr><td class="src">CopyMode</td><td class="module"><a href="HPath-IO.html#t:CopyMode">HPath.IO</a></td></tr><tr><td class="src">createDir</td><td class="module"><a href="HPath-IO.html#v:createDir">HPath.IO</a></td></tr><tr><td class="src">createRegularFile</td><td class="module"><a href="HPath-IO.html#v:createRegularFile">HPath.IO</a></td></tr><tr><td class="src">createSymlink</td><td class="module"><a href="HPath-IO.html#v:createSymlink">HPath.IO</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - C</p><table><tr><td class="src">Can'tOpenDirectory</td><td class="module"><a href="HPath-IO-Errors.html#v:Can-39-tOpenDirectory">HPath.IO.Errors</a></td></tr><tr><td class="src">canonicalizePath</td><td class="module"><a href="HPath-IO.html#v:canonicalizePath">HPath.IO</a></td></tr><tr><td class="src">canOpenDirectory</td><td class="module"><a href="HPath-IO-Errors.html#v:canOpenDirectory">HPath.IO.Errors</a></td></tr><tr><td class="src">catchErrno</td><td class="module"><a href="HPath-IO-Errors.html#v:catchErrno">HPath.IO.Errors</a></td></tr><tr><td class="src">CharacterDevice</td><td class="module"><a href="HPath-IO.html#v:CharacterDevice">HPath.IO</a></td></tr><tr><td class="src">CollectFailures</td><td class="module"><a href="HPath-IO.html#v:CollectFailures">HPath.IO</a></td></tr><tr><td class="src">combine</td><td class="module"><a href="System-Posix-FilePath.html#v:combine">System.Posix.FilePath</a></td></tr><tr><td class="src">copyDirRecursive</td><td class="module"><a href="HPath-IO.html#v:copyDirRecursive">HPath.IO</a></td></tr><tr><td class="src">CopyFailed</td><td class="module"><a href="HPath-IO-Errors.html#v:CopyFailed">HPath.IO.Errors</a></td></tr><tr><td class="src">copyFile</td><td class="module"><a href="HPath-IO.html#v:copyFile">HPath.IO</a></td></tr><tr><td class="src">CopyMode</td><td class="module"><a href="HPath-IO.html#t:CopyMode">HPath.IO</a></td></tr><tr><td class="src">createDir</td><td class="module"><a href="HPath-IO.html#v:createDir">HPath.IO</a></td></tr><tr><td class="src">createRegularFile</td><td class="module"><a href="HPath-IO.html#v:createRegularFile">HPath.IO</a></td></tr><tr><td class="src">createSymlink</td><td class="module"><a href="HPath-IO.html#v:createSymlink">HPath.IO</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - D)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - D)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - D</p><table><tr><td class="src">deleteDir</td><td class="module"><a href="HPath-IO.html#v:deleteDir">HPath.IO</a></td></tr><tr><td class="src">deleteDirRecursive</td><td class="module"><a href="HPath-IO.html#v:deleteDirRecursive">HPath.IO</a></td></tr><tr><td class="src">deleteFile</td><td class="module"><a href="HPath-IO.html#v:deleteFile">HPath.IO</a></td></tr><tr><td class="src">DestinationInSource</td><td class="module"><a href="HPath-IO-Errors.html#v:DestinationInSource">HPath.IO.Errors</a></td></tr><tr><td class="src">DirDoesExist</td><td class="module"><a href="HPath-IO-Errors.html#v:DirDoesExist">HPath.IO.Errors</a></td></tr><tr><td class="src">DirDoesNotExist</td><td class="module"><a href="HPath-IO-Errors.html#v:DirDoesNotExist">HPath.IO.Errors</a></td></tr><tr><td class="src">Directory</td><td class="module"><a href="HPath-IO.html#v:Directory">HPath.IO</a></td></tr><tr><td class="src">dirname</td><td class="module"><a href="HPath.html#v:dirname">HPath</a></td></tr><tr><td class="src">DirType</td><td>&nbsp;</td></tr><tr><td class="alt">1 (Type/Class)</td><td class="module"><a href="System-Posix-Directory-Foreign.html#t:DirType">System.Posix.Directory.Foreign</a></td></tr><tr><td class="alt">2 (Data Constructor)</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:DirType">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">doesDirectoryExist</td><td class="module"><a href="HPath-IO-Errors.html#v:doesDirectoryExist">HPath.IO.Errors</a></td></tr><tr><td class="src">doesFileExist</td><td class="module"><a href="HPath-IO-Errors.html#v:doesFileExist">HPath.IO.Errors</a></td></tr><tr><td class="src">dropExtension</td><td class="module"><a href="System-Posix-FilePath.html#v:dropExtension">System.Posix.FilePath</a></td></tr><tr><td class="src">dropExtensions</td><td class="module"><a href="System-Posix-FilePath.html#v:dropExtensions">System.Posix.FilePath</a></td></tr><tr><td class="src">dropFileName</td><td class="module"><a href="System-Posix-FilePath.html#v:dropFileName">System.Posix.FilePath</a></td></tr><tr><td class="src">dropTrailingPathSeparator</td><td class="module"><a href="System-Posix-FilePath.html#v:dropTrailingPathSeparator">System.Posix.FilePath</a></td></tr><tr><td class="src">dtBlk</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:dtBlk">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">dtChr</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:dtChr">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">dtDir</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:dtDir">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">dtFifo</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:dtFifo">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">dtLnk</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:dtLnk">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">dtReg</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:dtReg">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">dtSock</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:dtSock">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">dtUnknown</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:dtUnknown">System.Posix.Directory.Foreign</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - D</p><table><tr><td class="src">deleteDir</td><td class="module"><a href="HPath-IO.html#v:deleteDir">HPath.IO</a></td></tr><tr><td class="src">deleteDirRecursive</td><td class="module"><a href="HPath-IO.html#v:deleteDirRecursive">HPath.IO</a></td></tr><tr><td class="src">deleteFile</td><td class="module"><a href="HPath-IO.html#v:deleteFile">HPath.IO</a></td></tr><tr><td class="src">DestinationInSource</td><td class="module"><a href="HPath-IO-Errors.html#v:DestinationInSource">HPath.IO.Errors</a></td></tr><tr><td class="src">DirDoesExist</td><td class="module"><a href="HPath-IO-Errors.html#v:DirDoesExist">HPath.IO.Errors</a></td></tr><tr><td class="src">DirDoesNotExist</td><td class="module"><a href="HPath-IO-Errors.html#v:DirDoesNotExist">HPath.IO.Errors</a></td></tr><tr><td class="src">Directory</td><td class="module"><a href="HPath-IO.html#v:Directory">HPath.IO</a></td></tr><tr><td class="src">dirname</td><td class="module"><a href="HPath.html#v:dirname">HPath</a></td></tr><tr><td class="src">DirType</td><td>&nbsp;</td></tr><tr><td class="alt">1 (Type/Class)</td><td class="module"><a href="System-Posix-Directory-Foreign.html#t:DirType">System.Posix.Directory.Foreign</a></td></tr><tr><td class="alt">2 (Data Constructor)</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:DirType">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">doesDirectoryExist</td><td class="module"><a href="HPath-IO-Errors.html#v:doesDirectoryExist">HPath.IO.Errors</a></td></tr><tr><td class="src">doesFileExist</td><td class="module"><a href="HPath-IO-Errors.html#v:doesFileExist">HPath.IO.Errors</a></td></tr><tr><td class="src">dropExtension</td><td class="module"><a href="System-Posix-FilePath.html#v:dropExtension">System.Posix.FilePath</a></td></tr><tr><td class="src">dropExtensions</td><td class="module"><a href="System-Posix-FilePath.html#v:dropExtensions">System.Posix.FilePath</a></td></tr><tr><td class="src">dropFileName</td><td class="module"><a href="System-Posix-FilePath.html#v:dropFileName">System.Posix.FilePath</a></td></tr><tr><td class="src">dropTrailingPathSeparator</td><td class="module"><a href="System-Posix-FilePath.html#v:dropTrailingPathSeparator">System.Posix.FilePath</a></td></tr><tr><td class="src">dtBlk</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:dtBlk">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">dtChr</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:dtChr">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">dtDir</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:dtDir">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">dtFifo</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:dtFifo">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">dtLnk</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:dtLnk">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">dtReg</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:dtReg">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">dtSock</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:dtSock">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">dtUnknown</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:dtUnknown">System.Posix.Directory.Foreign</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - E)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - E)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - E</p><table><tr><td class="src">easyCopy</td><td class="module"><a href="HPath-IO.html#v:easyCopy">HPath.IO</a></td></tr><tr><td class="src">easyDelete</td><td class="module"><a href="HPath-IO.html#v:easyDelete">HPath.IO</a></td></tr><tr><td class="src">equalFilePath</td><td class="module"><a href="System-Posix-FilePath.html#v:equalFilePath">System.Posix.FilePath</a></td></tr><tr><td class="src">executeFile</td><td class="module"><a href="HPath-IO.html#v:executeFile">HPath.IO</a></td></tr><tr><td class="src">extSeparator</td><td class="module"><a href="System-Posix-FilePath.html#v:extSeparator">System.Posix.FilePath</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - E</p><table><tr><td class="src">easyCopy</td><td class="module"><a href="HPath-IO.html#v:easyCopy">HPath.IO</a></td></tr><tr><td class="src">easyDelete</td><td class="module"><a href="HPath-IO.html#v:easyDelete">HPath.IO</a></td></tr><tr><td class="src">equalFilePath</td><td class="module"><a href="System-Posix-FilePath.html#v:equalFilePath">System.Posix.FilePath</a></td></tr><tr><td class="src">executeFile</td><td class="module"><a href="HPath-IO.html#v:executeFile">HPath.IO</a></td></tr><tr><td class="src">extSeparator</td><td class="module"><a href="System-Posix-FilePath.html#v:extSeparator">System.Posix.FilePath</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - F)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - F)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - F</p><table><tr><td class="src">FailEarly</td><td class="module"><a href="HPath-IO.html#v:FailEarly">HPath.IO</a></td></tr><tr><td class="src">fdOpendir</td><td class="module"><a href="System-Posix-Directory-Traversals.html#v:fdOpendir">System.Posix.Directory.Traversals</a></td></tr><tr><td class="src">FileDoesExist</td><td class="module"><a href="HPath-IO-Errors.html#v:FileDoesExist">HPath.IO.Errors</a></td></tr><tr><td class="src">FileDoesNotExist</td><td class="module"><a href="HPath-IO-Errors.html#v:FileDoesNotExist">HPath.IO.Errors</a></td></tr><tr><td class="src">FileType</td><td class="module"><a href="HPath-IO.html#t:FileType">HPath.IO</a></td></tr><tr><td class="src">Flags</td><td>&nbsp;</td></tr><tr><td class="alt">1 (Type/Class)</td><td class="module"><a href="System-Posix-Directory-Foreign.html#t:Flags">System.Posix.Directory.Foreign</a></td></tr><tr><td class="alt">2 (Data Constructor)</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:Flags">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">Fn</td><td class="module"><a href="HPath.html#t:Fn">HPath</a></td></tr><tr><td class="src">fromAbs</td><td class="module"><a href="HPath.html#v:fromAbs">HPath</a></td></tr><tr><td class="src">fromRel</td><td class="module"><a href="HPath.html#v:fromRel">HPath</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - F</p><table><tr><td class="src">FailEarly</td><td class="module"><a href="HPath-IO.html#v:FailEarly">HPath.IO</a></td></tr><tr><td class="src">fdOpendir</td><td class="module"><a href="System-Posix-Directory-Traversals.html#v:fdOpendir">System.Posix.Directory.Traversals</a></td></tr><tr><td class="src">FileDoesExist</td><td class="module"><a href="HPath-IO-Errors.html#v:FileDoesExist">HPath.IO.Errors</a></td></tr><tr><td class="src">FileDoesNotExist</td><td class="module"><a href="HPath-IO-Errors.html#v:FileDoesNotExist">HPath.IO.Errors</a></td></tr><tr><td class="src">FileType</td><td class="module"><a href="HPath-IO.html#t:FileType">HPath.IO</a></td></tr><tr><td class="src">Flags</td><td>&nbsp;</td></tr><tr><td class="alt">1 (Type/Class)</td><td class="module"><a href="System-Posix-Directory-Foreign.html#t:Flags">System.Posix.Directory.Foreign</a></td></tr><tr><td class="alt">2 (Data Constructor)</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:Flags">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">Fn</td><td class="module"><a href="HPath.html#t:Fn">HPath</a></td></tr><tr><td class="src">fromAbs</td><td class="module"><a href="HPath.html#v:fromAbs">HPath</a></td></tr><tr><td class="src">fromRel</td><td class="module"><a href="HPath.html#v:fromRel">HPath</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - G)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - G)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - G</p><table><tr><td class="src">getAllParents</td><td class="module"><a href="HPath.html#v:getAllParents">HPath</a></td></tr><tr><td class="src">getDirectoryContents</td><td class="module"><a href="System-Posix-Directory-Traversals.html#v:getDirectoryContents">System.Posix.Directory.Traversals</a></td></tr><tr><td class="src">getDirectoryContents'</td><td class="module"><a href="System-Posix-Directory-Traversals.html#v:getDirectoryContents-39-">System.Posix.Directory.Traversals</a></td></tr><tr><td class="src">getDirsFiles</td><td class="module"><a href="HPath-IO.html#v:getDirsFiles">HPath.IO</a></td></tr><tr><td class="src">getFileType</td><td class="module"><a href="HPath-IO.html#v:getFileType">HPath.IO</a></td></tr><tr><td class="src">getSearchPath</td><td class="module"><a href="System-Posix-FilePath.html#v:getSearchPath">System.Posix.FilePath</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - G</p><table><tr><td class="src">getAllParents</td><td class="module"><a href="HPath.html#v:getAllParents">HPath</a></td></tr><tr><td class="src">getDirectoryContents</td><td class="module"><a href="System-Posix-Directory-Traversals.html#v:getDirectoryContents">System.Posix.Directory.Traversals</a></td></tr><tr><td class="src">getDirectoryContents'</td><td class="module"><a href="System-Posix-Directory-Traversals.html#v:getDirectoryContents-39-">System.Posix.Directory.Traversals</a></td></tr><tr><td class="src">getDirsFiles</td><td class="module"><a href="HPath-IO.html#v:getDirsFiles">HPath.IO</a></td></tr><tr><td class="src">getFileType</td><td class="module"><a href="HPath-IO.html#v:getFileType">HPath.IO</a></td></tr><tr><td class="src">getSearchPath</td><td class="module"><a href="System-Posix-FilePath.html#v:getSearchPath">System.Posix.FilePath</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - H)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - H)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - H</p><table><tr><td class="src">handleIOError</td><td class="module"><a href="HPath-IO-Errors.html#v:handleIOError">HPath.IO.Errors</a></td></tr><tr><td class="src">hasExtension</td><td class="module"><a href="System-Posix-FilePath.html#v:hasExtension">System.Posix.FilePath</a></td></tr><tr><td class="src">hasParentDir</td><td class="module"><a href="System-Posix-FilePath.html#v:hasParentDir">System.Posix.FilePath</a></td></tr><tr><td class="src">hasTrailingPathSeparator</td><td class="module"><a href="System-Posix-FilePath.html#v:hasTrailingPathSeparator">System.Posix.FilePath</a></td></tr><tr><td class="src">hiddenFile</td><td class="module"><a href="System-Posix-FilePath.html#v:hiddenFile">System.Posix.FilePath</a></td></tr><tr><td class="src">HPathIOException</td><td class="module"><a href="HPath-IO-Errors.html#t:HPathIOException">HPath.IO.Errors</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - H</p><table><tr><td class="src">handleIOError</td><td class="module"><a href="HPath-IO-Errors.html#v:handleIOError">HPath.IO.Errors</a></td></tr><tr><td class="src">hasExtension</td><td class="module"><a href="System-Posix-FilePath.html#v:hasExtension">System.Posix.FilePath</a></td></tr><tr><td class="src">hasParentDir</td><td class="module"><a href="System-Posix-FilePath.html#v:hasParentDir">System.Posix.FilePath</a></td></tr><tr><td class="src">hasTrailingPathSeparator</td><td class="module"><a href="System-Posix-FilePath.html#v:hasTrailingPathSeparator">System.Posix.FilePath</a></td></tr><tr><td class="src">hiddenFile</td><td class="module"><a href="System-Posix-FilePath.html#v:hiddenFile">System.Posix.FilePath</a></td></tr><tr><td class="src">HPathIOException</td><td class="module"><a href="HPath-IO-Errors.html#t:HPathIOException">HPath.IO.Errors</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - I)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - I)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - I</p><table><tr><td class="src">InvalidOperation</td><td class="module"><a href="HPath-IO-Errors.html#v:InvalidOperation">HPath.IO.Errors</a></td></tr><tr><td class="src">isAbsolute</td><td class="module"><a href="System-Posix-FilePath.html#v:isAbsolute">System.Posix.FilePath</a></td></tr><tr><td class="src">isCan'tOpenDirectory</td><td class="module"><a href="HPath-IO-Errors.html#v:isCan-39-tOpenDirectory">HPath.IO.Errors</a></td></tr><tr><td class="src">isCopyFailed</td><td class="module"><a href="HPath-IO-Errors.html#v:isCopyFailed">HPath.IO.Errors</a></td></tr><tr><td class="src">isDestinationInSource</td><td class="module"><a href="HPath-IO-Errors.html#v:isDestinationInSource">HPath.IO.Errors</a></td></tr><tr><td class="src">isDirDoesExist</td><td class="module"><a href="HPath-IO-Errors.html#v:isDirDoesExist">HPath.IO.Errors</a></td></tr><tr><td class="src">isDirDoesNotExist</td><td class="module"><a href="HPath-IO-Errors.html#v:isDirDoesNotExist">HPath.IO.Errors</a></td></tr><tr><td class="src">isExtSeparator</td><td class="module"><a href="System-Posix-FilePath.html#v:isExtSeparator">System.Posix.FilePath</a></td></tr><tr><td class="src">isFileDoesExist</td><td class="module"><a href="HPath-IO-Errors.html#v:isFileDoesExist">HPath.IO.Errors</a></td></tr><tr><td class="src">isFileDoesNotExist</td><td class="module"><a href="HPath-IO-Errors.html#v:isFileDoesNotExist">HPath.IO.Errors</a></td></tr><tr><td class="src">isFileName</td><td class="module"><a href="System-Posix-FilePath.html#v:isFileName">System.Posix.FilePath</a></td></tr><tr><td class="src">isInvalidOperation</td><td class="module"><a href="HPath-IO-Errors.html#v:isInvalidOperation">HPath.IO.Errors</a></td></tr><tr><td class="src">isParentOf</td><td class="module"><a href="HPath.html#v:isParentOf">HPath</a></td></tr><tr><td class="src">isPathSeparator</td><td class="module"><a href="System-Posix-FilePath.html#v:isPathSeparator">System.Posix.FilePath</a></td></tr><tr><td class="src">isRecursiveFailure</td><td class="module"><a href="HPath-IO-Errors.html#v:isRecursiveFailure">HPath.IO.Errors</a></td></tr><tr><td class="src">isRelative</td><td class="module"><a href="System-Posix-FilePath.html#v:isRelative">System.Posix.FilePath</a></td></tr><tr><td class="src">isSameFile</td><td class="module"><a href="HPath-IO-Errors.html#v:isSameFile">HPath.IO.Errors</a></td></tr><tr><td class="src">isSearchPathSeparator</td><td class="module"><a href="System-Posix-FilePath.html#v:isSearchPathSeparator">System.Posix.FilePath</a></td></tr><tr><td class="src">isSupported</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:isSupported">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">isValid</td><td class="module"><a href="System-Posix-FilePath.html#v:isValid">System.Posix.FilePath</a></td></tr><tr><td class="src">isWritable</td><td class="module"><a href="HPath-IO-Errors.html#v:isWritable">HPath.IO.Errors</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - I</p><table><tr><td class="src">InvalidOperation</td><td class="module"><a href="HPath-IO-Errors.html#v:InvalidOperation">HPath.IO.Errors</a></td></tr><tr><td class="src">isAbsolute</td><td class="module"><a href="System-Posix-FilePath.html#v:isAbsolute">System.Posix.FilePath</a></td></tr><tr><td class="src">isCan'tOpenDirectory</td><td class="module"><a href="HPath-IO-Errors.html#v:isCan-39-tOpenDirectory">HPath.IO.Errors</a></td></tr><tr><td class="src">isCopyFailed</td><td class="module"><a href="HPath-IO-Errors.html#v:isCopyFailed">HPath.IO.Errors</a></td></tr><tr><td class="src">isDestinationInSource</td><td class="module"><a href="HPath-IO-Errors.html#v:isDestinationInSource">HPath.IO.Errors</a></td></tr><tr><td class="src">isDirDoesExist</td><td class="module"><a href="HPath-IO-Errors.html#v:isDirDoesExist">HPath.IO.Errors</a></td></tr><tr><td class="src">isDirDoesNotExist</td><td class="module"><a href="HPath-IO-Errors.html#v:isDirDoesNotExist">HPath.IO.Errors</a></td></tr><tr><td class="src">isExtSeparator</td><td class="module"><a href="System-Posix-FilePath.html#v:isExtSeparator">System.Posix.FilePath</a></td></tr><tr><td class="src">isFileDoesExist</td><td class="module"><a href="HPath-IO-Errors.html#v:isFileDoesExist">HPath.IO.Errors</a></td></tr><tr><td class="src">isFileDoesNotExist</td><td class="module"><a href="HPath-IO-Errors.html#v:isFileDoesNotExist">HPath.IO.Errors</a></td></tr><tr><td class="src">isFileName</td><td class="module"><a href="System-Posix-FilePath.html#v:isFileName">System.Posix.FilePath</a></td></tr><tr><td class="src">isInvalidOperation</td><td class="module"><a href="HPath-IO-Errors.html#v:isInvalidOperation">HPath.IO.Errors</a></td></tr><tr><td class="src">isParentOf</td><td class="module"><a href="HPath.html#v:isParentOf">HPath</a></td></tr><tr><td class="src">isPathSeparator</td><td class="module"><a href="System-Posix-FilePath.html#v:isPathSeparator">System.Posix.FilePath</a></td></tr><tr><td class="src">isRecursiveFailure</td><td class="module"><a href="HPath-IO-Errors.html#v:isRecursiveFailure">HPath.IO.Errors</a></td></tr><tr><td class="src">isRelative</td><td class="module"><a href="System-Posix-FilePath.html#v:isRelative">System.Posix.FilePath</a></td></tr><tr><td class="src">isSameFile</td><td class="module"><a href="HPath-IO-Errors.html#v:isSameFile">HPath.IO.Errors</a></td></tr><tr><td class="src">isSearchPathSeparator</td><td class="module"><a href="System-Posix-FilePath.html#v:isSearchPathSeparator">System.Posix.FilePath</a></td></tr><tr><td class="src">isSupported</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:isSupported">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">isValid</td><td class="module"><a href="System-Posix-FilePath.html#v:isValid">System.Posix.FilePath</a></td></tr><tr><td class="src">isWritable</td><td class="module"><a href="HPath-IO-Errors.html#v:isWritable">HPath.IO.Errors</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - J)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - J)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - J</p><table><tr><td class="src">joinPath</td><td class="module"><a href="System-Posix-FilePath.html#v:joinPath">System.Posix.FilePath</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - J</p><table><tr><td class="src">joinPath</td><td class="module"><a href="System-Posix-FilePath.html#v:joinPath">System.Posix.FilePath</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - M)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - M)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - M</p><table><tr><td class="src">makeRelative</td><td class="module"><a href="System-Posix-FilePath.html#v:makeRelative">System.Posix.FilePath</a></td></tr><tr><td class="src">makeValid</td><td class="module"><a href="System-Posix-FilePath.html#v:makeValid">System.Posix.FilePath</a></td></tr><tr><td class="src">moveFile</td><td class="module"><a href="HPath-IO.html#v:moveFile">HPath.IO</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - M</p><table><tr><td class="src">makeRelative</td><td class="module"><a href="System-Posix-FilePath.html#v:makeRelative">System.Posix.FilePath</a></td></tr><tr><td class="src">makeValid</td><td class="module"><a href="System-Posix-FilePath.html#v:makeValid">System.Posix.FilePath</a></td></tr><tr><td class="src">moveFile</td><td class="module"><a href="HPath-IO.html#v:moveFile">HPath.IO</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - N)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - N)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - N</p><table><tr><td class="src">NamedPipe</td><td class="module"><a href="HPath-IO.html#v:NamedPipe">HPath.IO</a></td></tr><tr><td class="src">newDirPerms</td><td class="module"><a href="HPath-IO.html#v:newDirPerms">HPath.IO</a></td></tr><tr><td class="src">newFilePerms</td><td class="module"><a href="HPath-IO.html#v:newFilePerms">HPath.IO</a></td></tr><tr><td class="src">normalise</td><td class="module"><a href="System-Posix-FilePath.html#v:normalise">System.Posix.FilePath</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - N</p><table><tr><td class="src">NamedPipe</td><td class="module"><a href="HPath-IO.html#v:NamedPipe">HPath.IO</a></td></tr><tr><td class="src">newDirPerms</td><td class="module"><a href="HPath-IO.html#v:newDirPerms">HPath.IO</a></td></tr><tr><td class="src">newFilePerms</td><td class="module"><a href="HPath-IO.html#v:newFilePerms">HPath.IO</a></td></tr><tr><td class="src">normalise</td><td class="module"><a href="System-Posix-FilePath.html#v:normalise">System.Posix.FilePath</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - O)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - O)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - O</p><table><tr><td class="src">oAppend</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oAppend">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oAsync</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oAsync">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oCloexec</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oCloexec">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oCreat</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oCreat">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oDirectory</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oDirectory">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oExcl</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oExcl">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oNoctty</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oNoctty">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oNofollow</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oNofollow">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oNonblock</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oNonblock">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">openFd</td><td class="module"><a href="System-Posix-FD.html#v:openFd">System.Posix.FD</a></td></tr><tr><td class="src">openFile</td><td class="module"><a href="HPath-IO.html#v:openFile">HPath.IO</a></td></tr><tr><td class="src">oRdonly</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oRdonly">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oRdwr</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oRdwr">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oSync</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oSync">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oTrunc</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oTrunc">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">Overwrite</td><td class="module"><a href="HPath-IO.html#v:Overwrite">HPath.IO</a></td></tr><tr><td class="src">oWronly</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oWronly">System.Posix.Directory.Foreign</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - O</p><table><tr><td class="src">oAppend</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oAppend">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oAsync</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oAsync">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oCloexec</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oCloexec">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oCreat</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oCreat">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oDirectory</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oDirectory">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oExcl</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oExcl">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oNoctty</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oNoctty">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oNofollow</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oNofollow">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oNonblock</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oNonblock">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">openFd</td><td class="module"><a href="System-Posix-FD.html#v:openFd">System.Posix.FD</a></td></tr><tr><td class="src">openFile</td><td class="module"><a href="HPath-IO.html#v:openFile">HPath.IO</a></td></tr><tr><td class="src">oRdonly</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oRdonly">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oRdwr</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oRdwr">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oSync</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oSync">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">oTrunc</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oTrunc">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">Overwrite</td><td class="module"><a href="HPath-IO.html#v:Overwrite">HPath.IO</a></td></tr><tr><td class="src">oWronly</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:oWronly">System.Posix.Directory.Foreign</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - P)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - P)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - P</p><table><tr><td class="src">packDirStream</td><td class="module"><a href="System-Posix-Directory-Traversals.html#v:packDirStream">System.Posix.Directory.Traversals</a></td></tr><tr><td class="src">parseAbs</td><td class="module"><a href="HPath.html#v:parseAbs">HPath</a></td></tr><tr><td class="src">parseFn</td><td class="module"><a href="HPath.html#v:parseFn">HPath</a></td></tr><tr><td class="src">parseRel</td><td class="module"><a href="HPath.html#v:parseRel">HPath</a></td></tr><tr><td class="src">Path</td><td>&nbsp;</td></tr><tr><td class="alt">1 (Type/Class)</td><td class="module"><a href="HPath.html#t:Path">HPath</a></td></tr><tr><td class="alt">2 (Data Constructor)</td><td class="module"><a href="HPath.html#v:Path">HPath</a></td></tr><tr><td class="src">PathException</td><td class="module"><a href="HPath.html#t:PathException">HPath</a></td></tr><tr><td class="src">pathMax</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:pathMax">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">PathParseException</td><td class="module"><a href="HPath.html#t:PathParseException">HPath</a></td></tr><tr><td class="src">pathSeparator</td><td class="module"><a href="System-Posix-FilePath.html#v:pathSeparator">System.Posix.FilePath</a></td></tr><tr><td class="src">peekFilePath</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">peekFilePathLen</td><td class="module">System.Posix.FilePath</td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - P</p><table><tr><td class="src">packDirStream</td><td class="module"><a href="System-Posix-Directory-Traversals.html#v:packDirStream">System.Posix.Directory.Traversals</a></td></tr><tr><td class="src">parseAbs</td><td class="module"><a href="HPath.html#v:parseAbs">HPath</a></td></tr><tr><td class="src">parseFn</td><td class="module"><a href="HPath.html#v:parseFn">HPath</a></td></tr><tr><td class="src">parseRel</td><td class="module"><a href="HPath.html#v:parseRel">HPath</a></td></tr><tr><td class="src">Path</td><td>&nbsp;</td></tr><tr><td class="alt">1 (Type/Class)</td><td class="module"><a href="HPath.html#t:Path">HPath</a></td></tr><tr><td class="alt">2 (Data Constructor)</td><td class="module"><a href="HPath.html#v:Path">HPath</a></td></tr><tr><td class="src">PathException</td><td class="module"><a href="HPath.html#t:PathException">HPath</a></td></tr><tr><td class="src">pathMax</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:pathMax">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">PathParseException</td><td class="module"><a href="HPath.html#t:PathParseException">HPath</a></td></tr><tr><td class="src">pathSeparator</td><td class="module"><a href="System-Posix-FilePath.html#v:pathSeparator">System.Posix.FilePath</a></td></tr><tr><td class="src">peekFilePath</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">peekFilePathLen</td><td class="module">System.Posix.FilePath</td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - R)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - R)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - R</p><table><tr><td class="src">RawFilePath</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">reactOnError</td><td class="module"><a href="HPath-IO-Errors.html#v:reactOnError">HPath.IO.Errors</a></td></tr><tr><td class="src">readDirEnt</td><td class="module"><a href="System-Posix-Directory-Traversals.html#v:readDirEnt">System.Posix.Directory.Traversals</a></td></tr><tr><td class="src">realpath</td><td class="module"><a href="System-Posix-Directory-Traversals.html#v:realpath">System.Posix.Directory.Traversals</a></td></tr><tr><td class="src">recreateSymlink</td><td class="module"><a href="HPath-IO.html#v:recreateSymlink">HPath.IO</a></td></tr><tr><td class="src">RecursiveFailure</td><td class="module"><a href="HPath-IO-Errors.html#v:RecursiveFailure">HPath.IO.Errors</a></td></tr><tr><td class="src">RecursiveMode</td><td class="module"><a href="HPath-IO.html#t:RecursiveMode">HPath.IO</a></td></tr><tr><td class="src">RegularFile</td><td class="module"><a href="HPath-IO.html#v:RegularFile">HPath.IO</a></td></tr><tr><td class="src">Rel</td><td class="module"><a href="HPath.html#t:Rel">HPath</a></td></tr><tr><td class="src">RelC</td><td class="module"><a href="HPath.html#t:RelC">HPath</a></td></tr><tr><td class="src">renameFile</td><td class="module"><a href="HPath-IO.html#v:renameFile">HPath.IO</a></td></tr><tr><td class="src">replaceBaseName</td><td class="module"><a href="System-Posix-FilePath.html#v:replaceBaseName">System.Posix.FilePath</a></td></tr><tr><td class="src">replaceDirectory</td><td class="module"><a href="System-Posix-FilePath.html#v:replaceDirectory">System.Posix.FilePath</a></td></tr><tr><td class="src">replaceExtension</td><td class="module"><a href="System-Posix-FilePath.html#v:replaceExtension">System.Posix.FilePath</a></td></tr><tr><td class="src">replaceFileName</td><td class="module"><a href="System-Posix-FilePath.html#v:replaceFileName">System.Posix.FilePath</a></td></tr><tr><td class="src">rethrowErrnoAs</td><td class="module"><a href="HPath-IO-Errors.html#v:rethrowErrnoAs">HPath.IO.Errors</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - R</p><table><tr><td class="src">RawFilePath</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">reactOnError</td><td class="module"><a href="HPath-IO-Errors.html#v:reactOnError">HPath.IO.Errors</a></td></tr><tr><td class="src">readDirEnt</td><td class="module"><a href="System-Posix-Directory-Traversals.html#v:readDirEnt">System.Posix.Directory.Traversals</a></td></tr><tr><td class="src">realpath</td><td class="module"><a href="System-Posix-Directory-Traversals.html#v:realpath">System.Posix.Directory.Traversals</a></td></tr><tr><td class="src">recreateSymlink</td><td class="module"><a href="HPath-IO.html#v:recreateSymlink">HPath.IO</a></td></tr><tr><td class="src">RecursiveErrorMode</td><td class="module"><a href="HPath-IO.html#t:RecursiveErrorMode">HPath.IO</a></td></tr><tr><td class="src">RecursiveFailure</td><td class="module"><a href="HPath-IO-Errors.html#v:RecursiveFailure">HPath.IO.Errors</a></td></tr><tr><td class="src">RegularFile</td><td class="module"><a href="HPath-IO.html#v:RegularFile">HPath.IO</a></td></tr><tr><td class="src">Rel</td><td class="module"><a href="HPath.html#t:Rel">HPath</a></td></tr><tr><td class="src">RelC</td><td class="module"><a href="HPath.html#t:RelC">HPath</a></td></tr><tr><td class="src">renameFile</td><td class="module"><a href="HPath-IO.html#v:renameFile">HPath.IO</a></td></tr><tr><td class="src">replaceBaseName</td><td class="module"><a href="System-Posix-FilePath.html#v:replaceBaseName">System.Posix.FilePath</a></td></tr><tr><td class="src">replaceDirectory</td><td class="module"><a href="System-Posix-FilePath.html#v:replaceDirectory">System.Posix.FilePath</a></td></tr><tr><td class="src">replaceExtension</td><td class="module"><a href="System-Posix-FilePath.html#v:replaceExtension">System.Posix.FilePath</a></td></tr><tr><td class="src">replaceFileName</td><td class="module"><a href="System-Posix-FilePath.html#v:replaceFileName">System.Posix.FilePath</a></td></tr><tr><td class="src">rethrowErrnoAs</td><td class="module"><a href="HPath-IO-Errors.html#v:rethrowErrnoAs">HPath.IO.Errors</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - S)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - S)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - S</p><table><tr><td class="src">SameFile</td><td class="module"><a href="HPath-IO-Errors.html#v:SameFile">HPath.IO.Errors</a></td></tr><tr><td class="src">sameFile</td><td class="module"><a href="HPath-IO-Errors.html#v:sameFile">HPath.IO.Errors</a></td></tr><tr><td class="src">searchPathSeparator</td><td class="module"><a href="System-Posix-FilePath.html#v:searchPathSeparator">System.Posix.FilePath</a></td></tr><tr><td class="src">Socket</td><td class="module"><a href="HPath-IO.html#v:Socket">HPath.IO</a></td></tr><tr><td class="src">splitDirectories</td><td class="module"><a href="System-Posix-FilePath.html#v:splitDirectories">System.Posix.FilePath</a></td></tr><tr><td class="src">splitExtension</td><td class="module"><a href="System-Posix-FilePath.html#v:splitExtension">System.Posix.FilePath</a></td></tr><tr><td class="src">splitExtensions</td><td class="module"><a href="System-Posix-FilePath.html#v:splitExtensions">System.Posix.FilePath</a></td></tr><tr><td class="src">splitFileName</td><td class="module"><a href="System-Posix-FilePath.html#v:splitFileName">System.Posix.FilePath</a></td></tr><tr><td class="src">splitPath</td><td class="module"><a href="System-Posix-FilePath.html#v:splitPath">System.Posix.FilePath</a></td></tr><tr><td class="src">splitSearchPath</td><td class="module"><a href="System-Posix-FilePath.html#v:splitSearchPath">System.Posix.FilePath</a></td></tr><tr><td class="src">Strict</td><td class="module"><a href="HPath-IO.html#v:Strict">HPath.IO</a></td></tr><tr><td class="src">stripDir</td><td class="module"><a href="HPath.html#v:stripDir">HPath</a></td></tr><tr><td class="src">stripExtension</td><td class="module"><a href="System-Posix-FilePath.html#v:stripExtension">System.Posix.FilePath</a></td></tr><tr><td class="src">SymbolicLink</td><td class="module"><a href="HPath-IO.html#v:SymbolicLink">HPath.IO</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - S</p><table><tr><td class="src">SameFile</td><td class="module"><a href="HPath-IO-Errors.html#v:SameFile">HPath.IO.Errors</a></td></tr><tr><td class="src">sameFile</td><td class="module"><a href="HPath-IO-Errors.html#v:sameFile">HPath.IO.Errors</a></td></tr><tr><td class="src">searchPathSeparator</td><td class="module"><a href="System-Posix-FilePath.html#v:searchPathSeparator">System.Posix.FilePath</a></td></tr><tr><td class="src">Socket</td><td class="module"><a href="HPath-IO.html#v:Socket">HPath.IO</a></td></tr><tr><td class="src">splitDirectories</td><td class="module"><a href="System-Posix-FilePath.html#v:splitDirectories">System.Posix.FilePath</a></td></tr><tr><td class="src">splitExtension</td><td class="module"><a href="System-Posix-FilePath.html#v:splitExtension">System.Posix.FilePath</a></td></tr><tr><td class="src">splitExtensions</td><td class="module"><a href="System-Posix-FilePath.html#v:splitExtensions">System.Posix.FilePath</a></td></tr><tr><td class="src">splitFileName</td><td class="module"><a href="System-Posix-FilePath.html#v:splitFileName">System.Posix.FilePath</a></td></tr><tr><td class="src">splitPath</td><td class="module"><a href="System-Posix-FilePath.html#v:splitPath">System.Posix.FilePath</a></td></tr><tr><td class="src">splitSearchPath</td><td class="module"><a href="System-Posix-FilePath.html#v:splitSearchPath">System.Posix.FilePath</a></td></tr><tr><td class="src">Strict</td><td class="module"><a href="HPath-IO.html#v:Strict">HPath.IO</a></td></tr><tr><td class="src">stripDir</td><td class="module"><a href="HPath.html#v:stripDir">HPath</a></td></tr><tr><td class="src">stripExtension</td><td class="module"><a href="System-Posix-FilePath.html#v:stripExtension">System.Posix.FilePath</a></td></tr><tr><td class="src">SymbolicLink</td><td class="module"><a href="HPath-IO.html#v:SymbolicLink">HPath.IO</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - T)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - T)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - T</p><table><tr><td class="src">takeBaseName</td><td class="module"><a href="System-Posix-FilePath.html#v:takeBaseName">System.Posix.FilePath</a></td></tr><tr><td class="src">takeDirectory</td><td class="module"><a href="System-Posix-FilePath.html#v:takeDirectory">System.Posix.FilePath</a></td></tr><tr><td class="src">takeExtension</td><td class="module"><a href="System-Posix-FilePath.html#v:takeExtension">System.Posix.FilePath</a></td></tr><tr><td class="src">takeExtensions</td><td class="module"><a href="System-Posix-FilePath.html#v:takeExtensions">System.Posix.FilePath</a></td></tr><tr><td class="src">takeFileName</td><td class="module"><a href="System-Posix-FilePath.html#v:takeFileName">System.Posix.FilePath</a></td></tr><tr><td class="src">throwCantOpenDirectory</td><td class="module"><a href="HPath-IO-Errors.html#v:throwCantOpenDirectory">HPath.IO.Errors</a></td></tr><tr><td class="src">throwDestinationInSource</td><td class="module"><a href="HPath-IO-Errors.html#v:throwDestinationInSource">HPath.IO.Errors</a></td></tr><tr><td class="src">throwDirDoesExist</td><td class="module"><a href="HPath-IO-Errors.html#v:throwDirDoesExist">HPath.IO.Errors</a></td></tr><tr><td class="src">throwDirDoesNotExist</td><td class="module"><a href="HPath-IO-Errors.html#v:throwDirDoesNotExist">HPath.IO.Errors</a></td></tr><tr><td class="src">throwErrnoPath</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">throwErrnoPathIf</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">throwErrnoPathIfMinus1</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">throwErrnoPathIfMinus1Retry</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">throwErrnoPathIfMinus1Retry_</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">throwErrnoPathIfMinus1_</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">throwErrnoPathIfNull</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">throwErrnoPathIfNullRetry</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">throwErrnoPathIfRetry</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">throwErrnoPathIf_</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">throwFileDoesExist</td><td class="module"><a href="HPath-IO-Errors.html#v:throwFileDoesExist">HPath.IO.Errors</a></td></tr><tr><td class="src">throwFileDoesNotExist</td><td class="module"><a href="HPath-IO-Errors.html#v:throwFileDoesNotExist">HPath.IO.Errors</a></td></tr><tr><td class="src">throwSameFile</td><td class="module"><a href="HPath-IO-Errors.html#v:throwSameFile">HPath.IO.Errors</a></td></tr><tr><td class="src">toFilePath</td><td class="module"><a href="HPath.html#v:toFilePath">HPath</a></td></tr><tr><td class="src">traverseDirectory</td><td class="module"><a href="System-Posix-Directory-Traversals.html#v:traverseDirectory">System.Posix.Directory.Traversals</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - T</p><table><tr><td class="src">takeBaseName</td><td class="module"><a href="System-Posix-FilePath.html#v:takeBaseName">System.Posix.FilePath</a></td></tr><tr><td class="src">takeDirectory</td><td class="module"><a href="System-Posix-FilePath.html#v:takeDirectory">System.Posix.FilePath</a></td></tr><tr><td class="src">takeExtension</td><td class="module"><a href="System-Posix-FilePath.html#v:takeExtension">System.Posix.FilePath</a></td></tr><tr><td class="src">takeExtensions</td><td class="module"><a href="System-Posix-FilePath.html#v:takeExtensions">System.Posix.FilePath</a></td></tr><tr><td class="src">takeFileName</td><td class="module"><a href="System-Posix-FilePath.html#v:takeFileName">System.Posix.FilePath</a></td></tr><tr><td class="src">throwCantOpenDirectory</td><td class="module"><a href="HPath-IO-Errors.html#v:throwCantOpenDirectory">HPath.IO.Errors</a></td></tr><tr><td class="src">throwDestinationInSource</td><td class="module"><a href="HPath-IO-Errors.html#v:throwDestinationInSource">HPath.IO.Errors</a></td></tr><tr><td class="src">throwDirDoesExist</td><td class="module"><a href="HPath-IO-Errors.html#v:throwDirDoesExist">HPath.IO.Errors</a></td></tr><tr><td class="src">throwDirDoesNotExist</td><td class="module"><a href="HPath-IO-Errors.html#v:throwDirDoesNotExist">HPath.IO.Errors</a></td></tr><tr><td class="src">throwErrnoPath</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">throwErrnoPathIf</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">throwErrnoPathIfMinus1</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">throwErrnoPathIfMinus1Retry</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">throwErrnoPathIfMinus1Retry_</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">throwErrnoPathIfMinus1_</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">throwErrnoPathIfNull</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">throwErrnoPathIfNullRetry</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">throwErrnoPathIfRetry</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">throwErrnoPathIf_</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">throwFileDoesExist</td><td class="module"><a href="HPath-IO-Errors.html#v:throwFileDoesExist">HPath.IO.Errors</a></td></tr><tr><td class="src">throwFileDoesNotExist</td><td class="module"><a href="HPath-IO-Errors.html#v:throwFileDoesNotExist">HPath.IO.Errors</a></td></tr><tr><td class="src">throwSameFile</td><td class="module"><a href="HPath-IO-Errors.html#v:throwSameFile">HPath.IO.Errors</a></td></tr><tr><td class="src">toFilePath</td><td class="module"><a href="HPath.html#v:toFilePath">HPath</a></td></tr><tr><td class="src">traverseDirectory</td><td class="module"><a href="System-Posix-Directory-Traversals.html#v:traverseDirectory">System.Posix.Directory.Traversals</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - U)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - U)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - U</p><table><tr><td class="src">unFlags</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:unFlags">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">unionFlags</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:unionFlags">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">unlessM</td><td class="module"><a href="HPath-IO-Utils.html#v:unlessM">HPath.IO.Utils</a></td></tr><tr><td class="src">unpackDirStream</td><td class="module"><a href="System-Posix-Directory-Traversals.html#v:unpackDirStream">System.Posix.Directory.Traversals</a></td></tr><tr><td class="src">UnsupportedFlag</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:UnsupportedFlag">System.Posix.Directory.Foreign</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - U</p><table><tr><td class="src">unFlags</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:unFlags">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">unionFlags</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:unionFlags">System.Posix.Directory.Foreign</a></td></tr><tr><td class="src">unlessM</td><td class="module"><a href="HPath-IO-Utils.html#v:unlessM">HPath.IO.Utils</a></td></tr><tr><td class="src">unpackDirStream</td><td class="module"><a href="System-Posix-Directory-Traversals.html#v:unpackDirStream">System.Posix.Directory.Traversals</a></td></tr><tr><td class="src">UnsupportedFlag</td><td class="module"><a href="System-Posix-Directory-Foreign.html#v:UnsupportedFlag">System.Posix.Directory.Foreign</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - W)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index - W)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - W</p><table><tr><td class="src">whenM</td><td class="module"><a href="HPath-IO-Utils.html#v:whenM">HPath.IO.Utils</a></td></tr><tr><td class="src">withAbsPath</td><td class="module"><a href="HPath.html#v:withAbsPath">HPath</a></td></tr><tr><td class="src">withFilePath</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">withFnPath</td><td class="module"><a href="HPath.html#v:withFnPath">HPath</a></td></tr><tr><td class="src">withRelPath</td><td class="module"><a href="HPath.html#v:withRelPath">HPath</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - W</p><table><tr><td class="src">whenM</td><td class="module"><a href="HPath-IO-Utils.html#v:whenM">HPath.IO.Utils</a></td></tr><tr><td class="src">withAbsPath</td><td class="module"><a href="HPath.html#v:withAbsPath">HPath</a></td></tr><tr><td class="src">withFilePath</td><td class="module">System.Posix.FilePath</td></tr><tr><td class="src">withFnPath</td><td class="module"><a href="HPath.html#v:withFnPath">HPath</a></td></tr><tr><td class="src">withRelPath</td><td class="module"><a href="HPath.html#v:withRelPath">HPath</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths (Index)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-J.html">J</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-60.html">&lt;</a></li><li><a href="doc-index-All.html">All</a></li></ul></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

View File

@ -131,11 +131,11 @@ function perform_search(full)
var text = document.getElementById("searchbox").value.toLowerCase();
if (text == last_search && !full) return;
last_search = text;
var table = document.getElementById("indexlist");
var status = document.getElementById("searchmsg");
var children = table.firstChild.childNodes;
// first figure out the first node with the prefix
var first = bisect(-1);
var last = (first == -1 ? -1 : bisect(1));
@ -166,7 +166,7 @@ function perform_search(full)
status.innerHTML = "";
}
function setclass(first, last, status)
{
for (var i = first; i <= last; i++)
@ -174,8 +174,8 @@ function perform_search(full)
children[i].className = status;
}
}
// do a binary search, treating 0 as ...
// return either -1 (no 0's found) or location of most far match
function bisect(dir)
@ -201,9 +201,9 @@ function perform_search(full)
if (checkitem(i) == 0) return i;
}
return -1;
}
}
// from an index, decide what the result is
// 0 = match, -1 is lower, 1 is higher
function checkitem(i)
@ -212,8 +212,8 @@ function perform_search(full)
if (s == text) return 0;
else return (s > text ? -1 : 1);
}
// from an index, get its string
// this abstracts over alternates
function getitem(i)
@ -229,7 +229,7 @@ function perform_search(full)
}
function setSynopsis(filename) {
if (parent.window.synopsis && parent.window.synopsis.location) {
if (parent.window.synopsis) {
if (parent.window.synopsis.location.replace) {
// In Firefox this avoids adding the change to the history.
parent.window.synopsis.location.replace(filename);
@ -250,7 +250,7 @@ function addMenuItem(html) {
function adjustForFrames() {
var bodyCls;
if (parent.location.href == window.location.href) {
// not in frames, so add Frames button
addMenuItem("<a href='#' onclick='reframe();return true;'>Frames</a>");

Binary file not shown.

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body id="mini"><div id="module-list"><p class="caption">Modules</p><ul><li class="module"><a href="HPath.html" target="main">HPath</a></li><li class="module"><a href="HPath-IO.html" target="main">HPath.IO</a></li><li class="module"><a href="HPath-IO-Errors.html" target="main">HPath.IO.Errors</a></li><li class="module"><a href="HPath-IO-Utils.html" target="main">HPath.IO.Utils</a></li><li class="module"><a href="System-Posix-Directory-Foreign.html" target="main">System.Posix.Directory.Foreign</a></li><li class="module"><a href="System-Posix-Directory-Traversals.html" target="main">System.Posix.Directory.Traversals</a></li><li class="module"><a href="System-Posix-FD.html" target="main">System.Posix.FD</a></li><li class="module"><a href="System-Posix-FilePath.html" target="main">System.Posix.FilePath</a></li></ul></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hpath-0.7.5: Support for well-typed paths</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="description"><h1>hpath-0.7.5: Support for well-typed paths</h1><div class="doc"><p>Support for well-typed paths, utilizing ByteString under the hood.</p></div></div><div id="module-list"><p class="caption">Modules</p><ul><li><span class="module"><span id="control.n.1" class="collapser" onclick="toggleSection('n.1')">&nbsp;</span><a href="HPath.html">HPath</a></span><ul id="section.n.1" class="show"><li><span class="module"><span id="control.n.1.1" class="collapser" onclick="toggleSection('n.1.1')">&nbsp;</span><a href="HPath-IO.html">HPath.IO</a></span><ul id="section.n.1.1" class="show"><li><span class="module"><a href="HPath-IO-Errors.html">HPath.IO.Errors</a></span></li><li><span class="module"><a href="HPath-IO-Utils.html">HPath.IO.Utils</a></span></li></ul></li></ul></li><li><span id="control.n.2" class="module collapser" onclick="toggleSection('n.2')">System</span><ul id="section.n.2" class="show"><li><span id="control.n.2.1" class="module collapser" onclick="toggleSection('n.2.1')">Posix</span><ul id="section.n.2.1" class="show"><li><span id="control.n.2.1.1" class="module collapser" onclick="toggleSection('n.2.1.1')">Directory</span><ul id="section.n.2.1.1" class="show"><li><span class="module"><a href="System-Posix-Directory-Foreign.html">System.Posix.Directory.Foreign</a></span></li><li><span class="module"><a href="System-Posix-Directory-Traversals.html">System.Posix.Directory.Traversals</a></span></li></ul></li><li><span class="module"><a href="System-Posix-FD.html">System.Posix.FD</a></span></li><li><span class="module"><a href="System-Posix-FilePath.html">System.Posix.FilePath</a></span></li></ul></li></ul></li></ul></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hpath-0.7.5: Support for well-typed paths</p></div><div id="content"><div id="description"><h1>hpath-0.7.5: Support for well-typed paths</h1><div class="doc"><p>Support for well-typed paths, utilizing ByteString under the hood.</p></div></div><div id="module-list"><p class="caption">Modules</p><ul><li><span class="module"><span id="control.n.1" class="collapser" onclick="toggleSection('n.1')">&nbsp;</span><a href="HPath.html">HPath</a></span><ul id="section.n.1" class="show"><li><span class="module"><span id="control.n.1.1" class="collapser" onclick="toggleSection('n.1.1')">&nbsp;</span><a href="HPath-IO.html">HPath.IO</a></span><ul id="section.n.1.1" class="show"><li><span class="module"><a href="HPath-IO-Errors.html">HPath.IO.Errors</a></span></li><li><span class="module"><a href="HPath-IO-Utils.html">HPath.IO.Utils</a></span></li></ul></li></ul></li><li><span id="control.n.2" class="module collapser" onclick="toggleSection('n.2')">System</span><ul id="section.n.2" class="show"><li><span id="control.n.2.1" class="module collapser" onclick="toggleSection('n.2.1')">Posix</span><ul id="section.n.2.1" class="show"><li><span id="control.n.2.1.1" class="module collapser" onclick="toggleSection('n.2.1.1')">Directory</span><ul id="section.n.2.1.1" class="show"><li><span class="module"><a href="System-Posix-Directory-Foreign.html">System.Posix.Directory.Foreign</a></span></li><li><span class="module"><a href="System-Posix-Directory-Traversals.html">System.Posix.Directory.Traversals</a></span></li></ul></li><li><span class="module"><a href="System-Posix-FD.html">System.Posix.FD</a></span></li><li><span class="module"><a href="System-Posix-FilePath.html">System.Posix.FilePath</a></span></li></ul></li></ul></li></ul></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HPath.IO.Errors</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HPath.IO.Errors</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body id="mini"><div id="module-header"><p class="caption">HPath.IO.Errors</p></div><div id="interface"><h1>Types</h1><div class="top"><p class="src"><span class="keyword">data</span> <a href="HPath-IO-Errors.html#t:HPathIOException" target="main">HPathIOException</a></p></div><h1>Exception identifiers</h1><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:isFileDoesNotExist" target="main">isFileDoesNotExist</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:isDirDoesNotExist" target="main">isDirDoesNotExist</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:isSameFile" target="main">isSameFile</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:isDestinationInSource" target="main">isDestinationInSource</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:isFileDoesExist" target="main">isFileDoesExist</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:isDirDoesExist" target="main">isDirDoesExist</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:isInvalidOperation" target="main">isInvalidOperation</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:isCan-39-tOpenDirectory" target="main">isCan'tOpenDirectory</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:isCopyFailed" target="main">isCopyFailed</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:isRecursiveFailure" target="main">isRecursiveFailure</a></p></div><h1>Path based functions</h1><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:throwFileDoesExist" target="main">throwFileDoesExist</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:throwDirDoesExist" target="main">throwDirDoesExist</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:throwFileDoesNotExist" target="main">throwFileDoesNotExist</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:throwDirDoesNotExist" target="main">throwDirDoesNotExist</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:throwSameFile" target="main">throwSameFile</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:sameFile" target="main">sameFile</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:throwDestinationInSource" target="main">throwDestinationInSource</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:doesFileExist" target="main">doesFileExist</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:doesDirectoryExist" target="main">doesDirectoryExist</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:isWritable" target="main">isWritable</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:canOpenDirectory" target="main">canOpenDirectory</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:throwCantOpenDirectory" target="main">throwCantOpenDirectory</a></p></div><h1>Error handling functions</h1><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:catchErrno" target="main">catchErrno</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:rethrowErrnoAs" target="main">rethrowErrnoAs</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:handleIOError" target="main">handleIOError</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:bracketeer" target="main">bracketeer</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Errors.html#v:reactOnError" target="main">reactOnError</a></p></div></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HPath.IO.Utils</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HPath.IO.Utils</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body id="mini"><div id="module-header"><p class="caption">HPath.IO.Utils</p></div><div id="interface"><div class="top"><p class="src"><a href="HPath-IO-Utils.html#v:whenM" target="main">whenM</a></p></div><div class="top"><p class="src"><a href="HPath-IO-Utils.html#v:unlessM" target="main">unlessM</a></p></div></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HPath.IO</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HPath.IO</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body id="mini"><div id="module-header"><p class="caption">HPath.IO</p></div><div id="interface"><h1>Types</h1><div class="top"><p class="src"><span class="keyword">data</span> <a href="HPath-IO.html#t:FileType" target="main">FileType</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="HPath-IO.html#t:RecursiveMode" target="main">RecursiveMode</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="HPath-IO.html#t:CopyMode" target="main">CopyMode</a></p></div><h1>File copying</h1><div class="top"><p class="src"><a href="HPath-IO.html#v:copyDirRecursive" target="main">copyDirRecursive</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:recreateSymlink" target="main">recreateSymlink</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:copyFile" target="main">copyFile</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:easyCopy" target="main">easyCopy</a></p></div><h1>File deletion</h1><div class="top"><p class="src"><a href="HPath-IO.html#v:deleteFile" target="main">deleteFile</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:deleteDir" target="main">deleteDir</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:deleteDirRecursive" target="main">deleteDirRecursive</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:easyDelete" target="main">easyDelete</a></p></div><h1>File opening</h1><div class="top"><p class="src"><a href="HPath-IO.html#v:openFile" target="main">openFile</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:executeFile" target="main">executeFile</a></p></div><h1>File creation</h1><div class="top"><p class="src"><a href="HPath-IO.html#v:createRegularFile" target="main">createRegularFile</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:createDir" target="main">createDir</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:createSymlink" target="main">createSymlink</a></p></div><h1>File renaming/moving</h1><div class="top"><p class="src"><a href="HPath-IO.html#v:renameFile" target="main">renameFile</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:moveFile" target="main">moveFile</a></p></div><h1>File permissions</h1><div class="top"><p class="src"><a href="HPath-IO.html#v:newFilePerms" target="main">newFilePerms</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:newDirPerms" target="main">newDirPerms</a></p></div><h1>Directory reading</h1><div class="top"><p class="src"><a href="HPath-IO.html#v:getDirsFiles" target="main">getDirsFiles</a></p></div><h1>Filetype operations</h1><div class="top"><p class="src"><a href="HPath-IO.html#v:getFileType" target="main">getFileType</a></p></div><h1>Others</h1><div class="top"><p class="src"><a href="HPath-IO.html#v:canonicalizePath" target="main">canonicalizePath</a></p></div></div></body></html>
</script></head><body id="mini"><div id="module-header"><p class="caption">HPath.IO</p></div><div id="interface"><h1>Types</h1><div class="top"><p class="src"><span class="keyword">data</span> <a href="HPath-IO.html#t:FileType" target="main">FileType</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="HPath-IO.html#t:RecursiveErrorMode" target="main">RecursiveErrorMode</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="HPath-IO.html#t:CopyMode" target="main">CopyMode</a></p></div><h1>File copying</h1><div class="top"><p class="src"><a href="HPath-IO.html#v:copyDirRecursive" target="main">copyDirRecursive</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:recreateSymlink" target="main">recreateSymlink</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:copyFile" target="main">copyFile</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:easyCopy" target="main">easyCopy</a></p></div><h1>File deletion</h1><div class="top"><p class="src"><a href="HPath-IO.html#v:deleteFile" target="main">deleteFile</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:deleteDir" target="main">deleteDir</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:deleteDirRecursive" target="main">deleteDirRecursive</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:easyDelete" target="main">easyDelete</a></p></div><h1>File opening</h1><div class="top"><p class="src"><a href="HPath-IO.html#v:openFile" target="main">openFile</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:executeFile" target="main">executeFile</a></p></div><h1>File creation</h1><div class="top"><p class="src"><a href="HPath-IO.html#v:createRegularFile" target="main">createRegularFile</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:createDir" target="main">createDir</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:createSymlink" target="main">createSymlink</a></p></div><h1>File renaming/moving</h1><div class="top"><p class="src"><a href="HPath-IO.html#v:renameFile" target="main">renameFile</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:moveFile" target="main">moveFile</a></p></div><h1>File permissions</h1><div class="top"><p class="src"><a href="HPath-IO.html#v:newFilePerms" target="main">newFilePerms</a></p></div><div class="top"><p class="src"><a href="HPath-IO.html#v:newDirPerms" target="main">newDirPerms</a></p></div><h1>Directory reading</h1><div class="top"><p class="src"><a href="HPath-IO.html#v:getDirsFiles" target="main">getDirsFiles</a></p></div><h1>Filetype operations</h1><div class="top"><p class="src"><a href="HPath-IO.html#v:getFileType" target="main">getFileType</a></p></div><h1>Others</h1><div class="top"><p class="src"><a href="HPath-IO.html#v:canonicalizePath" target="main">canonicalizePath</a></p></div></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HPath</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HPath</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body id="mini"><div id="module-header"><p class="caption">HPath</p></div><div id="interface"><h1>Types</h1><div class="top"><p class="src"><span class="keyword">data</span> <a href="HPath.html#t:Abs" target="main">Abs</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="HPath.html#t:Path" target="main">Path</a> b</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="HPath.html#t:Rel" target="main">Rel</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="HPath.html#t:Fn" target="main">Fn</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="HPath.html#t:PathParseException" target="main">PathParseException</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="HPath.html#t:PathException" target="main">PathException</a></p></div><div class="top"><p class="src"><span class="keyword">class</span> <a href="HPath.html#t:RelC" target="main">RelC</a> m</p></div><h1>PatternSynonyms/ViewPatterns</h1><h1>Path Parsing</h1><div class="top"><p class="src"><a href="HPath.html#v:parseAbs" target="main">parseAbs</a></p></div><div class="top"><p class="src"><a href="HPath.html#v:parseFn" target="main">parseFn</a></p></div><div class="top"><p class="src"><a href="HPath.html#v:parseRel" target="main">parseRel</a></p></div><h1>Path Conversion</h1><div class="top"><p class="src"><a href="HPath.html#v:fromAbs" target="main">fromAbs</a></p></div><div class="top"><p class="src"><a href="HPath.html#v:fromRel" target="main">fromRel</a></p></div><div class="top"><p class="src"><a href="HPath.html#v:toFilePath" target="main">toFilePath</a></p></div><h1>Path Operations</h1><div class="top"><p class="src"><a href="HPath.html#v:-60--47--62-" target="main">(&lt;/&gt;)</a></p></div><div class="top"><p class="src"><a href="HPath.html#v:basename" target="main">basename</a></p></div><div class="top"><p class="src"><a href="HPath.html#v:dirname" target="main">dirname</a></p></div><div class="top"><p class="src"><a href="HPath.html#v:isParentOf" target="main">isParentOf</a></p></div><div class="top"><p class="src"><a href="HPath.html#v:getAllParents" target="main">getAllParents</a></p></div><div class="top"><p class="src"><a href="HPath.html#v:stripDir" target="main">stripDir</a></p></div><h1>Path IO helpers</h1><div class="top"><p class="src"><a href="HPath.html#v:withAbsPath" target="main">withAbsPath</a></p></div><div class="top"><p class="src"><a href="HPath.html#v:withRelPath" target="main">withRelPath</a></p></div><div class="top"><p class="src"><a href="HPath.html#v:withFnPath" target="main">withFnPath</a></p></div></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>System.Posix.Directory.Foreign</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>System.Posix.Directory.Foreign</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body id="mini"><div id="module-header"><p class="caption">System.Posix.Directory.Foreign</p></div><div id="interface"><div class="top"><p class="src"><span class="keyword">data</span> <a href="System-Posix-Directory-Foreign.html#t:DirType" target="main">DirType</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="System-Posix-Directory-Foreign.html#t:Flags" target="main">Flags</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:unFlags" target="main">unFlags</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:isSupported" target="main">isSupported</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:oCloexec" target="main">oCloexec</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:dtBlk" target="main">dtBlk</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:oAppend" target="main">oAppend</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:dtChr" target="main">dtChr</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:pathMax" target="main">pathMax</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:oAsync" target="main">oAsync</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:dtDir" target="main">dtDir</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:oCreat" target="main">oCreat</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:dtFifo" target="main">dtFifo</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:unionFlags" target="main">unionFlags</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:dtLnk" target="main">dtLnk</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:oDirectory" target="main">oDirectory</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:oExcl" target="main">oExcl</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:dtReg" target="main">dtReg</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:oNoctty" target="main">oNoctty</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:dtSock" target="main">dtSock</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:oNofollow" target="main">oNofollow</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:dtUnknown" target="main">dtUnknown</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:oNonblock" target="main">oNonblock</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:oRdonly" target="main">oRdonly</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:oWronly" target="main">oWronly</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:oRdwr" target="main">oRdwr</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:oSync" target="main">oSync</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Foreign.html#v:oTrunc" target="main">oTrunc</a></p></div></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>System.Posix.Directory.Traversals</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>System.Posix.Directory.Traversals</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body id="mini"><div id="module-header"><p class="caption">System.Posix.Directory.Traversals</p></div><div id="interface"><div class="top"><p class="src"><a href="System-Posix-Directory-Traversals.html#v:getDirectoryContents" target="main">getDirectoryContents</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Traversals.html#v:getDirectoryContents-39-" target="main">getDirectoryContents'</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Traversals.html#v:allDirectoryContents" target="main">allDirectoryContents</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Traversals.html#v:allDirectoryContents-39-" target="main">allDirectoryContents'</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Traversals.html#v:traverseDirectory" target="main">traverseDirectory</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Traversals.html#v:readDirEnt" target="main">readDirEnt</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Traversals.html#v:packDirStream" target="main">packDirStream</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Traversals.html#v:unpackDirStream" target="main">unpackDirStream</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Traversals.html#v:fdOpendir" target="main">fdOpendir</a></p></div><div class="top"><p class="src"><a href="System-Posix-Directory-Traversals.html#v:realpath" target="main">realpath</a></p></div></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>System.Posix.FD</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>System.Posix.FD</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body id="mini"><div id="module-header"><p class="caption">System.Posix.FD</p></div><div id="interface"><div class="top"><p class="src"><a href="System-Posix-FD.html#v:openFd" target="main">openFd</a></p></div></div></body></html>

File diff suppressed because one or more lines are too long

View File

@ -41,9 +41,6 @@ a[href]:link { color: rgb(196,69,29); }
a[href]:visited { color: rgb(171,105,84); }
a[href]:hover { text-decoration:underline; }
a[href].def:link, a[href].def:visited { color: black; }
a[href].def:hover { color: rgb(78, 98, 114); }
/* @end */
/* @group Fonts & Sizes */
@ -146,23 +143,15 @@ ul.links li a {
background-image: url(plus.gif);
background-repeat: no-repeat;
}
p.caption.collapser,
p.caption.expander {
background-position: 0 0.4em;
}
.collapser, .expander {
padding-left: 14px;
margin-left: -14px;
cursor: pointer;
}
p.caption.collapser,
p.caption.expander {
background-position: 0 0.4em;
}
.instance.collapser, .instance.expander {
margin-left: 0px;
background-position: left center;
min-width: 9px;
min-height: 9px;
}
pre {
padding: 0.25em;
@ -183,9 +172,6 @@ pre {
.keyword { font-weight: normal; }
.def { font-weight: bold; }
@media print {
#footer { display: none; }
}
/* @end */
@ -384,16 +370,21 @@ div#style-menu-holder {
#interface h5 + div.top {
margin-top: 1em;
}
#interface .src .selflink,
#interface .src .link {
#interface p.src .link {
float: right;
color: #919191;
border-left: 1px solid #919191;
background: #f0f0f0;
padding: 0 0.5em 0.2em;
margin: 0 -0.5em 0 0;
margin: 0 -0.5em 0 0.5em;
}
#interface .src .selflink {
#interface td.src .link {
float: right;
color: #919191;
border-left: 1px solid #919191;
background: #f0f0f0;
padding: 0 0.5em 0.2em;
margin: 0 -0.5em 0 0.5em;
}
@ -433,31 +424,30 @@ div#style-menu-holder {
visibility: hidden;
}
.subs ul {
list-style: none;
display: table;
.subs dl {
margin: 0;
}
.subs ul li {
display: table-row;
}
.subs ul li dfn {
display: table-cell;
font-style: normal;
font-weight: bold;
.subs dt {
float: left;
clear: left;
display: block;
margin: 1px 0;
white-space: nowrap;
}
.subs ul li > .doc {
display: table-cell;
.subs dd {
float: right;
width: 90%;
display: block;
padding-left: 0.5em;
margin-bottom: 0.5em;
}
.subs ul li > .doc p {
.subs dd.empty {
display: none;
}
.subs dd p {
margin: 0;
}

View File

@ -18,366 +18,367 @@
<a name="line-9"></a><span class='hs-comment'>--</span>
<a name="line-10"></a><span class='hs-comment'>-- Provides error handling.</span>
<a name="line-11"></a>
<a name="line-12"></a><span class='hs-comment'>{-# LANGUAGE ScopedTypeVariables #-}</span>
<a name="line-13"></a>
<a name="line-14"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>HPath</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>Errors</span>
<a name="line-15"></a> <span class='hs-layout'>(</span>
<a name="line-16"></a> <span class='hs-comment'>-- * Types</span>
<a name="line-17"></a> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
<a name="line-18"></a>
<a name="line-19"></a> <span class='hs-comment'>-- * Exception identifiers</span>
<a name="line-20"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isFileDoesNotExist</span>
<a name="line-21"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isDirDoesNotExist</span>
<a name="line-22"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isSameFile</span>
<a name="line-23"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isDestinationInSource</span>
<a name="line-24"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isFileDoesExist</span>
<a name="line-25"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isDirDoesExist</span>
<a name="line-26"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isInvalidOperation</span>
<a name="line-27"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isCan'tOpenDirectory</span>
<a name="line-28"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isCopyFailed</span>
<a name="line-29"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isRecursiveFailure</span>
<a name="line-30"></a>
<a name="line-31"></a> <span class='hs-comment'>-- * Path based functions</span>
<a name="line-32"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>throwFileDoesExist</span>
<a name="line-33"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>throwDirDoesExist</span>
<a name="line-34"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>throwFileDoesNotExist</span>
<a name="line-35"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>throwDirDoesNotExist</span>
<a name="line-36"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>throwSameFile</span>
<a name="line-37"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>sameFile</span>
<a name="line-38"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>throwDestinationInSource</span>
<a name="line-39"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>doesFileExist</span>
<a name="line-40"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>doesDirectoryExist</span>
<a name="line-41"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isWritable</span>
<a name="line-42"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>canOpenDirectory</span>
<a name="line-43"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>throwCantOpenDirectory</span>
<a name="line-44"></a>
<a name="line-45"></a> <span class='hs-comment'>-- * Error handling functions</span>
<a name="line-46"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>catchErrno</span>
<a name="line-47"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>rethrowErrnoAs</span>
<a name="line-48"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>handleIOError</span>
<a name="line-49"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>bracketeer</span>
<a name="line-50"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>reactOnError</span>
<a name="line-51"></a> <span class='hs-layout'>)</span>
<a name="line-52"></a> <span class='hs-keyword'>where</span>
<a name="line-53"></a>
<a name="line-12"></a><span class='hs-comment'>{-# LANGUAGE DeriveDataTypeable #-}</span>
<a name="line-13"></a><span class='hs-comment'>{-# LANGUAGE ScopedTypeVariables #-}</span>
<a name="line-14"></a>
<a name="line-15"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>HPath</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>Errors</span>
<a name="line-16"></a> <span class='hs-layout'>(</span>
<a name="line-17"></a> <span class='hs-comment'>-- * Types</span>
<a name="line-18"></a> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
<a name="line-19"></a>
<a name="line-20"></a> <span class='hs-comment'>-- * Exception identifiers</span>
<a name="line-21"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isFileDoesNotExist</span>
<a name="line-22"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isDirDoesNotExist</span>
<a name="line-23"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isSameFile</span>
<a name="line-24"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isDestinationInSource</span>
<a name="line-25"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isFileDoesExist</span>
<a name="line-26"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isDirDoesExist</span>
<a name="line-27"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isInvalidOperation</span>
<a name="line-28"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isCan'tOpenDirectory</span>
<a name="line-29"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isCopyFailed</span>
<a name="line-30"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isRecursiveFailure</span>
<a name="line-31"></a>
<a name="line-32"></a> <span class='hs-comment'>-- * Path based functions</span>
<a name="line-33"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>throwFileDoesExist</span>
<a name="line-34"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>throwDirDoesExist</span>
<a name="line-35"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>throwFileDoesNotExist</span>
<a name="line-36"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>throwDirDoesNotExist</span>
<a name="line-37"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>throwSameFile</span>
<a name="line-38"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>sameFile</span>
<a name="line-39"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>throwDestinationInSource</span>
<a name="line-40"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>doesFileExist</span>
<a name="line-41"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>doesDirectoryExist</span>
<a name="line-42"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isWritable</span>
<a name="line-43"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>canOpenDirectory</span>
<a name="line-44"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>throwCantOpenDirectory</span>
<a name="line-45"></a>
<a name="line-46"></a> <span class='hs-comment'>-- * Error handling functions</span>
<a name="line-47"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>catchErrno</span>
<a name="line-48"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>rethrowErrnoAs</span>
<a name="line-49"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>handleIOError</span>
<a name="line-50"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>bracketeer</span>
<a name="line-51"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>reactOnError</span>
<a name="line-52"></a> <span class='hs-layout'>)</span>
<a name="line-53"></a> <span class='hs-keyword'>where</span>
<a name="line-54"></a>
<a name="line-55"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Applicative</span>
<a name="line-56"></a> <span class='hs-layout'>(</span>
<a name="line-57"></a> <span class='hs-layout'>(</span><span class='hs-varop'>&lt;$&gt;</span><span class='hs-layout'>)</span>
<a name="line-58"></a> <span class='hs-layout'>)</span>
<a name="line-59"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Exception</span>
<a name="line-60"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span>
<a name="line-61"></a> <span class='hs-layout'>(</span>
<a name="line-62"></a> <span class='hs-varid'>forM</span>
<a name="line-63"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>when</span>
<a name="line-64"></a> <span class='hs-layout'>)</span>
<a name="line-65"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span>
<a name="line-66"></a> <span class='hs-layout'>(</span>
<a name="line-67"></a> <span class='hs-conid'>ByteString</span>
<a name="line-68"></a> <span class='hs-layout'>)</span>
<a name="line-69"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span><span class='hs-varop'>.</span><span class='hs-conid'>UTF8</span>
<a name="line-70"></a> <span class='hs-layout'>(</span>
<a name="line-71"></a> <span class='hs-varid'>toString</span>
<a name="line-72"></a> <span class='hs-layout'>)</span>
<a name="line-73"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Typeable</span>
<a name="line-74"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>C</span><span class='hs-varop'>.</span><span class='hs-conid'>Error</span>
<a name="line-75"></a> <span class='hs-layout'>(</span>
<a name="line-76"></a> <span class='hs-varid'>getErrno</span>
<a name="line-77"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Errno</span>
<a name="line-78"></a> <span class='hs-layout'>)</span>
<a name="line-79"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>GHC</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>Exception</span>
<a name="line-80"></a> <span class='hs-layout'>(</span>
<a name="line-81"></a> <span class='hs-conid'>IOErrorType</span>
<a name="line-82"></a> <span class='hs-layout'>)</span>
<a name="line-83"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HPath</span>
<a name="line-84"></a><span class='hs-keyword'>import</span> <span class='hs-comment'>{-# SOURCE #-}</span> <span class='hs-conid'>HPath</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span>
<a name="line-85"></a> <span class='hs-layout'>(</span>
<a name="line-86"></a> <span class='hs-varid'>canonicalizePath</span>
<a name="line-87"></a> <span class='hs-layout'>)</span>
<a name="line-88"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HPath</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>Utils</span>
<a name="line-89"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>Error</span>
<a name="line-90"></a> <span class='hs-layout'>(</span>
<a name="line-91"></a> <span class='hs-varid'>catchIOError</span>
<a name="line-92"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>ioeGetErrorType</span>
<a name="line-93"></a> <span class='hs-layout'>)</span>
<a name="line-94"></a>
<a name="line-95"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Directory</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>PFD</span>
<a name="line-96"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Files</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span>
<a name="line-97"></a> <span class='hs-layout'>(</span>
<a name="line-98"></a> <span class='hs-varid'>fileAccess</span>
<a name="line-99"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>getFileStatus</span>
<a name="line-100"></a> <span class='hs-layout'>)</span>
<a name="line-101"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Files</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>PF</span>
<a name="line-102"></a>
<a name="line-55"></a>
<a name="line-56"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Applicative</span>
<a name="line-57"></a> <span class='hs-layout'>(</span>
<a name="line-58"></a> <span class='hs-layout'>(</span><span class='hs-varop'>&lt;$&gt;</span><span class='hs-layout'>)</span>
<a name="line-59"></a> <span class='hs-layout'>)</span>
<a name="line-60"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Exception</span>
<a name="line-61"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span>
<a name="line-62"></a> <span class='hs-layout'>(</span>
<a name="line-63"></a> <span class='hs-varid'>forM</span>
<a name="line-64"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>when</span>
<a name="line-65"></a> <span class='hs-layout'>)</span>
<a name="line-66"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span>
<a name="line-67"></a> <span class='hs-layout'>(</span>
<a name="line-68"></a> <span class='hs-conid'>ByteString</span>
<a name="line-69"></a> <span class='hs-layout'>)</span>
<a name="line-70"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span><span class='hs-varop'>.</span><span class='hs-conid'>UTF8</span>
<a name="line-71"></a> <span class='hs-layout'>(</span>
<a name="line-72"></a> <span class='hs-varid'>toString</span>
<a name="line-73"></a> <span class='hs-layout'>)</span>
<a name="line-74"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Typeable</span>
<a name="line-75"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>C</span><span class='hs-varop'>.</span><span class='hs-conid'>Error</span>
<a name="line-76"></a> <span class='hs-layout'>(</span>
<a name="line-77"></a> <span class='hs-varid'>getErrno</span>
<a name="line-78"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Errno</span>
<a name="line-79"></a> <span class='hs-layout'>)</span>
<a name="line-80"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>GHC</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>Exception</span>
<a name="line-81"></a> <span class='hs-layout'>(</span>
<a name="line-82"></a> <span class='hs-conid'>IOErrorType</span>
<a name="line-83"></a> <span class='hs-layout'>)</span>
<a name="line-84"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HPath</span>
<a name="line-85"></a><span class='hs-keyword'>import</span> <span class='hs-comment'>{-# SOURCE #-}</span> <span class='hs-conid'>HPath</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span>
<a name="line-86"></a> <span class='hs-layout'>(</span>
<a name="line-87"></a> <span class='hs-varid'>canonicalizePath</span>
<a name="line-88"></a> <span class='hs-layout'>)</span>
<a name="line-89"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HPath</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>Utils</span>
<a name="line-90"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>Error</span>
<a name="line-91"></a> <span class='hs-layout'>(</span>
<a name="line-92"></a> <span class='hs-varid'>catchIOError</span>
<a name="line-93"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>ioeGetErrorType</span>
<a name="line-94"></a> <span class='hs-layout'>)</span>
<a name="line-95"></a>
<a name="line-96"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Directory</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>PFD</span>
<a name="line-97"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Files</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span>
<a name="line-98"></a> <span class='hs-layout'>(</span>
<a name="line-99"></a> <span class='hs-varid'>fileAccess</span>
<a name="line-100"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>getFileStatus</span>
<a name="line-101"></a> <span class='hs-layout'>)</span>
<a name="line-102"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Files</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>PF</span>
<a name="line-103"></a>
<a name="line-104"></a><a name="HPathIOException"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HPathIOException</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>FileDoesNotExist</span> <span class='hs-conid'>ByteString</span>
<a name="line-105"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>DirDoesNotExist</span> <span class='hs-conid'>ByteString</span>
<a name="line-106"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>SameFile</span> <span class='hs-conid'>ByteString</span> <span class='hs-conid'>ByteString</span>
<a name="line-107"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>DestinationInSource</span> <span class='hs-conid'>ByteString</span> <span class='hs-conid'>ByteString</span>
<a name="line-108"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>FileDoesExist</span> <span class='hs-conid'>ByteString</span>
<a name="line-109"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>DirDoesExist</span> <span class='hs-conid'>ByteString</span>
<a name="line-110"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>InvalidOperation</span> <span class='hs-conid'>String</span>
<a name="line-111"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>Can'tOpenDirectory</span> <span class='hs-conid'>ByteString</span>
<a name="line-112"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>CopyFailed</span> <span class='hs-conid'>String</span>
<a name="line-113"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>RecursiveFailure</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>IOException</span><span class='hs-keyglyph'>]</span>
<a name="line-114"></a> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span> <span class='hs-conid'>Eq</span><span class='hs-layout'>)</span>
<a name="line-115"></a>
<a name="line-104"></a>
<a name="line-105"></a><a name="HPathIOException"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>HPathIOException</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>FileDoesNotExist</span> <span class='hs-conid'>ByteString</span>
<a name="line-106"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>DirDoesNotExist</span> <span class='hs-conid'>ByteString</span>
<a name="line-107"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>SameFile</span> <span class='hs-conid'>ByteString</span> <span class='hs-conid'>ByteString</span>
<a name="line-108"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>DestinationInSource</span> <span class='hs-conid'>ByteString</span> <span class='hs-conid'>ByteString</span>
<a name="line-109"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>FileDoesExist</span> <span class='hs-conid'>ByteString</span>
<a name="line-110"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>DirDoesExist</span> <span class='hs-conid'>ByteString</span>
<a name="line-111"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>InvalidOperation</span> <span class='hs-conid'>String</span>
<a name="line-112"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>Can'tOpenDirectory</span> <span class='hs-conid'>ByteString</span>
<a name="line-113"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>CopyFailed</span> <span class='hs-conid'>String</span>
<a name="line-114"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>RecursiveFailure</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>IOException</span><span class='hs-keyglyph'>]</span>
<a name="line-115"></a> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>,</span> <span class='hs-conid'>Eq</span><span class='hs-layout'>)</span>
<a name="line-116"></a>
<a name="line-117"></a><a name="instance%20Show%20HPathIOException"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Show</span> <span class='hs-conid'>HPathIOException</span> <span class='hs-keyword'>where</span>
<a name="line-118"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>FileDoesNotExist</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"File does not exist:"</span> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-varid'>fp</span>
<a name="line-119"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>DirDoesNotExist</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Directory does not exist: "</span>
<a name="line-120"></a> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-varid'>fp</span>
<a name="line-121"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>SameFile</span> <span class='hs-varid'>fp1</span> <span class='hs-varid'>fp2</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toString</span> <span class='hs-varid'>fp1</span>
<a name="line-122"></a> <span class='hs-varop'>++</span> <span class='hs-str'>" and "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-varid'>fp2</span>
<a name="line-123"></a> <span class='hs-varop'>++</span> <span class='hs-str'>" are the same file!"</span>
<a name="line-124"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>DestinationInSource</span> <span class='hs-varid'>fp1</span> <span class='hs-varid'>fp2</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toString</span> <span class='hs-varid'>fp1</span>
<a name="line-125"></a> <span class='hs-varop'>++</span> <span class='hs-str'>" is contained in "</span>
<a name="line-126"></a> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-varid'>fp2</span>
<a name="line-127"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>FileDoesExist</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"File does exist: "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-varid'>fp</span>
<a name="line-128"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>DirDoesExist</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Directory does exist: "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-varid'>fp</span>
<a name="line-129"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>InvalidOperation</span> <span class='hs-varid'>str</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Invalid operation: "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>str</span>
<a name="line-130"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>Can'tOpenDirectory</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Can't open directory: "</span>
<a name="line-131"></a> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-varid'>fp</span>
<a name="line-132"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>CopyFailed</span> <span class='hs-varid'>str</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Copying failed: "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>str</span>
<a name="line-133"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>RecursiveFailure</span> <span class='hs-varid'>exs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Recursive operation failed: "</span>
<a name="line-134"></a> <span class='hs-varop'>++</span> <span class='hs-varid'>show</span> <span class='hs-varid'>exs</span>
<a name="line-135"></a>
<a name="line-117"></a>
<a name="line-118"></a><a name="instance%20Show%20HPathIOException"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Show</span> <span class='hs-conid'>HPathIOException</span> <span class='hs-keyword'>where</span>
<a name="line-119"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>FileDoesNotExist</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"File does not exist:"</span> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-varid'>fp</span>
<a name="line-120"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>DirDoesNotExist</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Directory does not exist: "</span>
<a name="line-121"></a> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-varid'>fp</span>
<a name="line-122"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>SameFile</span> <span class='hs-varid'>fp1</span> <span class='hs-varid'>fp2</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toString</span> <span class='hs-varid'>fp1</span>
<a name="line-123"></a> <span class='hs-varop'>++</span> <span class='hs-str'>" and "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-varid'>fp2</span>
<a name="line-124"></a> <span class='hs-varop'>++</span> <span class='hs-str'>" are the same file!"</span>
<a name="line-125"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>DestinationInSource</span> <span class='hs-varid'>fp1</span> <span class='hs-varid'>fp2</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toString</span> <span class='hs-varid'>fp1</span>
<a name="line-126"></a> <span class='hs-varop'>++</span> <span class='hs-str'>" is contained in "</span>
<a name="line-127"></a> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-varid'>fp2</span>
<a name="line-128"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>FileDoesExist</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"File does exist: "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-varid'>fp</span>
<a name="line-129"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>DirDoesExist</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Directory does exist: "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-varid'>fp</span>
<a name="line-130"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>InvalidOperation</span> <span class='hs-varid'>str</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Invalid operation: "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>str</span>
<a name="line-131"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>Can'tOpenDirectory</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Can't open directory: "</span>
<a name="line-132"></a> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-varid'>fp</span>
<a name="line-133"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>CopyFailed</span> <span class='hs-varid'>str</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Copying failed: "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>str</span>
<a name="line-134"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>RecursiveFailure</span> <span class='hs-varid'>exs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Recursive operation failed: "</span>
<a name="line-135"></a> <span class='hs-varop'>++</span> <span class='hs-varid'>show</span> <span class='hs-varid'>exs</span>
<a name="line-136"></a>
<a name="line-137"></a><a name="toConstr"></a><span class='hs-definition'>toConstr</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span>
<a name="line-138"></a><span class='hs-definition'>toConstr</span> <span class='hs-conid'>FileDoesNotExist</span> <span class='hs-layout'>{</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"FileDoesNotExist"</span>
<a name="line-139"></a><span class='hs-definition'>toConstr</span> <span class='hs-conid'>DirDoesNotExist</span> <span class='hs-layout'>{</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"DirDoesNotExist"</span>
<a name="line-140"></a><span class='hs-definition'>toConstr</span> <span class='hs-conid'>SameFile</span> <span class='hs-layout'>{</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"SameFile"</span>
<a name="line-141"></a><span class='hs-definition'>toConstr</span> <span class='hs-conid'>DestinationInSource</span> <span class='hs-layout'>{</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"DestinationInSource"</span>
<a name="line-142"></a><span class='hs-definition'>toConstr</span> <span class='hs-conid'>FileDoesExist</span> <span class='hs-layout'>{</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"FileDoesExist"</span>
<a name="line-143"></a><span class='hs-definition'>toConstr</span> <span class='hs-conid'>DirDoesExist</span> <span class='hs-layout'>{</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"DirDoesExist"</span>
<a name="line-144"></a><span class='hs-definition'>toConstr</span> <span class='hs-conid'>InvalidOperation</span> <span class='hs-layout'>{</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"InvalidOperation"</span>
<a name="line-145"></a><span class='hs-definition'>toConstr</span> <span class='hs-conid'>Can'tOpenDirectory</span> <span class='hs-layout'>{</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Can'tOpenDirectory"</span>
<a name="line-146"></a><span class='hs-definition'>toConstr</span> <span class='hs-conid'>CopyFailed</span> <span class='hs-layout'>{</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"CopyFailed"</span>
<a name="line-147"></a><span class='hs-definition'>toConstr</span> <span class='hs-conid'>RecursiveFailure</span> <span class='hs-layout'>{</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"RecursiveFailure"</span>
<a name="line-148"></a>
<a name="line-137"></a>
<a name="line-138"></a><a name="toConstr"></a><span class='hs-definition'>toConstr</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span>
<a name="line-139"></a><span class='hs-definition'>toConstr</span> <span class='hs-conid'>FileDoesNotExist</span> <span class='hs-layout'>{</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"FileDoesNotExist"</span>
<a name="line-140"></a><span class='hs-definition'>toConstr</span> <span class='hs-conid'>DirDoesNotExist</span> <span class='hs-layout'>{</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"DirDoesNotExist"</span>
<a name="line-141"></a><span class='hs-definition'>toConstr</span> <span class='hs-conid'>SameFile</span> <span class='hs-layout'>{</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"SameFile"</span>
<a name="line-142"></a><span class='hs-definition'>toConstr</span> <span class='hs-conid'>DestinationInSource</span> <span class='hs-layout'>{</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"DestinationInSource"</span>
<a name="line-143"></a><span class='hs-definition'>toConstr</span> <span class='hs-conid'>FileDoesExist</span> <span class='hs-layout'>{</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"FileDoesExist"</span>
<a name="line-144"></a><span class='hs-definition'>toConstr</span> <span class='hs-conid'>DirDoesExist</span> <span class='hs-layout'>{</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"DirDoesExist"</span>
<a name="line-145"></a><span class='hs-definition'>toConstr</span> <span class='hs-conid'>InvalidOperation</span> <span class='hs-layout'>{</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"InvalidOperation"</span>
<a name="line-146"></a><span class='hs-definition'>toConstr</span> <span class='hs-conid'>Can'tOpenDirectory</span> <span class='hs-layout'>{</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Can'tOpenDirectory"</span>
<a name="line-147"></a><span class='hs-definition'>toConstr</span> <span class='hs-conid'>CopyFailed</span> <span class='hs-layout'>{</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"CopyFailed"</span>
<a name="line-148"></a><span class='hs-definition'>toConstr</span> <span class='hs-conid'>RecursiveFailure</span> <span class='hs-layout'>{</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"RecursiveFailure"</span>
<a name="line-149"></a>
<a name="line-150"></a>
<a name="line-151"></a>
<a name="line-152"></a><a name="instance%20%5bErrno%5d%20--%20%5e%20errno%20to%20catch%20-%3e%20e%20--%20%5e%20rethrow%20as%20if%20errno%20matches%20-%3e%20IO%20a%20--%20%5e%20action%20to%20try%20-%3e%20IO%20a%20rethrowErrnoAs%20en%20fmex%20action%20=%20catchErrno%20en%20action%20(throwIO%20fmex)%20--%20%7cLike%20%60catchIOError%60,%20with%20arguments%20swapped.%20handleIOError%20::%20(IOError%20-%3e%20IO%20a)%20-%3e%20IO%20a%20-%3e%20IO%20a%20handleIOError%20=%20flip%20catchIOError%20--%20%7cLike%20%60bracket%60,%20but%20allows%20to%20have%20different%20clean-up%20--%20actions%20depending%20on%20whether%20the%20in-between%20computation%20--%20has%20raised%20an%20exception%20or%20not.%20bracketeer%20::%20IO%20a%20--%20%5e%20computation%20to%20run%20first%20-%3e%20(a%20-%3e%20IO%20b)%20--%20%5e%20computation%20to%20run%20last,%20when%20--%20no%20exception%20was%20raised%20-%3e%20(a%20-%3e%20IO%20b)%20--%20%5e%20computation%20to%20run%20last,%20--%20when%20an%20exception%20was%20raised%20-%3e%20(a%20-%3e%20IO%20c)%20--%20%5e%20computation%20to%20run%20in-between%20-%3e%20IO%20c%20bracketeer%20before%20after%20afterEx%20thing%20=%20mask%20$%20%5crestore%20-%3e%20do%20a%20%3c-%20before%20r%20%3c-%20restore%20(thing%20a)%20%60onException%60%20afterEx%20a%20_%20%3c-%20after%20a%20return%20r%20reactOnError%20::%20IO%20a%20-%3e%20%5b(IOErrorType,%20IO%20a)%5d%20--%20%5e%20reaction%20on%20IO%20errors%20-%3e%20%5b(HPathIOException,%20IO%20a)%5d%20--%20%5e%20reaction%20on%20HPathIOException%20-%3e%20IO%20a%20reactOnError%20a%20ios%20fmios%20=%20a%20%60catches%60%20%5biohandler,%20fmiohandler%5d"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Exception</span> <span class='hs-conid'>HPathIOException</span>
<a name="line-153"></a>
<a name="line-152"></a>
<a name="line-153"></a><a name="instance%20%5bErrno%5d%20--%20%5e%20errno%20to%20catch%20-%3e%20e%20--%20%5e%20rethrow%20as%20if%20errno%20matches%20-%3e%20IO%20a%20--%20%5e%20action%20to%20try%20-%3e%20IO%20a%20rethrowErrnoAs%20en%20fmex%20action%20=%20catchErrno%20en%20action%20(throwIO%20fmex)%20--%20%7cLike%20%60catchIOError%60,%20with%20arguments%20swapped.%20handleIOError%20::%20(IOError%20-%3e%20IO%20a)%20-%3e%20IO%20a%20-%3e%20IO%20a%20handleIOError%20=%20flip%20catchIOError%20--%20%7cLike%20%60bracket%60,%20but%20allows%20to%20have%20different%20clean-up%20--%20actions%20depending%20on%20whether%20the%20in-between%20computation%20--%20has%20raised%20an%20exception%20or%20not.%20bracketeer%20::%20IO%20a%20--%20%5e%20computation%20to%20run%20first%20-%3e%20(a%20-%3e%20IO%20b)%20--%20%5e%20computation%20to%20run%20last,%20when%20--%20no%20exception%20was%20raised%20-%3e%20(a%20-%3e%20IO%20b)%20--%20%5e%20computation%20to%20run%20last,%20--%20when%20an%20exception%20was%20raised%20-%3e%20(a%20-%3e%20IO%20c)%20--%20%5e%20computation%20to%20run%20in-between%20-%3e%20IO%20c%20bracketeer%20before%20after%20afterEx%20thing%20=%20mask%20$%20%5crestore%20-%3e%20do%20a%20%3c-%20before%20r%20%3c-%20restore%20(thing%20a)%20%60onException%60%20afterEx%20a%20_%20%3c-%20after%20a%20return%20r%20reactOnError%20::%20IO%20a%20-%3e%20%5b(IOErrorType,%20IO%20a)%5d%20--%20%5e%20reaction%20on%20IO%20errors%20-%3e%20%5b(HPathIOException,%20IO%20a)%5d%20--%20%5e%20reaction%20on%20HPathIOException%20-%3e%20IO%20a%20reactOnError%20a%20ios%20fmios%20=%20a%20%60catches%60%20%5biohandler,%20fmiohandler%5d"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Exception</span> <span class='hs-conid'>HPathIOException</span>
<a name="line-154"></a>
<a name="line-155"></a>
<a name="line-156"></a>
<a name="line-157"></a>
<a name="line-158"></a> <span class='hs-comment'>-----------------------------</span>
<a name="line-159"></a> <span class='hs-comment'>--[ Exception identifiers ]--</span>
<a name="line-160"></a> <span class='hs-comment'>-----------------------------</span>
<a name="line-161"></a>
<a name="line-162"></a><a name="isFileDoesNotExist"></a><span class='hs-definition'>isFileDoesNotExist</span><span class='hs-layout'>,</span> <span class='hs-varid'>isDirDoesNotExist</span><span class='hs-layout'>,</span> <span class='hs-varid'>isSameFile</span><span class='hs-layout'>,</span> <span class='hs-varid'>isDestinationInSource</span><span class='hs-layout'>,</span> <span class='hs-varid'>isFileDoesExist</span><span class='hs-layout'>,</span> <span class='hs-varid'>isDirDoesExist</span><span class='hs-layout'>,</span> <span class='hs-varid'>isInvalidOperation</span><span class='hs-layout'>,</span> <span class='hs-varid'>isCan'tOpenDirectory</span><span class='hs-layout'>,</span> <span class='hs-varid'>isCopyFailed</span><span class='hs-layout'>,</span> <span class='hs-varid'>isRecursiveFailure</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-163"></a><span class='hs-definition'>isFileDoesNotExist</span> <span class='hs-varid'>ex</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toConstr</span> <span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-conid'>FileDoesNotExist</span><span class='hs-layout'>{</span><span class='hs-layout'>}</span>
<a name="line-164"></a><a name="isDirDoesNotExist"></a><span class='hs-definition'>isDirDoesNotExist</span> <span class='hs-varid'>ex</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toConstr</span> <span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-conid'>DirDoesNotExist</span><span class='hs-layout'>{</span><span class='hs-layout'>}</span>
<a name="line-165"></a><a name="isSameFile"></a><span class='hs-definition'>isSameFile</span> <span class='hs-varid'>ex</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toConstr</span> <span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-conid'>SameFile</span><span class='hs-layout'>{</span><span class='hs-layout'>}</span>
<a name="line-166"></a><a name="isDestinationInSource"></a><span class='hs-definition'>isDestinationInSource</span> <span class='hs-varid'>ex</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toConstr</span> <span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-conid'>DestinationInSource</span><span class='hs-layout'>{</span><span class='hs-layout'>}</span>
<a name="line-167"></a><a name="isFileDoesExist"></a><span class='hs-definition'>isFileDoesExist</span> <span class='hs-varid'>ex</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toConstr</span> <span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-conid'>FileDoesExist</span><span class='hs-layout'>{</span><span class='hs-layout'>}</span>
<a name="line-168"></a><a name="isDirDoesExist"></a><span class='hs-definition'>isDirDoesExist</span> <span class='hs-varid'>ex</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toConstr</span> <span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-conid'>DirDoesExist</span><span class='hs-layout'>{</span><span class='hs-layout'>}</span>
<a name="line-169"></a><a name="isInvalidOperation"></a><span class='hs-definition'>isInvalidOperation</span> <span class='hs-varid'>ex</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toConstr</span> <span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-conid'>InvalidOperation</span><span class='hs-layout'>{</span><span class='hs-layout'>}</span>
<a name="line-170"></a><a name="isCan'tOpenDirectory"></a><span class='hs-definition'>isCan'tOpenDirectory</span> <span class='hs-varid'>ex</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toConstr</span> <span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-conid'>Can'tOpenDirectory</span><span class='hs-layout'>{</span><span class='hs-layout'>}</span>
<a name="line-171"></a><a name="isCopyFailed"></a><span class='hs-definition'>isCopyFailed</span> <span class='hs-varid'>ex</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toConstr</span> <span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-conid'>CopyFailed</span><span class='hs-layout'>{</span><span class='hs-layout'>}</span>
<a name="line-172"></a><a name="isRecursiveFailure"></a><span class='hs-definition'>isRecursiveFailure</span> <span class='hs-varid'>ex</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toConstr</span> <span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-conid'>RecursiveFailure</span><span class='hs-layout'>{</span><span class='hs-layout'>}</span>
<a name="line-173"></a>
<a name="line-158"></a>
<a name="line-159"></a> <span class='hs-comment'>-----------------------------</span>
<a name="line-160"></a> <span class='hs-comment'>--[ Exception identifiers ]--</span>
<a name="line-161"></a> <span class='hs-comment'>-----------------------------</span>
<a name="line-162"></a>
<a name="line-163"></a><a name="isFileDoesNotExist"></a><span class='hs-definition'>isFileDoesNotExist</span><span class='hs-layout'>,</span> <span class='hs-varid'>isDirDoesNotExist</span><span class='hs-layout'>,</span> <span class='hs-varid'>isSameFile</span><span class='hs-layout'>,</span> <span class='hs-varid'>isDestinationInSource</span><span class='hs-layout'>,</span> <span class='hs-varid'>isFileDoesExist</span><span class='hs-layout'>,</span> <span class='hs-varid'>isDirDoesExist</span><span class='hs-layout'>,</span> <span class='hs-varid'>isInvalidOperation</span><span class='hs-layout'>,</span> <span class='hs-varid'>isCan'tOpenDirectory</span><span class='hs-layout'>,</span> <span class='hs-varid'>isCopyFailed</span><span class='hs-layout'>,</span> <span class='hs-varid'>isRecursiveFailure</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-164"></a><span class='hs-definition'>isFileDoesNotExist</span> <span class='hs-varid'>ex</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toConstr</span> <span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-conid'>FileDoesNotExist</span><span class='hs-layout'>{</span><span class='hs-layout'>}</span>
<a name="line-165"></a><a name="isDirDoesNotExist"></a><span class='hs-definition'>isDirDoesNotExist</span> <span class='hs-varid'>ex</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toConstr</span> <span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-conid'>DirDoesNotExist</span><span class='hs-layout'>{</span><span class='hs-layout'>}</span>
<a name="line-166"></a><a name="isSameFile"></a><span class='hs-definition'>isSameFile</span> <span class='hs-varid'>ex</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toConstr</span> <span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-conid'>SameFile</span><span class='hs-layout'>{</span><span class='hs-layout'>}</span>
<a name="line-167"></a><a name="isDestinationInSource"></a><span class='hs-definition'>isDestinationInSource</span> <span class='hs-varid'>ex</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toConstr</span> <span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-conid'>DestinationInSource</span><span class='hs-layout'>{</span><span class='hs-layout'>}</span>
<a name="line-168"></a><a name="isFileDoesExist"></a><span class='hs-definition'>isFileDoesExist</span> <span class='hs-varid'>ex</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toConstr</span> <span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-conid'>FileDoesExist</span><span class='hs-layout'>{</span><span class='hs-layout'>}</span>
<a name="line-169"></a><a name="isDirDoesExist"></a><span class='hs-definition'>isDirDoesExist</span> <span class='hs-varid'>ex</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toConstr</span> <span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-conid'>DirDoesExist</span><span class='hs-layout'>{</span><span class='hs-layout'>}</span>
<a name="line-170"></a><a name="isInvalidOperation"></a><span class='hs-definition'>isInvalidOperation</span> <span class='hs-varid'>ex</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toConstr</span> <span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-conid'>InvalidOperation</span><span class='hs-layout'>{</span><span class='hs-layout'>}</span>
<a name="line-171"></a><a name="isCan'tOpenDirectory"></a><span class='hs-definition'>isCan'tOpenDirectory</span> <span class='hs-varid'>ex</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toConstr</span> <span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-conid'>Can'tOpenDirectory</span><span class='hs-layout'>{</span><span class='hs-layout'>}</span>
<a name="line-172"></a><a name="isCopyFailed"></a><span class='hs-definition'>isCopyFailed</span> <span class='hs-varid'>ex</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toConstr</span> <span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-conid'>CopyFailed</span><span class='hs-layout'>{</span><span class='hs-layout'>}</span>
<a name="line-173"></a><a name="isRecursiveFailure"></a><span class='hs-definition'>isRecursiveFailure</span> <span class='hs-varid'>ex</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toConstr</span> <span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-conid'>RecursiveFailure</span><span class='hs-layout'>{</span><span class='hs-layout'>}</span>
<a name="line-174"></a>
<a name="line-175"></a>
<a name="line-176"></a> <span class='hs-comment'>----------------------------</span>
<a name="line-177"></a> <span class='hs-comment'>--[ Path based functions ]--</span>
<a name="line-178"></a> <span class='hs-comment'>----------------------------</span>
<a name="line-179"></a>
<a name="line-176"></a>
<a name="line-177"></a> <span class='hs-comment'>----------------------------</span>
<a name="line-178"></a> <span class='hs-comment'>--[ Path based functions ]--</span>
<a name="line-179"></a> <span class='hs-comment'>----------------------------</span>
<a name="line-180"></a>
<a name="line-181"></a><a name="throwFileDoesExist"></a><span class='hs-definition'>throwFileDoesExist</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-182"></a><span class='hs-definition'>throwFileDoesExist</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>=</span>
<a name="line-183"></a> <span class='hs-varid'>whenM</span> <span class='hs-layout'>(</span><span class='hs-varid'>doesFileExist</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>throwIO</span> <span class='hs-varop'>.</span> <span class='hs-conid'>FileDoesExist</span>
<a name="line-184"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>fromAbs</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span>
<a name="line-185"></a>
<a name="line-181"></a>
<a name="line-182"></a><a name="throwFileDoesExist"></a><span class='hs-definition'>throwFileDoesExist</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-183"></a><span class='hs-definition'>throwFileDoesExist</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>=</span>
<a name="line-184"></a> <span class='hs-varid'>whenM</span> <span class='hs-layout'>(</span><span class='hs-varid'>doesFileExist</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>throwIO</span> <span class='hs-varop'>.</span> <span class='hs-conid'>FileDoesExist</span>
<a name="line-185"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>fromAbs</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span>
<a name="line-186"></a>
<a name="line-187"></a><a name="throwDirDoesExist"></a><span class='hs-definition'>throwDirDoesExist</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-188"></a><span class='hs-definition'>throwDirDoesExist</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>=</span>
<a name="line-189"></a> <span class='hs-varid'>whenM</span> <span class='hs-layout'>(</span><span class='hs-varid'>doesDirectoryExist</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>throwIO</span> <span class='hs-varop'>.</span> <span class='hs-conid'>DirDoesExist</span>
<a name="line-190"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>fromAbs</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span>
<a name="line-191"></a>
<a name="line-187"></a>
<a name="line-188"></a><a name="throwDirDoesExist"></a><span class='hs-definition'>throwDirDoesExist</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-189"></a><span class='hs-definition'>throwDirDoesExist</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>=</span>
<a name="line-190"></a> <span class='hs-varid'>whenM</span> <span class='hs-layout'>(</span><span class='hs-varid'>doesDirectoryExist</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>throwIO</span> <span class='hs-varop'>.</span> <span class='hs-conid'>DirDoesExist</span>
<a name="line-191"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>fromAbs</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span>
<a name="line-192"></a>
<a name="line-193"></a><a name="throwFileDoesNotExist"></a><span class='hs-definition'>throwFileDoesNotExist</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-194"></a><span class='hs-definition'>throwFileDoesNotExist</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>=</span>
<a name="line-195"></a> <span class='hs-varid'>unlessM</span> <span class='hs-layout'>(</span><span class='hs-varid'>doesFileExist</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>throwIO</span> <span class='hs-varop'>.</span> <span class='hs-conid'>FileDoesNotExist</span>
<a name="line-196"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>fromAbs</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span>
<a name="line-197"></a>
<a name="line-193"></a>
<a name="line-194"></a><a name="throwFileDoesNotExist"></a><span class='hs-definition'>throwFileDoesNotExist</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-195"></a><span class='hs-definition'>throwFileDoesNotExist</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>=</span>
<a name="line-196"></a> <span class='hs-varid'>unlessM</span> <span class='hs-layout'>(</span><span class='hs-varid'>doesFileExist</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>throwIO</span> <span class='hs-varop'>.</span> <span class='hs-conid'>FileDoesNotExist</span>
<a name="line-197"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>fromAbs</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span>
<a name="line-198"></a>
<a name="line-199"></a><a name="throwDirDoesNotExist"></a><span class='hs-definition'>throwDirDoesNotExist</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-200"></a><span class='hs-definition'>throwDirDoesNotExist</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>=</span>
<a name="line-201"></a> <span class='hs-varid'>unlessM</span> <span class='hs-layout'>(</span><span class='hs-varid'>doesDirectoryExist</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>throwIO</span> <span class='hs-varop'>.</span> <span class='hs-conid'>DirDoesNotExist</span>
<a name="line-202"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>fromAbs</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span>
<a name="line-203"></a>
<a name="line-199"></a>
<a name="line-200"></a><a name="throwDirDoesNotExist"></a><span class='hs-definition'>throwDirDoesNotExist</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-201"></a><span class='hs-definition'>throwDirDoesNotExist</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>=</span>
<a name="line-202"></a> <span class='hs-varid'>unlessM</span> <span class='hs-layout'>(</span><span class='hs-varid'>doesDirectoryExist</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>throwIO</span> <span class='hs-varop'>.</span> <span class='hs-conid'>DirDoesNotExist</span>
<a name="line-203"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>fromAbs</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span>
<a name="line-204"></a>
<a name="line-205"></a><a name="throwSameFile"></a><span class='hs-comment'>-- |Uses `isSameFile` and throws `SameFile` if it returns True.</span>
<a name="line-206"></a><span class='hs-definition'>throwSameFile</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span>
<a name="line-207"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span>
<a name="line-208"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-209"></a><span class='hs-definition'>throwSameFile</span> <span class='hs-varid'>fp1</span> <span class='hs-varid'>fp2</span> <span class='hs-keyglyph'>=</span>
<a name="line-210"></a> <span class='hs-varid'>whenM</span> <span class='hs-layout'>(</span><span class='hs-varid'>sameFile</span> <span class='hs-varid'>fp1</span> <span class='hs-varid'>fp2</span><span class='hs-layout'>)</span>
<a name="line-211"></a> <span class='hs-layout'>(</span><span class='hs-varid'>throwIO</span> <span class='hs-varop'>$</span> <span class='hs-conid'>SameFile</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>fp1</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>fp2</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-212"></a>
<a name="line-205"></a>
<a name="line-206"></a><a name="throwSameFile"></a><span class='hs-comment'>-- |Uses `isSameFile` and throws `SameFile` if it returns True.</span>
<a name="line-207"></a><span class='hs-definition'>throwSameFile</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span>
<a name="line-208"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span>
<a name="line-209"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-210"></a><span class='hs-definition'>throwSameFile</span> <span class='hs-varid'>fp1</span> <span class='hs-varid'>fp2</span> <span class='hs-keyglyph'>=</span>
<a name="line-211"></a> <span class='hs-varid'>whenM</span> <span class='hs-layout'>(</span><span class='hs-varid'>sameFile</span> <span class='hs-varid'>fp1</span> <span class='hs-varid'>fp2</span><span class='hs-layout'>)</span>
<a name="line-212"></a> <span class='hs-layout'>(</span><span class='hs-varid'>throwIO</span> <span class='hs-varop'>$</span> <span class='hs-conid'>SameFile</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>fp1</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>fp2</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-213"></a>
<a name="line-214"></a><a name="sameFile"></a><span class='hs-comment'>-- |Check if the files are the same by examining device and file id.</span>
<a name="line-215"></a><span class='hs-comment'>-- This follows symbolic links.</span>
<a name="line-216"></a><span class='hs-definition'>sameFile</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Bool</span>
<a name="line-217"></a><span class='hs-definition'>sameFile</span> <span class='hs-varid'>fp1</span> <span class='hs-varid'>fp2</span> <span class='hs-keyglyph'>=</span>
<a name="line-218"></a> <span class='hs-varid'>withAbsPath</span> <span class='hs-varid'>fp1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>fp1'</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withAbsPath</span> <span class='hs-varid'>fp2</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>fp2'</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-219"></a> <span class='hs-varid'>handleIOError</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-220"></a> <span class='hs-varid'>fs1</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getFileStatus</span> <span class='hs-varid'>fp1'</span>
<a name="line-221"></a> <span class='hs-varid'>fs2</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getFileStatus</span> <span class='hs-varid'>fp2'</span>
<a name="line-222"></a>
<a name="line-223"></a> <span class='hs-keyword'>if</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>deviceID</span> <span class='hs-varid'>fs1</span><span class='hs-layout'>,</span> <span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>fileID</span> <span class='hs-varid'>fs1</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span>
<a name="line-224"></a> <span class='hs-layout'>(</span><span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>deviceID</span> <span class='hs-varid'>fs2</span><span class='hs-layout'>,</span> <span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>fileID</span> <span class='hs-varid'>fs2</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-225"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>return</span> <span class='hs-conid'>True</span>
<a name="line-226"></a> <span class='hs-keyword'>else</span> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span>
<a name="line-227"></a>
<a name="line-214"></a>
<a name="line-215"></a><a name="sameFile"></a><span class='hs-comment'>-- |Check if the files are the same by examining device and file id.</span>
<a name="line-216"></a><span class='hs-comment'>-- This follows symbolic links.</span>
<a name="line-217"></a><span class='hs-definition'>sameFile</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Bool</span>
<a name="line-218"></a><span class='hs-definition'>sameFile</span> <span class='hs-varid'>fp1</span> <span class='hs-varid'>fp2</span> <span class='hs-keyglyph'>=</span>
<a name="line-219"></a> <span class='hs-varid'>withAbsPath</span> <span class='hs-varid'>fp1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>fp1'</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withAbsPath</span> <span class='hs-varid'>fp2</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>fp2'</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-220"></a> <span class='hs-varid'>handleIOError</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-221"></a> <span class='hs-varid'>fs1</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getFileStatus</span> <span class='hs-varid'>fp1'</span>
<a name="line-222"></a> <span class='hs-varid'>fs2</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getFileStatus</span> <span class='hs-varid'>fp2'</span>
<a name="line-223"></a>
<a name="line-224"></a> <span class='hs-keyword'>if</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>deviceID</span> <span class='hs-varid'>fs1</span><span class='hs-layout'>,</span> <span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>fileID</span> <span class='hs-varid'>fs1</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span>
<a name="line-225"></a> <span class='hs-layout'>(</span><span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>deviceID</span> <span class='hs-varid'>fs2</span><span class='hs-layout'>,</span> <span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>fileID</span> <span class='hs-varid'>fs2</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-226"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>return</span> <span class='hs-conid'>True</span>
<a name="line-227"></a> <span class='hs-keyword'>else</span> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span>
<a name="line-228"></a>
<a name="line-229"></a><a name="throwDestinationInSource"></a><span class='hs-comment'>-- TODO: make this more robust when destination does not exist</span>
<a name="line-230"></a><span class='hs-comment'>-- |Checks whether the destination directory is contained</span>
<a name="line-231"></a><span class='hs-comment'>-- within the source directory by comparing the device+file ID of the</span>
<a name="line-232"></a><span class='hs-comment'>-- source directory with all device+file IDs of the parent directories</span>
<a name="line-233"></a><span class='hs-comment'>-- of the destination.</span>
<a name="line-234"></a><span class='hs-definition'>throwDestinationInSource</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-comment'>-- ^ source dir</span>
<a name="line-235"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-comment'>-- ^ full destination, @dirname dest@</span>
<a name="line-236"></a> <span class='hs-comment'>-- must exist</span>
<a name="line-237"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-238"></a><span class='hs-definition'>throwDestinationInSource</span> <span class='hs-varid'>source</span> <span class='hs-varid'>dest</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-239"></a> <span class='hs-varid'>dest'</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>x</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>maybe</span> <span class='hs-varid'>x</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>y</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>x</span> <span class='hs-varop'>&lt;/&gt;</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-varid'>basename</span> <span class='hs-varid'>dest</span><span class='hs-layout'>)</span>
<a name="line-240"></a> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>canonicalizePath</span> <span class='hs-varop'>$</span> <span class='hs-varid'>dirname</span> <span class='hs-varid'>dest</span><span class='hs-layout'>)</span>
<a name="line-241"></a> <span class='hs-varid'>dids</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>forM</span> <span class='hs-layout'>(</span><span class='hs-varid'>getAllParents</span> <span class='hs-varid'>dest'</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>p</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-242"></a> <span class='hs-varid'>fs</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>getSymbolicLinkStatus</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>p</span><span class='hs-layout'>)</span>
<a name="line-243"></a> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>deviceID</span> <span class='hs-varid'>fs</span><span class='hs-layout'>,</span> <span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>fileID</span> <span class='hs-varid'>fs</span><span class='hs-layout'>)</span>
<a name="line-244"></a> <span class='hs-varid'>sid</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>x</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>deviceID</span> <span class='hs-varid'>x</span><span class='hs-layout'>,</span> <span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>fileID</span> <span class='hs-varid'>x</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-245"></a> <span class='hs-varop'>$</span> <span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>getFileStatus</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>source</span><span class='hs-layout'>)</span>
<a name="line-246"></a> <span class='hs-varid'>when</span> <span class='hs-layout'>(</span><span class='hs-varid'>elem</span> <span class='hs-varid'>sid</span> <span class='hs-varid'>dids</span><span class='hs-layout'>)</span>
<a name="line-247"></a> <span class='hs-layout'>(</span><span class='hs-varid'>throwIO</span> <span class='hs-varop'>$</span> <span class='hs-conid'>DestinationInSource</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>dest</span><span class='hs-layout'>)</span>
<a name="line-248"></a> <span class='hs-layout'>(</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>source</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-249"></a>
<a name="line-229"></a>
<a name="line-230"></a><a name="throwDestinationInSource"></a><span class='hs-comment'>-- TODO: make this more robust when destination does not exist</span>
<a name="line-231"></a><span class='hs-comment'>-- |Checks whether the destination directory is contained</span>
<a name="line-232"></a><span class='hs-comment'>-- within the source directory by comparing the device+file ID of the</span>
<a name="line-233"></a><span class='hs-comment'>-- source directory with all device+file IDs of the parent directories</span>
<a name="line-234"></a><span class='hs-comment'>-- of the destination.</span>
<a name="line-235"></a><span class='hs-definition'>throwDestinationInSource</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-comment'>-- ^ source dir</span>
<a name="line-236"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-comment'>-- ^ full destination, @dirname dest@</span>
<a name="line-237"></a> <span class='hs-comment'>-- must exist</span>
<a name="line-238"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-239"></a><span class='hs-definition'>throwDestinationInSource</span> <span class='hs-varid'>source</span> <span class='hs-varid'>dest</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-240"></a> <span class='hs-varid'>dest'</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>x</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>maybe</span> <span class='hs-varid'>x</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>y</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>x</span> <span class='hs-varop'>&lt;/&gt;</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-varid'>basename</span> <span class='hs-varid'>dest</span><span class='hs-layout'>)</span>
<a name="line-241"></a> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>canonicalizePath</span> <span class='hs-varop'>$</span> <span class='hs-varid'>dirname</span> <span class='hs-varid'>dest</span><span class='hs-layout'>)</span>
<a name="line-242"></a> <span class='hs-varid'>dids</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>forM</span> <span class='hs-layout'>(</span><span class='hs-varid'>getAllParents</span> <span class='hs-varid'>dest'</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>p</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-243"></a> <span class='hs-varid'>fs</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>getSymbolicLinkStatus</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>p</span><span class='hs-layout'>)</span>
<a name="line-244"></a> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>deviceID</span> <span class='hs-varid'>fs</span><span class='hs-layout'>,</span> <span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>fileID</span> <span class='hs-varid'>fs</span><span class='hs-layout'>)</span>
<a name="line-245"></a> <span class='hs-varid'>sid</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>x</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>deviceID</span> <span class='hs-varid'>x</span><span class='hs-layout'>,</span> <span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>fileID</span> <span class='hs-varid'>x</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-246"></a> <span class='hs-varop'>$</span> <span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>getFileStatus</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>source</span><span class='hs-layout'>)</span>
<a name="line-247"></a> <span class='hs-varid'>when</span> <span class='hs-layout'>(</span><span class='hs-varid'>elem</span> <span class='hs-varid'>sid</span> <span class='hs-varid'>dids</span><span class='hs-layout'>)</span>
<a name="line-248"></a> <span class='hs-layout'>(</span><span class='hs-varid'>throwIO</span> <span class='hs-varop'>$</span> <span class='hs-conid'>DestinationInSource</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>dest</span><span class='hs-layout'>)</span>
<a name="line-249"></a> <span class='hs-layout'>(</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>source</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-250"></a>
<a name="line-251"></a><a name="doesFileExist"></a><span class='hs-comment'>-- |Checks if the given file exists and is not a directory.</span>
<a name="line-252"></a><span class='hs-comment'>-- Does not follow symlinks.</span>
<a name="line-253"></a><span class='hs-definition'>doesFileExist</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Bool</span>
<a name="line-254"></a><span class='hs-definition'>doesFileExist</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>=</span>
<a name="line-255"></a> <span class='hs-varid'>handleIOError</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-256"></a> <span class='hs-varid'>fs</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>getSymbolicLinkStatus</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span>
<a name="line-257"></a> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>not</span> <span class='hs-varop'>.</span> <span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>isDirectory</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fs</span>
<a name="line-258"></a>
<a name="line-251"></a>
<a name="line-252"></a><a name="doesFileExist"></a><span class='hs-comment'>-- |Checks if the given file exists and is not a directory.</span>
<a name="line-253"></a><span class='hs-comment'>-- Does not follow symlinks.</span>
<a name="line-254"></a><span class='hs-definition'>doesFileExist</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Bool</span>
<a name="line-255"></a><span class='hs-definition'>doesFileExist</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>=</span>
<a name="line-256"></a> <span class='hs-varid'>handleIOError</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-257"></a> <span class='hs-varid'>fs</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>getSymbolicLinkStatus</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span>
<a name="line-258"></a> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>not</span> <span class='hs-varop'>.</span> <span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>isDirectory</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fs</span>
<a name="line-259"></a>
<a name="line-260"></a><a name="doesDirectoryExist"></a><span class='hs-comment'>-- |Checks if the given file exists and is a directory.</span>
<a name="line-261"></a><span class='hs-comment'>-- Does not follow symlinks.</span>
<a name="line-262"></a><span class='hs-definition'>doesDirectoryExist</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Bool</span>
<a name="line-263"></a><span class='hs-definition'>doesDirectoryExist</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>=</span>
<a name="line-264"></a> <span class='hs-varid'>handleIOError</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-265"></a> <span class='hs-varid'>fs</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>getSymbolicLinkStatus</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span>
<a name="line-266"></a> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>isDirectory</span> <span class='hs-varid'>fs</span>
<a name="line-267"></a>
<a name="line-260"></a>
<a name="line-261"></a><a name="doesDirectoryExist"></a><span class='hs-comment'>-- |Checks if the given file exists and is a directory.</span>
<a name="line-262"></a><span class='hs-comment'>-- Does not follow symlinks.</span>
<a name="line-263"></a><span class='hs-definition'>doesDirectoryExist</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Bool</span>
<a name="line-264"></a><span class='hs-definition'>doesDirectoryExist</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>=</span>
<a name="line-265"></a> <span class='hs-varid'>handleIOError</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-266"></a> <span class='hs-varid'>fs</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>getSymbolicLinkStatus</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span>
<a name="line-267"></a> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-conid'>PF</span><span class='hs-varop'>.</span><span class='hs-varid'>isDirectory</span> <span class='hs-varid'>fs</span>
<a name="line-268"></a>
<a name="line-269"></a><a name="isWritable"></a><span class='hs-comment'>-- |Checks whether a file or folder is writable.</span>
<a name="line-270"></a><span class='hs-definition'>isWritable</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Bool</span>
<a name="line-271"></a><span class='hs-definition'>isWritable</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>=</span>
<a name="line-272"></a> <span class='hs-varid'>handleIOError</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span>
<a name="line-273"></a> <span class='hs-varid'>fileAccess</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span> <span class='hs-conid'>False</span> <span class='hs-conid'>True</span> <span class='hs-conid'>False</span>
<a name="line-274"></a>
<a name="line-269"></a>
<a name="line-270"></a><a name="isWritable"></a><span class='hs-comment'>-- |Checks whether a file or folder is writable.</span>
<a name="line-271"></a><span class='hs-definition'>isWritable</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Bool</span>
<a name="line-272"></a><span class='hs-definition'>isWritable</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>=</span>
<a name="line-273"></a> <span class='hs-varid'>handleIOError</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span>
<a name="line-274"></a> <span class='hs-varid'>fileAccess</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span> <span class='hs-conid'>False</span> <span class='hs-conid'>True</span> <span class='hs-conid'>False</span>
<a name="line-275"></a>
<a name="line-276"></a><a name="canOpenDirectory"></a><span class='hs-comment'>-- |Checks whether the directory at the given path exists and can be</span>
<a name="line-277"></a><span class='hs-comment'>-- opened. This invokes `openDirStream` which follows symlinks.</span>
<a name="line-278"></a><span class='hs-definition'>canOpenDirectory</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Bool</span>
<a name="line-279"></a><span class='hs-definition'>canOpenDirectory</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>=</span>
<a name="line-280"></a> <span class='hs-varid'>handleIOError</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-281"></a> <span class='hs-varid'>bracket</span> <span class='hs-layout'>(</span><span class='hs-conid'>PFD</span><span class='hs-varop'>.</span><span class='hs-varid'>openDirStream</span> <span class='hs-varop'>.</span> <span class='hs-varid'>fromAbs</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span>
<a name="line-282"></a> <span class='hs-conid'>PFD</span><span class='hs-varop'>.</span><span class='hs-varid'>closeDirStream</span>
<a name="line-283"></a> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span>
<a name="line-284"></a> <span class='hs-varid'>return</span> <span class='hs-conid'>True</span>
<a name="line-285"></a>
<a name="line-276"></a>
<a name="line-277"></a><a name="canOpenDirectory"></a><span class='hs-comment'>-- |Checks whether the directory at the given path exists and can be</span>
<a name="line-278"></a><span class='hs-comment'>-- opened. This invokes `openDirStream` which follows symlinks.</span>
<a name="line-279"></a><span class='hs-definition'>canOpenDirectory</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Bool</span>
<a name="line-280"></a><span class='hs-definition'>canOpenDirectory</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>=</span>
<a name="line-281"></a> <span class='hs-varid'>handleIOError</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-282"></a> <span class='hs-varid'>bracket</span> <span class='hs-layout'>(</span><span class='hs-conid'>PFD</span><span class='hs-varop'>.</span><span class='hs-varid'>openDirStream</span> <span class='hs-varop'>.</span> <span class='hs-varid'>fromAbs</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span>
<a name="line-283"></a> <span class='hs-conid'>PFD</span><span class='hs-varop'>.</span><span class='hs-varid'>closeDirStream</span>
<a name="line-284"></a> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span>
<a name="line-285"></a> <span class='hs-varid'>return</span> <span class='hs-conid'>True</span>
<a name="line-286"></a>
<a name="line-287"></a><a name="throwCantOpenDirectory"></a><span class='hs-comment'>-- |Throws a `Can'tOpenDirectory` HPathIOException if the directory at the given</span>
<a name="line-288"></a><span class='hs-comment'>-- path cannot be opened.</span>
<a name="line-289"></a><span class='hs-definition'>throwCantOpenDirectory</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-290"></a><span class='hs-definition'>throwCantOpenDirectory</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>=</span>
<a name="line-291"></a> <span class='hs-varid'>unlessM</span> <span class='hs-layout'>(</span><span class='hs-varid'>canOpenDirectory</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span>
<a name="line-292"></a> <span class='hs-layout'>(</span><span class='hs-varid'>throwIO</span> <span class='hs-varop'>.</span> <span class='hs-conid'>Can'tOpenDirectory</span> <span class='hs-varop'>.</span> <span class='hs-varid'>fromAbs</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span>
<a name="line-293"></a>
<a name="line-287"></a>
<a name="line-288"></a><a name="throwCantOpenDirectory"></a><span class='hs-comment'>-- |Throws a `Can'tOpenDirectory` HPathIOException if the directory at the given</span>
<a name="line-289"></a><span class='hs-comment'>-- path cannot be opened.</span>
<a name="line-290"></a><span class='hs-definition'>throwCantOpenDirectory</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-291"></a><span class='hs-definition'>throwCantOpenDirectory</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>=</span>
<a name="line-292"></a> <span class='hs-varid'>unlessM</span> <span class='hs-layout'>(</span><span class='hs-varid'>canOpenDirectory</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span>
<a name="line-293"></a> <span class='hs-layout'>(</span><span class='hs-varid'>throwIO</span> <span class='hs-varop'>.</span> <span class='hs-conid'>Can'tOpenDirectory</span> <span class='hs-varop'>.</span> <span class='hs-varid'>fromAbs</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fp</span><span class='hs-layout'>)</span>
<a name="line-294"></a>
<a name="line-295"></a>
<a name="line-296"></a> <span class='hs-comment'>--------------------------------</span>
<a name="line-297"></a> <span class='hs-comment'>--[ Error handling functions ]--</span>
<a name="line-298"></a> <span class='hs-comment'>--------------------------------</span>
<a name="line-299"></a>
<a name="line-296"></a>
<a name="line-297"></a> <span class='hs-comment'>--------------------------------</span>
<a name="line-298"></a> <span class='hs-comment'>--[ Error handling functions ]--</span>
<a name="line-299"></a> <span class='hs-comment'>--------------------------------</span>
<a name="line-300"></a>
<a name="line-301"></a><a name="catchErrno"></a><span class='hs-comment'>-- |Carries out an action, then checks if there is an IOException and</span>
<a name="line-302"></a><span class='hs-comment'>-- a specific errno. If so, then it carries out another action, otherwise</span>
<a name="line-303"></a><span class='hs-comment'>-- it rethrows the error.</span>
<a name="line-304"></a><span class='hs-definition'>catchErrno</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Errno</span><span class='hs-keyglyph'>]</span> <span class='hs-comment'>-- ^ errno to catch</span>
<a name="line-305"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span> <span class='hs-comment'>-- ^ action to try, which can raise an IOException</span>
<a name="line-306"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span> <span class='hs-comment'>-- ^ action to carry out in case of an IOException and</span>
<a name="line-307"></a> <span class='hs-comment'>-- if errno matches</span>
<a name="line-308"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span>
<a name="line-309"></a><span class='hs-definition'>catchErrno</span> <span class='hs-varid'>en</span> <span class='hs-varid'>a1</span> <span class='hs-varid'>a2</span> <span class='hs-keyglyph'>=</span>
<a name="line-310"></a> <span class='hs-varid'>catchIOError</span> <span class='hs-varid'>a1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-311"></a> <span class='hs-varid'>errno</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getErrno</span>
<a name="line-312"></a> <span class='hs-keyword'>if</span> <span class='hs-varid'>errno</span> <span class='hs-varop'>`elem`</span> <span class='hs-varid'>en</span>
<a name="line-313"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>a2</span>
<a name="line-314"></a> <span class='hs-keyword'>else</span> <span class='hs-varid'>ioError</span> <span class='hs-varid'>e</span>
<a name="line-315"></a>
<a name="line-301"></a>
<a name="line-302"></a><a name="catchErrno"></a><span class='hs-comment'>-- |Carries out an action, then checks if there is an IOException and</span>
<a name="line-303"></a><span class='hs-comment'>-- a specific errno. If so, then it carries out another action, otherwise</span>
<a name="line-304"></a><span class='hs-comment'>-- it rethrows the error.</span>
<a name="line-305"></a><span class='hs-definition'>catchErrno</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Errno</span><span class='hs-keyglyph'>]</span> <span class='hs-comment'>-- ^ errno to catch</span>
<a name="line-306"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span> <span class='hs-comment'>-- ^ action to try, which can raise an IOException</span>
<a name="line-307"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span> <span class='hs-comment'>-- ^ action to carry out in case of an IOException and</span>
<a name="line-308"></a> <span class='hs-comment'>-- if errno matches</span>
<a name="line-309"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span>
<a name="line-310"></a><span class='hs-definition'>catchErrno</span> <span class='hs-varid'>en</span> <span class='hs-varid'>a1</span> <span class='hs-varid'>a2</span> <span class='hs-keyglyph'>=</span>
<a name="line-311"></a> <span class='hs-varid'>catchIOError</span> <span class='hs-varid'>a1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-312"></a> <span class='hs-varid'>errno</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getErrno</span>
<a name="line-313"></a> <span class='hs-keyword'>if</span> <span class='hs-varid'>errno</span> <span class='hs-varop'>`elem`</span> <span class='hs-varid'>en</span>
<a name="line-314"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>a2</span>
<a name="line-315"></a> <span class='hs-keyword'>else</span> <span class='hs-varid'>ioError</span> <span class='hs-varid'>e</span>
<a name="line-316"></a>
<a name="line-317"></a><a name="rethrowErrnoAs"></a><span class='hs-comment'>-- |Execute the given action and retrow IO exceptions as a new Exception</span>
<a name="line-318"></a><span class='hs-comment'>-- that have the given errno. If errno does not match the exception is rethrown</span>
<a name="line-319"></a><span class='hs-comment'>-- as is.</span>
<a name="line-320"></a><span class='hs-definition'>rethrowErrnoAs</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Exception</span> <span class='hs-varid'>e</span>
<a name="line-321"></a> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Errno</span><span class='hs-keyglyph'>]</span> <span class='hs-comment'>-- ^ errno to catch</span>
<a name="line-322"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>e</span> <span class='hs-comment'>-- ^ rethrow as if errno matches</span>
<a name="line-323"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span> <span class='hs-comment'>-- ^ action to try</span>
<a name="line-324"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span>
<a name="line-325"></a><span class='hs-definition'>rethrowErrnoAs</span> <span class='hs-varid'>en</span> <span class='hs-varid'>fmex</span> <span class='hs-varid'>action</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>catchErrno</span> <span class='hs-varid'>en</span> <span class='hs-varid'>action</span> <span class='hs-layout'>(</span><span class='hs-varid'>throwIO</span> <span class='hs-varid'>fmex</span><span class='hs-layout'>)</span>
<a name="line-326"></a>
<a name="line-317"></a>
<a name="line-318"></a><a name="rethrowErrnoAs"></a><span class='hs-comment'>-- |Execute the given action and retrow IO exceptions as a new Exception</span>
<a name="line-319"></a><span class='hs-comment'>-- that have the given errno. If errno does not match the exception is rethrown</span>
<a name="line-320"></a><span class='hs-comment'>-- as is.</span>
<a name="line-321"></a><span class='hs-definition'>rethrowErrnoAs</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Exception</span> <span class='hs-varid'>e</span>
<a name="line-322"></a> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Errno</span><span class='hs-keyglyph'>]</span> <span class='hs-comment'>-- ^ errno to catch</span>
<a name="line-323"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>e</span> <span class='hs-comment'>-- ^ rethrow as if errno matches</span>
<a name="line-324"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span> <span class='hs-comment'>-- ^ action to try</span>
<a name="line-325"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span>
<a name="line-326"></a><span class='hs-definition'>rethrowErrnoAs</span> <span class='hs-varid'>en</span> <span class='hs-varid'>fmex</span> <span class='hs-varid'>action</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>catchErrno</span> <span class='hs-varid'>en</span> <span class='hs-varid'>action</span> <span class='hs-layout'>(</span><span class='hs-varid'>throwIO</span> <span class='hs-varid'>fmex</span><span class='hs-layout'>)</span>
<a name="line-327"></a>
<a name="line-328"></a>
<a name="line-329"></a><a name="handleIOError"></a><span class='hs-comment'>-- |Like `catchIOError`, with arguments swapped.</span>
<a name="line-330"></a><span class='hs-definition'>handleIOError</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>IOError</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span>
<a name="line-331"></a><span class='hs-definition'>handleIOError</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>flip</span> <span class='hs-varid'>catchIOError</span>
<a name="line-332"></a>
<a name="line-329"></a>
<a name="line-330"></a><a name="handleIOError"></a><span class='hs-comment'>-- |Like `catchIOError`, with arguments swapped.</span>
<a name="line-331"></a><span class='hs-definition'>handleIOError</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>IOError</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span>
<a name="line-332"></a><span class='hs-definition'>handleIOError</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>flip</span> <span class='hs-varid'>catchIOError</span>
<a name="line-333"></a>
<a name="line-334"></a><a name="bracketeer"></a><span class='hs-comment'>-- |Like `bracket`, but allows to have different clean-up</span>
<a name="line-335"></a><span class='hs-comment'>-- actions depending on whether the in-between computation</span>
<a name="line-336"></a><span class='hs-comment'>-- has raised an exception or not. </span>
<a name="line-337"></a><span class='hs-definition'>bracketeer</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span> <span class='hs-comment'>-- ^ computation to run first</span>
<a name="line-338"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-comment'>-- ^ computation to run last, when</span>
<a name="line-339"></a> <span class='hs-comment'>-- no exception was raised</span>
<a name="line-340"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-comment'>-- ^ computation to run last,</span>
<a name="line-341"></a> <span class='hs-comment'>-- when an exception was raised</span>
<a name="line-342"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>c</span><span class='hs-layout'>)</span> <span class='hs-comment'>-- ^ computation to run in-between</span>
<a name="line-343"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>c</span>
<a name="line-344"></a><span class='hs-definition'>bracketeer</span> <span class='hs-varid'>before</span> <span class='hs-varid'>after</span> <span class='hs-varid'>afterEx</span> <span class='hs-varid'>thing</span> <span class='hs-keyglyph'>=</span>
<a name="line-345"></a> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>restore</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-346"></a> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>before</span>
<a name="line-347"></a> <span class='hs-varid'>r</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>restore</span> <span class='hs-layout'>(</span><span class='hs-varid'>thing</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-varop'>`onException`</span> <span class='hs-varid'>afterEx</span> <span class='hs-varid'>a</span>
<a name="line-348"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>after</span> <span class='hs-varid'>a</span>
<a name="line-349"></a> <span class='hs-varid'>return</span> <span class='hs-varid'>r</span>
<a name="line-350"></a>
<a name="line-334"></a>
<a name="line-335"></a><a name="bracketeer"></a><span class='hs-comment'>-- |Like `bracket`, but allows to have different clean-up</span>
<a name="line-336"></a><span class='hs-comment'>-- actions depending on whether the in-between computation</span>
<a name="line-337"></a><span class='hs-comment'>-- has raised an exception or not. </span>
<a name="line-338"></a><span class='hs-definition'>bracketeer</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span> <span class='hs-comment'>-- ^ computation to run first</span>
<a name="line-339"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-comment'>-- ^ computation to run last, when</span>
<a name="line-340"></a> <span class='hs-comment'>-- no exception was raised</span>
<a name="line-341"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-comment'>-- ^ computation to run last,</span>
<a name="line-342"></a> <span class='hs-comment'>-- when an exception was raised</span>
<a name="line-343"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>c</span><span class='hs-layout'>)</span> <span class='hs-comment'>-- ^ computation to run in-between</span>
<a name="line-344"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>c</span>
<a name="line-345"></a><span class='hs-definition'>bracketeer</span> <span class='hs-varid'>before</span> <span class='hs-varid'>after</span> <span class='hs-varid'>afterEx</span> <span class='hs-varid'>thing</span> <span class='hs-keyglyph'>=</span>
<a name="line-346"></a> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>restore</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-347"></a> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>before</span>
<a name="line-348"></a> <span class='hs-varid'>r</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>restore</span> <span class='hs-layout'>(</span><span class='hs-varid'>thing</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-varop'>`onException`</span> <span class='hs-varid'>afterEx</span> <span class='hs-varid'>a</span>
<a name="line-349"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>after</span> <span class='hs-varid'>a</span>
<a name="line-350"></a> <span class='hs-varid'>return</span> <span class='hs-varid'>r</span>
<a name="line-351"></a>
<a name="line-352"></a><a name="reactOnError"></a><span class='hs-definition'>reactOnError</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span>
<a name="line-353"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-conid'>IOErrorType</span><span class='hs-layout'>,</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span> <span class='hs-comment'>-- ^ reaction on IO errors</span>
<a name="line-354"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-conid'>HPathIOException</span><span class='hs-layout'>,</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span> <span class='hs-comment'>-- ^ reaction on HPathIOException</span>
<a name="line-355"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span>
<a name="line-356"></a><span class='hs-definition'>reactOnError</span> <span class='hs-varid'>a</span> <span class='hs-varid'>ios</span> <span class='hs-varid'>fmios</span> <span class='hs-keyglyph'>=</span>
<a name="line-357"></a> <span class='hs-varid'>a</span> <span class='hs-varop'>`catches`</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>iohandler</span><span class='hs-layout'>,</span> <span class='hs-varid'>fmiohandler</span><span class='hs-keyglyph'>]</span>
<a name="line-358"></a> <span class='hs-keyword'>where</span>
<a name="line-359"></a> <span class='hs-varid'>iohandler</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Handler</span> <span class='hs-varop'>$</span>
<a name="line-360"></a> <span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IOException</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-361"></a> <span class='hs-varid'>foldr</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>t</span><span class='hs-layout'>,</span> <span class='hs-varid'>a'</span><span class='hs-layout'>)</span> <span class='hs-varid'>y</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>ioeGetErrorType</span> <span class='hs-varid'>ex</span> <span class='hs-varop'>==</span> <span class='hs-varid'>t</span>
<a name="line-362"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>a'</span>
<a name="line-363"></a> <span class='hs-keyword'>else</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span>
<a name="line-364"></a> <span class='hs-layout'>(</span><span class='hs-varid'>throwIO</span> <span class='hs-varid'>ex</span><span class='hs-layout'>)</span>
<a name="line-365"></a> <span class='hs-varid'>ios</span>
<a name="line-366"></a> <span class='hs-varid'>fmiohandler</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Handler</span> <span class='hs-varop'>$</span>
<a name="line-367"></a> <span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-368"></a> <span class='hs-varid'>foldr</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>t</span><span class='hs-layout'>,</span> <span class='hs-varid'>a'</span><span class='hs-layout'>)</span> <span class='hs-varid'>y</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>toConstr</span> <span class='hs-varid'>ex</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-varid'>t</span>
<a name="line-369"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>a'</span>
<a name="line-370"></a> <span class='hs-keyword'>else</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span>
<a name="line-371"></a> <span class='hs-layout'>(</span><span class='hs-varid'>throwIO</span> <span class='hs-varid'>ex</span><span class='hs-layout'>)</span>
<a name="line-372"></a> <span class='hs-varid'>fmios</span>
<a name="line-352"></a>
<a name="line-353"></a><a name="reactOnError"></a><span class='hs-definition'>reactOnError</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span>
<a name="line-354"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-conid'>IOErrorType</span><span class='hs-layout'>,</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span> <span class='hs-comment'>-- ^ reaction on IO errors</span>
<a name="line-355"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-conid'>HPathIOException</span><span class='hs-layout'>,</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span> <span class='hs-comment'>-- ^ reaction on HPathIOException</span>
<a name="line-356"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span>
<a name="line-357"></a><span class='hs-definition'>reactOnError</span> <span class='hs-varid'>a</span> <span class='hs-varid'>ios</span> <span class='hs-varid'>fmios</span> <span class='hs-keyglyph'>=</span>
<a name="line-358"></a> <span class='hs-varid'>a</span> <span class='hs-varop'>`catches`</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>iohandler</span><span class='hs-layout'>,</span> <span class='hs-varid'>fmiohandler</span><span class='hs-keyglyph'>]</span>
<a name="line-359"></a> <span class='hs-keyword'>where</span>
<a name="line-360"></a> <span class='hs-varid'>iohandler</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Handler</span> <span class='hs-varop'>$</span>
<a name="line-361"></a> <span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IOException</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-362"></a> <span class='hs-varid'>foldr</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>t</span><span class='hs-layout'>,</span> <span class='hs-varid'>a'</span><span class='hs-layout'>)</span> <span class='hs-varid'>y</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>ioeGetErrorType</span> <span class='hs-varid'>ex</span> <span class='hs-varop'>==</span> <span class='hs-varid'>t</span>
<a name="line-363"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>a'</span>
<a name="line-364"></a> <span class='hs-keyword'>else</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span>
<a name="line-365"></a> <span class='hs-layout'>(</span><span class='hs-varid'>throwIO</span> <span class='hs-varid'>ex</span><span class='hs-layout'>)</span>
<a name="line-366"></a> <span class='hs-varid'>ios</span>
<a name="line-367"></a> <span class='hs-varid'>fmiohandler</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Handler</span> <span class='hs-varop'>$</span>
<a name="line-368"></a> <span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>ex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HPathIOException</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-369"></a> <span class='hs-varid'>foldr</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>t</span><span class='hs-layout'>,</span> <span class='hs-varid'>a'</span><span class='hs-layout'>)</span> <span class='hs-varid'>y</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>toConstr</span> <span class='hs-varid'>ex</span> <span class='hs-varop'>==</span> <span class='hs-varid'>toConstr</span> <span class='hs-varid'>t</span>
<a name="line-370"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>a'</span>
<a name="line-371"></a> <span class='hs-keyword'>else</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span>
<a name="line-372"></a> <span class='hs-layout'>(</span><span class='hs-varid'>throwIO</span> <span class='hs-varid'>ex</span><span class='hs-layout'>)</span>
<a name="line-373"></a> <span class='hs-varid'>fmios</span>
</pre></body>
</html>

View File

@ -46,7 +46,7 @@
<a name="line-37"></a> <span class='hs-layout'>(</span>
<a name="line-38"></a> <span class='hs-comment'>-- * Types</span>
<a name="line-39"></a> <span class='hs-conid'>FileType</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
<a name="line-40"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>RecursiveMode</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
<a name="line-40"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>RecursiveErrorMode</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
<a name="line-41"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>CopyMode</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
<a name="line-42"></a> <span class='hs-comment'>-- * File copying</span>
<a name="line-43"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>copyDirRecursive</span>
@ -228,17 +228,17 @@
<a name="line-219"></a>
<a name="line-220"></a>
<a name="line-221"></a>
<a name="line-222"></a><a name="RecursiveMode"></a><span class='hs-comment'>-- |The mode for any recursive operation.</span>
<a name="line-223"></a><a name="RecursiveMode"></a><span class='hs-comment'>--</span>
<a name="line-224"></a><a name="RecursiveMode"></a><span class='hs-comment'>-- On `FailEarly` the whole operation fails immediately if any of the</span>
<a name="line-225"></a><a name="RecursiveMode"></a><span class='hs-comment'>-- recursive sub-operations fail, which is sort of the default</span>
<a name="line-226"></a><a name="RecursiveMode"></a><span class='hs-comment'>-- for IO operations.</span>
<a name="line-227"></a><a name="RecursiveMode"></a><span class='hs-comment'>--</span>
<a name="line-228"></a><a name="RecursiveMode"></a><span class='hs-comment'>-- On `CollectFailures` skips errors in the recursion and keeps on recursing.</span>
<a name="line-229"></a><a name="RecursiveMode"></a><span class='hs-comment'>-- However all errors are collected in the `RecursiveFailure` error type,</span>
<a name="line-230"></a><a name="RecursiveMode"></a><span class='hs-comment'>-- which is raised finally if there was any error.</span>
<a name="line-231"></a><a name="RecursiveMode"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>RecursiveMode</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>FailEarly</span>
<a name="line-232"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>CollectFailures</span>
<a name="line-222"></a><a name="RecursiveErrorMode"></a><span class='hs-comment'>-- |The error mode for any recursive operation.</span>
<a name="line-223"></a><a name="RecursiveErrorMode"></a><span class='hs-comment'>--</span>
<a name="line-224"></a><a name="RecursiveErrorMode"></a><span class='hs-comment'>-- On `FailEarly` the whole operation fails immediately if any of the</span>
<a name="line-225"></a><a name="RecursiveErrorMode"></a><span class='hs-comment'>-- recursive sub-operations fail, which is sort of the default</span>
<a name="line-226"></a><a name="RecursiveErrorMode"></a><span class='hs-comment'>-- for IO operations.</span>
<a name="line-227"></a><a name="RecursiveErrorMode"></a><span class='hs-comment'>--</span>
<a name="line-228"></a><a name="RecursiveErrorMode"></a><span class='hs-comment'>-- On `CollectFailures` skips errors in the recursion and keeps on recursing.</span>
<a name="line-229"></a><a name="RecursiveErrorMode"></a><span class='hs-comment'>-- However all errors are collected in the `RecursiveFailure` error type,</span>
<a name="line-230"></a><a name="RecursiveErrorMode"></a><span class='hs-comment'>-- which is raised finally if there was any error.</span>
<a name="line-231"></a><a name="RecursiveErrorMode"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>RecursiveErrorMode</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>FailEarly</span>
<a name="line-232"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>CollectFailures</span>
<a name="line-233"></a>
<a name="line-234"></a>
<a name="line-235"></a><a name="CopyMode"></a><span class='hs-comment'>-- |The mode for copy and file moves.</span>
@ -262,12 +262,12 @@
<a name="line-253"></a><span class='hs-comment'>-- For directory contents, this will ignore any file type that is not</span>
<a name="line-254"></a><span class='hs-comment'>-- `RegularFile`, `SymbolicLink` or `Directory`.</span>
<a name="line-255"></a><span class='hs-comment'>--</span>
<a name="line-256"></a><span class='hs-comment'>-- For `Overwrite` mode this does not prune destination directory contents,</span>
<a name="line-256"></a><span class='hs-comment'>-- For `Overwrite` copy mode this does not prune destination directory contents,</span>
<a name="line-257"></a><span class='hs-comment'>-- so the destination might contain more files than the source after</span>
<a name="line-258"></a><span class='hs-comment'>-- the operation has completed.</span>
<a name="line-259"></a><span class='hs-comment'>--</span>
<a name="line-260"></a><span class='hs-comment'>-- Note that there is no guaranteed ordering of the exceptions</span>
<a name="line-261"></a><span class='hs-comment'>-- contained within `RecursiveFailure` in `CollectFailures` RecursiveMode.</span>
<a name="line-261"></a><span class='hs-comment'>-- contained within `RecursiveFailure` in `CollectFailures` RecursiveErrorMode.</span>
<a name="line-262"></a><span class='hs-comment'>--</span>
<a name="line-263"></a><span class='hs-comment'>-- Safety/reliability concerns:</span>
<a name="line-264"></a><span class='hs-comment'>--</span>
@ -287,16 +287,16 @@
<a name="line-278"></a><span class='hs-comment'>-- - `DestinationInSource` if destination is contained in source</span>
<a name="line-279"></a><span class='hs-comment'>-- (`HPathIOException`)</span>
<a name="line-280"></a><span class='hs-comment'>--</span>
<a name="line-281"></a><span class='hs-comment'>-- Throws in `FailEarly` RecursiveMode only:</span>
<a name="line-281"></a><span class='hs-comment'>-- Throws in `FailEarly` RecursiveErrorMode only:</span>
<a name="line-282"></a><span class='hs-comment'>--</span>
<a name="line-283"></a><span class='hs-comment'>-- - `PermissionDenied` if output directory is not writable</span>
<a name="line-284"></a><span class='hs-comment'>-- - `InvalidArgument` if source directory is wrong type (symlink)</span>
<a name="line-285"></a><span class='hs-comment'>-- - `InappropriateType` if source directory is wrong type (regular file)</span>
<a name="line-286"></a><span class='hs-comment'>--</span>
<a name="line-287"></a><span class='hs-comment'>-- Throws in `CollectFailures` RecursiveMode only:</span>
<a name="line-287"></a><span class='hs-comment'>-- Throws in `CollectFailures` RecursiveErrorMode only:</span>
<a name="line-288"></a><span class='hs-comment'>--</span>
<a name="line-289"></a><span class='hs-comment'>-- - `RecursiveFailure` if any of the recursive operations that are not</span>
<a name="line-290"></a><span class='hs-comment'>-- part of the top-directory sanity-checks fails (`HPathIOException`)</span>
<a name="line-290"></a><span class='hs-comment'>-- part of the top-directory sanity-checks fail (`HPathIOException`)</span>
<a name="line-291"></a><span class='hs-comment'>--</span>
<a name="line-292"></a><span class='hs-comment'>-- Throws in `Strict` CopyMode only:</span>
<a name="line-293"></a><span class='hs-comment'>--</span>
@ -304,7 +304,7 @@
<a name="line-295"></a><span class='hs-definition'>copyDirRecursive</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-comment'>-- ^ source dir</span>
<a name="line-296"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span> <span class='hs-comment'>-- ^ full destination</span>
<a name="line-297"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>CopyMode</span>
<a name="line-298"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>RecursiveMode</span>
<a name="line-298"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>RecursiveErrorMode</span>
<a name="line-299"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-300"></a><span class='hs-definition'>copyDirRecursive</span> <span class='hs-varid'>fromp</span> <span class='hs-varid'>destdirp</span> <span class='hs-varid'>cm</span> <span class='hs-varid'>rm</span>
<a name="line-301"></a> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
@ -357,7 +357,7 @@
<a name="line-348"></a>
<a name="line-349"></a><a name="recreateSymlink"></a><span class='hs-comment'>-- |Recreate a symlink.</span>
<a name="line-350"></a><span class='hs-comment'>--</span>
<a name="line-351"></a><span class='hs-comment'>-- In `Overwrite` mode only files and empty directories are deleted.</span>
<a name="line-351"></a><span class='hs-comment'>-- In `Overwrite` copy mode only files and empty directories are deleted.</span>
<a name="line-352"></a><span class='hs-comment'>--</span>
<a name="line-353"></a><span class='hs-comment'>-- Safety/reliability concerns:</span>
<a name="line-354"></a><span class='hs-comment'>--</span>
@ -408,7 +408,7 @@
<a name="line-399"></a><span class='hs-comment'>-- examine file types. For a more high-level version, use `easyCopy`</span>
<a name="line-400"></a><span class='hs-comment'>-- instead.</span>
<a name="line-401"></a><span class='hs-comment'>--</span>
<a name="line-402"></a><span class='hs-comment'>-- In `Overwrite` mode only overwrites actual files, not directories.</span>
<a name="line-402"></a><span class='hs-comment'>-- In `Overwrite` copy mode only overwrites actual files, not directories.</span>
<a name="line-403"></a><span class='hs-comment'>--</span>
<a name="line-404"></a><span class='hs-comment'>-- Safety/reliability concerns:</span>
<a name="line-405"></a><span class='hs-comment'>--</span>
@ -523,7 +523,7 @@
<a name="line-514"></a><span class='hs-definition'>easyCopy</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span>
<a name="line-515"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span>
<a name="line-516"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>CopyMode</span>
<a name="line-517"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>RecursiveMode</span>
<a name="line-517"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>RecursiveErrorMode</span>
<a name="line-518"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-519"></a><span class='hs-definition'>easyCopy</span> <span class='hs-varid'>from</span> <span class='hs-varid'>to</span> <span class='hs-varid'>cm</span> <span class='hs-varid'>rm</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-520"></a> <span class='hs-varid'>ftype</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getFileType</span> <span class='hs-varid'>from</span>

View File

@ -19,253 +19,257 @@
<a name="line-10"></a><span class='hs-comment'>-- Traversal and read operations on directories.</span>
<a name="line-11"></a>
<a name="line-12"></a>
<a name="line-13"></a><span class='hs-comment'>{-# LANGUAGE ForeignFunctionInterface #-}</span>
<a name="line-14"></a><span class='hs-comment'>{-# LANGUAGE OverloadedStrings #-}</span>
<a name="line-15"></a><span class='hs-comment'>{-# LANGUAGE PackageImports #-}</span>
<a name="line-16"></a><span class='hs-comment'>{-# LANGUAGE TupleSections #-}</span>
<a name="line-17"></a><span class='hs-comment'>{-# LANGUAGE ViewPatterns #-}</span>
<a name="line-18"></a>
<a name="line-19"></a><span class='hs-comment'>{-# OPTIONS_GHC -Wall #-}</span>
<a name="line-20"></a>
<a name="line-13"></a><span class='hs-comment'>{-# LANGUAGE CPP #-}</span>
<a name="line-14"></a><span class='hs-comment'>{-# LANGUAGE ForeignFunctionInterface #-}</span>
<a name="line-15"></a><span class='hs-comment'>{-# LANGUAGE OverloadedStrings #-}</span>
<a name="line-16"></a><span class='hs-comment'>{-# LANGUAGE PackageImports #-}</span>
<a name="line-17"></a><span class='hs-comment'>{-# LANGUAGE TupleSections #-}</span>
<a name="line-18"></a><span class='hs-comment'>{-# LANGUAGE ViewPatterns #-}</span>
<a name="line-19"></a>
<a name="line-20"></a><span class='hs-comment'>{-# OPTIONS_GHC -Wall #-}</span>
<a name="line-21"></a>
<a name="line-22"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Directory</span><span class='hs-varop'>.</span><span class='hs-conid'>Traversals</span> <span class='hs-layout'>(</span>
<a name="line-23"></a>
<a name="line-24"></a> <span class='hs-varid'>getDirectoryContents</span>
<a name="line-25"></a><span class='hs-layout'>,</span> <span class='hs-varid'>getDirectoryContents'</span>
<a name="line-26"></a>
<a name="line-27"></a><span class='hs-layout'>,</span> <span class='hs-varid'>allDirectoryContents</span>
<a name="line-28"></a><span class='hs-layout'>,</span> <span class='hs-varid'>allDirectoryContents'</span>
<a name="line-29"></a><span class='hs-layout'>,</span> <span class='hs-varid'>traverseDirectory</span>
<a name="line-30"></a>
<a name="line-31"></a><span class='hs-comment'>-- lower-level stuff</span>
<a name="line-32"></a><span class='hs-layout'>,</span> <span class='hs-varid'>readDirEnt</span>
<a name="line-33"></a><span class='hs-layout'>,</span> <span class='hs-varid'>packDirStream</span>
<a name="line-34"></a><span class='hs-layout'>,</span> <span class='hs-varid'>unpackDirStream</span>
<a name="line-35"></a><span class='hs-layout'>,</span> <span class='hs-varid'>fdOpendir</span>
<a name="line-36"></a>
<a name="line-37"></a><span class='hs-layout'>,</span> <span class='hs-varid'>realpath</span>
<a name="line-38"></a><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
<a name="line-39"></a>
<a name="line-40"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Applicative</span>
<a name="line-41"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span>
<a name="line-42"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>FilePath</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varop'>&lt;/&gt;</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-43"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Directory</span><span class='hs-varop'>.</span><span class='hs-conid'>Foreign</span>
<a name="line-44"></a>
<a name="line-45"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Posix</span>
<a name="line-46"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>Error</span>
<a name="line-47"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Exception</span>
<a name="line-48"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span><span class='hs-varop'>.</span><span class='hs-conid'>Char8</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>BS</span>
<a name="line-49"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span><span class='hs-varop'>.</span><span class='hs-conid'>FilePath</span>
<a name="line-50"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Directory</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>PosixBS</span>
<a name="line-51"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Files</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span>
<a name="line-52"></a>
<a name="line-53"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>Unsafe</span>
<a name="line-54"></a><span class='hs-keyword'>import</span> <span class='hs-str'>"unix"</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span> <span class='hs-layout'>(</span><span class='hs-varid'>closeFd</span><span class='hs-layout'>)</span>
<a name="line-55"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Unsafe</span><span class='hs-varop'>.</span><span class='hs-conid'>Coerce</span> <span class='hs-layout'>(</span><span class='hs-varid'>unsafeCoerce</span><span class='hs-layout'>)</span>
<a name="line-56"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>C</span><span class='hs-varop'>.</span><span class='hs-conid'>Error</span>
<a name="line-57"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>C</span><span class='hs-varop'>.</span><span class='hs-conid'>String</span>
<a name="line-58"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>C</span><span class='hs-varop'>.</span><span class='hs-conid'>Types</span>
<a name="line-59"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>Marshal</span><span class='hs-varop'>.</span><span class='hs-conid'>Alloc</span> <span class='hs-layout'>(</span><span class='hs-varid'>alloca</span><span class='hs-layout'>,</span><span class='hs-varid'>allocaBytes</span><span class='hs-layout'>)</span>
<a name="line-60"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span>
<a name="line-61"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>Storable</span>
<a name="line-62"></a>
<a name="line-63"></a>
<a name="line-64"></a>
<a name="line-65"></a>
<a name="line-66"></a><span class='hs-comment'>----------------------------------------------------------</span>
<a name="line-22"></a>
<a name="line-23"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Directory</span><span class='hs-varop'>.</span><span class='hs-conid'>Traversals</span> <span class='hs-layout'>(</span>
<a name="line-24"></a>
<a name="line-25"></a> <span class='hs-varid'>getDirectoryContents</span>
<a name="line-26"></a><span class='hs-layout'>,</span> <span class='hs-varid'>getDirectoryContents'</span>
<a name="line-27"></a>
<a name="line-28"></a><span class='hs-layout'>,</span> <span class='hs-varid'>allDirectoryContents</span>
<a name="line-29"></a><span class='hs-layout'>,</span> <span class='hs-varid'>allDirectoryContents'</span>
<a name="line-30"></a><span class='hs-layout'>,</span> <span class='hs-varid'>traverseDirectory</span>
<a name="line-31"></a>
<a name="line-32"></a><span class='hs-comment'>-- lower-level stuff</span>
<a name="line-33"></a><span class='hs-layout'>,</span> <span class='hs-varid'>readDirEnt</span>
<a name="line-34"></a><span class='hs-layout'>,</span> <span class='hs-varid'>packDirStream</span>
<a name="line-35"></a><span class='hs-layout'>,</span> <span class='hs-varid'>unpackDirStream</span>
<a name="line-36"></a><span class='hs-layout'>,</span> <span class='hs-varid'>fdOpendir</span>
<a name="line-37"></a>
<a name="line-38"></a><span class='hs-layout'>,</span> <span class='hs-varid'>realpath</span>
<a name="line-39"></a><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
<a name="line-40"></a>
<a name="line-41"></a>
<a name="line-42"></a><span class='hs-cpp'>#if __GLASGOW_HASKELL__ &lt; 710</span>
<a name="line-43"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Applicative</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varop'>&lt;$&gt;</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-44"></a><span class='hs-cpp'>#endif</span>
<a name="line-45"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span>
<a name="line-46"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>FilePath</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varop'>&lt;/&gt;</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-47"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Directory</span><span class='hs-varop'>.</span><span class='hs-conid'>Foreign</span>
<a name="line-48"></a>
<a name="line-49"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Posix</span>
<a name="line-50"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>Error</span>
<a name="line-51"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Exception</span>
<a name="line-52"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span><span class='hs-varop'>.</span><span class='hs-conid'>Char8</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>BS</span>
<a name="line-53"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span><span class='hs-varop'>.</span><span class='hs-conid'>FilePath</span>
<a name="line-54"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Directory</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>PosixBS</span>
<a name="line-55"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Files</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span>
<a name="line-56"></a>
<a name="line-57"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>Unsafe</span>
<a name="line-58"></a><span class='hs-keyword'>import</span> <span class='hs-str'>"unix"</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span> <span class='hs-layout'>(</span><span class='hs-varid'>closeFd</span><span class='hs-layout'>)</span>
<a name="line-59"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Unsafe</span><span class='hs-varop'>.</span><span class='hs-conid'>Coerce</span> <span class='hs-layout'>(</span><span class='hs-varid'>unsafeCoerce</span><span class='hs-layout'>)</span>
<a name="line-60"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>C</span><span class='hs-varop'>.</span><span class='hs-conid'>Error</span>
<a name="line-61"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>C</span><span class='hs-varop'>.</span><span class='hs-conid'>String</span>
<a name="line-62"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>C</span><span class='hs-varop'>.</span><span class='hs-conid'>Types</span>
<a name="line-63"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>Marshal</span><span class='hs-varop'>.</span><span class='hs-conid'>Alloc</span> <span class='hs-layout'>(</span><span class='hs-varid'>alloca</span><span class='hs-layout'>,</span><span class='hs-varid'>allocaBytes</span><span class='hs-layout'>)</span>
<a name="line-64"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span>
<a name="line-65"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>Storable</span>
<a name="line-66"></a>
<a name="line-67"></a>
<a name="line-68"></a><a name="allDirectoryContents"></a><span class='hs-comment'>-- | Get all files from a directory and its subdirectories.</span>
<a name="line-69"></a><span class='hs-comment'>--</span>
<a name="line-70"></a><span class='hs-comment'>-- Upon entering a directory, 'allDirectoryContents' will get all entries</span>
<a name="line-71"></a><span class='hs-comment'>-- strictly. However the returned list is lazy in that directories will only</span>
<a name="line-72"></a><span class='hs-comment'>-- be accessed on demand.</span>
<a name="line-68"></a>
<a name="line-69"></a>
<a name="line-70"></a><span class='hs-comment'>----------------------------------------------------------</span>
<a name="line-71"></a>
<a name="line-72"></a><a name="allDirectoryContents"></a><span class='hs-comment'>-- | Get all files from a directory and its subdirectories.</span>
<a name="line-73"></a><span class='hs-comment'>--</span>
<a name="line-74"></a><span class='hs-comment'>-- Follows symbolic links for the input dir.</span>
<a name="line-75"></a><span class='hs-definition'>allDirectoryContents</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>RawFilePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>RawFilePath</span><span class='hs-keyglyph'>]</span>
<a name="line-76"></a><span class='hs-definition'>allDirectoryContents</span> <span class='hs-varid'>topdir</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-77"></a> <span class='hs-varid'>namesAndTypes</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getDirectoryContents</span> <span class='hs-varid'>topdir</span>
<a name="line-78"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>properNames</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>filter</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varop'>`notElem`</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"."</span><span class='hs-layout'>,</span> <span class='hs-str'>".."</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span> <span class='hs-varop'>.</span> <span class='hs-varid'>snd</span><span class='hs-layout'>)</span> <span class='hs-varid'>namesAndTypes</span>
<a name="line-79"></a> <span class='hs-varid'>paths</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>forM</span> <span class='hs-varid'>properNames</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>typ</span><span class='hs-layout'>,</span><span class='hs-varid'>name</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>unsafeInterleaveIO</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-80"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>path</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>topdir</span> <span class='hs-varop'>&lt;/&gt;</span> <span class='hs-varid'>name</span>
<a name="line-81"></a> <span class='hs-keyword'>case</span> <span class='hs-conid'>()</span> <span class='hs-keyword'>of</span>
<a name="line-82"></a> <span class='hs-conid'>()</span> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>typ</span> <span class='hs-varop'>==</span> <span class='hs-varid'>dtDir</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>allDirectoryContents</span> <span class='hs-varid'>path</span>
<a name="line-83"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>typ</span> <span class='hs-varop'>==</span> <span class='hs-varid'>dtUnknown</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-84"></a> <span class='hs-varid'>isDir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>isDirectory</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getFileStatus</span> <span class='hs-varid'>path</span>
<a name="line-85"></a> <span class='hs-keyword'>if</span> <span class='hs-varid'>isDir</span>
<a name="line-86"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>allDirectoryContents</span> <span class='hs-varid'>path</span>
<a name="line-87"></a> <span class='hs-keyword'>else</span> <span class='hs-varid'>return</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>path</span><span class='hs-keyglyph'>]</span>
<a name="line-88"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>path</span><span class='hs-keyglyph'>]</span>
<a name="line-89"></a> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>topdir</span> <span class='hs-conop'>:</span> <span class='hs-varid'>concat</span> <span class='hs-varid'>paths</span><span class='hs-layout'>)</span>
<a name="line-90"></a>
<a name="line-91"></a><a name="allDirectoryContents'"></a><span class='hs-comment'>-- | Get all files from a directory and its subdirectories strictly.</span>
<a name="line-92"></a><span class='hs-comment'>--</span>
<a name="line-93"></a><span class='hs-comment'>-- Follows symbolic links for the input dir.</span>
<a name="line-94"></a><span class='hs-definition'>allDirectoryContents'</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>RawFilePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>RawFilePath</span><span class='hs-keyglyph'>]</span>
<a name="line-95"></a><span class='hs-definition'>allDirectoryContents'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>reverse</span> <span class='hs-varop'>.</span> <span class='hs-varid'>traverseDirectory</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>acc</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>fp</span><span class='hs-conop'>:</span><span class='hs-varid'>acc</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-conid'>[]</span>
<a name="line-96"></a><span class='hs-comment'>-- this uses traverseDirectory because it's more efficient than forcing the</span>
<a name="line-97"></a><span class='hs-comment'>-- lazy version.</span>
<a name="line-98"></a>
<a name="line-99"></a><a name="traverseDirectory"></a><span class='hs-comment'>-- | Recursively apply the 'action' to the parent directory and all</span>
<a name="line-100"></a><span class='hs-comment'>-- files/subdirectories.</span>
<a name="line-101"></a><span class='hs-comment'>--</span>
<a name="line-102"></a><span class='hs-comment'>-- This function allows for memory-efficient traversals.</span>
<a name="line-103"></a><span class='hs-comment'>--</span>
<a name="line-104"></a><span class='hs-comment'>-- Follows symbolic links for the input dir.</span>
<a name="line-105"></a><span class='hs-definition'>traverseDirectory</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>RawFilePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>RawFilePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>s</span>
<a name="line-106"></a><span class='hs-definition'>traverseDirectory</span> <span class='hs-varid'>act</span> <span class='hs-varid'>s0</span> <span class='hs-varid'>topdir</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toploop</span>
<a name="line-107"></a> <span class='hs-keyword'>where</span>
<a name="line-108"></a> <span class='hs-varid'>toploop</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-109"></a> <span class='hs-varid'>isDir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>isDirectory</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getFileStatus</span> <span class='hs-varid'>topdir</span>
<a name="line-110"></a> <span class='hs-varid'>s'</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>act</span> <span class='hs-varid'>s0</span> <span class='hs-varid'>topdir</span>
<a name="line-111"></a> <span class='hs-keyword'>if</span> <span class='hs-varid'>isDir</span> <span class='hs-keyword'>then</span> <span class='hs-varid'>actOnDirContents</span> <span class='hs-varid'>topdir</span> <span class='hs-varid'>s'</span> <span class='hs-varid'>loop</span>
<a name="line-112"></a> <span class='hs-keyword'>else</span> <span class='hs-varid'>return</span> <span class='hs-varid'>s'</span>
<a name="line-113"></a> <span class='hs-varid'>loop</span> <span class='hs-varid'>typ</span> <span class='hs-varid'>path</span> <span class='hs-varid'>acc</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-114"></a> <span class='hs-varid'>isDir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-keyword'>case</span> <span class='hs-conid'>()</span> <span class='hs-keyword'>of</span>
<a name="line-115"></a> <span class='hs-conid'>()</span> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>typ</span> <span class='hs-varop'>==</span> <span class='hs-varid'>dtDir</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>True</span>
<a name="line-116"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>typ</span> <span class='hs-varop'>==</span> <span class='hs-varid'>dtUnknown</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>isDirectory</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getFileStatus</span> <span class='hs-varid'>path</span>
<a name="line-117"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span>
<a name="line-118"></a> <span class='hs-keyword'>if</span> <span class='hs-varid'>isDir</span>
<a name="line-119"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>act</span> <span class='hs-varid'>acc</span> <span class='hs-varid'>path</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>acc'</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>actOnDirContents</span> <span class='hs-varid'>path</span> <span class='hs-varid'>acc'</span> <span class='hs-varid'>loop</span>
<a name="line-120"></a> <span class='hs-keyword'>else</span> <span class='hs-varid'>act</span> <span class='hs-varid'>acc</span> <span class='hs-varid'>path</span>
<a name="line-121"></a>
<a name="line-122"></a><a name="actOnDirContents"></a><span class='hs-definition'>actOnDirContents</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>RawFilePath</span>
<a name="line-123"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>b</span>
<a name="line-124"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>DirType</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>RawFilePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
<a name="line-125"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>b</span>
<a name="line-126"></a><span class='hs-definition'>actOnDirContents</span> <span class='hs-varid'>pathRelToTop</span> <span class='hs-varid'>b</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span>
<a name="line-127"></a> <span class='hs-varid'>modifyIOError</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varop'>`ioeSetFileName`</span> <span class='hs-layout'>(</span><span class='hs-conid'>BS</span><span class='hs-varop'>.</span><span class='hs-varid'>unpack</span> <span class='hs-varid'>pathRelToTop</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varop'>.</span>
<a name="line-128"></a> <span class='hs-layout'>(</span><span class='hs-varop'>`ioeSetLocation`</span> <span class='hs-str'>"findBSTypRel"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span>
<a name="line-129"></a> <span class='hs-varid'>bracket</span>
<a name="line-130"></a> <span class='hs-layout'>(</span><span class='hs-varid'>openDirStream</span> <span class='hs-varid'>pathRelToTop</span><span class='hs-layout'>)</span>
<a name="line-131"></a> <span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-varid'>closeDirStream</span>
<a name="line-132"></a> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>dirp</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>loop</span> <span class='hs-varid'>dirp</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
<a name="line-133"></a> <span class='hs-keyword'>where</span>
<a name="line-134"></a> <span class='hs-varid'>loop</span> <span class='hs-varid'>dirp</span> <span class='hs-varid'>b'</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-135"></a> <span class='hs-layout'>(</span><span class='hs-varid'>typ</span><span class='hs-layout'>,</span><span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readDirEnt</span> <span class='hs-varid'>dirp</span>
<a name="line-136"></a> <span class='hs-keyword'>if</span> <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-varop'>==</span> <span class='hs-str'>""</span><span class='hs-layout'>)</span>
<a name="line-137"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>return</span> <span class='hs-varid'>b'</span>
<a name="line-138"></a> <span class='hs-keyword'>else</span>
<a name="line-139"></a> <span class='hs-keyword'>if</span> <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-varop'>==</span> <span class='hs-str'>"."</span> <span class='hs-varop'>||</span> <span class='hs-varid'>e</span> <span class='hs-varop'>==</span> <span class='hs-str'>".."</span><span class='hs-layout'>)</span>
<a name="line-140"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>loop</span> <span class='hs-varid'>dirp</span> <span class='hs-varid'>b'</span>
<a name="line-141"></a> <span class='hs-keyword'>else</span> <span class='hs-varid'>f</span> <span class='hs-varid'>typ</span> <span class='hs-layout'>(</span><span class='hs-varid'>pathRelToTop</span> <span class='hs-varop'>&lt;/&gt;</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-varid'>b'</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>loop</span> <span class='hs-varid'>dirp</span>
<a name="line-142"></a>
<a name="line-143"></a>
<a name="line-144"></a><span class='hs-comment'>----------------------------------------------------------</span>
<a name="line-145"></a><span class='hs-comment'>-- dodgy stuff</span>
<a name="line-74"></a><span class='hs-comment'>-- Upon entering a directory, 'allDirectoryContents' will get all entries</span>
<a name="line-75"></a><span class='hs-comment'>-- strictly. However the returned list is lazy in that directories will only</span>
<a name="line-76"></a><span class='hs-comment'>-- be accessed on demand.</span>
<a name="line-77"></a><span class='hs-comment'>--</span>
<a name="line-78"></a><span class='hs-comment'>-- Follows symbolic links for the input dir.</span>
<a name="line-79"></a><span class='hs-definition'>allDirectoryContents</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>RawFilePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>RawFilePath</span><span class='hs-keyglyph'>]</span>
<a name="line-80"></a><span class='hs-definition'>allDirectoryContents</span> <span class='hs-varid'>topdir</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-81"></a> <span class='hs-varid'>namesAndTypes</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getDirectoryContents</span> <span class='hs-varid'>topdir</span>
<a name="line-82"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>properNames</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>filter</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varop'>`notElem`</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"."</span><span class='hs-layout'>,</span> <span class='hs-str'>".."</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span> <span class='hs-varop'>.</span> <span class='hs-varid'>snd</span><span class='hs-layout'>)</span> <span class='hs-varid'>namesAndTypes</span>
<a name="line-83"></a> <span class='hs-varid'>paths</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>forM</span> <span class='hs-varid'>properNames</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>typ</span><span class='hs-layout'>,</span><span class='hs-varid'>name</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>unsafeInterleaveIO</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-84"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>path</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>topdir</span> <span class='hs-varop'>&lt;/&gt;</span> <span class='hs-varid'>name</span>
<a name="line-85"></a> <span class='hs-keyword'>case</span> <span class='hs-conid'>()</span> <span class='hs-keyword'>of</span>
<a name="line-86"></a> <span class='hs-conid'>()</span> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>typ</span> <span class='hs-varop'>==</span> <span class='hs-varid'>dtDir</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>allDirectoryContents</span> <span class='hs-varid'>path</span>
<a name="line-87"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>typ</span> <span class='hs-varop'>==</span> <span class='hs-varid'>dtUnknown</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-88"></a> <span class='hs-varid'>isDir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>isDirectory</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getFileStatus</span> <span class='hs-varid'>path</span>
<a name="line-89"></a> <span class='hs-keyword'>if</span> <span class='hs-varid'>isDir</span>
<a name="line-90"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>allDirectoryContents</span> <span class='hs-varid'>path</span>
<a name="line-91"></a> <span class='hs-keyword'>else</span> <span class='hs-varid'>return</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>path</span><span class='hs-keyglyph'>]</span>
<a name="line-92"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>path</span><span class='hs-keyglyph'>]</span>
<a name="line-93"></a> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>topdir</span> <span class='hs-conop'>:</span> <span class='hs-varid'>concat</span> <span class='hs-varid'>paths</span><span class='hs-layout'>)</span>
<a name="line-94"></a>
<a name="line-95"></a><a name="allDirectoryContents'"></a><span class='hs-comment'>-- | Get all files from a directory and its subdirectories strictly.</span>
<a name="line-96"></a><span class='hs-comment'>--</span>
<a name="line-97"></a><span class='hs-comment'>-- Follows symbolic links for the input dir.</span>
<a name="line-98"></a><span class='hs-definition'>allDirectoryContents'</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>RawFilePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>RawFilePath</span><span class='hs-keyglyph'>]</span>
<a name="line-99"></a><span class='hs-definition'>allDirectoryContents'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>reverse</span> <span class='hs-varop'>.</span> <span class='hs-varid'>traverseDirectory</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>acc</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>fp</span><span class='hs-conop'>:</span><span class='hs-varid'>acc</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-conid'>[]</span>
<a name="line-100"></a><span class='hs-comment'>-- this uses traverseDirectory because it's more efficient than forcing the</span>
<a name="line-101"></a><span class='hs-comment'>-- lazy version.</span>
<a name="line-102"></a>
<a name="line-103"></a><a name="traverseDirectory"></a><span class='hs-comment'>-- | Recursively apply the 'action' to the parent directory and all</span>
<a name="line-104"></a><span class='hs-comment'>-- files/subdirectories.</span>
<a name="line-105"></a><span class='hs-comment'>--</span>
<a name="line-106"></a><span class='hs-comment'>-- This function allows for memory-efficient traversals.</span>
<a name="line-107"></a><span class='hs-comment'>--</span>
<a name="line-108"></a><span class='hs-comment'>-- Follows symbolic links for the input dir.</span>
<a name="line-109"></a><span class='hs-definition'>traverseDirectory</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>RawFilePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>RawFilePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>s</span>
<a name="line-110"></a><span class='hs-definition'>traverseDirectory</span> <span class='hs-varid'>act</span> <span class='hs-varid'>s0</span> <span class='hs-varid'>topdir</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toploop</span>
<a name="line-111"></a> <span class='hs-keyword'>where</span>
<a name="line-112"></a> <span class='hs-varid'>toploop</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-113"></a> <span class='hs-varid'>isDir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>isDirectory</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getFileStatus</span> <span class='hs-varid'>topdir</span>
<a name="line-114"></a> <span class='hs-varid'>s'</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>act</span> <span class='hs-varid'>s0</span> <span class='hs-varid'>topdir</span>
<a name="line-115"></a> <span class='hs-keyword'>if</span> <span class='hs-varid'>isDir</span> <span class='hs-keyword'>then</span> <span class='hs-varid'>actOnDirContents</span> <span class='hs-varid'>topdir</span> <span class='hs-varid'>s'</span> <span class='hs-varid'>loop</span>
<a name="line-116"></a> <span class='hs-keyword'>else</span> <span class='hs-varid'>return</span> <span class='hs-varid'>s'</span>
<a name="line-117"></a> <span class='hs-varid'>loop</span> <span class='hs-varid'>typ</span> <span class='hs-varid'>path</span> <span class='hs-varid'>acc</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-118"></a> <span class='hs-varid'>isDir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-keyword'>case</span> <span class='hs-conid'>()</span> <span class='hs-keyword'>of</span>
<a name="line-119"></a> <span class='hs-conid'>()</span> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>typ</span> <span class='hs-varop'>==</span> <span class='hs-varid'>dtDir</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>True</span>
<a name="line-120"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>typ</span> <span class='hs-varop'>==</span> <span class='hs-varid'>dtUnknown</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>isDirectory</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getFileStatus</span> <span class='hs-varid'>path</span>
<a name="line-121"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span>
<a name="line-122"></a> <span class='hs-keyword'>if</span> <span class='hs-varid'>isDir</span>
<a name="line-123"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>act</span> <span class='hs-varid'>acc</span> <span class='hs-varid'>path</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>acc'</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>actOnDirContents</span> <span class='hs-varid'>path</span> <span class='hs-varid'>acc'</span> <span class='hs-varid'>loop</span>
<a name="line-124"></a> <span class='hs-keyword'>else</span> <span class='hs-varid'>act</span> <span class='hs-varid'>acc</span> <span class='hs-varid'>path</span>
<a name="line-125"></a>
<a name="line-126"></a><a name="actOnDirContents"></a><span class='hs-definition'>actOnDirContents</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>RawFilePath</span>
<a name="line-127"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>b</span>
<a name="line-128"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>DirType</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>RawFilePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
<a name="line-129"></a> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>b</span>
<a name="line-130"></a><span class='hs-definition'>actOnDirContents</span> <span class='hs-varid'>pathRelToTop</span> <span class='hs-varid'>b</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span>
<a name="line-131"></a> <span class='hs-varid'>modifyIOError</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varop'>`ioeSetFileName`</span> <span class='hs-layout'>(</span><span class='hs-conid'>BS</span><span class='hs-varop'>.</span><span class='hs-varid'>unpack</span> <span class='hs-varid'>pathRelToTop</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varop'>.</span>
<a name="line-132"></a> <span class='hs-layout'>(</span><span class='hs-varop'>`ioeSetLocation`</span> <span class='hs-str'>"findBSTypRel"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span>
<a name="line-133"></a> <span class='hs-varid'>bracket</span>
<a name="line-134"></a> <span class='hs-layout'>(</span><span class='hs-varid'>openDirStream</span> <span class='hs-varid'>pathRelToTop</span><span class='hs-layout'>)</span>
<a name="line-135"></a> <span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-varid'>closeDirStream</span>
<a name="line-136"></a> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>dirp</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>loop</span> <span class='hs-varid'>dirp</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
<a name="line-137"></a> <span class='hs-keyword'>where</span>
<a name="line-138"></a> <span class='hs-varid'>loop</span> <span class='hs-varid'>dirp</span> <span class='hs-varid'>b'</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-139"></a> <span class='hs-layout'>(</span><span class='hs-varid'>typ</span><span class='hs-layout'>,</span><span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readDirEnt</span> <span class='hs-varid'>dirp</span>
<a name="line-140"></a> <span class='hs-keyword'>if</span> <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-varop'>==</span> <span class='hs-str'>""</span><span class='hs-layout'>)</span>
<a name="line-141"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>return</span> <span class='hs-varid'>b'</span>
<a name="line-142"></a> <span class='hs-keyword'>else</span>
<a name="line-143"></a> <span class='hs-keyword'>if</span> <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-varop'>==</span> <span class='hs-str'>"."</span> <span class='hs-varop'>||</span> <span class='hs-varid'>e</span> <span class='hs-varop'>==</span> <span class='hs-str'>".."</span><span class='hs-layout'>)</span>
<a name="line-144"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>loop</span> <span class='hs-varid'>dirp</span> <span class='hs-varid'>b'</span>
<a name="line-145"></a> <span class='hs-keyword'>else</span> <span class='hs-varid'>f</span> <span class='hs-varid'>typ</span> <span class='hs-layout'>(</span><span class='hs-varid'>pathRelToTop</span> <span class='hs-varop'>&lt;/&gt;</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-varid'>b'</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>loop</span> <span class='hs-varid'>dirp</span>
<a name="line-146"></a>
<a name="line-147"></a><a name="CDir"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>CDir</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>()</span>
<a name="line-148"></a><a name="CDirent"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>CDirent</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>()</span>
<a name="line-149"></a>
<a name="line-150"></a><a name="unpackDirStream"></a><span class='hs-comment'>-- Posix doesn't export DirStream, so to re-use that type we need to use</span>
<a name="line-151"></a><span class='hs-comment'>-- unsafeCoerce. It's just a newtype, so this is a legitimate usage.</span>
<a name="line-152"></a><span class='hs-comment'>-- ugly trick.</span>
<a name="line-153"></a><span class='hs-definition'>unpackDirStream</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DirStream</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>CDir</span>
<a name="line-154"></a><span class='hs-definition'>unpackDirStream</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>unsafeCoerce</span>
<a name="line-155"></a>
<a name="line-156"></a><a name="packDirStream"></a><span class='hs-definition'>packDirStream</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>CDir</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DirStream</span>
<a name="line-157"></a><span class='hs-definition'>packDirStream</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>unsafeCoerce</span>
<a name="line-158"></a>
<a name="line-159"></a><span class='hs-comment'>-- the __hscore_* functions are defined in the unix package. We can import them and let</span>
<a name="line-160"></a><span class='hs-comment'>-- the linker figure it out.</span>
<a name="line-161"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"__hscore_readdir"</span>
<a name="line-162"></a> <span class='hs-varid'>c_readdir</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>CDir</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Ptr</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>CDirent</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span>
<a name="line-163"></a>
<a name="line-164"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"__hscore_free_dirent"</span>
<a name="line-165"></a> <span class='hs-varid'>c_freeDirEnt</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>CDirent</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-166"></a>
<a name="line-167"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"__hscore_d_name"</span>
<a name="line-168"></a> <span class='hs-varid'>c_name</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>CDirent</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>CString</span>
<a name="line-169"></a>
<a name="line-170"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"__posixdir_d_type"</span>
<a name="line-171"></a> <span class='hs-varid'>c_type</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>CDirent</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>DirType</span>
<a name="line-172"></a>
<a name="line-173"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-str'>"realpath"</span>
<a name="line-174"></a> <span class='hs-varid'>c_realpath</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>CString</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>CString</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>CString</span>
<a name="line-175"></a>
<a name="line-176"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"fdopendir"</span>
<a name="line-177"></a> <span class='hs-varid'>c_fdopendir</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Fd</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span>
<a name="line-178"></a>
<a name="line-179"></a><span class='hs-comment'>----------------------------------------------------------</span>
<a name="line-180"></a><span class='hs-comment'>-- less dodgy but still lower-level</span>
<a name="line-181"></a>
<a name="line-147"></a>
<a name="line-148"></a><span class='hs-comment'>----------------------------------------------------------</span>
<a name="line-149"></a><span class='hs-comment'>-- dodgy stuff</span>
<a name="line-150"></a>
<a name="line-151"></a><a name="CDir"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>CDir</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>()</span>
<a name="line-152"></a><a name="CDirent"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>CDirent</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>()</span>
<a name="line-153"></a>
<a name="line-154"></a><a name="unpackDirStream"></a><span class='hs-comment'>-- Posix doesn't export DirStream, so to re-use that type we need to use</span>
<a name="line-155"></a><span class='hs-comment'>-- unsafeCoerce. It's just a newtype, so this is a legitimate usage.</span>
<a name="line-156"></a><span class='hs-comment'>-- ugly trick.</span>
<a name="line-157"></a><span class='hs-definition'>unpackDirStream</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DirStream</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>CDir</span>
<a name="line-158"></a><span class='hs-definition'>unpackDirStream</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>unsafeCoerce</span>
<a name="line-159"></a>
<a name="line-160"></a><a name="packDirStream"></a><span class='hs-definition'>packDirStream</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>CDir</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DirStream</span>
<a name="line-161"></a><span class='hs-definition'>packDirStream</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>unsafeCoerce</span>
<a name="line-162"></a>
<a name="line-163"></a><span class='hs-comment'>-- the __hscore_* functions are defined in the unix package. We can import them and let</span>
<a name="line-164"></a><span class='hs-comment'>-- the linker figure it out.</span>
<a name="line-165"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"__hscore_readdir"</span>
<a name="line-166"></a> <span class='hs-varid'>c_readdir</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>CDir</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Ptr</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>CDirent</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span>
<a name="line-167"></a>
<a name="line-168"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"__hscore_free_dirent"</span>
<a name="line-169"></a> <span class='hs-varid'>c_freeDirEnt</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>CDirent</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-170"></a>
<a name="line-171"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"__hscore_d_name"</span>
<a name="line-172"></a> <span class='hs-varid'>c_name</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>CDirent</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>CString</span>
<a name="line-173"></a>
<a name="line-174"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"__posixdir_d_type"</span>
<a name="line-175"></a> <span class='hs-varid'>c_type</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>CDirent</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>DirType</span>
<a name="line-176"></a>
<a name="line-177"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-str'>"realpath"</span>
<a name="line-178"></a> <span class='hs-varid'>c_realpath</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>CString</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>CString</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>CString</span>
<a name="line-179"></a>
<a name="line-180"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"fdopendir"</span>
<a name="line-181"></a> <span class='hs-varid'>c_fdopendir</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Fd</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span>
<a name="line-182"></a>
<a name="line-183"></a><a name="readDirEnt"></a><span class='hs-definition'>readDirEnt</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DirStream</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>DirType</span><span class='hs-layout'>,</span> <span class='hs-conid'>RawFilePath</span><span class='hs-layout'>)</span>
<a name="line-184"></a><span class='hs-definition'>readDirEnt</span> <span class='hs-layout'>(</span><span class='hs-varid'>unpackDirStream</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>dirp</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-185"></a> <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>ptr_dEnt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>loop</span> <span class='hs-varid'>ptr_dEnt</span>
<a name="line-186"></a> <span class='hs-keyword'>where</span>
<a name="line-187"></a> <span class='hs-varid'>loop</span> <span class='hs-varid'>ptr_dEnt</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-188"></a> <span class='hs-varid'>resetErrno</span>
<a name="line-189"></a> <span class='hs-varid'>r</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>c_readdir</span> <span class='hs-varid'>dirp</span> <span class='hs-varid'>ptr_dEnt</span>
<a name="line-190"></a> <span class='hs-keyword'>if</span> <span class='hs-layout'>(</span><span class='hs-varid'>r</span> <span class='hs-varop'>==</span> <span class='hs-num'>0</span><span class='hs-layout'>)</span>
<a name="line-191"></a> <span class='hs-keyword'>then</span> <span class='hs-keyword'>do</span>
<a name="line-192"></a> <span class='hs-varid'>dEnt</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peek</span> <span class='hs-varid'>ptr_dEnt</span>
<a name="line-193"></a> <span class='hs-keyword'>if</span> <span class='hs-layout'>(</span><span class='hs-varid'>dEnt</span> <span class='hs-varop'>==</span> <span class='hs-varid'>nullPtr</span><span class='hs-layout'>)</span>
<a name="line-194"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>dtUnknown</span><span class='hs-layout'>,</span><span class='hs-conid'>BS</span><span class='hs-varop'>.</span><span class='hs-varid'>empty</span><span class='hs-layout'>)</span>
<a name="line-195"></a> <span class='hs-keyword'>else</span> <span class='hs-keyword'>do</span>
<a name="line-196"></a> <span class='hs-varid'>dName</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>c_name</span> <span class='hs-varid'>dEnt</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>peekFilePath</span>
<a name="line-197"></a> <span class='hs-varid'>dType</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>c_type</span> <span class='hs-varid'>dEnt</span>
<a name="line-198"></a> <span class='hs-varid'>c_freeDirEnt</span> <span class='hs-varid'>dEnt</span>
<a name="line-199"></a> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>dType</span><span class='hs-layout'>,</span> <span class='hs-varid'>dName</span><span class='hs-layout'>)</span>
<a name="line-200"></a> <span class='hs-keyword'>else</span> <span class='hs-keyword'>do</span>
<a name="line-201"></a> <span class='hs-varid'>errno</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getErrno</span>
<a name="line-202"></a> <span class='hs-keyword'>if</span> <span class='hs-layout'>(</span><span class='hs-varid'>errno</span> <span class='hs-varop'>==</span> <span class='hs-varid'>eINTR</span><span class='hs-layout'>)</span>
<a name="line-203"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>loop</span> <span class='hs-varid'>ptr_dEnt</span>
<a name="line-204"></a> <span class='hs-keyword'>else</span> <span class='hs-keyword'>do</span>
<a name="line-205"></a> <span class='hs-keyword'>let</span> <span class='hs-layout'>(</span><span class='hs-conid'>Errno</span> <span class='hs-varid'>eo</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>errno</span>
<a name="line-206"></a> <span class='hs-keyword'>if</span> <span class='hs-layout'>(</span><span class='hs-varid'>eo</span> <span class='hs-varop'>==</span> <span class='hs-num'>0</span><span class='hs-layout'>)</span>
<a name="line-207"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>dtUnknown</span><span class='hs-layout'>,</span><span class='hs-conid'>BS</span><span class='hs-varop'>.</span><span class='hs-varid'>empty</span><span class='hs-layout'>)</span>
<a name="line-208"></a> <span class='hs-keyword'>else</span> <span class='hs-varid'>throwErrno</span> <span class='hs-str'>"readDirEnt"</span>
<a name="line-209"></a>
<a name="line-210"></a>
<a name="line-211"></a><a name="getDirectoryContents"></a><span class='hs-comment'>-- |Gets all directory contents (not recursively).</span>
<a name="line-212"></a><span class='hs-definition'>getDirectoryContents</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>RawFilePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-conid'>DirType</span><span class='hs-layout'>,</span> <span class='hs-conid'>RawFilePath</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span>
<a name="line-213"></a><span class='hs-definition'>getDirectoryContents</span> <span class='hs-varid'>path</span> <span class='hs-keyglyph'>=</span>
<a name="line-214"></a> <span class='hs-varid'>modifyIOError</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varop'>`ioeSetFileName`</span> <span class='hs-layout'>(</span><span class='hs-conid'>BS</span><span class='hs-varop'>.</span><span class='hs-varid'>unpack</span> <span class='hs-varid'>path</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varop'>.</span>
<a name="line-215"></a> <span class='hs-layout'>(</span><span class='hs-varop'>`ioeSetLocation`</span> <span class='hs-str'>"System.Posix.Directory.Traversals.getDirectoryContents"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span>
<a name="line-216"></a> <span class='hs-varid'>bracket</span>
<a name="line-217"></a> <span class='hs-layout'>(</span><span class='hs-conid'>PosixBS</span><span class='hs-varop'>.</span><span class='hs-varid'>openDirStream</span> <span class='hs-varid'>path</span><span class='hs-layout'>)</span>
<a name="line-218"></a> <span class='hs-conid'>PosixBS</span><span class='hs-varop'>.</span><span class='hs-varid'>closeDirStream</span>
<a name="line-219"></a> <span class='hs-sel'>_dirloop</span>
<a name="line-220"></a>
<a name="line-221"></a>
<a name="line-222"></a><a name="fdOpendir"></a><span class='hs-comment'>-- |Binding to @fdopendir(3)@.</span>
<a name="line-223"></a><span class='hs-definition'>fdOpendir</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Fd</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>DirStream</span>
<a name="line-224"></a><span class='hs-definition'>fdOpendir</span> <span class='hs-varid'>fd</span> <span class='hs-keyglyph'>=</span>
<a name="line-225"></a> <span class='hs-varid'>packDirStream</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>throwErrnoIfNull</span> <span class='hs-str'>"fdOpendir"</span> <span class='hs-layout'>(</span><span class='hs-varid'>c_fdopendir</span> <span class='hs-varid'>fd</span><span class='hs-layout'>)</span>
<a name="line-226"></a>
<a name="line-227"></a>
<a name="line-228"></a><a name="getDirectoryContents'"></a><span class='hs-comment'>-- |Like `getDirectoryContents` except for a file descriptor.</span>
<a name="line-229"></a><span class='hs-comment'>--</span>
<a name="line-230"></a><span class='hs-comment'>-- To avoid complicated error checks, the file descriptor is</span>
<a name="line-231"></a><span class='hs-comment'>-- __always__ closed, even if `fdOpendir` fails. Usually, this</span>
<a name="line-232"></a><span class='hs-comment'>-- only happens on successful `fdOpendir` and after the directory</span>
<a name="line-233"></a><span class='hs-comment'>-- stream is closed. Also see the manpage of @fdopendir(3)@ for</span>
<a name="line-234"></a><span class='hs-comment'>-- more details.</span>
<a name="line-235"></a><span class='hs-definition'>getDirectoryContents'</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Fd</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-conid'>DirType</span><span class='hs-layout'>,</span> <span class='hs-conid'>RawFilePath</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span>
<a name="line-236"></a><span class='hs-definition'>getDirectoryContents'</span> <span class='hs-varid'>fd</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-237"></a> <span class='hs-varid'>dirstream</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fdOpendir</span> <span class='hs-varid'>fd</span> <span class='hs-varop'>`catchIOError`</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-238"></a> <span class='hs-varid'>closeFd</span> <span class='hs-varid'>fd</span>
<a name="line-239"></a> <span class='hs-varid'>ioError</span> <span class='hs-varid'>e</span>
<a name="line-240"></a> <span class='hs-comment'>-- closeDirStream closes the filedescriptor</span>
<a name="line-241"></a> <span class='hs-varid'>finally</span> <span class='hs-layout'>(</span><span class='hs-sel'>_dirloop</span> <span class='hs-varid'>dirstream</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>PosixBS</span><span class='hs-varop'>.</span><span class='hs-varid'>closeDirStream</span> <span class='hs-varid'>dirstream</span><span class='hs-layout'>)</span>
<a name="line-242"></a>
<a name="line-243"></a>
<a name="line-244"></a><span class='hs-sel'>_dirloop</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DirStream</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-conid'>DirType</span><span class='hs-layout'>,</span> <span class='hs-conid'>RawFilePath</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span>
<a name="line-245"></a><span class='hs-comment'>{-# INLINE _dirloop #-}</span>
<a name="line-246"></a><span class='hs-sel'>_dirloop</span> <span class='hs-varid'>dirp</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-247"></a> <span class='hs-varid'>t</span><span class='hs-keyglyph'>@</span><span class='hs-layout'>(</span><span class='hs-sel'>_typ</span><span class='hs-layout'>,</span><span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readDirEnt</span> <span class='hs-varid'>dirp</span>
<a name="line-248"></a> <span class='hs-keyword'>if</span> <span class='hs-conid'>BS</span><span class='hs-varop'>.</span><span class='hs-varid'>null</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>then</span> <span class='hs-varid'>return</span> <span class='hs-conid'>[]</span> <span class='hs-keyword'>else</span> <span class='hs-keyword'>do</span>
<a name="line-249"></a> <span class='hs-varid'>es</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-sel'>_dirloop</span> <span class='hs-varid'>dirp</span>
<a name="line-250"></a> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>t</span><span class='hs-conop'>:</span><span class='hs-varid'>es</span><span class='hs-layout'>)</span>
<a name="line-251"></a>
<a name="line-252"></a>
<a name="line-253"></a><a name="realpath"></a><span class='hs-comment'>-- | return the canonicalized absolute pathname</span>
<a name="line-254"></a><span class='hs-comment'>--</span>
<a name="line-255"></a><span class='hs-comment'>-- like canonicalizePath, but uses @realpath(3)@</span>
<a name="line-256"></a><span class='hs-definition'>realpath</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>RawFilePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>RawFilePath</span>
<a name="line-257"></a><span class='hs-definition'>realpath</span> <span class='hs-varid'>inp</span> <span class='hs-keyglyph'>=</span>
<a name="line-258"></a> <span class='hs-varid'>allocaBytes</span> <span class='hs-varid'>pathMax</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>tmp</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-259"></a> <span class='hs-varid'>void</span> <span class='hs-varop'>$</span> <span class='hs-conid'>BS</span><span class='hs-varop'>.</span><span class='hs-varid'>useAsCString</span> <span class='hs-varid'>inp</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>cstr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>throwErrnoIfNull</span> <span class='hs-str'>"realpath"</span> <span class='hs-varop'>$</span> <span class='hs-varid'>c_realpath</span> <span class='hs-varid'>cstr</span> <span class='hs-varid'>tmp</span>
<a name="line-260"></a> <span class='hs-conid'>BS</span><span class='hs-varop'>.</span><span class='hs-varid'>packCString</span> <span class='hs-varid'>tmp</span>
<a name="line-183"></a><span class='hs-comment'>----------------------------------------------------------</span>
<a name="line-184"></a><span class='hs-comment'>-- less dodgy but still lower-level</span>
<a name="line-185"></a>
<a name="line-186"></a>
<a name="line-187"></a><a name="readDirEnt"></a><span class='hs-definition'>readDirEnt</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DirStream</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>DirType</span><span class='hs-layout'>,</span> <span class='hs-conid'>RawFilePath</span><span class='hs-layout'>)</span>
<a name="line-188"></a><span class='hs-definition'>readDirEnt</span> <span class='hs-layout'>(</span><span class='hs-varid'>unpackDirStream</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>dirp</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-189"></a> <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>ptr_dEnt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>loop</span> <span class='hs-varid'>ptr_dEnt</span>
<a name="line-190"></a> <span class='hs-keyword'>where</span>
<a name="line-191"></a> <span class='hs-varid'>loop</span> <span class='hs-varid'>ptr_dEnt</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-192"></a> <span class='hs-varid'>resetErrno</span>
<a name="line-193"></a> <span class='hs-varid'>r</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>c_readdir</span> <span class='hs-varid'>dirp</span> <span class='hs-varid'>ptr_dEnt</span>
<a name="line-194"></a> <span class='hs-keyword'>if</span> <span class='hs-layout'>(</span><span class='hs-varid'>r</span> <span class='hs-varop'>==</span> <span class='hs-num'>0</span><span class='hs-layout'>)</span>
<a name="line-195"></a> <span class='hs-keyword'>then</span> <span class='hs-keyword'>do</span>
<a name="line-196"></a> <span class='hs-varid'>dEnt</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peek</span> <span class='hs-varid'>ptr_dEnt</span>
<a name="line-197"></a> <span class='hs-keyword'>if</span> <span class='hs-layout'>(</span><span class='hs-varid'>dEnt</span> <span class='hs-varop'>==</span> <span class='hs-varid'>nullPtr</span><span class='hs-layout'>)</span>
<a name="line-198"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>dtUnknown</span><span class='hs-layout'>,</span><span class='hs-conid'>BS</span><span class='hs-varop'>.</span><span class='hs-varid'>empty</span><span class='hs-layout'>)</span>
<a name="line-199"></a> <span class='hs-keyword'>else</span> <span class='hs-keyword'>do</span>
<a name="line-200"></a> <span class='hs-varid'>dName</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>c_name</span> <span class='hs-varid'>dEnt</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>peekFilePath</span>
<a name="line-201"></a> <span class='hs-varid'>dType</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>c_type</span> <span class='hs-varid'>dEnt</span>
<a name="line-202"></a> <span class='hs-varid'>c_freeDirEnt</span> <span class='hs-varid'>dEnt</span>
<a name="line-203"></a> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>dType</span><span class='hs-layout'>,</span> <span class='hs-varid'>dName</span><span class='hs-layout'>)</span>
<a name="line-204"></a> <span class='hs-keyword'>else</span> <span class='hs-keyword'>do</span>
<a name="line-205"></a> <span class='hs-varid'>errno</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getErrno</span>
<a name="line-206"></a> <span class='hs-keyword'>if</span> <span class='hs-layout'>(</span><span class='hs-varid'>errno</span> <span class='hs-varop'>==</span> <span class='hs-varid'>eINTR</span><span class='hs-layout'>)</span>
<a name="line-207"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>loop</span> <span class='hs-varid'>ptr_dEnt</span>
<a name="line-208"></a> <span class='hs-keyword'>else</span> <span class='hs-keyword'>do</span>
<a name="line-209"></a> <span class='hs-keyword'>let</span> <span class='hs-layout'>(</span><span class='hs-conid'>Errno</span> <span class='hs-varid'>eo</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>errno</span>
<a name="line-210"></a> <span class='hs-keyword'>if</span> <span class='hs-layout'>(</span><span class='hs-varid'>eo</span> <span class='hs-varop'>==</span> <span class='hs-num'>0</span><span class='hs-layout'>)</span>
<a name="line-211"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>dtUnknown</span><span class='hs-layout'>,</span><span class='hs-conid'>BS</span><span class='hs-varop'>.</span><span class='hs-varid'>empty</span><span class='hs-layout'>)</span>
<a name="line-212"></a> <span class='hs-keyword'>else</span> <span class='hs-varid'>throwErrno</span> <span class='hs-str'>"readDirEnt"</span>
<a name="line-213"></a>
<a name="line-214"></a>
<a name="line-215"></a><a name="getDirectoryContents"></a><span class='hs-comment'>-- |Gets all directory contents (not recursively).</span>
<a name="line-216"></a><span class='hs-definition'>getDirectoryContents</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>RawFilePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-conid'>DirType</span><span class='hs-layout'>,</span> <span class='hs-conid'>RawFilePath</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span>
<a name="line-217"></a><span class='hs-definition'>getDirectoryContents</span> <span class='hs-varid'>path</span> <span class='hs-keyglyph'>=</span>
<a name="line-218"></a> <span class='hs-varid'>modifyIOError</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varop'>`ioeSetFileName`</span> <span class='hs-layout'>(</span><span class='hs-conid'>BS</span><span class='hs-varop'>.</span><span class='hs-varid'>unpack</span> <span class='hs-varid'>path</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varop'>.</span>
<a name="line-219"></a> <span class='hs-layout'>(</span><span class='hs-varop'>`ioeSetLocation`</span> <span class='hs-str'>"System.Posix.Directory.Traversals.getDirectoryContents"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span>
<a name="line-220"></a> <span class='hs-varid'>bracket</span>
<a name="line-221"></a> <span class='hs-layout'>(</span><span class='hs-conid'>PosixBS</span><span class='hs-varop'>.</span><span class='hs-varid'>openDirStream</span> <span class='hs-varid'>path</span><span class='hs-layout'>)</span>
<a name="line-222"></a> <span class='hs-conid'>PosixBS</span><span class='hs-varop'>.</span><span class='hs-varid'>closeDirStream</span>
<a name="line-223"></a> <span class='hs-sel'>_dirloop</span>
<a name="line-224"></a>
<a name="line-225"></a>
<a name="line-226"></a><a name="fdOpendir"></a><span class='hs-comment'>-- |Binding to @fdopendir(3)@.</span>
<a name="line-227"></a><span class='hs-definition'>fdOpendir</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Fd</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>DirStream</span>
<a name="line-228"></a><span class='hs-definition'>fdOpendir</span> <span class='hs-varid'>fd</span> <span class='hs-keyglyph'>=</span>
<a name="line-229"></a> <span class='hs-varid'>packDirStream</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>throwErrnoIfNull</span> <span class='hs-str'>"fdOpendir"</span> <span class='hs-layout'>(</span><span class='hs-varid'>c_fdopendir</span> <span class='hs-varid'>fd</span><span class='hs-layout'>)</span>
<a name="line-230"></a>
<a name="line-231"></a>
<a name="line-232"></a><a name="getDirectoryContents'"></a><span class='hs-comment'>-- |Like `getDirectoryContents` except for a file descriptor.</span>
<a name="line-233"></a><span class='hs-comment'>--</span>
<a name="line-234"></a><span class='hs-comment'>-- To avoid complicated error checks, the file descriptor is</span>
<a name="line-235"></a><span class='hs-comment'>-- __always__ closed, even if `fdOpendir` fails. Usually, this</span>
<a name="line-236"></a><span class='hs-comment'>-- only happens on successful `fdOpendir` and after the directory</span>
<a name="line-237"></a><span class='hs-comment'>-- stream is closed. Also see the manpage of @fdopendir(3)@ for</span>
<a name="line-238"></a><span class='hs-comment'>-- more details.</span>
<a name="line-239"></a><span class='hs-definition'>getDirectoryContents'</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Fd</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-conid'>DirType</span><span class='hs-layout'>,</span> <span class='hs-conid'>RawFilePath</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span>
<a name="line-240"></a><span class='hs-definition'>getDirectoryContents'</span> <span class='hs-varid'>fd</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-241"></a> <span class='hs-varid'>dirstream</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fdOpendir</span> <span class='hs-varid'>fd</span> <span class='hs-varop'>`catchIOError`</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-242"></a> <span class='hs-varid'>closeFd</span> <span class='hs-varid'>fd</span>
<a name="line-243"></a> <span class='hs-varid'>ioError</span> <span class='hs-varid'>e</span>
<a name="line-244"></a> <span class='hs-comment'>-- closeDirStream closes the filedescriptor</span>
<a name="line-245"></a> <span class='hs-varid'>finally</span> <span class='hs-layout'>(</span><span class='hs-sel'>_dirloop</span> <span class='hs-varid'>dirstream</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>PosixBS</span><span class='hs-varop'>.</span><span class='hs-varid'>closeDirStream</span> <span class='hs-varid'>dirstream</span><span class='hs-layout'>)</span>
<a name="line-246"></a>
<a name="line-247"></a>
<a name="line-248"></a><span class='hs-sel'>_dirloop</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DirStream</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-conid'>DirType</span><span class='hs-layout'>,</span> <span class='hs-conid'>RawFilePath</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span>
<a name="line-249"></a><span class='hs-comment'>{-# INLINE _dirloop #-}</span>
<a name="line-250"></a><span class='hs-sel'>_dirloop</span> <span class='hs-varid'>dirp</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-251"></a> <span class='hs-varid'>t</span><span class='hs-keyglyph'>@</span><span class='hs-layout'>(</span><span class='hs-sel'>_typ</span><span class='hs-layout'>,</span><span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readDirEnt</span> <span class='hs-varid'>dirp</span>
<a name="line-252"></a> <span class='hs-keyword'>if</span> <span class='hs-conid'>BS</span><span class='hs-varop'>.</span><span class='hs-varid'>null</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>then</span> <span class='hs-varid'>return</span> <span class='hs-conid'>[]</span> <span class='hs-keyword'>else</span> <span class='hs-keyword'>do</span>
<a name="line-253"></a> <span class='hs-varid'>es</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-sel'>_dirloop</span> <span class='hs-varid'>dirp</span>
<a name="line-254"></a> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>t</span><span class='hs-conop'>:</span><span class='hs-varid'>es</span><span class='hs-layout'>)</span>
<a name="line-255"></a>
<a name="line-256"></a>
<a name="line-257"></a><a name="realpath"></a><span class='hs-comment'>-- | return the canonicalized absolute pathname</span>
<a name="line-258"></a><span class='hs-comment'>--</span>
<a name="line-259"></a><span class='hs-comment'>-- like canonicalizePath, but uses @realpath(3)@</span>
<a name="line-260"></a><span class='hs-definition'>realpath</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>RawFilePath</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>RawFilePath</span>
<a name="line-261"></a><span class='hs-definition'>realpath</span> <span class='hs-varid'>inp</span> <span class='hs-keyglyph'>=</span>
<a name="line-262"></a> <span class='hs-varid'>allocaBytes</span> <span class='hs-varid'>pathMax</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>tmp</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-263"></a> <span class='hs-varid'>void</span> <span class='hs-varop'>$</span> <span class='hs-conid'>BS</span><span class='hs-varop'>.</span><span class='hs-varid'>useAsCString</span> <span class='hs-varid'>inp</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>cstr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>throwErrnoIfNull</span> <span class='hs-str'>"realpath"</span> <span class='hs-varop'>$</span> <span class='hs-varid'>c_realpath</span> <span class='hs-varid'>cstr</span> <span class='hs-varid'>tmp</span>
<a name="line-264"></a> <span class='hs-conid'>BS</span><span class='hs-varop'>.</span><span class='hs-varid'>packCString</span> <span class='hs-varid'>tmp</span>
</pre></body>
</html>