<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!--Rendered using the Haskell Html Library v0.2--> <HTML ><HEAD ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" ><TITLE >Workaround</TITLE ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" ><SCRIPT SRC="haddock-util.js" TYPE="text/javascript" ></SCRIPT ><SCRIPT TYPE="text/javascript" >window.onload = function () {setSynopsis("mini_Workaround.html")};</SCRIPT ></HEAD ><BODY ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="topbar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title" >darcs-2.4.4: a distributed, interactive, smart revision control system</TD ><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD ><TD CLASS="topbut" ><A HREF="doc-index.html" >Index</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="modulebar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><FONT SIZE="6" >Workaround</FONT ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Synopsis</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="#v%3ArenameFile" >renameFile</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AIO" >IO</A > ()</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsetExecutable" >setExecutable</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Bool.html#t%3ABool" >Bool</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AIO" >IO</A > <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetCurrentDirectory" >getCurrentDirectory</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AIO" >IO</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AFilePath" >FilePath</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AinstallHandler" >installHandler</A > :: <A HREF="Workaround.html#t%3ASignal" >Signal</A > -> <A HREF="Workaround.html#t%3AHandler" >Handler</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="/usr/share/doc/ghc/html/libraries/unix-2.4.0.0/System-Posix-Signals.html#t%3ASignalSet" >SignalSet</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AIO" >IO</A > <A HREF="Workaround.html#t%3AHandler" >Handler</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AraiseSignal" >raiseSignal</A > :: <A HREF="Workaround.html#t%3ASignal" >Signal</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AIO" >IO</A > ()</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AHandler" >Handler</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3ADefault" >Default</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AIgnore" >Ignore</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ACatch" >Catch</A > (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AIO" >IO</A > ())</TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ACatchOnce" >CatchOnce</A > (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AIO" >IO</A > ())</TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ASignal" >Signal</A > = <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsigINT" >sigINT</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsigHUP" >sigHUP</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsigABRT" >sigABRT</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsigALRM" >sigALRM</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsigTERM" >sigTERM</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsigPIPE" >sigPIPE</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Documentation</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:renameFile" ><A NAME="v%3ArenameFile" ></A ></A ><B >renameFile</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AIO" >IO</A > ()</TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><TT ><A HREF="Workaround.html#v%3ArenameFile" >renameFile</A ></TT > old new</TT > changes the name of an existing file system object from <EM >old</EM > to <EM >new</EM >. If the <EM >new</EM > object already exists, it is atomically replaced by the <EM >old</EM > object. Neither path may refer to an existing directory. A conformant implementation need not support renaming files in all situations (e.g. renaming across different physical devices), but the constraints must be documented. </P ><P >The operation may fail with: </P ><UL ><LI > <TT >HardwareFault</TT > A physical I/O error has occurred. <TT >[EIO]</TT > </LI ><LI > <TT >InvalidArgument</TT > Either operand is not a valid file name. <TT >[ENAMETOOLONG, ELOOP]</TT > </LI ><LI > <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO-Error.html#v%3AisDoesNotExistError" >isDoesNotExistError</A ></TT > / <TT >NoSuchThing</TT > The original file does not exist, or there is no path to the target. <TT >[ENOENT, ENOTDIR]</TT > </LI ><LI > <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO-Error.html#v%3AisPermissionError" >isPermissionError</A ></TT > / <TT >PermissionDenied</TT > The process has insufficient privileges to perform the operation. <TT >[EROFS, EACCES, EPERM]</TT > </LI ><LI > <TT >ResourceExhausted</TT > Insufficient resources are available to perform the operation. <TT >[EDQUOT, ENOSPC, ENOMEM, EMLINK]</TT > </LI ><LI > <TT >UnsatisfiedConstraints</TT > Implementation-dependent constraints are not satisfied. <TT >[EBUSY]</TT > </LI ><LI > <TT >UnsupportedOperation</TT > The implementation does not support renaming in this situation. <TT >[EXDEV]</TT > </LI ><LI > <TT >InappropriateType</TT > Either path refers to an existing directory. <TT >[ENOTDIR, EISDIR, EINVAL, EEXIST, ENOTEMPTY]</TT > </LI ></UL ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:setExecutable" ><A NAME="v%3AsetExecutable" ></A ></A ><B >setExecutable</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Bool.html#t%3ABool" >Bool</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AIO" >IO</A > <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getCurrentDirectory" ><A NAME="v%3AgetCurrentDirectory" ></A ></A ><B >getCurrentDirectory</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AIO" >IO</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AFilePath" >FilePath</A ></TD ></TR ><TR ><TD CLASS="doc" ><P >If the operating system has a notion of current directories, <TT ><A HREF="Workaround.html#v%3AgetCurrentDirectory" >getCurrentDirectory</A ></TT > returns an absolute path to the current directory of the calling process. </P ><P >The operation may fail with: </P ><UL ><LI > <TT >HardwareFault</TT > A physical I/O error has occurred. <TT >[EIO]</TT > </LI ><LI > <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO-Error.html#v%3AisDoesNotExistError" >isDoesNotExistError</A ></TT > / <TT >NoSuchThing</TT > There is no path referring to the current directory. <TT >[EPERM, ENOENT, ESTALE...]</TT > </LI ><LI > <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO-Error.html#v%3AisPermissionError" >isPermissionError</A ></TT > / <TT >PermissionDenied</TT > The process has insufficient privileges to perform the operation. <TT >[EACCES]</TT > </LI ><LI > <TT >ResourceExhausted</TT > Insufficient resources are available to perform the operation. </LI ><LI > <TT >UnsupportedOperation</TT > The operating system has no notion of current directory. </LI ></UL ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:installHandler" ><A NAME="v%3AinstallHandler" ></A ></A ><B >installHandler</B ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="arg" >:: <A HREF="Workaround.html#t%3ASignal" >Signal</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="Workaround.html#t%3AHandler" >Handler</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="/usr/share/doc/ghc/html/libraries/unix-2.4.0.0/System-Posix-Signals.html#t%3ASignalSet" >SignalSet</A ></TD ><TD CLASS="rdoc" >other signals to block </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AIO" >IO</A > <A HREF="Workaround.html#t%3AHandler" >Handler</A ></TD ><TD CLASS="rdoc" >old handler </TD ></TR ><TR ><TD CLASS="ndoc" COLSPAN="2" ><TT >installHandler int handler iset</TT > calls <TT >sigaction</TT > to install an interrupt handler for signal <TT >int</TT >. If <TT >handler</TT > is <TT >Default</TT >, <TT >SIG_DFL</TT > is installed; if <TT >handler</TT > is <TT >Ignore</TT >, <TT >SIG_IGN</TT > is installed; if <TT >handler</TT > is <TT >Catch action</TT >, a handler is installed which will invoke <TT >action</TT > in a new thread when (or shortly after) the signal is received. If <TT >iset</TT > is <TT >Just s</TT >, then the <TT >sa_mask</TT > of the <TT >sigaction</TT > structure is set to <TT >s</TT >; otherwise it is cleared. The previously installed signal handler for <TT >int</TT > is returned </TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:raiseSignal" ><A NAME="v%3AraiseSignal" ></A ></A ><B >raiseSignal</B > :: <A HREF="Workaround.html#t%3ASignal" >Signal</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AIO" >IO</A > ()</TD ></TR ><TR ><TD CLASS="doc" ><TT >raiseSignal int</TT > calls <TT >kill</TT > to signal the current process with interrupt signal <TT >int</TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Handler" ><A NAME="t%3AHandler" ></A ></A ><B >Handler</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >The actions to perform when a signal is received. </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:Default" ><A NAME="v%3ADefault" ></A ></A ><B >Default</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:Ignore" ><A NAME="v%3AIgnore" ></A ></A ><B >Ignore</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:Catch" ><A NAME="v%3ACatch" ></A ></A ><B >Catch</B > (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AIO" >IO</A > ())</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:CatchOnce" ><A NAME="v%3ACatchOnce" ></A ></A ><B >CatchOnce</B > (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/System-IO.html#t%3AIO" >IO</A > ())</TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Handler')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Handler" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Workaround.html#t%3AHandler" >Handler</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:Signal" ><A NAME="t%3ASignal" ></A ></A ><B >Signal</B > = <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:sigINT" ><A NAME="v%3AsigINT" ></A ></A ><B >sigINT</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:sigHUP" ><A NAME="v%3AsigHUP" ></A ></A ><B >sigHUP</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:sigABRT" ><A NAME="v%3AsigABRT" ></A ></A ><B >sigABRT</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:sigALRM" ><A NAME="v%3AsigALRM" ></A ></A ><B >sigALRM</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:sigTERM" ><A NAME="v%3AsigTERM" ></A ></A ><B >sigTERM</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:sigPIPE" ><A NAME="v%3AsigPIPE" ></A ></A ><B >sigPIPE</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="botbar" >Produced by <A HREF="http://www.haskell.org/haddock/" >Haddock</A > version 2.6.0</TD ></TR ></TABLE ></BODY ></HTML >