diff --git a/unliftio/cbits/file-posix.c b/unliftio/cbits/file-posix.c index f8ade65..71d293d 100644 --- a/unliftio/cbits/file-posix.c +++ b/unliftio/cbits/file-posix.c @@ -11,6 +11,8 @@ int unliftio_o_tmpfile( void ) #endif } +#if OLD_GLIBC +#else int unliftio_at_fdcwd( void ) { return AT_FDCWD; @@ -20,7 +22,7 @@ int unliftio_at_symlink_follow( void ) { return AT_SYMLINK_FOLLOW; } - +#endif int unliftio_s_irusr( void ) { diff --git a/unliftio/src/UnliftIO/IO/File.hs b/unliftio/src/UnliftIO/IO/File.hs index 192f523..f621ec0 100644 --- a/unliftio/src/UnliftIO/IO/File.hs +++ b/unliftio/src/UnliftIO/IO/File.hs @@ -89,7 +89,7 @@ import Data.ByteString as B (ByteString, writeFile) import Control.Monad.IO.Unlift import UnliftIO.IO (Handle, IOMode(..), withBinaryFile) -#if WINDOWS +#if (WINDOWS || OLD-GLIBC) ensureFileDurable = (`seq` pure ()) diff --git a/unliftio/unliftio.cabal b/unliftio/unliftio.cabal index 61c2ad3..dce2aa7 100644 --- a/unliftio/unliftio.cabal +++ b/unliftio/unliftio.cabal @@ -22,6 +22,11 @@ extra-source-files: README.md ChangeLog.md +flag old-glibc + description: compile with post-2016 glibc, allowing atomic file writes + default: False + manual: False + library exposed-modules: UnliftIO @@ -85,6 +90,8 @@ library c-sources: cbits/file-posix.c cbits/time-posix.c + if flag(old-glibc) + cpp-options: -DOLD_GLIBC default-language: Haskell2010 test-suite unliftio-spec @@ -151,3 +158,4 @@ benchmark conc-bench build-depends: unix default-language: Haskell2010 +