Compare commits
18 Commits
0.9.0
...
gitea-mast
| Author | SHA1 | Date | |
|---|---|---|---|
| 809ffc7745 | |||
| a0510eaec1 | |||
| cce2c68cab | |||
| 3c5f06f41d | |||
| 6bc5381108 | |||
| ef51863180 | |||
| 09062351f5 | |||
| ab4137572e | |||
| c03a7ec18f | |||
|
|
df298f187e | ||
| 466c72924a | |||
| 9dfb803ba8 | |||
| de46a0c568 | |||
| d9ba67b6f0 | |||
| 9342abeb7a | |||
| e8cbc632c9 | |||
| c556a3d3e4 | |||
| 3aee719130 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -10,3 +10,5 @@ tags
|
|||||||
.stack-work/
|
.stack-work/
|
||||||
.cabal-sandbox/
|
.cabal-sandbox/
|
||||||
cabal.sandbox.config
|
cabal.sandbox.config
|
||||||
|
dist-newstyle/
|
||||||
|
.ghc.environment.*
|
||||||
|
|||||||
@@ -7,12 +7,18 @@ dist: trusty
|
|||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
|
- env: CABALVER=1.18 GHCVER=7.6.3
|
||||||
|
addons: {apt: {packages: [cabal-install-1.18,ghc-7.6.3], sources: [hvr-ghc]}}
|
||||||
- env: CABALVER=1.22 GHCVER=7.8.4
|
- env: CABALVER=1.22 GHCVER=7.8.4
|
||||||
addons: {apt: {packages: [cabal-install-1.22,ghc-7.8.4], sources: [hvr-ghc]}}
|
addons: {apt: {packages: [cabal-install-1.22,ghc-7.8.4], sources: [hvr-ghc]}}
|
||||||
- env: CABALVER=1.24 GHCVER=7.10.2
|
- env: CABALVER=1.24 GHCVER=7.10.2
|
||||||
addons: {apt: {packages: [cabal-install-1.24,ghc-7.10.2], sources: [hvr-ghc]}}
|
addons: {apt: {packages: [cabal-install-1.24,ghc-7.10.2], sources: [hvr-ghc]}}
|
||||||
- env: CABALVER=1.24 GHCVER=8.0.1
|
- env: CABALVER=1.24 GHCVER=8.0.1
|
||||||
addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.1], sources: [hvr-ghc]}}
|
addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.1], sources: [hvr-ghc]}}
|
||||||
|
- env: CABALVER=2.0 GHCVER=8.2.2
|
||||||
|
addons: {apt: {packages: [cabal-install-2.0,ghc-8.2.2], sources: [hvr-ghc]}}
|
||||||
|
- env: CABALVER=2.2 GHCVER=8.4.1
|
||||||
|
addons: {apt: {packages: [cabal-install-2.2,ghc-8.4.1], sources: [hvr-ghc]}}
|
||||||
- env: CABALVER=head GHCVER=head
|
- env: CABALVER=head GHCVER=head
|
||||||
addons: {apt: {packages: [cabal-install-head,ghc-head], sources: [hvr-ghc]}}
|
addons: {apt: {packages: [cabal-install-head,ghc-head], sources: [hvr-ghc]}}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
0.9.2
|
||||||
|
* fix build with ghc-7.6
|
||||||
|
* raise required bytestring version
|
||||||
|
* Tighten base bound to prevent building before GHC 7.6 (by George Wilson)
|
||||||
|
0.9.1
|
||||||
|
* fix build with ghc-7.8 and 7.10
|
||||||
0.9.0
|
0.9.0
|
||||||
* don't force "Path Abs" anymore in IO module, abstract more over Path types
|
* don't force "Path Abs" anymore in IO module, abstract more over Path types
|
||||||
* add 'toAbs'
|
* add 'toAbs'
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# HPath
|
# HPath
|
||||||
|
|
||||||
[](https://gitter.im/hasufell/hpath?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](https://hackage.haskell.org/package/hpath) [](http://travis-ci.org/hasufell/hpath)
|
[](https://gitter.im/hasufell/hpath?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](https://hackage.haskell.org/package/hpath) [](http://travis-ci.org/hasufell/hpath) [](http://packdeps.haskellers.com/feed?needle=hpath)
|
||||||
|
|
||||||
Support for well-typed paths in Haskell. Also provides ByteString based filepath
|
Support for well-typed paths in Haskell. Also provides ByteString based filepath
|
||||||
manipulation.
|
manipulation.
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ main =
|
|||||||
doctest
|
doctest
|
||||||
["-isrc"
|
["-isrc"
|
||||||
, "-XOverloadedStrings"
|
, "-XOverloadedStrings"
|
||||||
|
, "-XScopedTypeVariables"
|
||||||
, "src/HPath.hs"
|
, "src/HPath.hs"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
22
hpath.cabal
22
hpath.cabal
@@ -1,5 +1,5 @@
|
|||||||
name: hpath
|
name: hpath
|
||||||
version: 0.9.0
|
version: 0.9.2
|
||||||
synopsis: Support for well-typed paths
|
synopsis: Support for well-typed paths
|
||||||
description: Support for well-typed paths, utilizing ByteString under the hood.
|
description: Support for well-typed paths, utilizing ByteString under the hood.
|
||||||
license: BSD3
|
license: BSD3
|
||||||
@@ -17,6 +17,9 @@ extra-source-files: README.md
|
|||||||
doctests-posix.hs
|
doctests-posix.hs
|
||||||
|
|
||||||
library
|
library
|
||||||
|
if os(windows)
|
||||||
|
build-depends: unbuildable<0
|
||||||
|
buildable: False
|
||||||
hs-source-dirs: src/
|
hs-source-dirs: src/
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
if impl(ghc >= 8.0)
|
if impl(ghc >= 8.0)
|
||||||
@@ -32,9 +35,9 @@ library
|
|||||||
System.Posix.FD,
|
System.Posix.FD,
|
||||||
System.Posix.FilePath
|
System.Posix.FilePath
|
||||||
other-modules: HPath.Internal
|
other-modules: HPath.Internal
|
||||||
build-depends: base >= 4.2 && <5
|
build-depends: base >= 4.6 && <5
|
||||||
, IfElse
|
, IfElse
|
||||||
, bytestring >= 0.9.2.0
|
, bytestring >= 0.10.0.0
|
||||||
, deepseq
|
, deepseq
|
||||||
, exceptions
|
, exceptions
|
||||||
, hspec
|
, hspec
|
||||||
@@ -46,6 +49,9 @@ library
|
|||||||
|
|
||||||
|
|
||||||
test-suite doctests-hpath
|
test-suite doctests-hpath
|
||||||
|
if os(windows)
|
||||||
|
build-depends: unbuildable<0
|
||||||
|
buildable: False
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
type: exitcode-stdio-1.0
|
type: exitcode-stdio-1.0
|
||||||
ghc-options: -threaded
|
ghc-options: -threaded
|
||||||
@@ -57,12 +63,15 @@ test-suite doctests-hpath
|
|||||||
, hpath
|
, hpath
|
||||||
|
|
||||||
test-suite doctests-posix
|
test-suite doctests-posix
|
||||||
|
if os(windows)
|
||||||
|
build-depends: unbuildable<0
|
||||||
|
buildable: False
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
type: exitcode-stdio-1.0
|
type: exitcode-stdio-1.0
|
||||||
ghc-options: -threaded
|
ghc-options: -threaded
|
||||||
main-is: doctests-posix.hs
|
main-is: doctests-posix.hs
|
||||||
build-depends: base,
|
build-depends: base,
|
||||||
bytestring,
|
bytestring >= 0.10.0.0,
|
||||||
unix,
|
unix,
|
||||||
hpath,
|
hpath,
|
||||||
doctest >= 0.8,
|
doctest >= 0.8,
|
||||||
@@ -70,6 +79,9 @@ test-suite doctests-posix
|
|||||||
QuickCheck
|
QuickCheck
|
||||||
|
|
||||||
test-suite spec
|
test-suite spec
|
||||||
|
if os(windows)
|
||||||
|
build-depends: unbuildable<0
|
||||||
|
buildable: False
|
||||||
Type: exitcode-stdio-1.0
|
Type: exitcode-stdio-1.0
|
||||||
Default-Language: Haskell2010
|
Default-Language: Haskell2010
|
||||||
Hs-Source-Dirs: test
|
Hs-Source-Dirs: test
|
||||||
@@ -106,7 +118,7 @@ test-suite spec
|
|||||||
Build-Depends: base
|
Build-Depends: base
|
||||||
, HUnit
|
, HUnit
|
||||||
, IfElse
|
, IfElse
|
||||||
, bytestring
|
, bytestring >= 0.10.0.0
|
||||||
, hpath
|
, hpath
|
||||||
, hspec >= 1.3
|
, hspec >= 1.3
|
||||||
, process
|
, process
|
||||||
|
|||||||
56
src/HPath.hs
56
src/HPath.hs
@@ -10,10 +10,14 @@
|
|||||||
-- Support for well-typed paths.
|
-- Support for well-typed paths.
|
||||||
|
|
||||||
|
|
||||||
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE CPP #-}
|
{-# LANGUAGE CPP #-}
|
||||||
{-# LANGUAGE DeriveDataTypeable #-}
|
{-# LANGUAGE DeriveDataTypeable #-}
|
||||||
{-# LANGUAGE EmptyDataDecls #-}
|
{-# LANGUAGE EmptyDataDecls #-}
|
||||||
|
#if __GLASGOW_HASKELL__ >= 708
|
||||||
{-# LANGUAGE PatternSynonyms #-}
|
{-# LANGUAGE PatternSynonyms #-}
|
||||||
|
#endif
|
||||||
|
{-# LANGUAGE ScopedTypeVariables #-}
|
||||||
|
|
||||||
module HPath
|
module HPath
|
||||||
(
|
(
|
||||||
@@ -25,8 +29,10 @@ module HPath
|
|||||||
,PathParseException
|
,PathParseException
|
||||||
,PathException
|
,PathException
|
||||||
,RelC
|
,RelC
|
||||||
|
#if __GLASGOW_HASKELL__ >= 708
|
||||||
-- * PatternSynonyms/ViewPatterns
|
-- * PatternSynonyms/ViewPatterns
|
||||||
,pattern Path
|
,pattern Path
|
||||||
|
#endif
|
||||||
-- * Path Parsing
|
-- * Path Parsing
|
||||||
,parseAbs
|
,parseAbs
|
||||||
,parseFn
|
,parseFn
|
||||||
@@ -35,6 +41,8 @@ module HPath
|
|||||||
,fromAbs
|
,fromAbs
|
||||||
,fromRel
|
,fromRel
|
||||||
,toFilePath
|
,toFilePath
|
||||||
|
,unsafeToString
|
||||||
|
,unsafeToString'
|
||||||
-- * Path Operations
|
-- * Path Operations
|
||||||
,(</>)
|
,(</>)
|
||||||
,basename
|
,basename
|
||||||
@@ -49,8 +57,10 @@ module HPath
|
|||||||
)
|
)
|
||||||
where
|
where
|
||||||
|
|
||||||
import Control.Exception (Exception)
|
import Control.Exception (IOException, Exception, catch)
|
||||||
|
import Control.Monad ((<$!>))
|
||||||
import Control.Monad.Catch (MonadThrow(..))
|
import Control.Monad.Catch (MonadThrow(..))
|
||||||
|
import Data.ByteString.Unsafe(unsafeUseAsCStringLen)
|
||||||
#if MIN_VERSION_bytestring(0,10,8)
|
#if MIN_VERSION_bytestring(0,10,8)
|
||||||
import Data.ByteString(ByteString, stripPrefix)
|
import Data.ByteString(ByteString, stripPrefix)
|
||||||
#else
|
#else
|
||||||
@@ -61,10 +71,17 @@ import qualified Data.ByteString as BS
|
|||||||
import Data.Data
|
import Data.Data
|
||||||
import Data.Maybe
|
import Data.Maybe
|
||||||
import Data.Word8
|
import Data.Word8
|
||||||
|
import GHC.Foreign(peekCStringLen)
|
||||||
|
import GHC.IO.Encoding(getLocaleEncoding, TextEncoding)
|
||||||
import HPath.Internal
|
import HPath.Internal
|
||||||
|
import System.IO.Unsafe(unsafePerformIO)
|
||||||
import System.Posix.FilePath hiding ((</>))
|
import System.Posix.FilePath hiding ((</>))
|
||||||
|
|
||||||
|
|
||||||
|
-- $setup
|
||||||
|
-- >>> import GHC.IO.Encoding(utf8)
|
||||||
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Types
|
-- Types
|
||||||
|
|
||||||
@@ -101,7 +118,9 @@ instance RelC Fn
|
|||||||
#if __GLASGOW_HASKELL__ >= 710
|
#if __GLASGOW_HASKELL__ >= 710
|
||||||
pattern Path :: ByteString -> Path a
|
pattern Path :: ByteString -> Path a
|
||||||
#endif
|
#endif
|
||||||
|
#if __GLASGOW_HASKELL__ >= 708
|
||||||
pattern Path x <- (MkPath x)
|
pattern Path x <- (MkPath x)
|
||||||
|
#endif
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Path Parsers
|
-- Path Parsers
|
||||||
@@ -226,6 +245,41 @@ fromAbs = toFilePath
|
|||||||
fromRel :: RelC r => Path r -> ByteString
|
fromRel :: RelC r => Path r -> ByteString
|
||||||
fromRel = toFilePath
|
fromRel = toFilePath
|
||||||
|
|
||||||
|
-- | This converts the underlying bytestring of the path to an unsafe
|
||||||
|
-- FilePath by assuming the encoding of the current locale setting. This
|
||||||
|
-- may be utterly wrong, but isn't particularly worse than what the
|
||||||
|
-- base library does. Blows up on decoding errors.
|
||||||
|
--
|
||||||
|
-- >>> unsafeToString (MkPath "/lal/lad")
|
||||||
|
-- "/lal/lad"
|
||||||
|
-- >>> unsafeToString (MkPath "/")
|
||||||
|
-- "/"
|
||||||
|
-- >>> unsafeToString (MkPath "lad")
|
||||||
|
-- "lad"
|
||||||
|
-- >>> catch (Just <$> unsafeToString (MkPath "<22>")) (\(_ :: IOException) -> pure Nothing)
|
||||||
|
-- Nothing
|
||||||
|
unsafeToString :: Path b -> IO FilePath
|
||||||
|
unsafeToString (MkPath p) = do
|
||||||
|
enc <- getLocaleEncoding
|
||||||
|
unsafeUseAsCStringLen p (peekCStringLen enc)
|
||||||
|
|
||||||
|
-- | Same as @unsafeToString@, except requires the encoding
|
||||||
|
-- to be passed explicitly. This uses 'unsafePerformIO' and
|
||||||
|
-- returns 'Nothing' on decoding errors.
|
||||||
|
--
|
||||||
|
-- >>> unsafeToString' (MkPath "/lal/lad") utf8
|
||||||
|
-- Just "/lal/lad"
|
||||||
|
-- >>> unsafeToString' (MkPath "/") utf8
|
||||||
|
-- Just "/"
|
||||||
|
-- >>> unsafeToString' (MkPath "lad") utf8
|
||||||
|
-- Just "lad"
|
||||||
|
-- >>> unsafeToString' (MkPath "<22>") utf8
|
||||||
|
-- Nothing
|
||||||
|
unsafeToString' :: Path b -> TextEncoding -> Maybe FilePath
|
||||||
|
unsafeToString' (MkPath !p) enc =
|
||||||
|
unsafePerformIO $!
|
||||||
|
catch (Just <$!> unsafeUseAsCStringLen p (peekCStringLen enc))
|
||||||
|
(\(_ :: IOException) -> pure Nothing)
|
||||||
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
-- For other functions (like `copyFile`), the behavior on these file types is
|
-- For other functions (like `copyFile`), the behavior on these file types is
|
||||||
-- unreliable/unsafe. Check the documentation of those functions for details.
|
-- unreliable/unsafe. Check the documentation of those functions for details.
|
||||||
|
|
||||||
|
{-# LANGUAGE CPP #-}
|
||||||
{-# LANGUAGE PackageImports #-}
|
{-# LANGUAGE PackageImports #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
|
||||||
@@ -107,7 +108,11 @@ import Data.ByteString
|
|||||||
(
|
(
|
||||||
ByteString
|
ByteString
|
||||||
)
|
)
|
||||||
|
#if MIN_VERSION_bytestring(0,10,2)
|
||||||
import Data.ByteString.Builder
|
import Data.ByteString.Builder
|
||||||
|
#else
|
||||||
|
import Data.ByteString.Lazy.Builder
|
||||||
|
#endif
|
||||||
(
|
(
|
||||||
Builder
|
Builder
|
||||||
, byteString
|
, byteString
|
||||||
@@ -136,6 +141,7 @@ import Data.Maybe
|
|||||||
import Data.Monoid
|
import Data.Monoid
|
||||||
(
|
(
|
||||||
(<>)
|
(<>)
|
||||||
|
, mempty
|
||||||
)
|
)
|
||||||
import Data.Word
|
import Data.Word
|
||||||
(
|
(
|
||||||
@@ -331,6 +337,8 @@ data CopyMode = Strict -- ^ fail if any target exists
|
|||||||
-- Throws in `Strict` CopyMode only:
|
-- Throws in `Strict` CopyMode only:
|
||||||
--
|
--
|
||||||
-- - `AlreadyExists` if destination already exists
|
-- - `AlreadyExists` if destination already exists
|
||||||
|
--
|
||||||
|
-- Note: may call `getcwd` (only if destination is a relative path)
|
||||||
copyDirRecursive :: Path b1 -- ^ source dir
|
copyDirRecursive :: Path b1 -- ^ source dir
|
||||||
-> Path b2 -- ^ destination (parent dirs
|
-> Path b2 -- ^ destination (parent dirs
|
||||||
-- are not automatically created)
|
-- are not automatically created)
|
||||||
@@ -426,7 +434,10 @@ copyDirRecursive fromp destdirp cm rm
|
|||||||
--
|
--
|
||||||
-- - `UnsatisfiedConstraints` if destination file is non-empty directory
|
-- - `UnsatisfiedConstraints` if destination file is non-empty directory
|
||||||
--
|
--
|
||||||
-- Note: calls `symlink`
|
-- Notes:
|
||||||
|
--
|
||||||
|
-- - calls `symlink`
|
||||||
|
-- - calls `getcwd` in Overwrite mode (if destination is a relative path)
|
||||||
recreateSymlink :: Path b1 -- ^ the old symlink file
|
recreateSymlink :: Path b1 -- ^ the old symlink file
|
||||||
-> Path b2 -- ^ destination file
|
-> Path b2 -- ^ destination file
|
||||||
-> CopyMode
|
-> CopyMode
|
||||||
@@ -480,7 +491,10 @@ recreateSymlink symsource@(MkPath symsourceBS) newsym@(MkPath newsymBS) cm
|
|||||||
--
|
--
|
||||||
-- - `AlreadyExists` if destination already exists
|
-- - `AlreadyExists` if destination already exists
|
||||||
--
|
--
|
||||||
-- Note: calls `sendfile` and possibly `read`/`write` as fallback
|
-- Notes:
|
||||||
|
--
|
||||||
|
-- - calls `sendfile` and possibly `read`/`write` as fallback
|
||||||
|
-- - may call `getcwd` in Overwrite mode (if destination is a relative path)
|
||||||
copyFile :: Path b1 -- ^ source file
|
copyFile :: Path b1 -- ^ source file
|
||||||
-> Path b2 -- ^ destination file
|
-> Path b2 -- ^ destination file
|
||||||
-> CopyMode
|
-> CopyMode
|
||||||
@@ -565,6 +579,8 @@ _copyFile sflags dflags (MkPath fromBS) to@(MkPath toBS)
|
|||||||
--
|
--
|
||||||
-- * examines filetypes explicitly
|
-- * examines filetypes explicitly
|
||||||
-- * calls `copyDirRecursive` for directories
|
-- * calls `copyDirRecursive` for directories
|
||||||
|
--
|
||||||
|
-- Note: may call `getcwd` in Overwrite mode (if destination is a relative path)
|
||||||
easyCopy :: Path b1
|
easyCopy :: Path b1
|
||||||
-> Path b2
|
-> Path b2
|
||||||
-> CopyMode
|
-> CopyMode
|
||||||
@@ -745,6 +761,8 @@ createDir fm (MkPath destBS) = createDirectory destBS fm
|
|||||||
-- exist and cannot be written to
|
-- exist and cannot be written to
|
||||||
-- - `AlreadyExists` if destination already exists and
|
-- - `AlreadyExists` if destination already exists and
|
||||||
-- is not a directory
|
-- is not a directory
|
||||||
|
--
|
||||||
|
-- Note: calls `getcwd` if the input path is a relative path
|
||||||
createDirRecursive :: FileMode -> Path b -> IO ()
|
createDirRecursive :: FileMode -> Path b -> IO ()
|
||||||
createDirRecursive fm p =
|
createDirRecursive fm p =
|
||||||
toAbs p >>= go
|
toAbs p >>= go
|
||||||
@@ -840,7 +858,10 @@ renameFile fromf@(MkPath fromfBS) tof@(MkPath tofBS) = do
|
|||||||
--
|
--
|
||||||
-- - `AlreadyExists` if destination already exists
|
-- - `AlreadyExists` if destination already exists
|
||||||
--
|
--
|
||||||
-- Note: calls `rename` (but does not allow to rename over existing files)
|
-- Notes:
|
||||||
|
--
|
||||||
|
-- - calls `rename` (but does not allow to rename over existing files)
|
||||||
|
-- - calls `getcwd` in Overwrite mode if destination is a relative path
|
||||||
moveFile :: Path b1 -- ^ file to move
|
moveFile :: Path b1 -- ^ file to move
|
||||||
-> Path b2 -- ^ destination
|
-> Path b2 -- ^ destination
|
||||||
-> CopyMode
|
-> CopyMode
|
||||||
@@ -933,7 +954,7 @@ readFileEOF (MkPath fp) =
|
|||||||
else do
|
else do
|
||||||
readBS <- unsafePackCStringFinalizer buf
|
readBS <- unsafePackCStringFinalizer buf
|
||||||
(fromIntegral size)
|
(fromIntegral size)
|
||||||
mempty
|
(return ())
|
||||||
read' fd buf (builder <> byteString readBS)
|
read' fd buf (builder <> byteString readBS)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
7
stack.yaml
Normal file
7
stack.yaml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
resolver: lts-12.1
|
||||||
|
|
||||||
|
packages:
|
||||||
|
- '.'
|
||||||
|
|
||||||
|
extra-deps:
|
||||||
|
- IfElse-0.85
|
||||||
@@ -13,7 +13,6 @@ import GHC.IO.Exception
|
|||||||
(
|
(
|
||||||
IOErrorType(..)
|
IOErrorType(..)
|
||||||
)
|
)
|
||||||
import System.Process
|
|
||||||
import Utils
|
import Utils
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import GHC.IO.Exception
|
|||||||
(
|
(
|
||||||
IOErrorType(..)
|
IOErrorType(..)
|
||||||
)
|
)
|
||||||
import System.Process
|
|
||||||
import Utils
|
import Utils
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import GHC.IO.Exception
|
|||||||
(
|
(
|
||||||
IOErrorType(..)
|
IOErrorType(..)
|
||||||
)
|
)
|
||||||
import System.Process
|
|
||||||
import Utils
|
import Utils
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import GHC.IO.Exception
|
|||||||
(
|
(
|
||||||
IOErrorType(..)
|
IOErrorType(..)
|
||||||
)
|
)
|
||||||
import System.Process
|
|
||||||
import Utils
|
import Utils
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -61,9 +61,6 @@ import System.Posix.Files.ByteString
|
|||||||
, unionFileModes
|
, unionFileModes
|
||||||
)
|
)
|
||||||
|
|
||||||
import qualified "unix" System.Posix.IO.ByteString as SPI
|
|
||||||
import qualified "unix-bytestring" System.Posix.IO.ByteString as SPB
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
baseTmpDir :: ByteString
|
baseTmpDir :: ByteString
|
||||||
|
|||||||
Reference in New Issue
Block a user