summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lynagh <igloo@earth.li>2012-02-26 16:07:03 +0000
committerIan Lynagh <igloo@earth.li>2012-02-26 16:07:03 +0000
commite4165964c0b86e236e0b7bcbf3b5d3de2a8b03d0 (patch)
tree98b3834e33b3f474d7d2dd20b7ea88952c6942c4
parent7ca5621212461277453502630ef2bcf8592f93f7 (diff)
downloadhaskell-e4165964c0b86e236e0b7bcbf3b5d3de2a8b03d0.tar.gz
Use CAPI for lseek
-rw-r--r--libraries/base/System/Posix/Internals.hs7
-rw-r--r--libraries/base/include/HsBase.h14
2 files changed, 5 insertions, 16 deletions
diff --git a/libraries/base/System/Posix/Internals.hs b/libraries/base/System/Posix/Internals.hs
index de02e726b0..d2bd0e62a7 100644
--- a/libraries/base/System/Posix/Internals.hs
+++ b/libraries/base/System/Posix/Internals.hs
@@ -416,10 +416,13 @@ foreign import ccall unsafe "HsBase.h isatty"
c_isatty :: CInt -> IO CInt
#if defined(mingw32_HOST_OS) || defined(__MINGW32__)
-foreign import ccall unsafe "HsBase.h __hscore_lseek"
+foreign import ccall unsafe "io.h _lseeki64"
c_lseek :: CInt -> Int64 -> CInt -> IO Int64
#else
-foreign import ccall unsafe "HsBase.h __hscore_lseek"
+-- We use CAPI as on some OSs (eg. Linux) this is wrapped by a macro
+-- which redirects to the 64-bit-off_t versions when large file
+-- support is enabled.
+foreign import capi unsafe "unistd.h lseek"
c_lseek :: CInt -> COff -> CInt -> IO COff
#endif
diff --git a/libraries/base/include/HsBase.h b/libraries/base/include/HsBase.h
index 1d669fde3a..ed99692f49 100644
--- a/libraries/base/include/HsBase.h
+++ b/libraries/base/include/HsBase.h
@@ -534,20 +534,6 @@ INLINE int __hscore_open(char *file, int how, mode_t mode) {
}
#endif
-// These are wrapped because on some OSs (eg. Linux) they are
-// macros which redirect to the 64-bit-off_t versions when large file
-// support is enabled.
-//
-#if defined(__MINGW32__)
-INLINE off64_t __hscore_lseek(int fd, off64_t off, int whence) {
- return (_lseeki64(fd,off,whence));
-}
-#else
-INLINE off_t __hscore_lseek(int fd, off_t off, int whence) {
- return (lseek(fd,off,whence));
-}
-#endif
-
#if darwin_HOST_OS
// You should not access _environ directly on Darwin in a bundle/shared library.
// See #2458 and http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man7/environ.7.html