#undef PACKAGE_TARNAME
#undef PACKAGE_VERSION
+/* Needed to get the macro version of errno on some OSs (eg. Solaris).
+ We must do this, because these libs are only compiled once, but
+ must work in both single-threaded and multi-threaded programs. */
+#define _REENTRANT 1
+
#include "HsFFI.h"
#include <stdio.h>
#if HAVE_WCTYPE_H
#include <wctype.h>
#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#elif HAVE_STDINT_H
+# include <stdint.h>
+#endif
#if !defined(mingw32_HOST_OS) && !defined(irix_HOST_OS)
# if HAVE_SYS_RESOURCE_H
#endif
#include "lockFile.h"
#include "dirUtils.h"
+#include "WCsubst.h"
#include "runProcess.h"
#ifndef INLINE
# if defined(_MSC_VER)
# define INLINE extern __inline
-# elif defined(__HUGS__)
-# define INLINE INLINE_ONLY
-# else
+# elif defined(__GNUC__)
# define INLINE extern inline
+# else
+# define INLINE inline
# endif
#endif
#endif
}
+#if __GLASGOW_HASKELL__
+
INLINE HsInt
__hscore_PrelHandle_write( HsInt fd, HsAddr ptr, HsInt off, int sz )
{
}
#endif
-#if defined(mingw32_HOST_OS) || defined(_MSC_VER)
-INLINE long *
-__hscore_Time_ghcTimezone( void ) { return &_timezone; }
-
-INLINE char **
-__hscore_Time_ghcTzname( void ) { return _tzname; }
-#endif
+#endif /* __GLASGOW_HASKELL__ */
INLINE HsInt
__hscore_mkdir( HsAddr pathName, HsInt mode )
// select-related stuff
#if !defined(mingw32_HOST_OS)
+INLINE int hsFD_SETSIZE(void) { return FD_SETSIZE; }
INLINE void hsFD_CLR(int fd, fd_set *fds) { FD_CLR(fd, fds); }
INLINE int hsFD_ISSET(int fd, fd_set *fds) { return FD_ISSET(fd, fds); }
INLINE void hsFD_SET(int fd, fd_set *fds) { FD_SET(fd, fds); }
p->tv_sec = ticks / TICK_FREQ;
p->tv_usec = (ticks % TICK_FREQ) * (1000000 / TICK_FREQ);
}
-#endif // !defined(mingw32_HOST_OS)
+#endif /* !defined(mingw32_HOST_OS) */
// Directory-related
INLINE int __hscore_CSIDL_PERSONAL() { return CSIDL_PERSONAL; }
#endif
+#if defined(mingw32_HOST_OS)
+INLINE unsigned int __hscore_get_osver(void) { return _osver; }
+#endif
+
/* ToDo: write a feature test that doesn't assume 'environ' to
* be in scope at link-time. */
extern char** environ;
INLINE char **__hscore_environ() { return environ; }
+/* lossless conversions between pointers and integral types */
+INLINE void * __hscore_from_uintptr(uintptr_t n) { return (void *)n; }
+INLINE void * __hscore_from_intptr (intptr_t n) { return (void *)n; }
+INLINE uintptr_t __hscore_to_uintptr (void *p) { return (uintptr_t)p; }
+INLINE intptr_t __hscore_to_intptr (void *p) { return (intptr_t)p; }
+
#endif /* __HSBASE_H__ */