X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=include%2FHsBase.h;h=c8fabba65845d1dd7b41987a2ae2730e99b97179;hb=7dbb606d7b57cdad87a0ffbdb6ea4a274ebca7c0;hp=92cc4e34fe1bd0d830c5f7c2f65af9330ac58e1e;hpb=91b6357e08093e7131c7c243543a29681b0989fe;p=ghc-base.git diff --git a/include/HsBase.h b/include/HsBase.h index 92cc4e3..c8fabba 100644 --- a/include/HsBase.h +++ b/include/HsBase.h @@ -62,9 +62,6 @@ #if HAVE_STRING_H #include #endif -#if HAVE_DIRENT_H -#include -#endif #if HAVE_UTIME_H #include #endif @@ -129,7 +126,6 @@ #if HAVE_VFORK_H #include #endif -#include "dirUtils.h" #include "WCsubst.h" #if defined(__MINGW32__) @@ -156,56 +152,6 @@ extern int fdReady(int fd, int write, int msecs, int isSock); 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, @@ -255,6 +201,10 @@ __hscore_sigdelset( sigset_t * set, int s ) 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 @@ -419,36 +369,6 @@ __hscore_setmode( int fd, HsBool toBin ) #endif /* __GLASGOW_HASKELL__ */ -INLINE int -__hscore_mkdir( char *pathName, int mode ) -{ -#if defined(_MSC_VER) || defined(__MINGW32__) || defined(_WIN32) - return mkdir(pathName); -#else - return mkdir(pathName,mode); -#endif -} - -INLINE char * -__hscore_d_name( struct dirent* d ) -{ - return (d->d_name); -} - -INLINE int -__hscore_end_of_dir( void ) -{ - return READDIR_ERRNO_EOF; -} - -INLINE void -__hscore_free_dirent(struct dirent *dEnt) -{ -#if HAVE_READDIR_R - free(dEnt); -#endif -} - #if defined(__MINGW32__) // We want the versions of stat/fstat/lseek that use 64-bit offsets, // and you have to ask for those explicitly. Unfortunately there @@ -704,6 +624,11 @@ INLINE HsInt sizeof_fd_set(void) { return sizeof(fd_set); } 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__) @@ -727,10 +652,17 @@ INLINE void setTimevalTicks(struct timeval *p, HsWord64 usecs) } #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 +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; }