Hi all,

This is a resend of my Workaround fixes.  I've eliminated the
diff_command removal (since that may be an important feature for BSD
folks), and fixed a bug where we never used the real
System.Posix.Signals.  Comments and testing would be appreciated.  I
plan on pushing this as soon as 2.0.3 is out the door.

David

Tue Sep 23 11:07:42 EDT 2008  David Roundy <[EMAIL PROTECTED]>
  * make various autoconf simplifications.

Tue Sep 23 11:18:11 EDT 2008  David Roundy <[EMAIL PROTECTED]>
  * remove unused and unneeded Workarounds.

Tue Sep 23 11:20:28 EDT 2008  David Roundy <[EMAIL PROTECTED]>
  * eliminate autogeneration of Workaround.hs

New patches:

[make various autoconf simplifications.
David Roundy <[EMAIL PROTECTED]>**20080923150742
 Ignore-this: 213c53eda0b54c01909c8d15b2a5fdd6
] hunk ./aclocal.m4 3
 # Copyright 2005,2008 David Roundy
 
+
 # Redistribution and use in source and binary forms of this file, with or
 # without modification, are permitted provided that redistributions of
 # source code must retain the above copyright notice.
hunk ./src/Autoconf.lhs.in 8
 %
 \begin{code}
 {-# OPTIONS -cpp #-}
-module Autoconf ( darcsconfdir, datadir, libexecdir, have_libcurl, have_libwww, have_HTTP,
+module Autoconf ( have_libcurl, have_libwww, have_HTTP,
                   use_color, use_mmap, darcs_version, sendmail_path, have_sendmail,
                   have_mapi, diff_program,
                   path_separator, big_endian,
hunk ./src/Autoconf.lhs.in 16
 
 import ThisVersion ( darcs_version )
 
-{-# INLINE darcsconfdir #-}
-darcsconfdir :: String
-darcsconfdir = "@sysconfdir@/darcs"
-
-{-# INLINE datadir #-}
-datadir :: String
-datadir = "@datadir@"
-
-{-# INLINE libexecdir #-}
-libexecdir :: String
-libexecdir = "@libexecdir@"
-
 {-# INLINE have_libcurl #-}
 have_libcurl :: Bool
 #ifdef HAVE_CURL
hunk ./src/darcsman.hs 19
 
 module Main (main) where
 
-import Autoconf ( datadir )
 import Darcs.Commands
 import Darcs.TheCommands
 import Time
hunk ./src/darcsman.hs 93
    "\n"++
    "darcs is a nifty revision control tool.  For more a detailed description,\n"++
    "see the html documentation, which should be available at\n"++
-   datadir++"/doc/darcs/manual/index.html.  To easily get more specific help\n"++
+   "/usr/share/doc/darcs/manual/index.html.  To easily get more specific help\n"++
    "on each command, you can call `darcs COMMAND --help'.\n"++
    "\n"
 
[remove unused and unneeded Workarounds.
David Roundy <[EMAIL PROTECTED]>**20080923151811
 Ignore-this: 7c5501aa868bfc050de355fcb2a9505a
] hunk ./aclocal.m4 202
   )
 ])
 
-# WORKAROUND_bracketOnError
-# -----------------------
-# Work around missing bracketOnError
-AC_DEFUN([WORKAROUND_bracketOnError],[
-  EXPORT_WORKAROUND([           bracketOnError, ])
-  GHC_CHECK_MODULE(Control.Exception( bracketOnError ), base ,
-    bracketOnError (return ()) (const $ return ()) (const $ return ()),
-    [IMPORT_WORKAROUND([import Control.Exception( bracketOnError )])],
-    [IMPORT_WORKAROUND([import qualified Control.Exception( catch, throw, block, unblock )])
-     CODE_WORKAROUND([[
-
--- | Like bracket, but only performs the final action if there was an
--- exception raised by the in-between computation.
--- From GHC 6.6 (with twiddling for qualified block, catch, etc)
-bracketOnError
-	:: IO a		-- ^ computation to run first (\"acquire resource\")
-	-> (a -> IO b)  -- ^ computation to run last (\"release resource\")
-	-> (a -> IO c)	-- ^ computation to run in-between
-	-> IO c		-- returns the value from the in-between computation
-bracketOnError before after thing =
-  Control.Exception.block (do
-    a <- before
-    Control.Exception.catch
-	(Control.Exception.unblock (thing a))
-	(\e -> do { after a; Control.Exception.throw e })
-  )
-]])
-])
-])
-
-# WORKAROUND_createLink
-# -----------------------
-# Work around missing POSIX createLink code.
-AC_DEFUN([WORKAROUND_createLink],[
-  EXPORT_WORKAROUND([           createLink, ])
-  GHC_CHECK_MODULE(System.Posix.Files( createLink ), unix, createLink "a" "b",
-    [IMPORT_WORKAROUND([import System.Posix.Files( createLink )])],
-    GHC_CHECK_MODULE(Posix( createLink ), util, createLink "a" "b",
-      [IMPORT_WORKAROUND([import Posix( createLink )])],
-      [CODE_WORKAROUND([[
-
--- Dummy implementation of createLink.
-
-createLink :: FilePath -> FilePath -> IO ()
-createLink _ _ = fail "Dummy create link error should be caught."
-]])]
-    )
-  )
-])
-
-# WORKAROUND_createDirectoryIfMissing
-# ------------------------------
-# Work around missing createDirectoryIfMissing.
-AC_DEFUN([WORKAROUND_createDirectoryIfMissing],[
-  EXPORT_WORKAROUND([           createDirectoryIfMissing, ])
-  AC_MSG_CHECKING([createDirectoryIfMissing])
-  TRY_COMPILE_GHC([
-import System.Directory(createDirectoryIfMissing)
-main = createDirectoryIfMissing True ""
-    ],
-    [AC_MSG_RESULT([has createDirectoryIfMissing])
-     IMPORT_WORKAROUND([import System.Directory(createDirectoryIfMissing)])],
-    [AC_MSG_RESULT([doesn't have createDirectoryIfMissing])
-      IMPORT_WORKAROUND([import System.Directory ( doesDirectoryExist, createDirectory )])
-      CODE_WORKAROUND([[
-createDirectoryIfMissing
-  :: Bool     -- ^ Create its parents too?
-  -> FilePath -- ^ The path to the directory you want to make
-  -> IO ()
-createDirectoryIfMissing parents file = do
-  b <- doesDirectoryExist file
-  case (b,parents, file) of
-    (_,     _, "") -> return ()
-    (True,  _,  _) -> return ()
-    (_,  True,  _) -> mapM_ (createDirectoryIfMissing False) (tail (pathParents file))
-    (_, False,  _) -> createDirectory file
- where    pathParents :: FilePath -> [FilePath]
-          pathParents p =
-              root'' : map ((++) root') (dropEmptyPath $ inits path')
-              where
-#ifdef WIN32
-                 (root,path) = case break (== ':') p of
-                    (rel,    "") -> ("",rel)
-                    (drv,_:rel) -> (drv++":",rel)
-#else
-                 (root,path) = ("",p)
-#endif
-                 (root',root'',path') = case path of
-                   (c:path'') | isPathSeparator c -> (root++[pathSeparator],root++[pathSeparator],path'')
-                   _                              -> (root                 ,root++"."            ,path)
-          
-                 dropEmptyPath ("":paths) = paths
-                 dropEmptyPath paths      = paths
-          
-                 inits :: String -> [String]
-                 inits [] =  [""]
-                 inits cs =
-                   case pre of
-                     "."  -> inits suf
-                     ".." -> map (joinFileName pre) (dropEmptyPath $ inits suf)
-                     _    -> "" : map (joinFileName pre) (inits suf)
-                   where
-                     (pre,suf) = case break isPathSeparator cs of
-                        (pre',"")     -> (pre', "")
-                        (pre',_:suf') -> (pre',suf')
-                 isPathSeparator :: Char -> Bool
-                 isPathSeparator ch = ch == pathSeparator || ch == '/'
-                 pathSeparator :: Char
-#ifdef WIN32
-                 pathSeparator = '\\'
-#else
-                 pathSeparator = '/'
-#endif
-                 joinFileName :: String -> String -> FilePath
-                 joinFileName ""  fname = fname
-                 joinFileName "." fname = fname
-                 joinFileName dir ""    = dir
-                 joinFileName dir fname
-                   | isPathSeparator (last dir) = dir++fname
-                   | otherwise                  = dir++pathSeparator:fname
-      ]])
-    ]
-  )
-])
-
 # WORKAROUND_getCurrentDirectory
 # ------------------------------
 # Work around getCurrentDirectory that uses '\\' rather than '/'.
hunk ./aclocal.m4 333
 ])
   )
 ])
-
-# WORKAROUND_openFd
-# -----------------------
-# Work around changing openFd function
-AC_DEFUN([WORKAROUND_openFd],[
-  EXPORT_WORKAROUND([           openFd, ])
-  AC_MSG_CHECKING([GHC.Handle.openFd])
-  TRY_RUN_GHC([
-import GHC.Handle ( openFd )
-import IO ( IOMode(..))
-
-main = openFd 1 Nothing "stdout" WriteMode True False
-    ],
-     AC_MSG_RESULT([okay])
-     IMPORT_WORKAROUND([import GHC.Handle( openFd )]),
-     AC_MSG_RESULT([NOT old API])
-     AC_MSG_CHECKING([GHC.Handle.openFd new API])
-     TRY_RUN_GHC([
-import GHC.Handle ( openFd )
-import IO ( IOMode(..))
-
-main = openFd 1 Nothing False "stdout" WriteMode True
-      ],
-      AC_MSG_RESULT([okay])
-      IMPORT_WORKAROUND([import qualified GHC.Handle ( openFd )
-import System.IO ( Handle, IOMode )
-import System.Posix.Internals ( FDType )
-])
-      CODE_WORKAROUND([[
-{-
-Work around change in the GHC.Handle.openFd API.
--}
-openFd :: Int -> Maybe FDType -> FilePath -> IOMode -> Bool -> Bool -> IO Handle
-openFd fd x y z a b = GHC.Handle.openFd fd x b y z a
-        ]]),
-       AC_MSG_RESULT([NOT 'new' API])
-       AC_MSG_CHECKING([GHC.Handle.fdToHandle' API])
-       TRY_RUN_GHC([
-import GHC.Handle ( fdToHandle' )
-import IO ( IOMode(..) )
-
-main = fdToHandle' 1 Nothing False "stdout" WriteMode True
-       ],
-       AC_MSG_RESULT([okay])
-       IMPORT_WORKAROUND([import qualified GHC.Handle ( fdToHandle' )
-import System.IO ( Handle, IOMode )
-import System.Posix.Internals ( FDType )
-])
-       CODE_WORKAROUND([[
-{-
-Work around renaming of GHC.Handle.openFd and change in its API.
--}
-openFd :: Int -> Maybe FDType -> FilePath -> IOMode -> Bool -> Bool -> IO Handle
-openFd fd x y z a b = GHC.Handle.fdToHandle' (fromIntegral fd) x b y z a
-        ]]),
-       AC_MSG_RESULT([failed])
-       AC_MSG_ERROR([Couldnt figure out how to call GHC.Handle.openFd!])
-    )
-  )
-)])
-
-
hunk ./configure.ac 126
 
 INIT_WORKAROUND
 
-dnl Figure out how to convert a file descriptor to a Handle
-
-WORKAROUND_openFd
-
 dnl Handle posix signals nicely:
 
 WORKAROUND_POSIXSIGNALS([installHandler, raiseSignal, Handler(..), Signal,
hunk ./configure.ac 252
 WORKAROUND_getCurrentDirectory
 AC_SUBST(GHC_SEPARATOR)
 
-dnl Deal with systems without createLink
-
-WORKAROUND_createLink
-
-dnl Deal with GHCs without createDirectoryIfMissing
-
-WORKAROUND_createDirectoryIfMissing
-
 dnl Handle systems with a buggy renameFile
 
 WORKAROUND_renameFile
hunk ./configure.ac 256
 
-dnl Deal with systems without bracketWithError
-
-WORKAROUND_bracketOnError
-
 dnl Handle systems that don't do POSIX file modes
 
 WORKAROUND_fileModes
hunk ./src/Darcs/Commands/Repair.lhs 21
 \subsection{darcs repair}
 \begin{code}
 module Darcs.Commands.Repair ( repair ) where
-import Workaround ( getCurrentDirectory, createDirectoryIfMissing )
+import Workaround ( getCurrentDirectory )
+import System.Directory ( createDirectoryIfMissing )
 import System.IO
 import System.Exit ( exitWith, ExitCode(..) )
 import Control.Monad ( when, unless )
hunk ./src/Darcs/External.hs 47
 import Foreign.Marshal.Alloc (allocaBytes)
 import Autoconf ( use_color )
 #endif
-import Workaround ( createLink, createDirectoryIfMissing )
+import System.Posix.Files ( createLink )
+import System.Directory ( createDirectoryIfMissing )
 
 import Darcs.Flags ( DarcsFlag( SignAs, Sign, SignSSL, NoLinks,
                                 Verify, VerifySSL ) )
hunk ./src/Darcs/Repository/Cache.lhs 27
 import FastPackedString ( PackedString, unpackPS, gzWriteFilePS, lengthPS,
                           linesPS, dropPS )
 import SHA1 ( sha1PS )
-import Workaround ( createLink, createDirectoryIfMissing )
+import System.Posix.Files ( createLink )
+import System.Directory ( createDirectoryIfMissing )
 
 import Darcs.External ( gzFetchFilePS, fetchFilePS, speculateFileOrUrl, copyFileOrUrl,
                         Cachable( Cachable ) )
hunk ./src/Darcs/Repository/Checkpoint.lhs 1
+
 %  Copyright (C) 2002-2005 David Roundy
 %
 %  This program is free software; you can redistribute it and/or modify
hunk ./src/Darcs/Repository/Checkpoint.lhs 33
                                      write_checkpoint_patch,
                                    ) where
 
-import System.Directory ( setCurrentDirectory )
-import Workaround ( getCurrentDirectory, createDirectoryIfMissing )
+import System.Directory ( setCurrentDirectory, createDirectoryIfMissing )
+import Workaround ( getCurrentDirectory )
 import System.IO.Unsafe ( unsafeInterleaveIO )
 import Data.Maybe ( listToMaybe, catMaybes )
 import Darcs.Hopefully ( PatchInfoAnd, hopefully, info )
hunk ./src/Darcs/Repository/DarcsRepo.lhs 60
                                     copy_patches
                                   ) where
 
-import System.Directory ( doesDirectoryExist )
-import Workaround ( renameFile, createDirectoryIfMissing )
+import System.Directory ( doesDirectoryExist, createDirectoryIfMissing )
+import Workaround ( renameFile )
 import Darcs.Utils ( clarify_errors )
 import Darcs.Progress ( debugMessage, beginTedious, endTedious, finishedOneIO )
 import Darcs.FilePathUtils ( absolute_dir )
hunk ./src/Darcs/Repository/HashedIO.lhs 27
 
 import Darcs.Global ( darcsdir )
 import Data.List ( (\\) )
-import System.Directory ( getDirectoryContents )
+import System.Directory ( getDirectoryContents, createDirectoryIfMissing )
 import System.Posix.Types ( EpochTime )
 import Control.Monad.State ( StateT, runStateT, modify, get, put, gets, lift )
 import Control.Monad ( when )
hunk ./src/Darcs/Repository/HashedIO.lhs 34
 import Data.Maybe ( isJust )
 import System.IO.Unsafe ( unsafeInterleaveIO )
 
-import Workaround ( createDirectoryIfMissing )
 import Darcs.SlurpDirectory ( Slurpy(..), withSlurpy, undefined_time, undefined_size )
 import Darcs.Repository.Cache ( Cache, fetchFileUsingCache, writeFileUsingCache,
                                 peekInCache, speculateFileUsingCache,
hunk ./src/Darcs/Repository/HashedRepo.lhs 37
                                      readHashedPristineRoot
                                    ) where
 
-import System.Directory ( doesFileExist )
+import System.Directory ( doesFileExist, createDirectoryIfMissing )
 import System.IO.Unsafe ( unsafeInterleaveIO )
 import System.IO ( stderr, hPutStrLn )
 import Data.List ( delete )
hunk ./src/Darcs/Repository/HashedRepo.lhs 43
 import Control.Monad ( unless )
 
-import Workaround ( renameFile, createDirectoryIfMissing )
+import Workaround ( renameFile )
 import Darcs.Flags ( DarcsFlag, Compression )
 import Darcs.Patch.Set ( PatchSet, SealedPatchSet )
 import Darcs.FilePathUtils ( absolute_dir )
hunk ./src/Darcs/Repository/Internal.lhs 70
 import Darcs.Repository.Format ( RepoFormat, RepoProperty( Darcs2, HashedInventory ),
                                  identifyRepoFormat, format_has,
                                  write_problem, read_problem, readfrom_and_writeto_problem )
-import System.Directory ( doesDirectoryExist, setCurrentDirectory, removeFile )
+import System.Directory ( doesDirectoryExist, setCurrentDirectory, removeFile,
+                          createDirectoryIfMissing )
 import Control.Monad ( liftM, when, unless )
hunk ./src/Darcs/Repository/Internal.lhs 73
-import Workaround ( createDirectoryIfMissing, getCurrentDirectory, renameFile, setExecutable )
+import Workaround ( getCurrentDirectory, renameFile, setExecutable )
 import FastPackedString ( PackedString, readFilePS, gzReadFilePS, nilPS, packString, takePS )
 import Darcs.Patch ( Patch, RealPatch, Effect, is_hunk, is_binary, description,
hunk ./src/Darcs/Repository/Internal.lhs 76
+
                      try_to_shrink, commuteFL, commute )
 import Darcs.Patch.Prim ( try_shrinking_inverse, Conflict )
 import Darcs.Patch.Bundle ( scan_bundle, make_bundle )
hunk ./src/Exec.lhs 46
 import System.Process
 import GHC.Handle	( hDuplicate )
         -- urgh.  hDuplicate isn't available from a standard place.
-import Workaround       ( bracketOnError )
+import Control.Exception ( bracketOnError )
 
 import Darcs.Global ( whenDebugMode )
 
hunk ./src/Ssh.hs 18
 #endif
 import System.IO ( Handle, hPutStr, hPutStrLn, hGetLine, hGetContents, hClose, hFlush )
 import System.IO.Unsafe ( unsafePerformIO )
-import System.Directory ( doesFileExist )
+import System.Directory ( doesFileExist, createDirectoryIfMissing )
 import Control.Monad ( when )
 import System.Process ( runInteractiveProcess )
 
hunk ./src/Ssh.hs 26
 import Data.IORef ( IORef, newIORef, readIORef, modifyIORef )
 
 import Darcs.SignalHandler ( catchNonSignal )
-import Workaround ( createDirectoryIfMissing )
 import Darcs.Utils ( withCurrentDirectory, breakCommand, prettyException, catchall )
 import Darcs.Global ( atexit, sshControlMasterDisabled, darcsdir, withDebugMode )
 import Darcs.Lock ( withTemp, withOpenTemp, tempdir_loc, removeFileMayNotExist )
[eliminate autogeneration of Workaround.hs
David Roundy <[EMAIL PROTECTED]>**20080923152028
 Ignore-this: 30b6e6636fac9bc2597384899979a508
] hunk ./GNUmakefile 47
 MODULES_AUTOCONF :=\
 	Autoconf.lhs \
 	Context.hs \
-        Workaround.hs \
 
 MODULES_GENERAL :=\
 	ThisVersion.lhs \
hunk ./GNUmakefile 58
 	Printer.lhs	\
 	RegChars.lhs \
 	SHA1.lhs Ssh.hs UTF8.lhs	\
+	Workaround.hs \
 
 MODULES_CRYPT := SHA256.hs
 
hunk ./GNUmakefile 509
 
 distclean:	clean
 	rm -rf config.status config.log autoconf.mk config.cache autom4te.cache
-	rm -f doc/manual/darcs.ps doc/manual/darcs.pdf doc/manual/patch-theory.pdf src/Autoconf.lhs Workaround.hs darcs.idv
+	rm -f doc/manual/darcs.ps doc/manual/darcs.pdf doc/manual/patch-theory.pdf src/Autoconf.lhs darcs.idv
 	rm -f src/ThisVersion.lhs tools/cgi/README tools/cgi/darcs.cgi tools/cgi/cgi.conf
 	rm -f config.command
 
hunk ./aclocal.m4 104
   ])
 ])
 
-# INIT_WORKAROUND
-# ---------------
-# Initialize src/Workaround.hs module.
-AC_DEFUN([INIT_WORKAROUND],[
-rm -f src/Workaround.hs.beginning src/Workaround.hs.ending
-touch src/Workaround.hs.ending
-cat << \EOF > src/Workaround.hs.prefix
-{-# OPTIONS -w #-}
-{- Workaround.hs
-
-This file was created automatically by configure.  We disable warnings to
-avoid issues with duplicate imports.
-
--}
-
-module Workaround(
-EOF
-cat << \EOF > src/Workaround.hs.beginning
- ) where
-
-EOF
-])
-
-# OUTPUT_WORKAROUND
-# -----------------
-# Create the src/Workaround.hs module.
-AC_DEFUN([OUTPUT_WORKAROUND],[
-cat src/Workaround.hs.prefix src/Workaround.hs.beginning src/Workaround.hs.ending > src/Workaround.hs
-rm -f src/Workaround.hs.beginning src/Workaround.hs.ending src/Workaround.hs.prefix
-])
-
-# IMPORT_WORKAROUND(CODE)
-# -----------------------
-# Import a module into src/Workaround.hs
-AC_DEFUN([IMPORT_WORKAROUND],[
-cat << \EOF >> src/Workaround.hs.beginning
-$1
-EOF
-])
-
-# EXPORT_WORKAROUND(CODE)
-# -----------------------
-# Export from src/Workaround.hs
-AC_DEFUN([EXPORT_WORKAROUND],[
-cat << \EOF >> src/Workaround.hs.prefix
-$1
-EOF
-])
-
-# CODE_WORKAROUND(CODE)
-# ---------------------
-# Import a module into src/Workaround.hs
-AC_DEFUN([CODE_WORKAROUND],[
-cat << \EOF >> src/Workaround.hs.ending
-$1
-EOF
-])
-
-# WORKAROUND_POSIXSIGNALS(IMPORTS)
-# -----------------------
-# Work around missing POSIX signals code.
-AC_DEFUN([WORKAROUND_POSIXSIGNALS],[
-  EXPORT_WORKAROUND([$1])
-  GHC_CHECK_MODULE(System.Posix.Signals($1), unix, undefined,
-    [IMPORT_WORKAROUND([import System.Posix.Signals($1)])],
-    GHC_CHECK_MODULE(Posix($1), util, undefined,
-      [IMPORT_WORKAROUND([import Posix($1)])],
-      [CODE_WORKAROUND([[
-
--- Dummy implementation of POSIX signals
-
-data Handler = Default | Ignore | Catch (IO ())
-type Signal = Int
-
-installHandler :: Signal -> Handler -> Maybe () -> IO ()
-installHandler _ _ _ = return ()
-
-raiseSignal :: Signal -> IO ()
-raiseSignal _ = return ()
-
-sigINT, {- sigKILL, -} sigHUP, {- sigQUIT, -} sigABRT, sigALRM, sigTERM, sigPIPE :: Signal
-sigINT = 0
--- not used: sigKILL = 0
-sigHUP = 0
--- not used: sigQUIT = 0
-sigABRT = 0
-sigTERM = 0
-sigPIPE = 0
-sigALRM = 0
-
--- not used: raiseSignal :: Signal -> IO ()
--- not used: raiseSignal _ = return ()
-
-]])]
-    )
-  )
-])
-
-# WORKAROUND_getCurrentDirectory
-# ------------------------------
-# Work around getCurrentDirectory that uses '\\' rather than '/'.
-AC_DEFUN([WORKAROUND_getCurrentDirectory],[
-  EXPORT_WORKAROUND([           getCurrentDirectory, ])
-  AC_MSG_CHECKING([getCurrentDirectory])
-  TRY_RUN_GHC([
-import System.Directory(getCurrentDirectory, setCurrentDirectory)
-main = do setCurrentDirectory "src"
-          d <- getCurrentDirectory
-          case reverse $ take 4 $ reverse d of
-              "/src" -> return ()
-    ],
-    [AC_MSG_RESULT([uses /])
-     IMPORT_WORKAROUND([import System.Directory(getCurrentDirectory)])]
-     GHC_SEPARATOR='/',
-    [AC_MSG_RESULT([uses \\])
-      IMPORT_WORKAROUND([import qualified System.Directory(getCurrentDirectory)])
-      GHC_SEPARATOR='\\'
-      CODE_WORKAROUND([[
-{-
-System.Directory.getCurrentDirectory returns a path with backslashes in it
-under windows, and some of the code gets confused by that, so we override
-getCurrentDirectory and translates '\\' to '/'
--}
-
-getCurrentDirectory :: IO FilePath
-getCurrentDirectory = do d <- System.Directory.getCurrentDirectory
-                         return $ map rb d
-    where rb '\\' = '/'
-          rb c = c
-      ]])
-    ]
-  )
-])
-
-# WORKAROUND_renameFile
-# -----------------------
-# Work around buggy renameFile.
-AC_DEFUN([WORKAROUND_renameFile],[
-  EXPORT_WORKAROUND([           renameFile, ])
-  AC_MSG_CHECKING([renameFile])
-  TRY_RUN_GHC([
-import System.Directory ( renameFile )
-
-main = do writeFile "conftest.data" "orig_data"
-          writeFile "conftest.newdata" "new_data"
-          renameFile "conftest.newdata" "conftest.data"
-    ],
-    [AC_MSG_RESULT([okay])
-     IMPORT_WORKAROUND([import System.Directory ( renameFile )])],
-    AC_MSG_RESULT([buggy!])
-    IMPORT_WORKAROUND([import qualified System.Directory( renameFile, removeFile )])
-    IMPORT_WORKAROUND([import qualified System.IO.Error])
-    IMPORT_WORKAROUND([import qualified Control.Exception ( block )])
-    CODE_WORKAROUND([
-{-
-System.Directory.renameFile incorrectly fails when the new file already
-exists.  This code works around that bug at the cost of losing atomic
-writes.
--}
-
-renameFile :: FilePath -> FilePath -> IO ()
-renameFile old new = Control.Exception.block $
-   do System.Directory.removeFile new
-        `System.IO.Error.catch`
-         (\e -> if System.IO.Error.isDoesNotExistError e
-                   then return ()
-                   else System.IO.Error.ioError e)
-      System.Directory.renameFile old new
-     ])
-  )
-])
-
-# WORKAROUND_fileModes
-# --------------------
-# Figure out how to set unix permissions on a file (or creates a dummy
-# function for this).
-
-AC_DEFUN([WORKAROUND_fileModes],[
-  EXPORT_WORKAROUND([           fileMode, getFileStatus, setFileMode, ])
-  GHC_CHECK_MODULE(System.Posix.Files( fileMode, getFileStatus, setFileMode ), unix, getFileStatus "",
-    IMPORT_WORKAROUND([import System.Posix.Files(fileMode,getFileStatus,setFileMode)]),
-    CODE_WORKAROUND([
-fileMode :: () -> ()
-fileMode _ = ()
-getFileStatus :: FilePath -> IO ()
-getFileStatus _ = return ()
-setFileMode :: FilePath -> () -> IO ()
-setFileMode _ _ = return ()
-])
-  )
-])
-
-# WORKAROUND_executable
-# --------------------
-# Figure out how to make a file executable (or test if it is).
-
-AC_DEFUN([WORKAROUND_executable],[
-  EXPORT_WORKAROUND([           setExecutable, ])
-  GHC_CHECK_MODULE(System.Posix.Files( fileMode, getFileStatus, setFileMode, setFileCreationMask ),
-                   unix, getFileStatus "",
-    IMPORT_WORKAROUND([
-import System.Posix.Files (fileMode,getFileStatus, setFileMode, nullFileMode,
-                           setFileCreationMask,
-                           ownerReadMode, ownerWriteMode, ownerExecuteMode,
-                           groupReadMode, groupWriteMode, groupExecuteMode,
-                           otherReadMode, otherWriteMode, otherExecuteMode)
-import Data.Bits ( (.&.), (.|.), complement )
-
-setExecutable :: FilePath -> Bool -> IO ()
-setExecutable f ex =
-  do st <- getFileStatus f
-     umask <- setFileCreationMask 0
-     setFileCreationMask umask
-     let rw = fileMode st .&.
-              (ownerReadMode .|. ownerWriteMode .|.
-               groupReadMode .|. groupWriteMode .|.
-               otherReadMode .|. otherWriteMode)
-         total = if ex then rw .|.
-                           ((ownerExecuteMode .|. groupExecuteMode .|. otherExecuteMode)
-                            .&. complement umask)
-                       else rw
-     setFileMode f total
-]),
-    CODE_WORKAROUND([
-setExecutable :: FilePath -> Bool -> IO ()
-setExecutable _ _ = return ()
-])
-  )
-])
-
hunk ./configure.ac 124
                  AC_MSG_WARN([Unable to compile with threaded runtime!])
                  GHCFLAGS=$MYOLDGHCFLAGS])])
 
-INIT_WORKAROUND
-
-dnl Handle posix signals nicely:
-
-WORKAROUND_POSIXSIGNALS([installHandler, raiseSignal, Handler(..), Signal,
-                         sigINT, sigHUP, sigABRT, sigALRM, sigTERM, sigPIPE,])
-
 AC_CHECK_HEADERS([siginfo.h])
 
 dnl Look for Text.Regex
hunk ./configure.ac 238
 if test "$SYS" = "windows"; then
   GHC_CHECK_MODULE(System.Random( randomIO ), random, randomIO :: IO Int,,
                    AC_MSG_ERROR(Cannot find System.Random; try installing the Haskell package random?))
+else
+  dnl if we're not in windows, we need System.Posix.Files
+  GHC_CHECK_MODULE(System.Posix.Files, unix, undefined,,
+                   AC_MSG_ERROR(Cannot find System.Posix.Files; try installing the Haskell package unix?))
+  dnl Check if we have System.Posix.Signals
+  GHC_CHECK_MODULE(System.Posix.Signals, unix, installHandler,
+                   AC_DEFINE(HAVE_SIGNALS),AC_MSG_WARN(Cannot find System.Posix.Signals; interrupt handling disabled))
 fi
 
hunk ./configure.ac 247
-dnl Deal with systems on which getCurrentDirectory uses '\\' rather than '/':
-
-WORKAROUND_getCurrentDirectory
-AC_SUBST(GHC_SEPARATOR)
-
-dnl Handle systems with a buggy renameFile
-
-WORKAROUND_renameFile
-
-dnl Handle systems that don't do POSIX file modes
-
-WORKAROUND_fileModes
-
-WORKAROUND_executable
-
 dnl Make default to have optimizations on...
 
 AC_MSG_CHECKING([whether to optimize])
hunk ./configure.ac 638
 fi
 
 AC_DEFUN([AC_DATAROOTDIR_CHECKED])
-OUTPUT_WORKAROUND
+
 AC_CONFIG_FILES([autoconf.mk src/Autoconf.lhs
            tools/cgi/darcs.cgi tools/cgi/README tools/cgi/cgi.conf
 	   release/darcs.spec])
hunk ./src/Autoconf.lhs.in 62
 
 {-# INLINE path_separator #-}
 path_separator :: Char
-path_separator = '@GHC_SEPARATOR@'
+#ifdef WIN32
+path_separator = '\\'
+#else
+path_separator = '/'
+#endif
 
 {-# INLINE big_endian #-}
 big_endian :: Bool
hunk ./src/Darcs/Lock.lhs 53
 import Workaround ( renameFile )
 import Darcs.Utils ( withCurrentDirectory, maybeGetEnv, firstJustIO )
 import Control.Monad ( when )
-import Workaround ( fileMode, getFileStatus, setFileMode )
 
 import Darcs.URL ( is_relative )
 import Darcs.Utils ( catchall, add_to_error_loc )
hunk ./src/Darcs/Lock.lhs 67
 import Darcs.Global ( atexit, darcsdir )
 import Darcs.Compat ( mk_stdout_temp, canonFilename, maybeRelink,
                 atomic_create, sloppy_atomic_create )
-import System.Posix.Files ( getSymbolicLinkStatus, isDirectory )
+import System.Posix.Files ( getSymbolicLinkStatus, isDirectory,
+                            fileMode, getFileStatus, setFileMode )
 import System.Posix ( sleep )
 #include "impossible.h"
 
addfile ./src/Workaround.hs
hunk ./src/Workaround.hs 1
+{-# OPTIONS_GHC -cpp #-}
+
+module Workaround ( renameFile, setExecutable, getCurrentDirectory,
+                    installHandler, raiseSignal, Handler(..), Signal,
+                    sigINT, sigHUP, sigABRT, sigALRM, sigTERM, sigPIPE ) where
+
+#ifdef HAVE_SIGNALS
+import System.Posix.Signals(installHandler, raiseSignal, Handler(..), Signal,
+                         sigINT, sigHUP, sigABRT, sigALRM, sigTERM, sigPIPE,)
+#endif
+
+#ifdef WIN32
+import qualified System.Directory ( renameFile, getCurrentDirectory, removeFile )
+import qualified Control.Exception ( block )
+import qualified System.IO.Error ( isDoesNotExistError, ioError, catch )
+#else
+import System.Directory ( renameFile, getCurrentDirectory )
+import System.Posix.Files (fileMode,getFileStatus, setFileMode,
+                           setFileCreationMask,
+                           ownerReadMode, ownerWriteMode, ownerExecuteMode,
+                           groupReadMode, groupWriteMode, groupExecuteMode,
+                           otherReadMode, otherWriteMode, otherExecuteMode)
+import Data.Bits ( (.&.), (.|.), complement )
+#endif
+
+#ifndef HAVE_SIGNALS
+-- Dummy implementation of POSIX signals
+data Handler = Default | Ignore | Catch (IO ())
+type Signal = Int
+
+installHandler :: Signal -> Handler -> Maybe () -> IO ()
+installHandler _ _ _ = return ()
+
+raiseSignal :: Signal -> IO ()
+raiseSignal _ = return ()
+
+sigINT, {- sigKILL, -} sigHUP, {- sigQUIT, -} sigABRT, sigALRM, sigTERM, sigPIPE :: Signal
+sigINT = 0
+-- not used: sigKILL = 0
+sigHUP = 0
+-- not used: sigQUIT = 0
+sigABRT = 0
+sigTERM = 0
+sigPIPE = 0
+sigALRM = 0
+#endif
+
+#ifdef WIN32
+{-
+System.Directory.renameFile incorrectly fails when the new file already
+exists.  This code works around that bug at the cost of losing atomic
+writes.
+-}
+
+renameFile :: FilePath -> FilePath -> IO ()
+renameFile old new = Control.Exception.block $
+   do System.Directory.removeFile new
+        `System.IO.Error.catch`
+         (\e -> if System.IO.Error.isDoesNotExistError e
+                   then return ()
+                   else System.IO.Error.ioError e)
+      System.Directory.renameFile old new
+
+setExecutable :: FilePath -> Bool -> IO ()
+setExecutable _ _ = return ()
+
+{-
+System.Directory.getCurrentDirectory returns a path with backslashes in it
+under windows, and some of the code gets confused by that, so we override
+getCurrentDirectory and translates '\\' to '/'
+-}
+
+getCurrentDirectory :: IO FilePath
+getCurrentDirectory = do d <- System.Directory.getCurrentDirectory
+                         return $ map rb d
+    where rb '\\' = '/'
+          rb c = c
+
+#else
+
+setExecutable :: FilePath -> Bool -> IO ()
+setExecutable f ex =
+  do st <- getFileStatus f
+     umask <- setFileCreationMask 0
+     setFileCreationMask umask
+     let rw = fileMode st .&.
+              (ownerReadMode .|. ownerWriteMode .|.
+               groupReadMode .|. groupWriteMode .|.
+               otherReadMode .|. otherWriteMode)
+         total = if ex then rw .|.
+                           ((ownerExecuteMode .|. groupExecuteMode .|. otherExecuteMode)
+                            .&. complement umask)
+                       else rw
+     setFileMode f total
+
+#endif
hunk ./src/win32/System/Posix/Files.hsc 72
 fileSize :: FileStatus -> FileOffset
 fileSize = fst_size
 
+fileMode :: () -> ()
+fileMode _ = ()
+
+getFileStatus :: FilePath -> IO ()
+getFileStatus _ = return ()
+
+setFileMode :: FilePath -> () -> IO ()
+setFileMode _ _ = return ()
+
 #include <sys/stat.h>
 stdFileMode :: FileMode
 stdFileMode = (#const S_IRUSR) .|. (#const S_IWUSR)
hunk ./src/win32/System/Posix/Files.hsc 91
 getSymbolicLinkStatus fp = 
   do_stat (\p -> (fp `withCString` (`lstat` p)))
 
+-- Dummy implementation of createLink.
+createLink :: FilePath -> FilePath -> IO ()
+createLink _ _ = fail "Dummy create link error should be caught."

Context:

[fix filepath code to work with FilePath package that preceded filepath.
[EMAIL PROTECTED]
 Ignore-this: 6aa0d8b357b0f966403ebe5965dcdec4
] 
[fix type witness bug in createRepository.
David Roundy <[EMAIL PROTECTED]>**20080922234321
 Ignore-this: 2c50393ca25740ce3e210dd24fe8d8fa
] 
[Resolve conflict between replace patches in Darcs.Arguments
Eric Kow <[EMAIL PROTECTED]>**20080922202647] 
[Resolve issue53: check for windows filename validity in darcs add/mv.
Eric Kow <[EMAIL PROTECTED]>**20080922172004] 
[Use --reserved-ok to allow a file with ':' in it in tests.
Eric Kow <[EMAIL PROTECTED]>**20080922171519
 It's likely that this test will just fail under Windows and
 we will have to disable it.
] 
[Add test for issue53.
Eric Kow <[EMAIL PROTECTED]>**20080922152256] 
[Add --reserved-ok flag for darcs add and mv.
Eric Kow <[EMAIL PROTECTED]>**20080922141532
 This is just the flag, not the actual effect.
] 
[Check for filepath package in configure.
Eric Kow <[EMAIL PROTECTED]>**20080922140520] 
[simplify fix for issue1041.
David Roundy <[EMAIL PROTECTED]>**20080922233019
 Ignore-this: a3002e9bba5271790c62ac634e08f472
 It turns out that the simple solution works once a bug in the
 conflict-doppleganger test was fixed!
] 
[translate conflict-doppleganger test to bash.
David Roundy <[EMAIL PROTECTED]>**20080922232839
 Ignore-this: de2a050022dea4251cdc2cc5e8b55c8c
] 
[Translate mark-conflicts test into shell.
Eric Kow <[EMAIL PROTECTED]>**20080922224858
 It was failing because it expects init to be completely silent.  Since we
 were going to tweak it anyway, we might as well simplify the script.
] 
[Stop calling the darcs-2 format experimental.
Eric Kow <[EMAIL PROTECTED]>**20080922221024] 
[Move repository creation to Darcs.Repository.
Eric Kow <[EMAIL PROTECTED]>**20080922215913
 This is just to avoid importing the DarcsRepo and HashedRepo code in higher
 level code.
] 
[remove test_unit from disttest to speed things up.
David Roundy <[EMAIL PROTECTED]>**20080922225355
 Ignore-this: b3b21bcd3fa72c8d602b5bd0e601021a
 The unit test is only affected by very rarely-modified code, and it's
 overkill to run it absolutely every single time we push code
 (particularly as it sometimes takes exponentially long to generate its
 test cases).
] 
[resolve issue1041: add test for issue1041.
David Roundy <[EMAIL PROTECTED]>**20080922183320
 Ignore-this: 5a6330158d16a24d45f58268c0edb823
 Note that this issue was actually resolved by Vlad Dogaru.  I just
 wrote the test.
] 
[Get: if URL is invalid, direcotry is not created (#1041)
Vlad Dogaru <[EMAIL PROTECTED]>**20080922171705] 
[Replace --without-docs with less ambiguous --without-manual (issue1082).
Trent W. Buck <[EMAIL PROTECTED]>**20080922002602
 It's confusing for ./configure --without-docs to complain about missing haddock.
] 
[Documentation for --allow-unrelated-repos.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080922121122
 Ignore-this: d2630826313c8aeb00acb6853030c22d
] 
[Rename --ignore-unrelated-repos to --allow-unrelated-repos.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080922120727
 Ignore-this: a5990f1741c867316a948e6721118651
] 
[fix  bug I introduced into issue1039 test.
David Roundy <[EMAIL PROTECTED]>**20080921213043
 Ignore-this: 5b3c6476abae6bb050be014555d05bbe
] 
[Fix hang after a user input error (for example, EOF).
Judah Jacobson <[EMAIL PROTECTED]>**20080918163017] 
[replace consRLSealed with a more  general mapFlipped.
David Roundy <[EMAIL PROTECTED]>**20080921185241
 Ignore-this: c28f73f165254582cba6a14ba6ce93
] 
[make issue1039 fix allow small dissimilar  repositories.
David Roundy <[EMAIL PROTECTED]>**20080921184515
 Ignore-this: 918a09df18ef48c649c1bfaa866d6176
] 
[revert refactor that breaks type witnesses.
David Roundy <[EMAIL PROTECTED]>**20080921182331
 Ignore-this: dd692cffc1a238d6726448bacfe9cacc
] 
[Add '--ignore-unrelated-repos' option to disable unrelated repositories check.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080919152631] 
[Resolve issue1039: detect seemingly unrelated repositories when doing push, pull and send.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080919144553] 
[Refactor in pull_cmd.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080919135349
 Ignore-this: e26a489a7a53aeaba544ae5ad0006700
] 
[Test for issue1039.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080919153011] 
[manual: add an example of record --pipe prompts similar to tag --pipe docs
Simon Michael <[EMAIL PROTECTED]>**20080918205353] 
[user manual corrections regarding what record and tag --pipe prompt for
Simon Michael <[EMAIL PROTECTED]>**20080918204500] 
[clarify the short help for --pipe
Simon Michael <[EMAIL PROTECTED]>**20080918193717] 
[Spaces in Darcs.Arguments.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080919150440] 
[Spaces in Darcs.Commands.Send.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080919150139] 
[Spaces in Darcs.Commands.Pull.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080919145812] 
[Spaces in Darcs.Commands.Push.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080919145553] 
[Print "We have the following patches to send:" only when we really have somthing to send.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080919114229] 
[Use gmakeisms for prettier output.
Trent W. Buck <[EMAIL PROTECTED]>**20080919071358] 
[fix changes.pl test (translating to bash)
David Roundy <[EMAIL PROTECTED]>**20080917182432
 Ignore-this: 5f8bc7e1f9eadc073402a935142281c4
 This test made assumptions such as that darcs wouldn't ever add a long
 comment to its internal representation of changes, which are now
 broken.
] 
[hokey fix to allow unit tests to generate random input.
David Roundy <[EMAIL PROTECTED]>**20080917170913
 Ignore-this: 31e847e82eef741f4c6cc857fd79a245
 A nicer fix would be to move namepatch and patchinfo into some sort of
 random-number monad rather than leaving them in IO and using
 unsafePerformIO in the example-generation scripts.
] 
[resolve issue27: add junk to patch identifiers.
David Roundy <[EMAIL PROTECTED]>**20080917154657
 Ignore-this: b91ab6f6e05e0fda25488fa51653b741
] 
[TAG 2.0.3pre1
Eric Kow <[EMAIL PROTECTED]>**20080918023645] 
[Bump version number to 2.0.3pre1.
Eric Kow <[EMAIL PROTECTED]>**20080918023634] 
[Canonize Florent Becker, Matthias Killian, Trent Buck, Thorkil Naur
Eric Kow <[EMAIL PROTECTED]>**20080918020453] 
[ChangeLog entries for darcs 2.0.3pre1 again.
Eric Kow <[EMAIL PROTECTED]>**20080918020442] 
[Re-enable haskeline by default.  Require haskeline>=0.3.1 which fixes issue1050.
Judah Jacobson <[EMAIL PROTECTED]>**20080917194007] 
[Throw an error when haskeline returns an EOF/EOT.
Judah Jacobson <[EMAIL PROTECTED]>**20080917180124] 
[Disable more record_editor tests under Windows.
Eric Kow <[EMAIL PROTECTED]>**20080917192602
 It still appears to be failing under Cygwin.
] 
[add a couple of tests of unrecord.
David Roundy <[EMAIL PROTECTED]>**20080917133738] 
[add a few (passing) tests of pending handling in obliterate and unrecord.
David Roundy <[EMAIL PROTECTED]>**20080917130423] 
[Use putStrLn for "Cancelled." message.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080916205014] 
[remove now-unused is_addrmfile and is_addrmdir.
David Roundy <[EMAIL PROTECTED]>**20080916173136] 
[resolve issue1012: it seems to be fixed by the fix for issue709.
David Roundy <[EMAIL PROTECTED]>**20080916173116] 
[resolve issue885: fix patchSetToRepository to work with hashed.
David Roundy <[EMAIL PROTECTED]>**20080916173030] 
[resolve issue709: avoid adding changes to pending in rmpend when possible.
David Roundy <[EMAIL PROTECTED]>**20080916173002] 
[first-stage fix for issue709.
David Roundy <[EMAIL PROTECTED]>**20080916170333
 Here I fix the bug which leads to a corrupt pending being left, with a
 rmfile change but no hunk removing the contents.  This doesn't fix
 issue709, since an incorrect pending is left, it's just no longer a
 corrupt pending (i.e. it's still got the rmfile, but if you record it
 there's no problem).
] 
[add new test that we don't do anything when repairing a clean repo.
David Roundy <[EMAIL PROTECTED]>**20080916165437] 
[whitespace change in prepend.
David Roundy <[EMAIL PROTECTED]>**20080916160425] 
[tiny refactor in Internal.lhs.
David Roundy <[EMAIL PROTECTED]>**20080916155922] 
[simplify issue965 test (which took quite a while for me to figure out).
David Roundy <[EMAIL PROTECTED]>**20080916152028] 
[make shell_harness print summary of passing tests when running bugs tests.
David Roundy <[EMAIL PROTECTED]>**20080916145820] 
[trailing whitespace cleanup in Repository.Internal.
David Roundy <[EMAIL PROTECTED]>**20080916142112] 
[Test for issue691.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080916111332] 
[Make match.pl test understand Windows dates.
Eric Kow <[EMAIL PROTECTED]>**20080916011339
 Windows does not abbreviate its timezones.
] 
[Disable some tests that don't work under Windows.
Eric Kow <[EMAIL PROTECTED]>**20080916000912] 
[Translate get.pl test into shell.
Eric Kow <[EMAIL PROTECTED]>**20080916000227
 The original get.pl uses the Perl Cwd library, which seems not
 to work for purposes of this test under MSYS.
] 
[Resolve issue691: distinguish between NoArg and ReqArg in defaults parser.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080915224046] 
[Move get_default_flag type to definition.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080915220316] 
[reverse overly-invasive haddocking.
David Roundy <[EMAIL PROTECTED]>**20080915110353] 
[In darcs send if POST fails try sendmail.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080914234314] 
[Grammar in Darcs.Commands.Send.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080914232923] 
[Print "Successfully sent patch bundle to" only when we really sent something.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080914232905] 
[Fix overzealous escaping in haddock.
Eric Kow <[EMAIL PROTECTED]>**20080915070926] 
[Haddock documentation for English.lhs
[EMAIL PROTECTED]
 Docstrings by Eric Kow
] 
[Haddock documentation for PrintPatch
[EMAIL PROTECTED] 
[Haddock documentation for Flags
[EMAIL PROTECTED] 
[Haddock documentation for Motd
[EMAIL PROTECTED]
 docstring by Eric Kow
] 
[Haddock string for TheCommands
[EMAIL PROTECTED]
 Docstring by Eric Kow
] 
[Run testing in temp directories to avoid collosions, fail if DarcsURL header is not found.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080914223930] 
[Use tempfile() UNLINK option to automatically remove temp files at exit.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080914223827] 
[Coding style in upload.cgi.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080914223751] 
[Stop after we found the first DarcsURL: in patch bundle.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080914220421] 
[Spaces in upload.cgi.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080914220324] 
[Really allow pull.sh test to pass on Windows.
Eric Kow <[EMAIL PROTECTED]>**20080914211458
 
 It seems that these redirections cause an openBinaryFile failure under
 Windows.  I do not yet understand why using different names makes a
 difference, but it could provide an interesting clue.
] 
[rewrite upload.cgi so it won't need any customization by default.
David Roundy <[EMAIL PROTECTED]>**20080913171447
 The downside is that it has to do a darcs get --lazy in order to check if
 the patch can be applied.  If you define $target_repo, however, it doesn't
 need to do this (but then can only accept patches to a single
 locally-present repo).
] 
[when _darcs/prefs/post is present, use _darcs/prefs/post for To: header.
David Roundy <[EMAIL PROTECTED]>**20080913171025] 
[sketchy documentation of _darcs/prefs/post
David Roundy <[EMAIL PROTECTED]>**20080913115655] 
[ChangeLog entries for darcs 2.0.3pre1
Eric Kow <[EMAIL PROTECTED]>**20080914094144] 
[Disable amend-cancelling test under Cygwin.
Eric Kow <[EMAIL PROTECTED]>**20080913213039] 
[Make binary.sh test more portable (avoid copying an exe).
Eric Kow <[EMAIL PROTECTED]>**20080913212843
 Under Windows, copying the exe file will result in an .exe extension
 being appended to the filename.  This confuses the test.
] 
[set default upload.cgi to work on darcs-unstable.
David Roundy <[EMAIL PROTECTED]>**20080913112227] 
[Improve upload.cgi.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080912230953
 - check if patch is valid before sending
 - use sendmail to send patches or drop to maildir
] 
[Spaces and punctuation in upload.cgi.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080912230827] 
[fix problem in Darcs.URL refactor pointed out by Eric.
David Roundy <[EMAIL PROTECTED]>**20080913104327] 
[Disable a pull.sh test under Windows.
Eric Kow <[EMAIL PROTECTED]>**20080912224027
 It relies on darcs not working if we chmod u-r a file.
 This seems to have little effect in Windows.
] 
[refactor Darcs.URL to eliminate use of Regexes.
David Roundy <[EMAIL PROTECTED]>**20080912173611
 The algorithms here are not tricky, and I find this easier to read.
] 
[change is_file to return false on [EMAIL PROTECTED]:
David Roundy <[EMAIL PROTECTED]>**20080912173501] 
[clean up whitespace.
David Roundy <[EMAIL PROTECTED]>**20080912150248] 
[fix manual for optional arguments.
David Roundy <[EMAIL PROTECTED]>**20080912150231] 
[clean up whitespace.
David Roundy <[EMAIL PROTECTED]>**20080912145708] 
[add test for new --output-auto-name feature.
David Roundy <[EMAIL PROTECTED]>**20080912145648] 
[Spaces in Darcs.Commands.Send module.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080912122223] 
[Make '--output-auto-name' accept optional directory argument.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080912120516] 
[Add DarcsOptAbsPathOption for options with optional path argument.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080912112458] 
[Refactor Darcs.Repository.Prefs.getCaches.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080912055204] 
[Print warning when '--http-pipelining' option is used, but darcs is compiled without HTTP pipelining support.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080912054253] 
[Do not download URL we have speculated before.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080912053236] 
[Spaces and parentheses in URL module.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080912053000] 
[Coding style in Darcs.Arguments.network_options.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080911140710] 
[Resolve issue1054: --no-cache option to ignore patch caches.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080911140233] 
[Remove unused variable from configure.ac.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080911132107] 
[Comment in configure.ac.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080911115840] 
[Indentation fixes in configure.ac.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080911115117] 
[Formating and minor refactoring in URL.urlThread.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080910061227] 
[insecure printfs - fix the two that I can currently hit
Steve Cotton <[EMAIL PROTECTED]>**20080910230659] 
[TAG this version works.
David Roundy <[EMAIL PROTECTED]>**20080910212908] 
Patch bundle hash:
101ed49805a8d39995705cdeb24e5ce4db124380
_______________________________________________
darcs-users mailing list
[email protected]
http://lists.osuosl.org/mailman/listinfo/darcs-users

Reply via email to