diff --git a/src/HPath/IO.hs b/src/HPath/IO.hs index 38a1859..d0a42ba 100644 --- a/src/HPath/IO.hs +++ b/src/HPath/IO.hs @@ -661,9 +661,9 @@ executeFile fp args -- -- - `PermissionDenied` if output directory cannot be written to -- - `AlreadyExists` if destination file already exists -createRegularFile :: Path Abs -> IO () -createRegularFile dest = - bracket (SPI.openFd (fromAbs dest) SPI.WriteOnly (Just newFilePerms) +createRegularFile :: FileMode -> Path Abs -> IO () +createRegularFile fm dest = + bracket (SPI.openFd (fromAbs dest) SPI.WriteOnly (Just fm) (SPI.defaultFileFlags { exclusive = True })) SPI.closeFd (\_ -> return ()) @@ -675,8 +675,8 @@ createRegularFile dest = -- -- - `PermissionDenied` if output directory cannot be written to -- - `AlreadyExists` if destination directory already exists -createDir :: Path Abs -> IO () -createDir dest = createDirectory (fromAbs dest) newDirPerms +createDir :: FileMode -> Path Abs -> IO () +createDir fm dest = createDirectory (fromAbs dest) fm -- |Create a symlink. diff --git a/test/Utils.hs b/test/Utils.hs index a1caea1..5d55cff 100644 --- a/test/Utils.hs +++ b/test/Utils.hs @@ -86,7 +86,7 @@ createTmpDir :: IO () createTmpDir = do pwd <- fromJust <$> getEnv "PWD" >>= P.parseAbs tmp <- P.parseRel =<< readIORef tmpDir - void $ createDir (pwd P. tmp) + void $ createDir newDirPerms (pwd P. tmp) deleteTmpDir :: IO () @@ -102,7 +102,7 @@ createBaseTmpDir :: IO () createBaseTmpDir = do pwd <- fromJust <$> getEnv "PWD" >>= P.parseAbs tmp <- P.parseRel baseTmpDir - void $ createDir (pwd P. tmp) + void $ createDir newDirPerms (pwd P. tmp) deleteBaseTmpDir :: IO () @@ -177,12 +177,12 @@ copyDirRecursive' inputDirP outputDirP cm rm = createDir' :: ByteString -> IO () {-# NOINLINE createDir' #-} -createDir' dest = withTmpDir dest createDir +createDir' dest = withTmpDir dest (createDir newDirPerms) createRegularFile' :: ByteString -> IO () {-# NOINLINE createRegularFile' #-} -createRegularFile' dest = withTmpDir dest createRegularFile +createRegularFile' dest = withTmpDir dest (createRegularFile newFilePerms) createSymlink' :: ByteString -> ByteString -> IO ()