--- ray/src/common/platform.h 2003/06/08 12:03:09 3.3 +++ ray/src/common/platform.h 2018/03/20 22:45:29 3.16 @@ -1,49 +1,119 @@ -/* RCSid $Id: platform.h,v 3.3 2003/06/08 12:03:09 schorsch Exp $ */ +/* RCSid $Id: platform.h,v 3.16 2018/03/20 22:45:29 greg Exp $ */ /* * platform.h - header file for platform specific definitions */ #ifndef _RAD_PLATFORM_H_ #define _RAD_PLATFORM_H_ -#ifdef __cplusplus -extern "C" { -#endif -#include "copyright.h" +#if defined(_WIN32) || defined(_WIN64) -#ifdef _WIN32 + #include /* _setmode() and stuff from unistd.h */ + #include + typedef long off_t; + #undef fdopen + #define fdopen _fdopen + #undef read + #define read _read + #undef open + #define open _open + #undef close + #define close _close + #undef write + #define write _write + #undef ftruncate + #define ftruncate _chsize_s + #undef unlink + #define unlink _unlink + #undef fileno + #define fileno _fileno + #undef snprintf + #define snprintf _snprintf + #undef vsnprintf + #define vsnprintf _vsnprintf + /* XXX should we check first if size_t is 32 bit? */ + #undef fseeko + #define fseeko _fseeki64 + #undef lseek + #define lseek _lseek + #undef access + #define access _access + #undef mktemp + #define mktemp _mktemp -#include -#define popen _popen -#define pclose _pclose -#include /* _O_BINARY, _O_TEXT */ -#include /* _setmode() */ -#include /* _fmode */ + #include + #undef strcasecmp + #define strcasecmp _stricmp + #undef strncasecmp + #define strncasecmp _strnicmp + #undef strdup + #define strdup _strdup -#define SET_DEFAULT_BINARY() _fmode = _O_BINARY -#define SET_FILE_BINARY(fp) _setmode(fileno(fp),_O_BINARY) -#define SET_FD_BINARY(fd) _setmode(fd,_O_BINARY) + #include + /* really weird defines by Microsoft in + generating lots of name collisions in Radiance. */ + #if defined(rad1) + #undef rad1 + #undef rad2 + #undef rad3 + #undef rad4 + #undef rad5 + #undef rad6 + #undef rad7 + #undef rad8 + #undef rad9 + #endif + #define sleep(s) Sleep((DWORD)((s)*1000)) + #define NON_POSIX + #include + #include + #define RHAS_STAT + #define S_IFREG _S_IFREG + #define W_IFDIR _S_IFDIR + #include /* _O_BINARY, _O_TEXT */ + #include /* _fmode */ + #define SET_DEFAULT_BINARY() (_fmode = _O_BINARY) + #define SET_DEFAULT_TEXT() (_fmode = _O_TEXT) + #define SET_FILE_BINARY(fp) _setmode(_fileno(fp),_O_BINARY) + #define SET_FILE_TEXT(fp) _setmode(_fileno(fp),_O_TEXT) + #define SET_FD_BINARY(fd) _setmode(fd,_O_BINARY) + #define SET_FD_TEXT(fd) _setmode(fd,_O_TEXT) + #define putenv _putenv +#else /* _WIN32 || _WIN64 */ + #ifdef AMIGA + #define NON_POSIX + #else + /* assumedly posix systems */ + #include + #define RHAS_STAT + #define RHAS_FORK_EXEC + #endif + /* everybody except Windows */ -#else /* _WIN32 */ + /* NOPs */ + #define SET_DEFAULT_BINARY() + #define SET_FILE_BINARY(fp) + #define SET_FD_BINARY(fd) + #define SET_DEFAULT_TEXT() + #define SET_FILE_TEXT(fp) + #define SET_FD_TEXT(fd) -/* NOPs on unix */ -#define SET_DEFAULT_BINARY() -#define SET_FILE_BINARY(fp) -#define SET_FD_BINARY(fd) +#endif /* _WIN32 || _WIN64 */ +#ifdef __cplusplus +extern "C" { +#endif +#if defined(_WIN32) || defined(_WIN64) +extern int usleep(__int64 usec); - - - -#endif /* _WIN32 */ - +#endif /* _WIN32 || _WIN64 */ #ifdef __cplusplus }