4#if defined(__cplusplus)
11RUBY_SYMBOL_EXPORT_BEGIN
32#if defined(__cplusplus) && defined(_MSC_VER)
35#if !defined(_WIN64) && !defined(WIN32)
38#if defined(_MSC_VER) && _MSC_VER <= 1200
43#if !defined(_MSC_VER) || _MSC_VER >= 1400
46#if defined(__cplusplus) && defined(_MSC_VER)
66#if defined(__cplusplus) && defined(_MSC_VER) && _MSC_VER == 1200
70#if defined(__cplusplus) && defined(_MSC_VER) && _MSC_VER == 1200
76#ifdef HAVE_SYS_UTIME_H
77# include <sys/utime.h>
83#if defined __MINGW32__
86# if !defined(_INTPTR_T_DEFINED)
92# define _INTPTR_T_DEFINED
94# if !defined(INTPTR_MAX)
96# define INTPTR_MAX 9223372036854775807I64
98# define INTPTR_MAX 2147483647
100# define INTPTR_MIN (-INTPTR_MAX-1)
102# if !defined(_UINTPTR_T_DEFINED)
108# define _UINTPTR_T_DEFINED
110# if !defined(UINTPTR_MAX)
112# define UINTPTR_MAX 18446744073709551615UI64
114# define UINTPTR_MAX 4294967295U
125#define rb_w32_iswinnt() TRUE
126#define rb_w32_iswin95() FALSE
130#define O_SHARE_DELETE 0x20000000
133#define CLOCK_REALTIME 0
134#define CLOCK_MONOTONIC 1
141#define utime(_p, _t) rb_w32_uutime(_p, _t)
144#define utimes(_p, _t) rb_w32_uutimes(_p, _t)
146#define HAVE_UTIMENSAT 1
148#define utimensat(_d, _p, _t, _f) rb_w32_uutimensat(_d, _p, _t, _f)
149#define lseek(_f, _o, _w) rb_w32_lseek(_f, _o, _w)
151#define pipe(p) rb_w32_pipe(p)
152#define open rb_w32_uopen
153#define close(h) rb_w32_close(h)
154#define fclose(f) rb_w32_fclose(f)
155#define read(f, b, s) rb_w32_read(f, b, s)
156#define write(f, b, s) rb_w32_write(f, b, s)
157#define getpid() rb_w32_getpid()
158#define getppid() rb_w32_getppid()
159#define sleep(x) rb_w32_Sleep((x)*1000)
160#define Sleep(msec) (void)rb_w32_Sleep(msec)
163#define execv(path,argv) rb_w32_uaspawn(P_OVERLAY,path,argv)
165#define isatty(h) rb_w32_isatty(h)
168#define mkdir(p, m) rb_w32_umkdir(p, m)
170#define rmdir(p) rb_w32_urmdir(p)
172#define unlink(p) rb_w32_uunlink(p)
196#undef SIZEOF_STRUCT_STAT_ST_INO
197#define SIZEOF_STRUCT_STAT_ST_INO sizeof(unsigned __int64)
198#define HAVE_STRUCT_STAT_ST_INOHIGH
199#define HAVE_STRUCT_STAT_ST_ATIMENSEC
200#define HAVE_STRUCT_STAT_ST_MTIMENSEC
201#define HAVE_STRUCT_STAT_ST_CTIMENSEC
202#define fstat(fd,st) rb_w32_fstati128(fd,st)
203#define stati128(path, st) rb_w32_ustati128(path,st)
204#define lstat(path,st) rb_w32_ulstati128(path,st)
205#define access(path,mode) rb_w32_uaccess(path,mode)
207#define strcasecmp _stricmp
208#define strncasecmp _strnicmp
215#define isascii __isascii
244#define IFNAMSIZ IF_NAMESIZE
248#ifdef IFF_POINTTOPOINT
249#define IFF_POINTOPOINT IFF_POINTTOPOINT
254extern int flock(
int fd,
int oper);
257extern int WSAAPI
rb_w32_accept(
int,
struct sockaddr *,
int *);
258extern int WSAAPI
rb_w32_bind(
int,
const struct sockaddr *,
int);
259extern int WSAAPI
rb_w32_connect(
int,
const struct sockaddr *,
int);
269extern int WSAAPI
rb_w32_recv(
int,
char *,
int,
int);
270extern int WSAAPI
rb_w32_recvfrom(
int,
char *,
int,
int,
struct sockaddr *,
int *);
271extern int WSAAPI
rb_w32_send(
int,
const char *,
int,
int);
272extern int WSAAPI
rb_w32_sendto(
int,
const char *,
int,
int,
const struct sockaddr *,
int);
307extern rb_pid_t
waitpid (rb_pid_t,
int *,
int);
308extern rb_pid_t
rb_w32_uspawn(
int,
const char *,
const char*);
311extern int kill(
int,
int);
312extern int fcntl(
int,
int, ...);
331#if defined _MSC_VER && _MSC_VER >= 1800 && defined INFINITY
333#pragma warning(disable:4756)
335rb_infinity_float(
void)
341#define INFINITY rb_infinity_float()
344#if !defined __MINGW32__ || defined __NO_ISOCEXT
346#define isnan(x) _isnan(x)
354#define copysign(a, b) _copysign(a, b)
357scalb(
double a,
long b)
362__declspec(dllimport)
extern int finite(
double);
365#if !defined S_IFIFO && defined _S_IFIFO
366#define S_IFIFO _S_IFIFO
369#if !defined S_IRUSR && !defined __MINGW32__
379#if !defined S_IWUSR && !defined __MINGW32__
389#if !defined S_IXUSR && !defined __MINGW32__
399#define S_IFLNK 0xa000
412#define HAVE_FTRUNCATE 1
413#if defined HAVE_FTRUNCATE64
414#define ftruncate ftruncate64
416#define ftruncate rb_w32_ftruncate
420#define HAVE_TRUNCATE 1
421#define truncate rb_w32_utruncate
423#if defined(_MSC_VER) && _MSC_VER >= 1400 && _MSC_VER < 1800
424#define strtoll _strtoi64
425#define strtoull _strtoui64
431extern int ioctl (
int,
int, ...);
432extern rb_uid_t
getuid (
void);
434extern rb_gid_t
getgid (
void);
436extern int setuid (rb_uid_t);
437extern int setgid (rb_gid_t);
442#define strerror(e) rb_w32_strerror(e)
468# define EWOULDBLOCK WSAEWOULDBLOCK
471# define EINPROGRESS WSAEINPROGRESS
474# define EALREADY WSAEALREADY
477# define ENOTSOCK WSAENOTSOCK
480# define EDESTADDRREQ WSAEDESTADDRREQ
483# define EMSGSIZE WSAEMSGSIZE
486# define EPROTOTYPE WSAEPROTOTYPE
489# define ENOPROTOOPT WSAENOPROTOOPT
491#ifndef EPROTONOSUPPORT
492# define EPROTONOSUPPORT WSAEPROTONOSUPPORT
494#ifndef ESOCKTNOSUPPORT
495# define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
498# define EOPNOTSUPP WSAEOPNOTSUPP
501# define EPFNOSUPPORT WSAEPFNOSUPPORT
504# define EAFNOSUPPORT WSAEAFNOSUPPORT
507# define EADDRINUSE WSAEADDRINUSE
510# define EADDRNOTAVAIL WSAEADDRNOTAVAIL
513# define ENETDOWN WSAENETDOWN
516# define ENETUNREACH WSAENETUNREACH
519# define ENETRESET WSAENETRESET
522# define ECONNABORTED WSAECONNABORTED
525# define ECONNRESET WSAECONNRESET
528# define ENOBUFS WSAENOBUFS
531# define EISCONN WSAEISCONN
534# define ENOTCONN WSAENOTCONN
537# define ESHUTDOWN WSAESHUTDOWN
540# define ETOOMANYREFS WSAETOOMANYREFS
543# define ETIMEDOUT WSAETIMEDOUT
546# define ECONNREFUSED WSAECONNREFUSED
549# define ELOOP WSAELOOP
553# define EHOSTDOWN WSAEHOSTDOWN
556# define EHOSTUNREACH WSAEHOSTUNREACH
560# define EPROCLIM WSAEPROCLIM
563# define EUSERS WSAEUSERS
566# define EDQUOT WSAEDQUOT
569# define ESTALE WSAESTALE
572# define EREMOTE WSAEREMOTE
582#define F_DUPFD_CLOEXEC 67
587#define FD_SET(fd, set) do {\
589 SOCKET s = _get_osfhandle(fd);\
591 for (i = 0; i < (set)->fd_count; i++) {\
592 if ((set)->fd_array[i] == s) {\
596 if (i == (set)->fd_count) {\
597 if ((set)->fd_count < FD_SETSIZE) {\
598 (set)->fd_array[i] = s;\
605#define FD_CLR(f, s) rb_w32_fdclr(f, s)
608#define FD_ISSET(f, s) rb_w32_fdisset(f, s)
612#define inet_ntop(f,a,n,l) rb_w32_inet_ntop(f,a,n,l)
615#define inet_pton(f,s,d) rb_w32_inet_pton(f,s,d)
618#define accept(s, a, l) rb_w32_accept(s, a, l)
621#define bind(s, a, l) rb_w32_bind(s, a, l)
624#define connect(s, a, l) rb_w32_connect(s, a, l)
627#define select(n, r, w, e, t) rb_w32_select(n, r, w, e, t)
630#define getpeername(s, a, l) rb_w32_getpeername(s, a, l)
633#define getsockname(s, a, l) rb_w32_getsockname(s, a, l)
636#define getsockopt(s, v, n, o, l) rb_w32_getsockopt(s, v, n, o, l)
639#define ioctlsocket(s, c, a) rb_w32_ioctlsocket(s, c, a)
642#define listen(s, b) rb_w32_listen(s, b)
645#define recv(s, b, l, f) rb_w32_recv(s, b, l, f)
648#define recvfrom(s, b, l, f, fr, frl) rb_w32_recvfrom(s, b, l, f, fr, frl)
651#define send(s, b, l, f) rb_w32_send(s, b, l, f)
654#define sendto(s, b, l, f, t, tl) rb_w32_sendto(s, b, l, f, t, tl)
657#define setsockopt(s, v, n, o, l) rb_w32_setsockopt(s, v, n, o, l)
660#define shutdown(s, h) rb_w32_shutdown(s, h)
663#define socket(s, t, p) rb_w32_socket(s, t, p)
666#define gethostbyaddr(a, l, t) rb_w32_gethostbyaddr(a, l, t)
669#define gethostbyname(n) rb_w32_gethostbyname(n)
672#define gethostname(n, l) rb_w32_gethostname(n, l)
675#define getprotobyname(n) rb_w32_getprotobyname(n)
677#undef getprotobynumber
678#define getprotobynumber(n) rb_w32_getprotobynumber(n)
681#define getservbyname(n, p) rb_w32_getservbyname(n, p)
684#define getservbyport(p, pr) rb_w32_getservbyport(p, pr)
687#define get_osfhandle(h) rb_w32_get_osfhandle(h)
690#define getcwd(b, s) rb_w32_ugetcwd(b, s)
693#define getenv(n) rb_w32_ugetenv(n)
696#define rename(o, n) rb_w32_urename(o, n)
699#define times(t) rb_w32_times(t)
702#define dup2(o, n) rb_w32_dup2(o, n)
714struct tm *
gmtime_r(
const time_t *,
struct tm *);
715struct tm *
localtime_r(
const time_t *,
struct tm *);
770RUBY_SYMBOL_EXPORT_END
772#if (defined(__MINGW64_VERSION_MAJOR) || defined(__MINGW64__)) && !defined(__cplusplus)
773#ifdef RUBY_MINGW64_BROKEN_FREXP_MODF
776#define frexp(_X, _Y) __extension__ ({\
777 int intpart_frexp_bug = intpart_frexp_bug;\
778 double result_frexp_bug = frexp((_X), &intpart_frexp_bug);\
779 *(_Y) = intpart_frexp_bug;\
783#define modf(_X, _Y) __extension__ ({\
784 double intpart_modf_bug = intpart_modf_bug;\
785 double result_modf_bug = modf((_X), &intpart_modf_bug);\
786 *(_Y) = intpart_modf_bug;\
791#if defined(__MINGW64__)
798rb_w32_pow(
double x,
double y)
800 return (
double)powl(x, y);
802#elif defined(__MINGW64_VERSION_MAJOR)
803double rb_w32_pow(
double x,
double y);
805#define pow rb_w32_pow
808#if defined(__cplusplus)
#define DEPRECATED_BY(n, x)
Internal header for Math.
struct sockaddr * ifa_addr
struct ifaddrs * ifa_next
struct sockaddr * ifa_dstaddr
struct sockaddr * ifa_broadaddr
struct sockaddr * ifa_netmask
#define rb_w32_stati128(path, st)
long rb_w32_write_console(uintptr_t, int)
int WSAAPI rb_w32_sendto(int, const char *, int, int, const struct sockaddr *, int)
int rb_w32_access(const char *, int)
int gettimeofday(struct timeval *, struct timezone *)
int rb_w32_fclose(FILE *)
struct protoent *WSAAPI rb_w32_getprotobynumber(int)
int WSAAPI rb_w32_accept(int, struct sockaddr *, int *)
int rb_w32_ftruncate(int fd, off_t length)
int rb_w32_map_errno(DWORD)
int rb_w32_ulstati128(const char *, struct stati128 *)
int rb_w32_is_socket(int)
SOCKET rb_w32_get_osfhandle(int)
void rb_w32_free_environ(char **)
char rb_w32_fd_is_text(int)
int rb_w32_rename(const char *, const char *)
int rb_w32_utimensat(int, const char *, const struct timespec *, int)
ssize_t readlink(const char *, char *, size_t)
int rb_w32_uchdir(const char *)
int rb_w32_ustati128(const char *, struct stati128 *)
ssize_t rb_w32_ureadlink(const char *, char *, size_t)
int recvmsg(int, struct msghdr *, int)
int rb_w32_uutimes(const char *, const struct timeval *)
WCHAR * rb_w32_mbstr_to_wstr(UINT, const char *, int, long *)
rb_pid_t waitpid(rb_pid_t, int *, int)
int rb_w32_uchmod(const char *, int)
int rb_w32_wait_events_blocking(HANDLE *events, int num, DWORD timeout)
int rb_w32_sleep(unsigned long msec)
int rb_w32_unwrap_io_handle(int)
int WSAAPI rb_w32_gethostname(char *, int)
int symlink(const char *src, const char *link)
char * rb_w32_wstr_to_mbstr(UINT, const WCHAR *, int, long *)
int rb_w32_truncate(const char *path, off_t length)
void rb_w32_fdclr(int, fd_set *)
int rb_w32_unlink(const char *)
struct tm * localtime_r(const time_t *, struct tm *)
int rb_w32_uchown(const char *, int, int)
struct servent *WSAAPI rb_w32_getservbyname(const char *, const char *)
int rb_w32_ulink(const char *, const char *)
rb_pid_t rb_w32_aspawn(int, const char *, char *const *)
int rb_w32_uutime(const char *, const struct utimbuf *)
int WSAAPI rb_w32_recv(int, char *, int, int)
int WSAAPI rb_w32_send(int, const char *, int, int)
struct hostent *WSAAPI rb_w32_gethostbyname(const char *)
rb_pid_t rb_w32_aspawn_flags(int, const char *, char *const *, DWORD)
int WSAAPI rb_w32_bind(int, const struct sockaddr *, int)
int WSAAPI rb_w32_select(int, fd_set *, fd_set *, fd_set *, struct timeval *)
int sendmsg(int, const struct msghdr *, int)
int rb_w32_uaccess(const char *, int)
int WSAAPI rb_w32_ioctlsocket(int, long, u_long *)
const char *WSAAPI rb_w32_inet_ntop(int, const void *, char *, size_t)
rb_pid_t rb_w32_uaspawn_flags(int, const char *, char *const *, DWORD)
ssize_t rb_w32_read(int, void *, size_t)
int WSAAPI rb_w32_listen(int, int)
int rb_w32_fdisset(int, fd_set *)
int rb_w32_wrap_io_handle(HANDLE, int)
int WSAAPI rb_w32_shutdown(int, int)
void rb_w32_fdset(int, fd_set *)
int WSAAPI rb_w32_socket(int, int, int)
int rb_w32_dup2(int, int)
int WSAAPI rb_w32_connect(int, const struct sockaddr *, int)
int rb_w32_mkdir(const char *, int)
char ** rb_w32_get_environ(void)
int rb_w32_uutimensat(int, const char *, const struct timespec *, int)
int rb_w32_open(const char *, int,...)
char * rb_w32_getcwd(char *, int)
char * rb_w32_strerror(int)
int rb_w32_urmdir(const char *)
void rb_w32_sysinit(int *, char ***)
ssize_t rb_w32_wreadlink(const WCHAR *, WCHAR *, size_t)
rb_pid_t rb_w32_getppid(void)
int rb_w32_usymlink(const char *src, const char *link)
int flock(int fd, int oper)
int rb_w32_io_cancelable_p(int)
int rb_w32_uunlink(const char *)
rb_pid_t rb_w32_getpid(void)
int rb_w32_fstati128(int, struct stati128 *)
int link(const char *, const char *)
int clock_gettime(clockid_t, struct timespec *)
int WSAAPI rb_w32_getsockopt(int, int, int, char *, int *)
int WSAAPI rb_w32_setsockopt(int, int, int, const char *, int)
ssize_t rb_w32_write(int, const void *, size_t)
void freeifaddrs(struct ifaddrs *)
int rb_w32_lstati128(const char *, struct stati128 *)
int WSAAPI rb_w32_inet_pton(int, const char *, void *)
int rb_w32_utruncate(const char *path, off_t length)
uintptr_t(* asynchronous_func_t)(uintptr_t self, int argc, uintptr_t *argv)
int socketpair(int, int, int, int *)
char * rb_w32_getenv(const char *)
char * rb_w32_ugetenv(const char *)
int rb_w32_set_nonblock(int)
int WSAAPI rb_w32_getpeername(int, struct sockaddr *, int *)
int getifaddrs(struct ifaddrs **)
int clock_getres(clockid_t, struct timespec *)
int chown(const char *, int, int)
int rb_w32_time_subtract(struct timeval *rest, const struct timeval *wait)
struct tm * gmtime_r(const time_t *, struct tm *)
int WINAPI rb_w32_Sleep(unsigned long msec)
struct servent *WSAAPI rb_w32_getservbyport(int, const char *)
int rb_w32_umkdir(const char *, int)
int rb_w32_times(struct tms *)
rb_pid_t rb_w32_uspawn(int, const char *, const char *)
struct protoent *WSAAPI rb_w32_getprotobyname(const char *)
int rb_w32_urename(const char *, const char *)
int rb_w32_utimes(const char *, const struct timeval *)
int rb_w32_uopen(const char *, int,...)
char * rb_w32_ugetcwd(char *, int)
off_t rb_w32_lseek(int, off_t, int)
int rb_w32_utime(const char *, const struct utimbuf *)
int WSAAPI rb_w32_recvfrom(int, char *, int, int, struct sockaddr *, int *)
rb_pid_t rb_w32_spawn(int, const char *, const char *)
int WSAAPI rb_w32_getsockname(int, struct sockaddr *, int *)
uintptr_t rb_w32_asynchronize(asynchronous_func_t func, uintptr_t self, int argc, uintptr_t *argv, uintptr_t intrval)
rb_pid_t rb_w32_uaspawn(int, const char *, char *const *)
int rb_w32_wopen(const WCHAR *, int,...)
int rb_w32_rmdir(const char *)
struct hostent *WSAAPI rb_w32_gethostbyaddr(const char *, int, int)