projects
/
ghc-hetmet.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
18b1554
)
always try to remove the new file before restoring the old one (#1963)
author
Simon Marlow
<simonmar@microsoft.com>
Fri, 14 Dec 2007 12:33:45 +0000
(12:33 +0000)
committer
Simon Marlow
<simonmar@microsoft.com>
Fri, 14 Dec 2007 12:33:45 +0000
(12:33 +0000)
utils/ghc-pkg/Main.hs
patch
|
blob
|
history
diff --git
a/utils/ghc-pkg/Main.hs
b/utils/ghc-pkg/Main.hs
index
bdd9c80
..
697816e
100644
(file)
--- a/
utils/ghc-pkg/Main.hs
+++ b/
utils/ghc-pkg/Main.hs
@@
-693,17
+693,16
@@
savingOldConfig filename io = Exception.block $ do
`Exception.catch` \e -> do
hPutStr stdout ("WARNING: an error was encountered while writing "
++ "the new configuration.\n")
`Exception.catch` \e -> do
hPutStr stdout ("WARNING: an error was encountered while writing "
++ "the new configuration.\n")
- if restore_on_error
- then do
+ -- remove any partially complete new version:
+ try (removeFile filename)
+ -- and attempt to restore the old one, if we had one:
+ when restore_on_error $ do
hPutStr stdout "Attempting to restore the old configuration... "
do renameFile oldFile filename
hPutStrLn stdout "done."
`catch` \err -> hPutStrLn stdout ("Failed: " ++ show err)
hPutStr stdout "Attempting to restore the old configuration... "
do renameFile oldFile filename
hPutStrLn stdout "done."
`catch` \err -> hPutStrLn stdout ("Failed: " ++ show err)
- else do
- -- file did not exist before, so the new one which
- -- might be partially complete.
- try (removeFile filename)
- return ()
+ -- Note the above renameFile sometimes fails on Windows with
+ -- "permission denied", I have no idea why --SDM.
Exception.throwIO e
-----------------------------------------------------------------------------
Exception.throwIO e
-----------------------------------------------------------------------------