extern HsInt nocldstop;
/* -----------------------------------------------------------------------------
- 64-bit operations, defined in longlong.c
- -------------------------------------------------------------------------- */
-
-#ifdef SUPPORT_LONG_LONGS
-
-HsBool hs_gtWord64 (HsWord64, HsWord64);
-HsBool hs_geWord64 (HsWord64, HsWord64);
-HsBool hs_eqWord64 (HsWord64, HsWord64);
-HsBool hs_neWord64 (HsWord64, HsWord64);
-HsBool hs_ltWord64 (HsWord64, HsWord64);
-HsBool hs_leWord64 (HsWord64, HsWord64);
-
-HsBool hs_gtInt64 (HsInt64, HsInt64);
-HsBool hs_geInt64 (HsInt64, HsInt64);
-HsBool hs_eqInt64 (HsInt64, HsInt64);
-HsBool hs_neInt64 (HsInt64, HsInt64);
-HsBool hs_ltInt64 (HsInt64, HsInt64);
-HsBool hs_leInt64 (HsInt64, HsInt64);
-
-HsWord64 hs_remWord64 (HsWord64, HsWord64);
-HsWord64 hs_quotWord64 (HsWord64, HsWord64);
-
-HsInt64 hs_remInt64 (HsInt64, HsInt64);
-HsInt64 hs_quotInt64 (HsInt64, HsInt64);
-HsInt64 hs_negateInt64 (HsInt64);
-HsInt64 hs_plusInt64 (HsInt64, HsInt64);
-HsInt64 hs_minusInt64 (HsInt64, HsInt64);
-HsInt64 hs_timesInt64 (HsInt64, HsInt64);
-
-HsWord64 hs_and64 (HsWord64, HsWord64);
-HsWord64 hs_or64 (HsWord64, HsWord64);
-HsWord64 hs_xor64 (HsWord64, HsWord64);
-HsWord64 hs_not64 (HsWord64);
-
-HsWord64 hs_uncheckedShiftL64 (HsWord64, HsInt);
-HsWord64 hs_uncheckedShiftRL64 (HsWord64, HsInt);
-HsInt64 hs_uncheckedIShiftL64 (HsInt64, HsInt);
-HsInt64 hs_uncheckedIShiftRA64 (HsInt64, HsInt);
-HsInt64 hs_uncheckedIShiftRL64 (HsInt64, HsInt);
-
-HsInt64 hs_intToInt64 (HsInt);
-HsInt hs_int64ToInt (HsInt64);
-HsWord64 hs_int64ToWord64 (HsInt64);
-HsWord64 hs_wordToWord64 (HsWord);
-HsWord hs_word64ToWord (HsWord64);
-HsInt64 hs_word64ToInt64 (HsWord64);
-
-#endif /* SUPPORT_LONG_LONGS */
-
-/* -----------------------------------------------------------------------------
INLINE functions.
These functions are given as inlines here for when compiling via C,
INLINE int
__hscore_sigismember( sigset_t * set, int s )
{ return sigismember(set,s); }
+
+INLINE int
+__hscore_utime( const char *file, const struct utimbuf *timep )
+{ return utime(file,timep); }
#endif
// This is used by dph:Data.Array.Parallel.Arr.BUArr, and shouldn't be
extern void hsFD_ZERO(fd_set *fds);
#endif
+INLINE int __hscore_select(int nfds, fd_set *readfds, fd_set *writefds,
+ fd_set *exceptfds, struct timeval *timeout) {
+ return (select(nfds,readfds,writefds,exceptfds,timeout));
+}
+
// gettimeofday()-related
#if !defined(__MINGW32__)
}
#endif /* !defined(__MINGW32__) */
+#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
+#include <crt_externs.h>
+INLINE char **__hscore_environ() { return *(_NSGetEnviron()); }
+#else
/* 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; }
+#endif
/* lossless conversions between pointers and integral types */
INLINE void * __hscore_from_uintptr(uintptr_t n) { return (void *)n; }