Make all --batch input, as well as fromkey and registerurl stdin be processed without requiring it to be in the current encoding.

This commit is contained in:
Joey Hess 2016-12-13 15:35:04 -04:00
parent a12eac060c
commit 469bfa7ff3
No known key found for this signature in database
GPG key ID: C910D9222512E3C7
5 changed files with 18 additions and 9 deletions

View file

@ -10,6 +10,8 @@ git-annex (6.20161211) UNRELEASED; urgency=medium
with too many old versions of ssh and unusual ssh configurations.
It should have not been needed anyway since ssh is supposted to
have TCPKeepAlive enabled by default.
* Make all --batch input, as well as fromkey and registerurl stdin
be processed without requiring it to be in the current encoding.
-- Joey Hess <id@joeyh.name> Sun, 11 Dec 2016 21:29:51 -0400

View file

@ -48,16 +48,19 @@ batchBadInput Batch = liftIO $ putStrLn ""
-- Reads lines of batch mode input and passes to the action to handle.
batchInput :: (String -> Either String a) -> (a -> Annex ()) -> Annex ()
batchInput parser a = do
mp <- liftIO $ catchMaybeIO getLine
case mp of
Nothing -> return ()
Just v -> do
either parseerr a (parser v)
batchInput parser a
batchInput parser a = go =<< batchLines
where
go [] = return ()
go (l:rest) = do
either parseerr a (parser l)
go rest
parseerr s = giveup $ "Batch input parse failure: " ++ s
batchLines :: Annex [String]
batchLines = liftIO $ do
fileEncoding stdin
lines <$> getContents
-- Runs a CommandStart in batch mode.
--
-- The batch mode user expects to read a line of output, and it's up to the

View file

@ -45,7 +45,7 @@ startMass = do
next massAdd
massAdd :: CommandPerform
massAdd = go True =<< map (separate (== ' ')) . lines <$> liftIO getContents
massAdd = go True =<< map (separate (== ' ')) <$> batchLines
where
go status [] = next $ return status
go status ((keyname,f):rest) | not (null keyname) && not (null f) = do

View file

@ -35,7 +35,7 @@ start [] = do
start _ = giveup "specify a key and an url"
massAdd :: CommandPerform
massAdd = go True =<< map (separate (== ' ')) . lines <$> liftIO getContents
massAdd = go True =<< map (separate (== ' ')) <$> batchLines
where
go status [] = next $ return status
go status ((keyname,u):rest) | not (null keyname) && not (null u) = do

View file

@ -32,3 +32,7 @@ Note that this is indeed valid utf-8:
00000000 c3 a9 0a |...|
00000003
"""]]
> Despite my strange inability to reproduce these, there's really only one
> thing that can fix it, namely using fileEncoding. Now done for all batch
> and stdin reading stuff. [[fixed|done]] I suppose. --[[Joey]]