    -----------------------------------------------------------------------------
    -- |
    -- Module      :  System.Cmd
    -- Copyright   :  (c) The University of Glasgow 2001
    -- License     :  BSD-style (see the file libraries/base/LICENSE)
    --
    -- Maintainer  :  libraries@haskell.org
    -- Stability   :  provisional
    -- Portability :  portable
    --
    -- Executing an external command.
    --
    -- This module provides a simple interface for executing external commands.
    -- For a more complex, but more powerful, interface, see the "System.Process"
    -- module.
    --
    -----------------------------------------------------------------------------

    -- later: {-# DEPRECATED "Use System.Process instead" #-}
    module System.Cmd
        ( system,        -- :: String -> IO ExitCode
          rawSystem,     -- :: FilePath -> [String] -> IO ExitCode
        ) where

    #ifndef __NHC__
    import System.Process
    #else
    import System

    rawSystem :: String -> [String] -> IO ExitCode
    rawSystem cmd args = system (unwords (map translate (cmd:args)))

    -- copied from System.Process (qv)
    translate :: String -> String
    translate str = '"' : snd (foldr escape (True,"\"") str)
      where escape '"'  (b,     str) = (True,  '\\' : '"'  : str)
            escape '\\' (True,  str) = (True,  '\\' : '\\' : str)
            escape '\\' (False, str) = (False, '\\' : str)
            escape c    (b,     str) = (False, c : str)

    #endif