display "transfer already in progress" as a note
This commit is contained in:
parent
2d8a801a97
commit
ec8cf85fcc
1 changed files with 9 additions and 9 deletions
|
@ -118,14 +118,16 @@ runTransfer t file shouldretry a = do
|
||||||
info <- liftIO $ startTransferInfo file
|
info <- liftIO $ startTransferInfo file
|
||||||
(meter, tfile, metervar) <- mkProgressUpdater t info
|
(meter, tfile, metervar) <- mkProgressUpdater t info
|
||||||
mode <- annexFileMode
|
mode <- annexFileMode
|
||||||
(fd, cantransfer) <- liftIO $ prep tfile mode info
|
(fd, inprogress) <- liftIO $ prep tfile mode info
|
||||||
if cantransfer
|
if inprogress
|
||||||
then do
|
then do
|
||||||
|
showNote "transfer already in progress"
|
||||||
|
return False
|
||||||
|
else do
|
||||||
ok <- retry info metervar $
|
ok <- retry info metervar $
|
||||||
bracketIO (return fd) (cleanup tfile) (const $ a meter)
|
bracketIO (return fd) (cleanup tfile) (const $ a meter)
|
||||||
unless ok $ recordFailedTransfer t info
|
unless ok $ recordFailedTransfer t info
|
||||||
return ok
|
return ok
|
||||||
else return False
|
|
||||||
where
|
where
|
||||||
prep tfile mode info = do
|
prep tfile mode info = do
|
||||||
#ifndef __WINDOWS__
|
#ifndef __WINDOWS__
|
||||||
|
@ -133,22 +135,20 @@ runTransfer t file shouldretry a = do
|
||||||
openFd (transferLockFile tfile) ReadWrite (Just mode)
|
openFd (transferLockFile tfile) ReadWrite (Just mode)
|
||||||
defaultFileFlags { trunc = True }
|
defaultFileFlags { trunc = True }
|
||||||
case mfd of
|
case mfd of
|
||||||
Nothing -> return (mfd, True)
|
Nothing -> return (mfd, False)
|
||||||
Just fd -> do
|
Just fd -> do
|
||||||
locked <- catchMaybeIO $
|
locked <- catchMaybeIO $
|
||||||
setLock fd (WriteLock, AbsoluteSeek, 0, 0)
|
setLock fd (WriteLock, AbsoluteSeek, 0, 0)
|
||||||
if isNothing locked
|
if isNothing locked
|
||||||
then do
|
then return (Nothing, True)
|
||||||
hPutStrLn stderr "transfer already in progress"
|
|
||||||
return (Nothing, False)
|
|
||||||
else do
|
else do
|
||||||
void $ tryIO $ writeTransferInfoFile info tfile
|
void $ tryIO $ writeTransferInfoFile info tfile
|
||||||
return (mfd, True)
|
return (mfd, False)
|
||||||
#else
|
#else
|
||||||
mfd <- catchMaybeIO $ do
|
mfd <- catchMaybeIO $ do
|
||||||
writeFile (transferLockFile tfile) ""
|
writeFile (transferLockFile tfile) ""
|
||||||
writeTransferInfoFile info tfile
|
writeTransferInfoFile info tfile
|
||||||
return (mfd, True)
|
return (mfd, False)
|
||||||
#endif
|
#endif
|
||||||
cleanup _ Nothing = noop
|
cleanup _ Nothing = noop
|
||||||
cleanup tfile (Just fd) = do
|
cleanup tfile (Just fd) = do
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue