+-- | Display and log debug information. WARNING! This does not
+-- automatically append a newline. The output is displayed/logged
+-- as-is, for, you know, debug purposes.
+report_debug :: String -> IO ()
+report_debug s = do
+ display_debug s
+ log_debug s
+
+
+-- | Display and log an error condition. This will prefix the error
+-- with "ERROR: " when displaying (but not logging) it so that it
+-- stands out.
+--
+report_error :: String -> IO ()
+report_error s = do
+ display_error $ "ERROR: " ++ s
+ log_error s
+
+
+-- | Display and log an informational (status) message.
+report_info :: String -> IO ()
+report_info s = do
+ display_info s
+ log_info s
+
+
+-- | A special case of report_debug for reporting the two bits of data
+-- that we sent to TSN: the username and password.
+--
+report_sent :: String -> IO ()
+report_sent s = do
+ display_sent s
+ log_debug s
+
+
+-- | Display and log a warning. This will prefix the warning with
+-- "WARNING: " when displaying (but not logging) it so that it
+-- stands out.
+--
+report_warning :: String -> IO ()
+report_warning s = do
+ display_warning $ "WARNING: " ++ s
+ log_warning s
+
+
+-- | Receive a single line of text from a Handle, and send it to the
+-- debug log.
+--