diff --git a/Foreign/C/Error.hs b/Foreign/C/Error.hs
index ac26141a3e0abb5521208af7f11f43c7a8ea71e8..dc450f3c9b8a57402a6b90a76a9923f107405196 100644
--- a/Foreign/C/Error.hs
+++ b/Foreign/C/Error.hs
@@ -118,6 +118,9 @@ import Data.Maybe
 import GHC.IOBase
 import GHC.Num
 import GHC.Base
+#elif __HUGS__
+import Hugs.Prelude		( Handle, IOError, ioError )
+import System.IO.Unsafe		( unsafePerformIO )
 #else
 import System.IO		( Handle )
 import System.IO.Error		( IOError, ioError )
diff --git a/System/Posix/Internals.hs b/System/Posix/Internals.hs
index e03c5ddb7a2529179d84f539d3252fd13806d8de..23ded3614398618c971deffaaf9c062fc61adba9 100644
--- a/System/Posix/Internals.hs
+++ b/System/Posix/Internals.hs
@@ -32,18 +32,19 @@ import Foreign.C
 import Data.Bits
 import Data.Maybe
 
-#ifdef __GLASGOW_HASKELL__
+#if __GLASGOW_HASKELL__
 import GHC.Base
 import GHC.Num
 import GHC.Real
 import GHC.IOBase
+#elif __HUGS__
+import Hugs.Prelude (IOException(..), IOErrorType(..))
+import Hugs.IO (IOMode(..))
 #else
 import System.IO
 #endif
 
 #ifdef __HUGS__
-import Hugs.Prelude (IOException(..), IOErrorType(..))
-
 {-# CFILES cbits/PrelIOUtils.c cbits/dirUtils.c cbits/consUtils.c #-}
 #endif