Work around problem with concurrent-output when in a non-unicode locale by avoiding use of it in such a locale.

Instead -J will behave as if it was built without concurrent-output support
in this situation. Ie, it will be mostly quiet, except when there's an
error.

Note that it's not a problem for a filename to contain invalid utf-8 when
in a utf-8 locale. That is handled ok by concurrent-output. It's only
displaying unicode characters in a non-unicode locale that doesn't work.
This commit is contained in:
Joey Hess 2016-02-14 15:02:42 -04:00
parent d3130930db
commit 0f18636c8a
Failed to extract signature
8 changed files with 82 additions and 45 deletions

View file

@ -21,13 +21,13 @@ outputMessage json s = withOutputType go
go NormalOutput = liftIO $
flushed $ putStr s
go QuietOutput = q
go (ConcurrentOutput _) = concurrentMessage False s q
go o@(ConcurrentOutput {}) = concurrentMessage o False s q
go JSONOutput = liftIO $ flushed json
outputError :: String -> Annex ()
outputError s = withOutputType go
where
go (ConcurrentOutput _) = concurrentMessage True s (go NormalOutput)
go o@(ConcurrentOutput {}) = concurrentMessage o True s (go NormalOutput)
go _ = liftIO $ do
hFlush stdout
hPutStr stderr s