import Prelude hiding (log, length, readFile, getContents)
import Control.Concurrent (forkIO, killThread)
-import Control.Concurrent.MVar (readMVar)
+
import Data.ByteString.Char8 (ByteString, getContents, readFile)
import qualified FuncTorrent.FileSystem as FS (createMsgChannel, pieceMapFromFile, run)
import FuncTorrent.Logger (initLogger, logMessage, logStop)
+import FuncTorrent.MagnetURI
import FuncTorrent.Metainfo (Info(..), Metainfo(..), torrentToMetainfo)
import FuncTorrent.Peer (handlePeerMsgs)
import FuncTorrent.PieceManager (initPieceMap)
import qualified FuncTorrent.Server as Server
import FuncTorrent.Tracker (runTracker, getConnectedPeers, newTracker)
import Network (PortID (PortNumber))
-import System.IO (withFile, IOMode (ReadWriteMode))
import System.Directory (doesFileExist)
import System.Environment (getArgs)
import System.Exit (exitSuccess)
+import System.IO (withFile, IOMode (ReadWriteMode))
import System.Random (getStdGen, randomRs)
logError :: String -> (String -> IO ()) -> IO ()