X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=System%2FCmd.hs;h=ceb0bbe53d33106b46a2e15b4d14242bf49a3b20;hb=e0b4718ee302c4349eb892369b63098bc1e02488;hp=5838f852992304c62d92d9eade4656454f32ebfe;hpb=3bc707020c8d0f7a11b652c38d33f1d9c87d3ae7;p=ghc-base.git diff --git a/System/Cmd.hs b/System/Cmd.hs index 5838f85..ceb0bbe 100644 --- a/System/Cmd.hs +++ b/System/Cmd.hs @@ -22,11 +22,9 @@ module System.Cmd import Prelude #ifdef __GLASGOW_HASKELL__ -import Foreign -import Foreign.C -import System.Exit -import GHC.IOBase -#include "ghcconfig.h" +import System.Process +import System.Exit ( ExitCode ) +import GHC.IOBase ( ioException, IOException(..), IOErrorType(..) ) #endif #ifdef __HUGS__ @@ -63,19 +61,12 @@ passes the command to the Windows command interpreter (@CMD.EXE@ or #ifdef __GLASGOW_HASKELL__ system :: String -> IO ExitCode system "" = ioException (IOError Nothing InvalidArgument "system" "null command" Nothing) -system cmd = - withCString cmd $ \s -> do - status <- throwErrnoIfMinus1 "system" (primSystem s) - case status of - 0 -> return ExitSuccess - n -> return (ExitFailure n) - -foreign import ccall unsafe "systemCmd" primSystem :: CString -> IO Int - --- --------------------------------------------------------------------------- --- rawSystem - --- rawSystem is in a separate file, so we can #include it various places. -#include "RawSystem.hs-inc" - +system cmd = do + p <- runCommand cmd + waitForProcess p + +rawSystem :: String -> [String] -> IO ExitCode +rawSystem cmd args = do + p <- runProcess cmd args Nothing Nothing Nothing Nothing Nothing + waitForProcess p #endif /* __GLASGOW_HASKELL__ */