diff -ru riot-1ds-20080618/ChangeLog riot-1ds-20080618--mine/ChangeLog
--- riot-1ds-20080618/ChangeLog	2008-06-18 13:56:59.000000000 +0000
+++ riot-1ds-20080618--mine/ChangeLog	2016-10-25 23:44:50.000000000 +0000
@@ -1,3 +1,8 @@
+2016-10-25 23:42 UTC  David Niklas <doark@mail.com>
+  * Patched a bunch of import bugs.
+  * Patched several build related bugs.
+  * Fixed a lot of warnings.
+
 2008-06-18 13:56 UTC  Tuomo Valkonen <tuomov@iki.fi>
   tagged riot-1ds-20080618
 
@@ -42,7 +47,7 @@
 2006-05-01 21:05 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Build with ghc --make.
   - Got fed up with the old kludge.
-  - As a consequence, it is not possible to build against hs-plugins 
+  - As a consequence, it is not possible to build against hs-plugins
     anymore.
 
 2006-05-01 20:37 UTC  Tuomo Valkonen <tuomov@iki.fi>
@@ -128,7 +133,7 @@
 2005-05-11 17:32 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Changes to build with GHC6.4.
   - System.Posix.Signals.setStoppedChildFlag is broken in GHC6.4 and is
-    not used now. This means that you can not suspend (^Z) your editor 
+    not used now. This means that you can not suspend (^Z) your editor
     and expect Riot to work after that.
 
 2005-05-06 15:17 UTC  Tuomo Valkonen <tuomov@iki.fi>
@@ -203,7 +208,7 @@
   'cfg_encoding' which can be set to a value like 'Enc "iso-8859-1"'. The default
   remains utf-8.
   
-  Lot's of refactorings were necessary to make this fix possible. As a result, 
+  Lot's of refactorings were necessary to make this fix possible. As a result,
   a lot of function in the UI module are now typed in the RI monad.
   
   
@@ -248,12 +253,12 @@
   This makes it much more convenient to read a riot file with a mail client like
   mutt.
   
-  Additionally, I appended '@riot' to every message-id, because mutt needs it for threading. 
+  Additionally, I appended '@riot' to every message-id, because mutt needs it for threading.
   I also add a new header line 'From: Riot' to newly created entries, which makes them
   look a bit nicer in a mail client.
   
   Note: It is not necessary to convert your old riot files in any way. However, if you want
-  threading in mutt, than you have to append '@riot' to all message ids and to all 
+  threading in mutt, than you have to append '@riot' to all message ids and to all
   'In-Reply-To' headers.
   
 
@@ -272,7 +277,7 @@
 2004-11-05 13:42 UTC  mail@stefanheimann.net
   * monad-patch
   Added a new module called Riot which contains some basic types as well as the
-  definition of the RI monad. 
+  definition of the RI monad.
     
   I have only adapted some functions in the Main module to the new monad, but the
   other modules should be adapted too.
@@ -281,12 +286,12 @@
 
 2004-11-02 21:14 UTC  mail@stefanheimann.net
   * save_always
-  This patch adds an option to riot that allows every change to be written 
+  This patch adds an option to riot that allows every change to be written
   directly to disk.
   
-  It introduces an additional field in the Config datatype named options. 
+  It introduces an additional field in the Config datatype named options.
   For now, options has only one field 'save_always'. If save_always is True,
-  all changes are written directly to disk. If save_always is False, changes 
+  all changes are written directly to disk. If save_always is False, changes
   are only written when requested by the user.
 
 2004-10-17 17:57 UTC  Tuomo Valkonen <tuomov@iki.fi>
@@ -390,7 +395,7 @@
   * Some wchar support compilation option changes; system.mk was missing.
 
 2004-09-28 08:01 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Added character set support. 
+  * Added character set support.
   
   New entries are saved in utf-8 encoding.
   
Only in riot-1ds-20080618--mine/Curses: Curses.hs
diff -ru riot-1ds-20080618/Curses/Curses.hsc riot-1ds-20080618--mine/Curses/Curses.hsc
--- riot-1ds-20080618/Curses/Curses.hsc	2008-06-18 13:56:58.000000000 +0000
+++ riot-1ds-20080618--mine/Curses/Curses.hsc	2016-10-23 22:18:35.000000000 +0000
@@ -1,4 +1,4 @@
-{-# OPTIONS -fffi -fglasgow-exts #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
 
 module Curses.Curses (
     --------------------------------------------------------------------
@@ -121,14 +121,14 @@
     where
 
 import Prelude hiding (pi)
-import Monad 
-import Char           (chr, ord, isPrint, isSpace, toLower)
-import Ix             (Ix)
+import Control.Monad 
+import Data.Char      (chr, ord, isPrint, isSpace, toLower)
+import Data.Ix        (Ix)
 
 import Data.Bits
 import Control.Concurrent
 import Foreign
-import CForeign ( CInt, CChar, CShort, withCString )
+import Foreign.C.String ( CInt, CChar, CShort, withCString )
 
 import System.IO.Unsafe
 import Control.Exception hiding(block)
@@ -142,9 +142,9 @@
 -- #endif
 
 import System.Posix.Signals
-import List 
-import Monad
-import Maybe
+import Data.List 
+import Control.Monad
+import Data.Maybe
 
 
 #include <my_curses.h>
Only in riot-1ds-20080618--mine/Curses: Curses_hsc.c
Only in riot-1ds-20080618--mine/Curses: Curses_hsc.h
Only in riot-1ds-20080618--mine/Curses: Curses_hsc.o
Only in riot-1ds-20080618--mine/Ginsu: CWString.hs
diff -ru riot-1ds-20080618/Ginsu/CWString.hsc riot-1ds-20080618--mine/Ginsu/CWString.hsc
--- riot-1ds-20080618/Ginsu/CWString.hsc	2008-06-18 13:56:58.000000000 +0000
+++ riot-1ds-20080618--mine/Ginsu/CWString.hsc	2016-10-23 22:18:38.000000000 +0000
@@ -1,4 +1,5 @@
-{-# OPTIONS -fglasgow-exts -ffi #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+
 -- arch-tag: 72067bff-05e1-4c0e-94aa-34b54f437d92
 
 module Ginsu.CWString (
@@ -45,12 +46,12 @@
 import Foreign.C.String
 import Foreign.C.Types
 #endif
-import qualified CForeign
-import Char
+import qualified Foreign.C.String
+import Data.Char
 import Foreign
-import Monad
+import Control.Monad
 import GHC.Exts
-import IO
+import Data.Array.IO
 
 
 #if !defined(__STDC_ISO_10646__)
Only in riot-1ds-20080618--mine/Ginsu: CWString_hsc.c
Only in riot-1ds-20080618--mine/Ginsu: CWString_hsc.h
Only in riot-1ds-20080618--mine/Ginsu: CWString_hsc.o
diff -ru riot-1ds-20080618/Ginsu/GenUtil.hs riot-1ds-20080618--mine/Ginsu/GenUtil.hs
--- riot-1ds-20080618/Ginsu/GenUtil.hs	2008-06-18 13:56:57.000000000 +0000
+++ riot-1ds-20080618--mine/Ginsu/GenUtil.hs	2016-10-23 22:06:38.000000000 +0000
@@ -84,14 +84,14 @@
     UniqueProducer(..)
     ) where
 
-import Char(isAlphaNum, isSpace, toLower,  ord)
-import List(group,sort)
-import List(intersperse, sortBy, groupBy)
-import Monad
-import qualified IO
-import qualified System
-import Random(StdGen, newStdGen, randomR)
-import Time
+import Data.Char(isAlphaNum, isSpace, toLower,  ord)
+import Data.List(group,sort)
+import Data.List(intersperse, sortBy, groupBy)
+import Control.Monad
+import qualified Data.Array.IO
+import qualified System.Environment
+import System.Random(StdGen, newStdGen, randomR)
+import System.Time
 
 {-# SPECIALIZE snub :: [String] -> [String] #-}
 {-# SPECIALIZE snub :: [Int] -> [Int] #-}
Only in riot-1ds-20080618--mine/Ginsu: Locale.hs
diff -ru riot-1ds-20080618/Ginsu/Locale.hsc riot-1ds-20080618--mine/Ginsu/Locale.hsc
--- riot-1ds-20080618/Ginsu/Locale.hsc	2008-06-18 13:56:57.000000000 +0000
+++ riot-1ds-20080618--mine/Ginsu/Locale.hsc	2016-10-23 22:19:39.000000000 +0000
@@ -1,4 +1,5 @@
-{-# OPTIONS -fglasgow-exts -ffi -#include <locale.h> #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+
 -- arch-tag: d48a3194-c698-43c7-b581-08e7a213f0c8
 module Ginsu.Locale(
     setupLocale,
@@ -13,7 +14,7 @@
 
 import Foreign
 import Foreign.C
-import Char
+import Data.Char
 import GHC.Exts
 
 
Only in riot-1ds-20080618--mine/: IConv.hs
diff -ru riot-1ds-20080618/IConv.hsc riot-1ds-20080618--mine/IConv.hsc
--- riot-1ds-20080618/IConv.hsc	2008-06-18 13:56:58.000000000 +0000
+++ riot-1ds-20080618--mine/IConv.hsc	2016-10-23 22:01:18.000000000 +0000
@@ -42,7 +42,7 @@
 import Control.Exception(Exception, try)
 import Control.Monad(liftM)
 import System.IO.Unsafe(unsafePerformIO)
-import Char(chr, ord)
+import Data.Char(chr, ord)
 
 type IConv = Ptr () --(#type iconv_t)
 
diff -ru riot-1ds-20080618/Riot/BootAPI.hs riot-1ds-20080618--mine/Riot/BootAPI.hs
--- riot-1ds-20080618/Riot/BootAPI.hs	2008-06-18 13:56:58.000000000 +0000
+++ riot-1ds-20080618--mine/Riot/BootAPI.hs	2016-10-23 22:20:36.000000000 +0000
@@ -1,4 +1,3 @@
-{-# OPTIONS -fglasgow-exts #-}
 --
 -- riot/Riot/BootAPI.hs
 -- 
diff -ru riot-1ds-20080618/Riot/Editor.hs riot-1ds-20080618--mine/Riot/Editor.hs
--- riot-1ds-20080618/Riot/Editor.hs	2008-06-18 13:56:58.000000000 +0000
+++ riot-1ds-20080618--mine/Riot/Editor.hs	2016-10-23 21:55:25.000000000 +0000
@@ -16,13 +16,13 @@
     get_editor
 )where
 
-import System(getEnv)
+import System.Environment(getEnv)
 import System.Posix.Temp(mkstemp)
 import System.Posix.Files(removeLink)
 import System.Posix.Unistd
 import System.Cmd(system)
 import Riot.Version(package)
-import IO
+import Data.Array.IO
 
 
 shell_safe_string s =
diff -ru riot-1ds-20080618/Riot/Entry.hs riot-1ds-20080618--mine/Riot/Entry.hs
--- riot-1ds-20080618/Riot/Entry.hs	2008-06-18 13:56:58.000000000 +0000
+++ riot-1ds-20080618--mine/Riot/Entry.hs	2016-10-23 21:57:07.000000000 +0000
@@ -57,9 +57,9 @@
 
 -- Imports {{{
 
-import Maybe
-import List(sort)
-import Time(CalendarTime)
+import Data.Maybe
+import Data.List(sort)
+import System.Time(CalendarTime)
 
 --import Riot
 
diff -ru riot-1ds-20080618/Riot/Event.hs riot-1ds-20080618--mine/Riot/Event.hs
--- riot-1ds-20080618/Riot/Event.hs	2008-06-18 13:56:58.000000000 +0000
+++ riot-1ds-20080618--mine/Riot/Event.hs	2016-10-23 22:01:03.000000000 +0000
@@ -28,12 +28,12 @@
 --import qualified Curses.CursesHelper as CursesH
 
 import qualified Control.Exception
-import Time(getClockTime, toCalendarTime, CalendarTime)
+import System.Time(getClockTime, toCalendarTime, CalendarTime)
 import System.Posix.IO (setFdOption, FdOption(..))
 import Control.Monad(liftM, when)
-import Maybe
-import List(init, intersperse)
-import Char
+import Data.Maybe
+import Data.List(init, intersperse)
+import Data.Char
 
 import Riot.Style(UIAttr(..), init_uiattr, default_uiattr, StyleSpec)
 import Riot.UI
diff -ru riot-1ds-20080618/Riot/KeyMap.hs riot-1ds-20080618--mine/Riot/KeyMap.hs
--- riot-1ds-20080618/Riot/KeyMap.hs	2008-06-18 13:56:58.000000000 +0000
+++ riot-1ds-20080618--mine/Riot/KeyMap.hs	2016-10-23 22:00:10.000000000 +0000
@@ -13,7 +13,7 @@
 
 import Riot.Riot
 import Curses.Curses (Key(..))
-import Char
+import Data.Char
 
 key2str :: Key -> String
 key2str (KeyChar ' ') = "<Space>"
diff -ru riot-1ds-20080618/Riot/MBox.hs riot-1ds-20080618--mine/Riot/MBox.hs
--- riot-1ds-20080618/Riot/MBox.hs	2008-06-18 13:56:58.000000000 +0000
+++ riot-1ds-20080618--mine/Riot/MBox.hs	2016-10-23 22:01:53.000000000 +0000
@@ -25,11 +25,11 @@
 
 -- Imports {{{
 
-import Char
-import Maybe
-import Time
+import Data.Char
+import Data.Maybe
+import System.Time
 import System.Locale(defaultTimeLocale)
-import List(sortBy)
+import Data.List(sortBy)
 import Data.Map(Map, fromList, lookup)
 import Data.Unique
 import Control.Monad(liftM)
@@ -39,7 +39,7 @@
 import Riot.Riot
 
 import Control.Exception
-import List
+import Data.List
 
 #ifdef CF_CHARSET_SUPPORT
 import IConv
diff -ru riot-1ds-20080618/Riot/Riot.hs riot-1ds-20080618--mine/Riot/Riot.hs
--- riot-1ds-20080618/Riot/Riot.hs	2008-06-18 13:56:58.000000000 +0000
+++ riot-1ds-20080618--mine/Riot/Riot.hs	2016-10-23 20:55:41.000000000 +0000
@@ -31,7 +31,7 @@
 ) where
 
 import Prelude hiding (catch)
-import Time(getClockTime, toCalendarTime, CalendarTime)
+import System.Time(getClockTime, toCalendarTime, CalendarTime)
 import Control.Exception
 import Control.Monad.State
 import qualified Curses.Curses as Curses
diff -ru riot-1ds-20080618/Riot/RiotMain.hs riot-1ds-20080618--mine/Riot/RiotMain.hs
--- riot-1ds-20080618/Riot/RiotMain.hs	2008-06-18 13:56:58.000000000 +0000
+++ riot-1ds-20080618--mine/Riot/RiotMain.hs	2016-10-23 22:20:16.000000000 +0000
@@ -1,4 +1,3 @@
-{-# OPTIONS -cpp -fglasgow-exts #-}
 --
 -- riot/Riot/RiotMain.hs
 -- 
diff -ru riot-1ds-20080618/Riot/Style.hs riot-1ds-20080618--mine/Riot/Style.hs
--- riot-1ds-20080618/Riot/Style.hs	2008-06-18 13:56:58.000000000 +0000
+++ riot-1ds-20080618--mine/Riot/Style.hs	2016-10-23 21:31:34.000000000 +0000
@@ -22,7 +22,7 @@
 )where
 
 import qualified Curses.Curses as Curses
-import Maybe(fromJust)
+import Data.Maybe(fromJust)
 
 c_default   = fromJust $ Curses.color "default"
 c_black     = fromJust $ Curses.color "black"
diff -ru riot-1ds-20080618/Riot/UI.hs riot-1ds-20080618--mine/Riot/UI.hs
--- riot-1ds-20080618/Riot/UI.hs	2008-06-18 13:56:58.000000000 +0000
+++ riot-1ds-20080618--mine/Riot/UI.hs	2016-10-23 22:00:50.000000000 +0000
@@ -77,12 +77,12 @@
 
 import qualified Curses.Curses as Curses
 import qualified Control.Exception
-import Time(CalendarTime)
-import IO(stdin)
+import System.Time(CalendarTime)
+import System.IO(stdin)
 import Control.Monad(liftM, when)
-import Maybe
-import Char
-import List(find,init,intersperse)
+import Data.Maybe
+import Data.Char
+import Data.List(find,init,intersperse)
 import Control.Monad.Trans(MonadIO, liftIO)
 import System.Posix.Signals
 import System.Posix.IO (setFdOption, FdOption(..))
Only in riot-1ds-20080618--mine/: a.txt
Only in riot-1ds-20080618--mine/cbits: nomacro.o
diff -ru riot-1ds-20080618/system.mk riot-1ds-20080618--mine/system.mk
--- riot-1ds-20080618/system.mk	2008-06-18 13:56:58.000000000 +0000
+++ riot-1ds-20080618--mine/system.mk	2016-10-25 23:40:02.000000000 +0000
@@ -27,7 +27,7 @@
 # Curses. Use ncursesw if you want widechar support.
 #
 DEFINES += -DHAVE_WADDNWSTR -DHAVE_RESIZETERM
-LIBS_CURSES = -lncursesw
+LIBS_CURSES = -lncursesw -ltinfo -ltinfow
 #LIBS_CURSES = -lncurses
 
 
@@ -39,7 +39,7 @@
 # Define this if your <langinfo.h> doesn't provide the CODESET value
 # (OpenBSD, at least)
 #
-#DEFINES += -DNO_LANGINFO_CODESET
+DEFINES += -DNO_LANGINFO_CODESET
 
 #
 # Define this if you have a broken
@@ -52,11 +52,10 @@
 DEFINES += -DGHC64
 
 GHC=            ghc
-HC_OPTS=        -fglasgow-exts
+HC_OPTS=        -fglasgow-exts -XForeignFunctionInterface
 
 #HC_OPTS+=      -Onot -fasm -H64m
 HC_OPTS+=       -cpp -fasm -funbox-strict-fields -fignore-asserts
-HC_OPTS+=       -cpp
 #HC_OPTS+=      -debug
 
 HSC2HS=         hsc2hs
