diff options
author | Joey Hess <joeyh@joeyh.name> | 2019-09-26 20:05:15 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2019-09-26 20:05:15 -0400 |
commit | 69b3e0abcd4985bcf138eaf193dd869b9f4e0bc0 (patch) | |
tree | 9db70aaf79c882adbd245a4732a3d4741b5032a1 /ControlWindow.hs | |
parent | 88263101ab8baf6f2b6a6a9edebc148b1bba7916 (diff) | |
download | debug-me-69b3e0abcd4985bcf138eaf193dd869b9f4e0bc0.tar.gz |
Avoid a crash when run without a controlling tty, which may happen in some container environments.
Diffstat (limited to 'ControlWindow.hs')
-rw-r--r-- | ControlWindow.hs | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/ControlWindow.hs b/ControlWindow.hs index bd79d0f..29c81c9 100644 --- a/ControlWindow.hs +++ b/ControlWindow.hs @@ -98,9 +98,20 @@ type Response = String type PromptChan = TChan Prompt type ResponseChan = TChan Response +-- | Get a name for the debug-me user. When possible this will be the +-- actual username, but failing that, anything reasonable will do, +-- since it's only ever displayed to the person they are communicating +-- with. +getUserName :: IO String +getUserName = do + loginname <- try getLoginName :: IO (Either SomeException String) + case loginname of + Right n -> return n + Left _ -> return "user" + collectOutput :: TMChan ControlOutput -> PromptChan -> ResponseChan -> IO () collectOutput ochan promptchan responsechan = do - myusername <- fromString <$> getLoginName + myusername <- fromString <$> getUserName loop myusername where loop myusername = do |