4 #if defined(__cplusplus)
11 #if defined __GNUC__ && __GNUC__ >= 4
12 #pragma GCC visibility push(default)
34 #if defined(__cplusplus) && defined(_MSC_VER)
37 #if !defined(_WIN64) && !defined(WIN32)
42 #if defined(__cplusplus) && defined(_MSC_VER)
62 #if defined(__cplusplus) && defined(_MSC_VER) && _MSC_VER == 1200
66 #if defined(__cplusplus) && defined(_MSC_VER) && _MSC_VER == 1200
71 #include <sys/types.h>
72 #ifdef HAVE_SYS_UTIME_H
73 # include <sys/utime.h>
79 #if defined __MINGW32__ || __BORLANDC__ >= 0x0580
82 # if !defined(_INTPTR_T_DEFINED)
88 # define _INTPTR_T_DEFINED
90 # if !defined(_UINTPTR_T_DEFINED)
96 # define _UINTPTR_T_DEFINED
106 #define rb_w32_iswinnt() TRUE
107 #define rb_w32_iswin95() FALSE
123 #define getc(_stream) rb_w32_getc(_stream)
124 #define getchar() rb_w32_getc(stdin)
125 #define putc(_c, _stream) rb_w32_putc(_c, _stream)
126 #define putchar(_c) rb_w32_putc(_c, stdout)
128 #define fgetc(_stream) getc(_stream)
129 #define fputc(_c, _stream) putc(_c, _stream)
130 #define fgetchar() getchar()
131 #define fputchar(_c) putchar(_c)
132 #define utime(_p, _t) rb_w32_utime(_p, _t)
133 #define lseek(_f, _o, _w) _lseeki64(_f, _o, _w)
135 #define pipe(p) rb_w32_pipe(p)
136 #define open rb_w32_open
137 #define close(h) rb_w32_close(h)
138 #define fclose(f) rb_w32_fclose(f)
139 #define read(f, b, s) rb_w32_read(f, b, s)
140 #define write(f, b, s) rb_w32_write(f, b, s)
141 #define getpid() rb_w32_getpid()
142 #define getppid() rb_w32_getppid()
143 #define sleep(x) rb_w32_Sleep((x)*1000)
144 #define Sleep(msec) (void)rb_w32_Sleep(msec)
145 #define fstati64(fd,st) rb_w32_fstati64(fd,st)
147 #define creat(p, m) _creat(p, m)
149 #define filelength(h) _filelength(h)
150 #define mktemp(t) _mktemp(t)
151 #define tell(h) _tell(h)
155 #define fopen(p, m) rb_w32_fopen(p, m)
157 #define fdopen(h, m) rb_w32_fdopen(h, m)
159 #define fsopen(p, m, sh) rb_w32_fsopen(p, m, sh)
163 #define execv(path,argv) rb_w32_aspawn(P_OVERLAY,path,argv)
164 #if !defined(__BORLANDC__)
166 #define isatty(h) rb_w32_isatty(h)
170 #define mkdir(p, m) rb_w32_mkdir(p, m)
172 #define rmdir(p) rb_w32_rmdir(p)
174 #define unlink(p) rb_w32_unlink(p)
177 #if SIZEOF_OFF_T == 8
178 #define off_t __int64
180 #define fstat(fd,st) fstati64(fd,st)
181 #if defined(__BORLANDC__)
182 #define stati64(path, st) rb_w32_stati64(path, st)
183 #elif !defined(_MSC_VER) || RT_VER < 80
184 #define stati64 _stati64
186 #define _stati64(path, st) rb_w32_stati64(path, st)
189 #define stati64 _stat64
190 #define _stat64(path, st) rb_w32_stati64(path, st)
193 #define stat(path,st) rb_w32_stat(path,st)
194 #define fstat(fd,st) rb_w32_fstat(fd,st)
198 #define access(path,mode) rb_w32_access(path,mode)
200 #define strcasecmp _stricmp
201 #define strncasecmp _strnicmp
202 #define fsync _commit
208 #define isascii __isascii
227 extern rb_pid_t
rb_w32_pipe_exec(
const char *,
const char *,
int,
int *,
int *);
228 extern int flock(
int fd,
int oper);
231 extern int WSAAPI
rb_w32_accept(
int,
struct sockaddr *,
int *);
232 extern int WSAAPI
rb_w32_bind(
int,
const struct sockaddr *,
int);
233 extern int WSAAPI
rb_w32_connect(
int,
const struct sockaddr *,
int);
243 extern int WSAAPI
rb_w32_recv(
int,
char *,
int,
int);
244 extern int WSAAPI
rb_w32_recvfrom(
int,
char *,
int,
int,
struct sockaddr *,
int *);
245 extern int WSAAPI
rb_w32_send(
int,
const char *,
int,
int);
246 extern int WSAAPI
rb_w32_sendto(
int,
const char *,
int,
int,
const struct sockaddr *,
int);
272 extern int chown(
const char *,
int,
int);
274 extern int link(
const char *,
const char *);
277 extern rb_pid_t
waitpid (rb_pid_t,
int *,
int);
278 extern rb_pid_t
rb_w32_spawn(
int,
const char *,
const char*);
279 extern rb_pid_t
rb_w32_aspawn(
int,
const char *,
char *
const *);
281 extern int kill(
int,
int);
282 extern int fcntl(
int,
int, ...);
285 #if !defined(__BORLANDC__)
305 extern FILE *rb_w32_fopen(
const char *,
const char *);
306 extern FILE *rb_w32_fdopen(
int,
const char *);
307 extern FILE *rb_w32_fsopen(
const char *,
const char *,
int);
311 #if !defined __MINGW32__ || defined __NO_ISOCEXT
313 #define isnan(x) _isnan(x)
321 #define copysign(a, b) _copysign(a, b)
330 #if !defined S_IFIFO && defined _S_IFIFO
331 #define S_IFIFO _S_IFIFO
334 #if 0 && defined __BORLANDC__
340 #define S_ISDIR(m) (((unsigned short)(m) & S_IFMT) == S_IFDIR)
341 #define S_ISFIFO(m) (((unsigned short)(m) & S_IFMT) == S_IFIFO)
342 #define S_ISBLK(m) (((unsigned short)(m) & S_IFMT) == S_IFBLK)
343 #define S_ISCHR(m) (((unsigned short)(m) & S_IFMT) == S_IFCHR)
344 #define S_ISREG(m) (((unsigned short)(m) & S_IFMT) == S_IFREG)
347 #if !defined S_IRUSR && !defined __MINGW32__
357 #if !defined S_IWUSR && !defined __MINGW32__
367 #if !defined S_IXUSR && !defined __MINGW32__
388 #undef HAVE_FTRUNCATE
389 #define HAVE_FTRUNCATE 1
390 #if defined HAVE_FTRUNCATE64
391 #define ftruncate ftruncate64
393 #define ftruncate rb_w32_ftruncate
397 #define HAVE_TRUNCATE 1
398 #if defined HAVE_TRUNCATE64
399 #define truncate truncate64
401 #define truncate rb_w32_truncate
405 #define HAVE_FSEEKO 1
406 #if defined HAVE_FSEEKO64
407 #define fseeko fseeko64
409 #define fseeko rb_w32_fseeko
413 #define HAVE_FTELLO 1
414 #if defined HAVE_FTELLO64
415 #define ftello ftello64
417 #define ftello rb_w32_ftello
423 extern int ioctl (
int,
int, ...);
424 extern rb_uid_t
getuid (
void);
425 extern rb_uid_t
geteuid (
void);
426 extern rb_gid_t
getgid (
void);
427 extern rb_gid_t
getegid (
void);
428 extern int setuid (rb_uid_t);
429 extern int setgid (rb_gid_t);
434 #define strerror(e) rb_w32_strerror(e)
437 #define PIPE_BUF 1024
460 # define EWOULDBLOCK WSAEWOULDBLOCK
463 # define EINPROGRESS WSAEINPROGRESS
466 # define EALREADY WSAEALREADY
469 # define ENOTSOCK WSAENOTSOCK
472 # define EDESTADDRREQ WSAEDESTADDRREQ
475 # define EMSGSIZE WSAEMSGSIZE
478 # define EPROTOTYPE WSAEPROTOTYPE
481 # define ENOPROTOOPT WSAENOPROTOOPT
483 #ifndef EPROTONOSUPPORT
484 # define EPROTONOSUPPORT WSAEPROTONOSUPPORT
486 #ifndef ESOCKTNOSUPPORT
487 # define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
490 # define EOPNOTSUPP WSAEOPNOTSUPP
493 # define EPFNOSUPPORT WSAEPFNOSUPPORT
496 # define EAFNOSUPPORT WSAEAFNOSUPPORT
499 # define EADDRINUSE WSAEADDRINUSE
501 #ifndef EADDRNOTAVAIL
502 # define EADDRNOTAVAIL WSAEADDRNOTAVAIL
505 # define ENETDOWN WSAENETDOWN
508 # define ENETUNREACH WSAENETUNREACH
511 # define ENETRESET WSAENETRESET
514 # define ECONNABORTED WSAECONNABORTED
517 # define ECONNRESET WSAECONNRESET
520 # define ENOBUFS WSAENOBUFS
523 # define EISCONN WSAEISCONN
526 # define ENOTCONN WSAENOTCONN
529 # define ESHUTDOWN WSAESHUTDOWN
532 # define ETOOMANYREFS WSAETOOMANYREFS
535 # define ETIMEDOUT WSAETIMEDOUT
538 # define ECONNREFUSED WSAECONNREFUSED
541 # define ELOOP WSAELOOP
545 # define EHOSTDOWN WSAEHOSTDOWN
548 # define EHOSTUNREACH WSAEHOSTUNREACH
552 # define EPROCLIM WSAEPROCLIM
555 # define EUSERS WSAEUSERS
558 # define EDQUOT WSAEDQUOT
561 # define ESTALE WSAESTALE
564 # define EREMOTE WSAEREMOTE
580 #define FD_SET(fd, set) do {\
582 SOCKET s = _get_osfhandle(fd);\
584 for (i = 0; i < (set)->fd_count; i++) {\
585 if ((set)->fd_array[i] == s) {\
589 if (i == (set)->fd_count) {\
590 if ((set)->fd_count < FD_SETSIZE) {\
591 (set)->fd_array[i] = s;\
598 #define FD_CLR(f, s) rb_w32_fdclr(f, s)
601 #define FD_ISSET(f, s) rb_w32_fdisset(f, s)
605 #define inet_ntop(f,a,n,l) rb_w32_inet_ntop(f,a,n,l)
608 #define accept(s, a, l) rb_w32_accept(s, a, l)
611 #define bind(s, a, l) rb_w32_bind(s, a, l)
614 #define connect(s, a, l) rb_w32_connect(s, a, l)
617 #define select(n, r, w, e, t) rb_w32_select(n, r, w, e, t)
620 #define getpeername(s, a, l) rb_w32_getpeername(s, a, l)
623 #define getsockname(s, a, l) rb_w32_getsockname(s, a, l)
626 #define getsockopt(s, v, n, o, l) rb_w32_getsockopt(s, v, n, o, l)
629 #define ioctlsocket(s, c, a) rb_w32_ioctlsocket(s, c, a)
632 #define listen(s, b) rb_w32_listen(s, b)
635 #define recv(s, b, l, f) rb_w32_recv(s, b, l, f)
638 #define recvfrom(s, b, l, f, fr, frl) rb_w32_recvfrom(s, b, l, f, fr, frl)
641 #define send(s, b, l, f) rb_w32_send(s, b, l, f)
644 #define sendto(s, b, l, f, t, tl) rb_w32_sendto(s, b, l, f, t, tl)
647 #define setsockopt(s, v, n, o, l) rb_w32_setsockopt(s, v, n, o, l)
650 #define shutdown(s, h) rb_w32_shutdown(s, h)
653 #define socket(s, t, p) rb_w32_socket(s, t, p)
656 #define gethostbyaddr(a, l, t) rb_w32_gethostbyaddr(a, l, t)
659 #define gethostbyname(n) rb_w32_gethostbyname(n)
662 #define gethostname(n, l) rb_w32_gethostname(n, l)
664 #undef getprotobyname
665 #define getprotobyname(n) rb_w32_getprotobyname(n)
667 #undef getprotobynumber
668 #define getprotobynumber(n) rb_w32_getprotobynumber(n)
671 #define getservbyname(n, p) rb_w32_getservbyname(n, p)
674 #define getservbyport(p, pr) rb_w32_getservbyport(p, pr)
677 #define socketpair(a, t, p, s) rb_w32_socketpair(a, t, p, s)
680 #define get_osfhandle(h) rb_w32_get_osfhandle(h)
683 #define getcwd(b, s) rb_w32_getcwd(b, s)
686 #define getenv(n) rb_w32_getenv(n)
689 #define rename(o, n) rb_w32_rename(o, n)
692 #define times(t) rb_w32_times(t)
704 struct tm *
gmtime_r(
const time_t *,
struct tm *);
705 struct tm *
localtime_r(
const time_t *,
struct tm *);
738 #if defined __GNUC__ && __GNUC__ >= 4
739 #pragma GCC visibility pop
742 #ifdef __MINGW_ATTRIB_PURE
745 #define frexp(_X, _Y) __extension__ ({\
746 int intpart_frexp_bug = intpart_frexp_bug;\
747 double result_frexp_bug = frexp((_X), &intpart_frexp_bug);\
748 *(_Y) = intpart_frexp_bug;\
752 #define modf(_X, _Y) __extension__ ({\
753 double intpart_modf_bug = intpart_modf_bug;\
754 double result_modf_bug = modf((_X), &intpart_modf_bug);\
755 *(_Y) = intpart_modf_bug;\
760 #if defined(__cplusplus)
767 #if defined(__MINGW64__)
774 rb_w32_pow(
double x,
double y)
778 #elif defined(__MINGW64_VERSION_MAJOR)
784 rb_w32_pow(
double x,
double y)
787 unsigned int default_control = _controlfp(0, 0);
788 _controlfp(_PC_64, _MCW_PC);
791 _controlfp(default_control, _MCW_PC);
795 #if defined(__MINGW64_VERSION_MAJOR) || defined(__MINGW64__)
796 #define pow rb_w32_pow
RUBY_EXTERN int flock(int, int)
char * rb_w32_ugetenv(const char *)
int gettimeofday(struct timeval *, struct timezone *)
int rb_w32_wait_events_blocking(HANDLE *events, int num, DWORD timeout)
rb_pid_t rb_w32_getppid(void)
ssize_t rb_w32_write(int, const void *, size_t)
int rb_w32_fstat(int, struct stat *)
int sendmsg(int, const struct msghdr *, int)
int WSAAPI rb_w32_connect(int, const struct sockaddr *, int)
int WSAAPI rb_w32_bind(int, const struct sockaddr *, int)
int WSAAPI rb_w32_sendto(int, const char *, int, int, const struct sockaddr *, int)
RUBY_EXTERN int finite(double)
SSL_METHOD *(* func)(void)
int rb_w32_fseeko(FILE *stream, off_t offset, int whence)
int rb_w32_ustati64(const char *, struct stati64 *)
int rb_w32_wrap_io_handle(HANDLE, int)
SOCKET rb_w32_get_osfhandle(int)
int rb_w32_umkdir(const char *, int)
rb_pid_t rb_w32_pipe_exec(const char *, const char *, int, int *, int *)
ssize_t rb_w32_read(int, void *, size_t)
rb_pid_t rb_w32_aspawn_flags(int, const char *, char *const *, DWORD)
static struct tm * localtime_r(const time_t *t, struct tm *tm)
int WSAAPI rb_w32_getsockopt(int, int, int, char *, int *)
int rb_w32_urename(const char *, const char *)
int rb_w32_fdisset(int, fd_set *)
struct servent *WSAAPI rb_w32_getservbyname(const char *, const char *)
int rb_w32_open(const char *, int,...)
int WSAAPI rb_w32_select(int, fd_set *, fd_set *, fd_set *, struct timeval *)
void rb_w32_free_environ(char **)
int WSAAPI rb_w32_accept(int, struct sockaddr *, int *)
struct protoent *WSAAPI rb_w32_getprotobynumber(int)
rb_pid_t rb_w32_getpid(void)
int rb_w32_uaccess(const char *, int)
int rb_w32_map_errno(DWORD)
int recvmsg(int, struct msghdr *, int)
static struct tm * gmtime_r(const time_t *t, struct tm *tm)
void rb_w32_fdclr(int, fd_set *)
int rb_w32_times(struct tms *)
int WSAAPI rb_w32_socket(int, int, int)
int rb_w32_is_socket(int)
int rb_w32_cmdvector(const char *, char ***)
int WSAAPI rb_w32_getsockname(int, struct sockaddr *, int *)
const char *WSAAPI rb_w32_inet_ntop(int, const void *, char *, size_t)
struct hostent *WSAAPI rb_w32_gethostbyaddr(const char *, int, int)
struct hostent *WSAAPI rb_w32_gethostbyname(const char *)
int rb_w32_wopen(const WCHAR *, int,...)
uintptr_t(* asynchronous_func_t)(uintptr_t self, int argc, uintptr_t *argv)
int WSAAPI rb_w32_send(int, const char *, int, int)
rb_pid_t rb_w32_spawn(int, const char *, const char *)
off_t rb_w32_ftello(FILE *stream)
int WINAPI rb_w32_Sleep(unsigned long msec)
int WSAAPI rb_w32_recvfrom(int, char *, int, int, struct sockaddr *, int *)
int chown(const char *, int, int)
int WSAAPI rb_w32_listen(int, int)
int rb_w32_sleep(unsigned long msec)
int rb_w32_mkdir(const char *, int)
int rb_w32_uutime(const char *, const struct utimbuf *)
int rb_w32_rmdir(const char *)
int link(const char *, const char *)
int rb_w32_unwrap_io_handle(int)
int rb_w32_putc(int, FILE *)
int rb_w32_fstati64(int, struct stati64 *)
int rb_w32_time_subtract(struct timeval *rest, const struct timeval *wait)
int rb_w32_unlink(const char *)
int rb_w32_truncate(const char *path, off_t length)
int rb_w32_urmdir(const char *)
char ** rb_w32_get_environ(void)
int rb_w32_uopen(const char *, int,...)
int rb_w32_stati64(const char *, struct stati64 *)
int rb_w32_uchmod(const char *, int)
char * rb_w32_getenv(const char *)
struct protoent *WSAAPI rb_w32_getprotobyname(const char *)
int WSAAPI rb_w32_setsockopt(int, int, int, const char *, int)
int rb_w32_access(const char *, int)
rb_pid_t rb_w32_aspawn(int, const char *, char *const *)
int rb_w32_uchdir(const char *)
int rb_w32_ulink(const char *, const char *)
long rb_w32_write_console(uintptr_t, int)
char * rb_w32_strerror(int)
int WSAAPI rb_w32_ioctlsocket(int, long, u_long *)
struct servent *WSAAPI rb_w32_getservbyport(int, const char *)
int WSAAPI rb_w32_gethostname(char *, int)
int rb_w32_ftruncate(int fd, off_t length)
void rb_w32_fdset(int, fd_set *)
int WSAAPI rb_w32_shutdown(int, int)
int WSAAPI rb_w32_getpeername(int, struct sockaddr *, int *)
char * rb_w32_getcwd(char *, int)
static double scalb(double a, long b)
int rb_w32_fclose(FILE *)
char rb_w32_fd_is_text(int)
int rb_w32_socketpair(int, int, int, int *)
int WSAAPI rb_w32_recv(int, char *, int, int)
int rb_w32_io_cancelable_p(int)
uintptr_t rb_w32_asynchronize(asynchronous_func_t func, uintptr_t self, int argc, uintptr_t *argv, uintptr_t intrval)
int rb_w32_uunlink(const char *)
int rb_w32_stat(const char *, struct stat *)
int rb_w32_utime(const char *, const struct utimbuf *)
rb_pid_t waitpid(rb_pid_t, int *, int)
int rb_w32_uchown(const char *, int, int)
int rb_w32_rename(const char *, const char *)