X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=include%2FHsBase.h;h=f9c6e1dcc5fe8a78ec116cd2747c99fb6edff5c2;hb=fcf4aa473708347cb25241cd6aa6547a05c51920;hp=5251dc889015c3b9fcdfc1b6433f8da303f087ad;hpb=ef12b173b1f51aa96e070441bc8a28f735616362;p=ghc-base.git diff --git a/include/HsBase.h b/include/HsBase.h index 5251dc8..f9c6e1d 100644 --- a/include/HsBase.h +++ b/include/HsBase.h @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: HsBase.h,v 1.25 2003/09/02 16:07:11 ross Exp $ + * $Id: HsBase.h,v 1.35 2003/11/02 00:06:23 panne Exp $ * * (c) The University of Glasgow 2001-2002 * @@ -34,6 +34,10 @@ #endif #ifdef HAVE_SIGNAL_H #include +/* Ultra-ugly: OpenBSD uses a broken macro for sigfillset (missing cast) */ +#if __OpenBSD__ +#undef sigfillset +#endif #endif #ifdef HAVE_ERRNO_H #include @@ -72,7 +76,7 @@ #ifdef HAVE_SYS_TIMES_H #include #endif -#if defined(HAVE_WINSOCK_H) && defined(__MINGW32__) +#if defined(HAVE_WINSOCK_H) && defined(mingw32_TARGET_OS) #include #endif #ifdef HAVE_LIMITS_H @@ -104,7 +108,7 @@ #include "lockFile.h" #include "dirUtils.h" -#if defined(__MINGW32__) +#if defined(mingw32_TARGET_OS) #include #include #include "timeUtils.h" @@ -129,6 +133,9 @@ int inputReady(int fd, int msecs, int isSock); /* in writeError.c */ void writeErrString__(HsAddr msg_hdr, HsAddr msg, HsInt len); +/* in Signals.c */ +extern HsInt nocldstop; + /* ----------------------------------------------------------------------------- 64-bit operations, defined in longlong.c -------------------------------------------------------------------------- */ @@ -192,9 +199,14 @@ StgWord64 stg_integerToWord64 (StgInt sa, StgByteArray /* Really: mp_limb_t* */ -------------------------------------------------------------------------- */ #ifndef INLINE -#define INLINE extern inline +# if defined(_MSC_VER) +# define INLINE extern __inline +# else +# define INLINE extern inline +# endif #endif +#if !defined(_MSC_VER) INLINE int __hscore_s_isreg(m) { return S_ISREG(m); } INLINE int __hscore_s_isdir(m) { return S_ISDIR(m); } INLINE int __hscore_s_isfifo(m) { return S_ISFIFO(m); } @@ -203,8 +215,9 @@ INLINE int __hscore_s_ischr(m) { return S_ISCHR(m); } #ifdef S_ISSOCK INLINE int __hscore_s_issock(m) { return S_ISSOCK(m); } #endif +#endif -#ifndef mingw32_TARGET_OS +#if !defined(mingw32_TARGET_OS) && !defined(_MSC_VER) INLINE int __hscore_sigemptyset( sigset_t *set ) { return sigemptyset(set); } @@ -259,7 +272,11 @@ __hscore_seek_cur() INLINE HsInt __hscore_o_binary() { +#if defined(_MSC_VER) + return O_BINARY; +#else return CONST_O_BINARY; +#endif } INLINE int @@ -367,7 +384,7 @@ __hscore_seek_end( void ) INLINE HsInt __hscore_setmode( HsInt fd, HsBool toBin ) { -#if defined(__MINGW32__) +#if defined(mingw32_TARGET_OS) || defined(_MSC_VER) return setmode(fd,(toBin == HS_BOOL_TRUE) ? _O_BINARY : _O_TEXT); #else return 0; @@ -378,7 +395,7 @@ INLINE HsInt __hscore_PrelHandle_write( HsInt fd, HsBool isSock, HsAddr ptr, HsInt off, int sz ) { -#if defined(__MINGW32__) +#if defined(mingw32_TARGET_OS) || defined(_MSC_VER) if (isSock) { return send(fd,(char *)ptr + off, sz, 0); } @@ -390,7 +407,7 @@ INLINE HsInt __hscore_PrelHandle_read( HsInt fd, HsBool isSock, HsAddr ptr, HsInt off, int sz ) { -#if defined(__MINGW32__) +#if defined(mingw32_TARGET_OS) || defined(_MSC_VER) if (isSock) { return recv(fd,(char *)ptr + off, sz, 0); } @@ -399,7 +416,7 @@ __hscore_PrelHandle_read( HsInt fd, HsBool isSock, HsAddr ptr, } -#if defined(__MINGW32__) +#if defined(mingw32_TARGET_OS) || defined(_MSC_VER) INLINE long * __hscore_Time_ghcTimezone( void ) { return &_timezone; } @@ -410,7 +427,7 @@ __hscore_Time_ghcTzname( void ) { return _tzname; } INLINE HsInt __hscore_mkdir( HsAddr pathName, HsInt mode ) { -#if defined(__MINGW32__) +#if defined(mingw32_TARGET_OS) || defined(_MSC_VER) return mkdir(pathName); #else return mkdir(pathName,mode); @@ -437,23 +454,37 @@ INLINE HsInt __hscore_long_path_size() { return PATH_MAX; } INLINE HsInt __hscore_long_path_size() { return 4096; } #endif +#ifdef R_OK INLINE mode_t __hscore_R_OK() { return R_OK; } +#endif +#ifdef W_OK INLINE mode_t __hscore_W_OK() { return W_OK; } +#endif +#ifdef X_OK INLINE mode_t __hscore_X_OK() { return X_OK; } +#endif +#ifdef S_IRUSR INLINE mode_t __hscore_S_IRUSR() { return S_IRUSR; } +#endif +#ifdef S_IWUSR INLINE mode_t __hscore_S_IWUSR() { return S_IWUSR; } +#endif +#ifdef S_IXUSR INLINE mode_t __hscore_S_IXUSR() { return S_IXUSR; } +#endif +#if !defined(_MSC_VER) INLINE HsAddr __hscore_d_name( struct dirent* d ) { -#ifndef mingw32_TARGET_OS +#if !defined(mingw32_TARGET_OS) && !defined(_MSC_VER) return (HsAddr)(&d->d_name); #else return (HsAddr)(d->d_name); #endif } +#endif INLINE HsInt __hscore_end_of_dir( void ) @@ -481,7 +512,9 @@ __hscore_sizeof_stat( void ) INLINE time_t __hscore_st_mtime ( struct stat* st ) { return st->st_mtime; } INLINE off_t __hscore_st_size ( struct stat* st ) { return st->st_size; } +#if !defined(_MSC_VER) INLINE mode_t __hscore_st_mode ( struct stat* st ) { return st->st_mode; } +#endif #if HAVE_TERMIOS_H INLINE tcflag_t __hscore_lflag( struct termios* ts ) { return ts->c_lflag; } @@ -492,7 +525,6 @@ __hscore_poke_lflag( struct termios* ts, tcflag_t t ) { ts->c_lflag = t; } INLINE unsigned char* __hscore_ptr_c_cc( struct termios* ts ) { return (unsigned char*) &ts->c_cc; } -#endif INLINE HsInt __hscore_sizeof_termios( void ) @@ -503,16 +535,15 @@ __hscore_sizeof_termios( void ) return 0; #endif } +#endif +#if !defined(mingw32_TARGET_OS) && !defined(_MSC_VER) INLINE HsInt __hscore_sizeof_sigset_t( void ) { -#ifndef mingw32_TARGET_OS return sizeof(sigset_t); -#else - return 0; -#endif } +#endif INLINE int __hscore_echo( void ) @@ -611,9 +642,13 @@ __hscore_f_setfl( void ) #endif } +// defined in rts/RtsStartup.c. +extern void* __hscore_get_saved_termios(int fd); +extern void __hscore_set_saved_termios(int fd, void* ts); + INLINE int __hscore_hs_fileno (FILE *f) { return fileno (f); } -#ifndef mingw32_TARGET_OS +#if !defined(mingw32_TARGET_OS) && !defined(_MSC_VER) INLINE int __hsposix_SIGABRT() { return SIGABRT; } INLINE int __hsposix_SIGALRM() { return SIGALRM; } INLINE int __hsposix_SIGBUS() { return SIGBUS; } @@ -646,8 +681,8 @@ INLINE int __hsposix_SIGXCPU() { return SIGXCPU; } INLINE int __hsposix_SIGXFSZ() { return SIGXFSZ; } INLINE int __hsposix_SIG_BLOCK() { return SIG_BLOCK; } -INLINE int __hsposix_SIG_UNBLOCK() { return SIG_SETMASK; } -INLINE int __hsposix_SIG_SETMASK() { return SIG_UNBLOCK; } +INLINE int __hsposix_SIG_UNBLOCK() { return SIG_UNBLOCK; } +INLINE int __hsposix_SIG_SETMASK() { return SIG_SETMASK; } #endif /* mingw32_TARGET_OS */ #endif /* __HSBASE_H__ */