[project @ 2004-08-18 17:48:44 by krasimir]
[haskell-directory.git] / include / HsBase.h
index a63c087..1fed966 100644 (file)
@@ -9,7 +9,7 @@
 #ifndef __HSBASE_H__
 #define __HSBASE_H__
 
-#include "config.h"
+#include "ghcconfig.h"
 #include "HsFFI.h"
 
 #include <stdio.h>
 #include <io.h>
 #include <fcntl.h>
 #include "timeUtils.h"
+#include <shlobj.h>
 #endif
 
 /* in system.c */
@@ -407,6 +408,20 @@ __hscore_PrelHandle_read( HsInt fd, HsAddr ptr, HsInt off, int sz )
 }
 
 #if defined(mingw32_TARGET_OS) || defined(_MSC_VER)
+INLINE HsInt
+__hscore_PrelHandle_send( HsInt fd, HsAddr ptr, HsInt off, int sz )
+{
+    return send(fd,(char *)ptr + off, sz, 0);
+}
+
+INLINE HsInt
+__hscore_PrelHandle_recv( HsInt fd, HsAddr ptr, HsInt off, int sz )
+{
+    return recv(fd,(char *)ptr + off, sz, 0);
+}
+#endif
+
+#if defined(mingw32_TARGET_OS) || defined(_MSC_VER)
 INLINE long *
 __hscore_Time_ghcTimezone( void ) { return &_timezone; }
 
@@ -675,5 +690,32 @@ INLINE int __hsposix_SIG_UNBLOCK() { return SIG_UNBLOCK; }
 INLINE int __hsposix_SIG_SETMASK() { return SIG_SETMASK; }
 #endif /* mingw32_TARGET_OS */
 
+// 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.
+//
+INLINE int __hscore_open(char *file, int how, mode_t mode) {
+       return (open(file,how,mode));
+}
+
+INLINE off_t __hscore_lseek(int fd, off_t off, int whence) {
+       return (lseek(fd,off,whence));
+}
+
+INLINE int __hscore_stat(char *file, struct stat *buf) {
+       return (stat(file,buf));
+}
+
+INLINE int __hscore_fstat(int fd, struct stat *buf) {
+       return (fstat(fd,buf));
+}
+
+#if defined(mingw32_TARGET_OS)
+INLINE int __hscore_CSIDL_PROFILE() { return CSIDL_PROFILE; }
+INLINE int __hscore_CSIDL_APPDATA() { return CSIDL_APPDATA; }
+INLINE int __hscore_CSIDL_WINDOWS() { return CSIDL_WINDOWS; }
+INLINE int __hscore_CSIDL_PERSONAL() { return CSIDL_PERSONAL; }
+#endif
+
 #endif /* __HSBASE_H__ */