From f6b288bd96fba5a955d1f73663eb52c1859ee765 Mon Sep 17 00:00:00 2001
From: Marios Titas <redneb@gmx.com>
Date: Sun, 2 Oct 2022 23:12:41 +0300
Subject: [PATCH] Use capi for syscalls that break under musl's handling of
 64-bit time_t

Closes #145.
---

Index: b/libraries/directory/System/Directory/Internal/C_utimensat.hsc
===================================================================
--- a/libraries/directory/System/Directory/Internal/C_utimensat.hsc
+++ b/libraries/directory/System/Directory/Internal/C_utimensat.hsc
@@ -1,3 +1,5 @@
+{-# LANGUAGE CApiFFI #-}
+
 module System.Directory.Internal.C_utimensat where
 #include <HsDirectoryConfig.h>
 #ifdef HAVE_UTIMENSAT
@@ -41,7 +43,7 @@ toCTimeSpec t = CTimeSpec (CTime sec) (t
     (sec,  frac)  = if frac' < 0 then (sec' - 1, frac' + 1) else (sec', frac')
     (sec', frac') = properFraction (toRational t)
 
-foreign import ccall "utimensat" c_utimensat
+foreign import capi "sys/stat.h utimensat" c_utimensat
   :: CInt -> CString -> Ptr CTimeSpec -> CInt -> IO CInt
 
 #endif
Index: b/libraries/directory/directory.cabal
===================================================================
--- a/libraries/directory/directory.cabal
+++ b/libraries/directory/directory.cabal
@@ -38,6 +38,7 @@ Library
     default-language: Haskell2010
     other-extensions:
         CPP
+        CApiFFI
         Trustworthy
 
     exposed-modules:
