Ruby  2.5.0dev(2017-10-22revision60238)
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
win32.c File Reference
#include "ruby/ruby.h"
#include "ruby/encoding.h"
#include "ruby/util.h"
#include <fcntl.h>
#include <process.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <assert.h>
#include <ctype.h>
#include <windows.h>
#include <winbase.h>
#include <wincon.h>
#include <share.h>
#include <shlobj.h>
#include <mbstring.h>
#include <shlwapi.h>
#include "ruby/win32.h"
#include "win32/dir.h"
#include "win32/file.h"
#include "internal.h"
#include "encindex.h"
#include "dln.h"
#include "dln_find.c"
#include <sys/timeb.h>
#include "missing/nextafter.c"

Go to the source code of this file.

Data Structures

struct  constat
 
struct  ChildRecord
 
struct  _NtCmdLineElement
 
struct  ioinfo
 
struct  WSAMSG
 
struct  NET_LUID
 
struct  asynchronous_arg_t
 

Macros

#define isdirsep(x)   ((x) == '/' || (x) == '\\')
 
#define DLN_FIND_EXTRA_ARG_DECL   ,UINT cp
 
#define DLN_FIND_EXTRA_ARG   ,cp
 
#define rb_w32_stati64(path, st)   w32_stati64(path, st, cp)
 
#define getenv(name)   w32_getenv(name, cp)
 
#define CharNext(p)   CharNextExA(cp, (p), 0)
 
#define dln_find_exe_r   rb_w32_udln_find_exe_r
 
#define dln_find_file_r   rb_w32_udln_find_file_r
 
#define dln_find_exe_r(fname, path, buf, size)   rb_w32_udln_find_exe_r(fname, path, buf, size, cp)
 
#define dln_find_file_r(fname, path, buf, size)   rb_w32_udln_find_file_r(fname, path, buf, size, cp)
 
#define ENV_MAX   512
 
#define enough_to_get(n)   (--(n) >= 0)
 
#define enough_to_put(n)   (--(n) >= 0)
 
#define Debug(something)   /* nothing */
 
#define TO_SOCKET(x)   _get_osfhandle(x)
 
#define RUBY_CRITICAL   if (0) {} else /* just remark */
 
#define ERROR_PIPE_LOCAL   229L
 
#define map_errno   rb_w32_map_errno
 
#define LK_ERR(f, i)
 
#define LK_LEN   ULONG_MAX
 
#define CSIDL_LOCAL_APPDATA   28
 
#define CSIDL_COMMON_APPDATA   35
 
#define CSIDL_WINDOWS   36
 
#define CSIDL_SYSTEM   37
 
#define CSIDL_PROFILE   40
 
#define env   wk.val
 
#define set_env_val(vname)
 
#define conlist_disabled   ((st_table *)-1)
 
#define MAKE_SOCKDATA(af, fl)   ((int)((((int)af)<<4)|((fl)&0xFFFF)))
 
#define GET_FAMILY(v)   ((int)(((v)>>4)&0xFFFF))
 
#define GET_FLAGS(v)   ((int)((v)&0xFFFF))
 
#define MAXCHILDNUM   256 /* max num of child processes */
 
#define FOREACH_CHILD(v)
 
#define END_FOREACH_CHILD   } while (0)
 
#define InternalCmdsMax   8
 
#define STRNDUPV(ptr, v, src, len)   (((char *)memcpy(((ptr) = ALLOCV((v), (len) + 1)), (src), (len)))[len] = 0)
 
#define filecp   rb_w32_filecp
 
#define mbstr_to_wstr   rb_w32_mbstr_to_wstr
 
#define wstr_to_mbstr   rb_w32_wstr_to_mbstr
 
#define acp_to_wstr(str, plen)   mbstr_to_wstr(CP_ACP, str, -1, plen)
 
#define wstr_to_acp(str, plen)   wstr_to_mbstr(CP_ACP, str, -1, plen)
 
#define filecp_to_wstr(str, plen)   mbstr_to_wstr(filecp(), str, -1, plen)
 
#define wstr_to_filecp(str, plen)   wstr_to_mbstr(filecp(), str, -1, plen)
 
#define utf8_to_wstr(str, plen)   mbstr_to_wstr(CP_UTF8, str, -1, plen)
 
#define wstr_to_utf8(str, plen)   wstr_to_mbstr(CP_UTF8, str, -1, plen)
 
#define NTGLOB   0x1
 
#define NTMALLOC   0x2
 
#define NTSTRING   0x4
 
#define GetBit(bits, i)   ((bits)[(i) / CHAR_BIT] & (1 << (i) % CHAR_BIT))
 
#define SetBit(bits, i)   ((bits)[(i) / CHAR_BIT] |= (1 << (i) % CHAR_BIT))
 
#define BitOfIsDir(n)   ((n) * 2)
 
#define BitOfIsRep(n)   ((n) * 2 + 1)
 
#define DIRENT_PER_CHAR   (CHAR_BIT / 2)
 
#define FILE_COUNT(stream)   stream->_cnt
 
#define FILE_READPTR(stream)   stream->_ptr
 
#define FILE_FILENO(stream)   stream->_file
 
#define _CRTIMP   __declspec(dllimport)
 
#define IOINFO_L2E   5
 
#define IOINFO_ARRAY_ELTS   (1 << IOINFO_L2E)
 
#define _osfhnd(i)   (_pioinfo(i)->osfhnd)
 
#define _osfile(i)   (_pioinfo(i)->osfile)
 
#define rb_acrt_lowio_lock_fh(i)   EnterCriticalSection(&_pioinfo(i)->lock)
 
#define rb_acrt_lowio_unlock_fh(i)   LeaveCriticalSection(&_pioinfo(i)->lock)
 
#define pioinfo_extra   0
 
#define _set_osfhnd(fh, osfh)   (void)(_osfhnd(fh) = osfh)
 
#define _set_osflags(fh, flags)   (_osfile(fh) = (flags))
 
#define FOPEN   0x01 /* file handle open */
 
#define FEOFLAG   0x02 /* end of file has been encountered */
 
#define FPIPE   0x08 /* file handle refers to a pipe */
 
#define FNOINHERIT   0x10 /* file handle opened O_NOINHERIT */
 
#define FAPPEND   0x20 /* file handle opened O_APPEND */
 
#define FDEV   0x40 /* file handle refers to device */
 
#define FTEXT   0x80 /* file handle is in text mode */
 
#define open_null(fd)
 
#define ROOT_UID   0
 
#define ROOT_GID   0
 
#define WSAID_WSARECVMSG   {0xf689d7c8,0x6f1f,0x436b,{0x8a,0x53,0xe5,0x4f,0xe3,0x51,0xc3,0x22}}
 
#define WSAID_WSASENDMSG   {0xa441e712,0x754f,0x43ca,{0x84,0xa7,0x0d,0xee,0x44,0xcf,0x60,0x6d}}
 
#define msghdr_to_wsamsg(msg, wsamsg)
 
#define hex2byte(str)   ((isdigit(*(str)) ? *(str) - '0' : toupper(*(str)) - 'A' + 10) << 4 | (isdigit(*((str) + 1)) ? *((str) + 1) - '0' : toupper(*((str) + 1)) - 'A' + 10))
 
#define FILE_DEVICE_FILE_SYSTEM   0x00000009
 
#define FSCTL_GET_REPARSE_POINT   ((0x9<<16)|(42<<2))
 
#define IO_REPARSE_TAG_SYMLINK   0xA000000CL
 
#define SYMBOLIC_LINK_FLAG_DIRECTORY   (0x1)
 
#define COPY_STAT(src, dest, size_cast)
 
#define yield_once()   Sleep(0)
 
#define yield_until(condition)   do yield_once(); while (!(condition))
 
#define set_new_std_handle(newfd, handle)
 
#define set_new_std_fd(newfd)   set_new_std_handle(newfd, (HANDLE)rb_w32_get_osfhandle(newfd))
 
#define FOREGROUND_MASK   (FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY)
 
#define BACKGROUND_MASK   (BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED | BACKGROUND_INTENSITY)
 
#define constat_attr_color_reverse(attr)
 
#define COMMON_LVB_UNDERSCORE   0x8000
 
#define INVALID_SET_FILE_POINTER   ((DWORD)-1)
 

Typedefs

typedef struct _NtCmdLineElement NtCmdLineElement
 
typedef DWORD(WINAPI * get_final_path_func) (HANDLE, WCHAR *, DWORD, DWORD)
 
typedef DWORD(WINAPI * cigl_t) (const GUID *, NET_LUID *)
 
typedef DWORD(WINAPI * cilnA_t) (const NET_LUID *, char *, size_t)
 

Enumerations

enum  { constat_init = -2, constat_esc = -1, constat_seq = 0 }
 

Functions

int rb_w32_reparse_symlink_p (const WCHAR *path)
 
int rb_w32_wait_events (HANDLE *events, int num, DWORD timeout)
 
VALUE rb_w32_conv_from_wchar (const WCHAR *wstr, rb_encoding *enc)
 
int ruby_brace_glob_with_enc (const char *str, int flags, ruby_glob_func *func, VALUE arg, rb_encoding *enc)
 
int rb_w32_map_errno (DWORD winerr)
 
DWORD rb_w32_osver (void)
 
int flock (int fd, int oper)
 
VALUE rb_w32_special_folder (int type)
 
UINT rb_w32_system_tmpdir (WCHAR *path, UINT len)
 
WCHAR * rb_w32_home_dir (void)
 
void rb_w32_sysinit (int *argc, char ***argv)
 
char * getlogin (void)
 
SOCKET rb_w32_get_osfhandle (int fh)
 
rb_pid_t rb_w32_spawn (int mode, const char *cmd, const char *prog)
 
rb_pid_t rb_w32_uspawn (int mode, const char *cmd, const char *prog)
 
rb_pid_t rb_w32_aspawn_flags (int mode, const char *prog, char *const *argv, DWORD flags)
 
rb_pid_t rb_w32_uaspawn_flags (int mode, const char *prog, char *const *argv, DWORD flags)
 
rb_pid_t rb_w32_aspawn (int mode, const char *prog, char *const *argv)
 
rb_pid_t rb_w32_uaspawn (int mode, const char *prog, char *const *argv)
 
UINT filecp (void)
 
char * rb_w32_wstr_to_mbstr (UINT cp, const WCHAR *wstr, int clen, long *plen)
 
WCHAR * rb_w32_mbstr_to_wstr (UINT cp, const char *str, int clen, long *plen)
 
DIRrb_w32_opendir (const char *filename)
 
DIRrb_w32_uopendir (const char *filename)
 
char * rb_w32_conv_from_wstr (const WCHAR *wstr, long *lenp, rb_encoding *enc)
 
struct directrb_w32_readdir (DIR *dirp, rb_encoding *enc)
 
long rb_w32_telldir (DIR *dirp)
 
void rb_w32_seekdir (DIR *dirp, long loc)
 
void rb_w32_rewinddir (DIR *dirp)
 
void rb_w32_closedir (DIR *dirp)
 
int rb_w32_io_cancelable_p (int fd)
 
int rb_w32_is_socket (int fd)
 
char * rb_w32_strerror (int e)
 
rb_uid_t getuid (void)
 
rb_uid_t geteuid (void)
 
rb_gid_t getgid (void)
 
rb_gid_t getegid (void)
 
int setuid (rb_uid_t uid)
 
int setgid (rb_gid_t gid)
 
int ioctl (int i, int u,...)
 
void rb_w32_fdset (int fd, fd_set *set)
 
void rb_w32_fdclr (int fd, fd_set *set)
 
int rb_w32_fdisset (int fd, fd_set *set)
 
void rb_w32_fd_copy (rb_fdset_t *dst, const fd_set *src, int max)
 
void rb_w32_fd_dup (rb_fdset_t *dst, const rb_fdset_t *src)
 
int rb_w32_time_subtract (struct timeval *rest, const struct timeval *wait)
 
int rb_w32_check_interrupt (void *)
 
int rb_w32_select_with_thread (int nfds, fd_set *rd, fd_set *wr, fd_set *ex, struct timeval *timeout, void *th)
 
int WSAAPI rb_w32_select (int nfds, fd_set *rd, fd_set *wr, fd_set *ex, struct timeval *timeout)
 
int WSAAPI rb_w32_accept (int s, struct sockaddr *addr, int *addrlen)
 
int WSAAPI rb_w32_bind (int s, const struct sockaddr *addr, int addrlen)
 
int WSAAPI rb_w32_connect (int s, const struct sockaddr *addr, int addrlen)
 
int WSAAPI rb_w32_getpeername (int s, struct sockaddr *addr, int *addrlen)
 
int WSAAPI rb_w32_getsockname (int fd, struct sockaddr *addr, int *addrlen)
 
int WSAAPI rb_w32_getsockopt (int s, int level, int optname, char *optval, int *optlen)
 
int WSAAPI rb_w32_ioctlsocket (int s, long cmd, u_long *argp)
 
int WSAAPI rb_w32_listen (int s, int backlog)
 
int WSAAPI rb_w32_recv (int fd, char *buf, int len, int flags)
 
int WSAAPI rb_w32_recvfrom (int fd, char *buf, int len, int flags, struct sockaddr *from, int *fromlen)
 
int WSAAPI rb_w32_send (int fd, const char *buf, int len, int flags)
 
int WSAAPI rb_w32_sendto (int fd, const char *buf, int len, int flags, const struct sockaddr *to, int tolen)
 
int recvmsg (int fd, struct msghdr *msg, int flags)
 
int sendmsg (int fd, const struct msghdr *msg, int flags)
 
int WSAAPI rb_w32_setsockopt (int s, int level, int optname, const char *optval, int optlen)
 
int WSAAPI rb_w32_shutdown (int s, int how)
 
int WSAAPI rb_w32_socket (int af, int type, int protocol)
 
struct hostent *WSAAPI rb_w32_gethostbyaddr (const char *addr, int len, int type)
 
struct hostent *WSAAPI rb_w32_gethostbyname (const char *name)
 
int WSAAPI rb_w32_gethostname (char *name, int len)
 
struct protoent *WSAAPI rb_w32_getprotobyname (const char *name)
 
struct protoent *WSAAPI rb_w32_getprotobynumber (int num)
 
struct servent *WSAAPI rb_w32_getservbyname (const char *name, const char *proto)
 
struct servent *WSAAPI rb_w32_getservbyport (int port, const char *proto)
 
int socketpair (int af, int type, int protocol, int *sv)
 
int getifaddrs (struct ifaddrs **ifap)
 
void freeifaddrs (struct ifaddrs *ifp)
 
void endhostent (void)
 
void endnetent (void)
 
void endprotoent (void)
 
void endservent (void)
 
struct netent * getnetent (void)
 
struct netent * getnetbyaddr (long net, int type)
 
struct netent * getnetbyname (const char *name)
 
struct protoent * getprotoent (void)
 
struct servent * getservent (void)
 
void sethostent (int stayopen)
 
void setnetent (int stayopen)
 
void setprotoent (int stayopen)
 
void setservent (int stayopen)
 
int fcntl (int fd, int cmd,...)
 
int rb_w32_set_nonblock (int fd)
 
rb_pid_t waitpid (rb_pid_t pid, int *stat_loc, int options)
 
int __cdecl gettimeofday (struct timeval *tv, struct timezone *tz)
 
int clock_gettime (clockid_t clock_id, struct timespec *sp)
 
int clock_getres (clockid_t clock_id, struct timespec *sp)
 
char * rb_w32_getcwd (char *buffer, int size)
 
char * rb_w32_ugetcwd (char *buffer, int size)
 
VALUE rb_dir_getwd_ospath (void)
 
int chown (const char *path, int owner, int group)
 
int rb_w32_uchown (const char *path, int owner, int group)
 
int lchown (const char *path, int owner, int group)
 
int rb_w32_ulchown (const char *path, int owner, int group)
 
int kill (int pid, int sig)
 
int rb_w32_ulink (const char *from, const char *to)
 
int link (const char *from, const char *to)
 
int rb_w32_read_reparse_point (const WCHAR *path, rb_w32_reparse_buffer_t *rp, size_t bufsize, WCHAR **result, DWORD *len)
 
ssize_t rb_w32_ureadlink (const char *path, char *buf, size_t bufsize)
 
ssize_t readlink (const char *path, char *buf, size_t bufsize)
 
int rb_w32_usymlink (const char *src, const char *link)
 
int symlink (const char *src, const char *link)
 
int wait (int *status)
 
char * rb_w32_ugetenv (const char *name)
 
char * rb_w32_getenv (const char *name)
 
int rb_w32_urename (const char *from, const char *to)
 
int rb_w32_rename (const char *from, const char *to)
 
int rb_w32_fstat (int fd, struct stat *st)
 
int rb_w32_fstati64 (int fd, struct stati64 *st)
 
int rb_w32_stat (const char *path, struct stat *st)
 
int rb_w32_ustati64 (const char *path, struct stati64 *st)
 
int rb_w32_stati64 (const char *path, struct stati64 *st)
 
int rb_w32_ulstati64 (const char *path, struct stati64 *st)
 
int rb_w32_lstati64 (const char *path, struct stati64 *st)
 
int rb_w32_access (const char *path, int mode)
 
int rb_w32_uaccess (const char *path, int mode)
 
int rb_w32_utruncate (const char *path, off_t length)
 
int rb_w32_truncate (const char *path, off_t length)
 
int rb_w32_ftruncate (int fd, off_t length)
 
int rb_w32_times (struct tms *tmbuf)
 
uintptr_t rb_w32_asynchronize (asynchronous_func_t func, uintptr_t self, int argc, uintptr_t *argv, uintptr_t intrval)
 
char ** rb_w32_get_environ (void)
 
void rb_w32_free_environ (char **env)
 
rb_pid_t rb_w32_getpid (void)
 
rb_pid_t rb_w32_getppid (void)
 
 STATIC_ASSERT (std_handle,(STD_OUTPUT_HANDLE-STD_INPUT_HANDLE)==(STD_ERROR_HANDLE-STD_OUTPUT_HANDLE))
 
int rb_w32_dup2 (int oldfd, int newfd)
 
int rb_w32_uopen (const char *file, int oflag,...)
 
int rb_w32_open (const char *file, int oflag,...)
 
int rb_w32_wopen (const WCHAR *file, int oflag,...)
 
int rb_w32_fclose (FILE *fp)
 
int rb_w32_pipe (int fds[2])
 
int rb_w32_close (int fd)
 
ssize_t rb_w32_read (int fd, void *buf, size_t size)
 
ssize_t rb_w32_write (int fd, const void *buf, size_t size)
 
long rb_w32_write_console (uintptr_t strarg, int fd)
 
int rb_w32_uutime (const char *path, const struct utimbuf *times)
 
int rb_w32_utime (const char *path, const struct utimbuf *times)
 
int rb_w32_uchdir (const char *path)
 
int rb_w32_umkdir (const char *path, int mode)
 
int rb_w32_mkdir (const char *path, int mode)
 
int rb_w32_rmdir (const char *path)
 
int rb_w32_urmdir (const char *path)
 
int rb_w32_uunlink (const char *path)
 
int rb_w32_unlink (const char *path)
 
int rb_w32_uchmod (const char *path, int mode)
 
int fchmod (int fd, int mode)
 
int rb_w32_isatty (int fd)
 
int signbit (double x)
 
const char *WSAAPI rb_w32_inet_ntop (int af, const void *addr, char *numaddr, size_t numaddr_len)
 
int WSAAPI rb_w32_inet_pton (int af, const char *src, void *dst)
 
char rb_w32_fd_is_text (int fd)
 
struct tm * gmtime_r (const time_t *tp, struct tm *rp)
 
struct tm * localtime_r (const time_t *tp, struct tm *rp)
 
int rb_w32_wrap_io_handle (HANDLE h, int flags)
 
int rb_w32_unwrap_io_handle (int fd)
 
int rb_w32_set_thread_description (HANDLE th, const WCHAR *name)
 
int rb_w32_set_thread_description_str (HANDLE th, VALUE name)
 

Variables

EXTERN_C _CRTIMP ioinfo__pioinfo []
 
VALUE(*const rb_f_notimplement_ )(int, const VALUE *, VALUE) = rb_f_notimplement
 

Macro Definition Documentation

◆ _CRTIMP

#define _CRTIMP   __declspec(dllimport)

Definition at line 2416 of file win32.c.

◆ _osfhnd

#define _osfhnd (   i)    (_pioinfo(i)->osfhnd)

Definition at line 2429 of file win32.c.

Referenced by rb_w32_isatty(), and rb_w32_write_console().

◆ _osfile

#define _osfile (   i)    (_pioinfo(i)->osfile)

Definition at line 2430 of file win32.c.

Referenced by rb_w32_fd_is_text(), rb_w32_read(), and rb_w32_write().

◆ _set_osfhnd

#define _set_osfhnd (   fh,
  osfh 
)    (void)(_osfhnd(fh) = osfh)

Definition at line 2531 of file win32.c.

Referenced by rb_w32_fclose(), rb_w32_pipe(), and rb_w32_unwrap_io_handle().

◆ _set_osflags

#define _set_osflags (   fh,
  flags 
)    (_osfile(fh) = (flags))

Definition at line 2532 of file win32.c.

Referenced by rb_w32_pipe(), and rb_w32_read().

◆ acp_to_wstr

#define acp_to_wstr (   str,
  plen 
)    mbstr_to_wstr(CP_ACP, str, -1, plen)

Definition at line 1276 of file win32.c.

◆ BACKGROUND_MASK

#define BACKGROUND_MASK   (BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED | BACKGROUND_INTENSITY)

Definition at line 6595 of file win32.c.

◆ BitOfIsDir

#define BitOfIsDir (   n)    ((n) * 2)

Definition at line 1927 of file win32.c.

◆ BitOfIsRep

#define BitOfIsRep (   n)    ((n) * 2 + 1)

Definition at line 1928 of file win32.c.

◆ CharNext

#define CharNext (   p)    CharNextExA(cp, (p), 0)

Definition at line 73 of file win32.c.

◆ COMMON_LVB_UNDERSCORE

#define COMMON_LVB_UNDERSCORE   0x8000

◆ conlist_disabled

#define conlist_disabled   ((st_table *)-1)

Definition at line 695 of file win32.c.

◆ constat_attr_color_reverse

#define constat_attr_color_reverse (   attr)
Value:
((attr) & ~(FOREGROUND_MASK | BACKGROUND_MASK)) | \
(((attr) & FOREGROUND_MASK) << 4) | \
(((attr) & BACKGROUND_MASK) >> 4)
#define FOREGROUND_MASK
Definition: win32.c:6594
#define BACKGROUND_MASK
Definition: win32.c:6595

Definition at line 6597 of file win32.c.

◆ COPY_STAT

#define COPY_STAT (   src,
  dest,
  size_cast 
)
Value:
do { \
(dest).st_dev = (src).st_dev; \
(dest).st_ino = (src).st_ino; \
(dest).st_mode = (src).st_mode; \
(dest).st_nlink = (src).st_nlink; \
(dest).st_uid = (src).st_uid; \
(dest).st_gid = (src).st_gid; \
(dest).st_rdev = (src).st_rdev; \
(dest).st_size = size_cast(src).st_size; \
(dest).st_atime = (src).st_atime; \
(dest).st_mtime = (src).st_mtime; \
(dest).st_ctime = (src).st_ctime; \
} while (0)

Definition at line 5347 of file win32.c.

Referenced by rb_w32_stat().

◆ CSIDL_COMMON_APPDATA

#define CSIDL_COMMON_APPDATA   35

Definition at line 420 of file win32.c.

◆ CSIDL_LOCAL_APPDATA

#define CSIDL_LOCAL_APPDATA   28

Definition at line 417 of file win32.c.

◆ CSIDL_PROFILE

#define CSIDL_PROFILE   40

Definition at line 429 of file win32.c.

◆ CSIDL_SYSTEM

#define CSIDL_SYSTEM   37

Definition at line 426 of file win32.c.

◆ CSIDL_WINDOWS

#define CSIDL_WINDOWS   36

Definition at line 423 of file win32.c.

◆ Debug

#define Debug (   something)    /* nothing */

Definition at line 113 of file win32.c.

◆ DIRENT_PER_CHAR

#define DIRENT_PER_CHAR   (CHAR_BIT / 2)

Definition at line 1929 of file win32.c.

◆ dln_find_exe_r [1/2]

#define dln_find_exe_r   rb_w32_udln_find_exe_r

Definition at line 82 of file win32.c.

◆ dln_find_exe_r [2/2]

#define dln_find_exe_r (   fname,
  path,
  buf,
  size 
)    rb_w32_udln_find_exe_r(fname, path, buf, size, cp)

Definition at line 82 of file win32.c.

◆ DLN_FIND_EXTRA_ARG

#define DLN_FIND_EXTRA_ARG   ,cp

Definition at line 69 of file win32.c.

◆ DLN_FIND_EXTRA_ARG_DECL

#define DLN_FIND_EXTRA_ARG_DECL   ,UINT cp

Definition at line 68 of file win32.c.

◆ dln_find_file_r [1/2]

#define dln_find_file_r   rb_w32_udln_find_file_r

Definition at line 83 of file win32.c.

◆ dln_find_file_r [2/2]

#define dln_find_file_r (   fname,
  path,
  buf,
  size 
)    rb_w32_udln_find_file_r(fname, path, buf, size, cp)

Definition at line 83 of file win32.c.

◆ END_FOREACH_CHILD

#define END_FOREACH_CHILD   } while (0)

Definition at line 884 of file win32.c.

◆ enough_to_get

#define enough_to_get (   n)    (--(n) >= 0)

Definition at line 107 of file win32.c.

◆ enough_to_put

#define enough_to_put (   n)    (--(n) >= 0)

Definition at line 108 of file win32.c.

◆ env

#define env   wk.val

◆ ENV_MAX

#define ENV_MAX   512

Definition at line 94 of file win32.c.

◆ ERROR_PIPE_LOCAL

#define ERROR_PIPE_LOCAL   229L

◆ FAPPEND

#define FAPPEND   0x20 /* file handle opened O_APPEND */

Definition at line 2538 of file win32.c.

◆ FDEV

#define FDEV   0x40 /* file handle refers to device */

Definition at line 2539 of file win32.c.

Referenced by rb_w32_write().

◆ FEOFLAG

#define FEOFLAG   0x02 /* end of file has been encountered */

Definition at line 2535 of file win32.c.

Referenced by rb_w32_read(), and rb_w32_write().

◆ FILE_COUNT

#define FILE_COUNT (   stream)    stream->_cnt

Definition at line 2377 of file win32.c.

◆ FILE_DEVICE_FILE_SYSTEM

#define FILE_DEVICE_FILE_SYSTEM   0x00000009

Definition at line 4945 of file win32.c.

◆ FILE_FILENO

#define FILE_FILENO (   stream)    stream->_file

Definition at line 2379 of file win32.c.

◆ FILE_READPTR

#define FILE_READPTR (   stream)    stream->_ptr

Definition at line 2378 of file win32.c.

◆ filecp

#define filecp   rb_w32_filecp

Definition at line 1273 of file win32.c.

Referenced by rb_w32_readdir().

◆ filecp_to_wstr

#define filecp_to_wstr (   str,
  plen 
)    mbstr_to_wstr(filecp(), str, -1, plen)

◆ FNOINHERIT

#define FNOINHERIT   0x10 /* file handle opened O_NOINHERIT */

Definition at line 2537 of file win32.c.

Referenced by rb_w32_pipe().

◆ FOPEN

#define FOPEN   0x01 /* file handle open */

Definition at line 2534 of file win32.c.

Referenced by rb_w32_pipe().

◆ FOREACH_CHILD

#define FOREACH_CHILD (   v)
Value:
do { \
struct ChildRecord* v; \
for (v = ChildRecord; v < ChildRecord + sizeof(ChildRecord) / sizeof(ChildRecord[0]); ++v)

Definition at line 881 of file win32.c.

◆ FOREGROUND_MASK

#define FOREGROUND_MASK   (FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY)

Definition at line 6594 of file win32.c.

◆ FPIPE

#define FPIPE   0x08 /* file handle refers to a pipe */

Definition at line 2536 of file win32.c.

Referenced by rb_w32_pipe(), and rb_w32_write().

◆ FSCTL_GET_REPARSE_POINT

#define FSCTL_GET_REPARSE_POINT   ((0x9<<16)|(42<<2))

Definition at line 4948 of file win32.c.

◆ FTEXT

#define FTEXT   0x80 /* file handle is in text mode */

Definition at line 2540 of file win32.c.

Referenced by rb_w32_fd_is_text(), rb_w32_read(), and rb_w32_write().

◆ GET_FAMILY

#define GET_FAMILY (   v)    ((int)(((v)>>4)&0xFFFF))

Definition at line 774 of file win32.c.

◆ GET_FLAGS

#define GET_FLAGS (   v)    ((int)((v)&0xFFFF))

Definition at line 775 of file win32.c.

◆ GetBit

#define GetBit (   bits,
 
)    ((bits)[(i) / CHAR_BIT] & (1 << (i) % CHAR_BIT))

Definition at line 1924 of file win32.c.

◆ getenv

#define getenv (   name)    w32_getenv(name, cp)

Definition at line 71 of file win32.c.

Referenced by getaddrinfo(), Init_Method(), main(), nl_langinfo_codeset(), and st_init_table_with_size().

◆ hex2byte

#define hex2byte (   str)    ((isdigit(*(str)) ? *(str) - '0' : toupper(*(str)) - 'A' + 10) << 4 | (isdigit(*((str) + 1)) ? *((str) + 1) - '0' : toupper(*((str) + 1)) - 'A' + 10))

◆ InternalCmdsMax

#define InternalCmdsMax   8

Definition at line 943 of file win32.c.

◆ INVALID_SET_FILE_POINTER

#define INVALID_SET_FILE_POINTER   ((DWORD)-1)

◆ IO_REPARSE_TAG_SYMLINK

#define IO_REPARSE_TAG_SYMLINK   0xA000000CL

Definition at line 4951 of file win32.c.

◆ IOINFO_ARRAY_ELTS

#define IOINFO_ARRAY_ELTS   (1 << IOINFO_L2E)

Definition at line 2428 of file win32.c.

◆ IOINFO_L2E

#define IOINFO_L2E   5

Definition at line 2424 of file win32.c.

◆ isdirsep

#define isdirsep (   x)    ((x) == '/' || (x) == '\\')

Definition at line 56 of file win32.c.

◆ LK_ERR

#define LK_ERR (   f,
 
)
Value:
do { \
if (f) \
i = 0; \
else { \
DWORD err = GetLastError(); \
if (err == ERROR_LOCK_VIOLATION || err == ERROR_IO_PENDING) \
errno = EWOULDBLOCK; \
else if (err == ERROR_NOT_LOCKED) \
i = 0; \
else \
errno = map_errno(err); \
} \
} while (0)
int err
Definition: win32.c:135
#define f
#define EWOULDBLOCK
Definition: rubysocket.h:128
#define map_errno
Definition: win32.c:293

Definition at line 327 of file win32.c.

◆ LK_LEN

#define LK_LEN   ULONG_MAX

Definition at line 341 of file win32.c.

Referenced by rb_w32_close(), rb_w32_fclose(), and rb_w32_unwrap_io_handle().

◆ MAKE_SOCKDATA

#define MAKE_SOCKDATA (   af,
  fl 
)    ((int)((((int)af)<<4)|((fl)&0xFFFF)))

Definition at line 773 of file win32.c.

◆ map_errno

#define map_errno   rb_w32_map_errno

Definition at line 293 of file win32.c.

Referenced by clock_getres(), clock_gettime(), kill(), rb_w32_fclose(), and rb_w32_pipe().

◆ MAXCHILDNUM

#define MAXCHILDNUM   256 /* max num of child processes */

Definition at line 872 of file win32.c.

◆ mbstr_to_wstr

#define mbstr_to_wstr   rb_w32_mbstr_to_wstr

Definition at line 1274 of file win32.c.

◆ msghdr_to_wsamsg

#define msghdr_to_wsamsg (   msg,
  wsamsg 
)
Value:
do { \
int i; \
(wsamsg)->name = (msg)->msg_name; \
(wsamsg)->namelen = (msg)->msg_namelen; \
(wsamsg)->lpBuffers = ALLOCA_N(WSABUF, (msg)->msg_iovlen); \
(wsamsg)->dwBufferCount = (msg)->msg_iovlen; \
for (i = 0; i < (msg)->msg_iovlen; ++i) { \
(wsamsg)->lpBuffers[i].buf = (msg)->msg_iov[i].iov_base; \
(wsamsg)->lpBuffers[i].len = (msg)->msg_iov[i].iov_len; \
} \
(wsamsg)->Control.buf = (msg)->msg_control; \
(wsamsg)->Control.len = (msg)->msg_controllen; \
(wsamsg)->dwFlags = (msg)->msg_flags; \
} while (0)
#define ALLOCA_N(type, n)
Definition: ruby.h:1593
unsigned char buf[MIME_BUF_SIZE]
Definition: nkf.c:4309
register unsigned int len
Definition: zonetab.h:51
const char * name
Definition: nkf.c:208

Definition at line 3578 of file win32.c.

◆ NTGLOB

#define NTGLOB   0x1

Definition at line 1533 of file win32.c.

◆ NTMALLOC

#define NTMALLOC   0x2

Definition at line 1534 of file win32.c.

◆ NTSTRING

#define NTSTRING   0x4

Definition at line 1535 of file win32.c.

◆ open_null

#define open_null (   fd)
Value:
(((nullfd < 0) ? \
(nullfd = open("NUL", O_RDWR)) : 0), \
((nullfd == (fd)) ? (keep = 1) : dup2(nullfd, fd)), \
(fd))
RUBY_EXTERN int dup2(int, int)
Definition: dup2.c:27

◆ pioinfo_extra

#define pioinfo_extra   0

Definition at line 2520 of file win32.c.

◆ rb_acrt_lowio_lock_fh

#define rb_acrt_lowio_lock_fh (   i)    EnterCriticalSection(&_pioinfo(i)->lock)

Definition at line 2431 of file win32.c.

Referenced by rb_w32_pipe(), rb_w32_read(), and rb_w32_write().

◆ rb_acrt_lowio_unlock_fh

#define rb_acrt_lowio_unlock_fh (   i)    LeaveCriticalSection(&_pioinfo(i)->lock)

Definition at line 2432 of file win32.c.

Referenced by rb_w32_pipe(), rb_w32_read(), and rb_w32_write().

◆ rb_w32_stati64

#define rb_w32_stati64 (   path,
  st 
)    w32_stati64(path, st, cp)

Definition at line 70 of file win32.c.

Referenced by rb_w32_access(), and rb_w32_stat().

◆ ROOT_GID

#define ROOT_GID   0

Definition at line 2706 of file win32.c.

Referenced by getegid(), getgid(), and setgid().

◆ ROOT_UID

#define ROOT_UID   0

Definition at line 2705 of file win32.c.

Referenced by geteuid(), getuid(), and setuid().

◆ RUBY_CRITICAL

#define RUBY_CRITICAL   if (0) {} else /* just remark */

Definition at line 130 of file win32.c.

Referenced by kill(), rb_w32_asynchronize(), rb_w32_fdisset(), and rb_w32_pipe().

◆ set_env_val

#define set_env_val (   vname)
Value:
do { \
typedef char wk_name_offset[(numberof(wk.name) - (numberof(vname) - 1)) * 2 + 1]; \
WCHAR *const buf = wk.name + sizeof(wk_name_offset) / 2; \
MEMCPY(buf, vname, WCHAR, numberof(vname) - 1); \
_wputenv(buf); \
} while (0)
#define numberof(array)
Definition: etc.c:618
unsigned char buf[MIME_BUF_SIZE]
Definition: nkf.c:4309

◆ set_new_std_fd

#define set_new_std_fd (   newfd)    set_new_std_handle(newfd, (HANDLE)rb_w32_get_osfhandle(newfd))

Definition at line 6151 of file win32.c.

Referenced by rb_w32_dup2().

◆ set_new_std_handle

#define set_new_std_handle (   newfd,
  handle 
)
Value:
do { \
if ((unsigned)(newfd) > 2) break; \
SetStdHandle(STD_INPUT_HANDLE+(STD_OUTPUT_HANDLE-STD_INPUT_HANDLE)*(newfd), \
(handle)); \
} while (0)

Definition at line 6146 of file win32.c.

◆ SetBit

#define SetBit (   bits,
 
)    ((bits)[(i) / CHAR_BIT] |= (1 << (i) % CHAR_BIT))

Definition at line 1925 of file win32.c.

◆ STRNDUPV

#define STRNDUPV (   ptr,
  v,
  src,
  len 
)    (((char *)memcpy(((ptr) = ALLOCV((v), (len) + 1)), (src), (len)))[len] = 0)

Definition at line 1144 of file win32.c.

◆ SYMBOLIC_LINK_FLAG_DIRECTORY

#define SYMBOLIC_LINK_FLAG_DIRECTORY   (0x1)

Definition at line 5096 of file win32.c.

◆ TO_SOCKET

#define TO_SOCKET (   x)    _get_osfhandle(x)

◆ utf8_to_wstr

#define utf8_to_wstr (   str,
  plen 
)    mbstr_to_wstr(CP_UTF8, str, -1, plen)

◆ WSAID_WSARECVMSG

#define WSAID_WSARECVMSG   {0xf689d7c8,0x6f1f,0x436b,{0x8a,0x53,0xe5,0x4f,0xe3,0x51,0xc3,0x22}}

Definition at line 3571 of file win32.c.

◆ WSAID_WSASENDMSG

#define WSAID_WSASENDMSG   {0xa441e712,0x754f,0x43ca,{0x84,0xa7,0x0d,0xee,0x44,0xcf,0x60,0x6d}}

Definition at line 3574 of file win32.c.

◆ wstr_to_acp

#define wstr_to_acp (   str,
  plen 
)    wstr_to_mbstr(CP_ACP, str, -1, plen)

Definition at line 1277 of file win32.c.

◆ wstr_to_filecp

#define wstr_to_filecp (   str,
  plen 
)    wstr_to_mbstr(filecp(), str, -1, plen)

Definition at line 1279 of file win32.c.

Referenced by rb_w32_conv_from_wstr().

◆ wstr_to_mbstr

#define wstr_to_mbstr   rb_w32_wstr_to_mbstr

Definition at line 1275 of file win32.c.

◆ wstr_to_utf8

#define wstr_to_utf8 (   str,
  plen 
)    wstr_to_mbstr(CP_UTF8, str, -1, plen)

Definition at line 1281 of file win32.c.

Referenced by rb_w32_get_environ().

◆ yield_once

#define yield_once ( )    Sleep(0)

Definition at line 5968 of file win32.c.

◆ yield_until

#define yield_until (   condition)    do yield_once(); while (!(condition))

Definition at line 5969 of file win32.c.

Typedef Documentation

◆ cigl_t

typedef DWORD(WINAPI * cigl_t) (const GUID *, NET_LUID *)

Definition at line 4098 of file win32.c.

◆ cilnA_t

typedef DWORD(WINAPI * cilnA_t) (const NET_LUID *, char *, size_t)

Definition at line 4099 of file win32.c.

◆ get_final_path_func

typedef DWORD(WINAPI * get_final_path_func) (HANDLE, WCHAR *, DWORD, DWORD)

Definition at line 1885 of file win32.c.

◆ NtCmdLineElement

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
constat_init 
constat_esc 
constat_seq 

Definition at line 706 of file win32.c.

Function Documentation

◆ chown()

int chown ( const char *  path,
int  owner,
int  group 
)

Definition at line 4757 of file win32.c.

◆ clock_getres()

int clock_getres ( clockid_t  clock_id,
struct timespec sp 
)

Definition at line 4646 of file win32.c.

References CLOCK_MONOTONIC, CLOCK_REALTIME, errno, map_errno, timespec::tv_nsec, and timespec::tv_sec.

Referenced by rb_clock_getres().

◆ clock_gettime()

int clock_gettime ( clockid_t  clock_id,
struct timespec sp 
)

◆ endhostent()

void endhostent ( void  )

Definition at line 4207 of file win32.c.

◆ endnetent()

void endnetent ( void  )

Definition at line 4208 of file win32.c.

◆ endprotoent()

void endprotoent ( void  )

Definition at line 4209 of file win32.c.

◆ endservent()

void endservent ( void  )

Definition at line 4210 of file win32.c.

◆ fchmod()

int fchmod ( int  fd,
int  mode 
)

Definition at line 7572 of file win32.c.

References errno.

◆ fcntl()

int fcntl ( int  fd,
int  cmd,
  ... 
)

◆ filecp()

UINT filecp ( void  )

Definition at line 2071 of file win32.c.

◆ flock()

int flock ( int  fd,
int  oper 
)

Definition at line 384 of file win32.c.

◆ freeifaddrs()

void freeifaddrs ( struct ifaddrs ifp)

Definition at line 4191 of file win32.c.

References ifaddrs::ifa_addr, ifaddrs::ifa_name, ifaddrs::ifa_next, and ruby_xfree().

◆ getegid()

rb_gid_t getegid ( void  )

Definition at line 2731 of file win32.c.

References ROOT_GID.

Referenced by eaccess().

◆ geteuid()

rb_uid_t geteuid ( void  )

Definition at line 2717 of file win32.c.

References ROOT_UID.

Referenced by eaccess().

◆ getgid()

rb_gid_t getgid ( void  )

Definition at line 2724 of file win32.c.

References ROOT_GID.

Referenced by eaccess().

◆ getifaddrs()

int getifaddrs ( struct ifaddrs **  ifap)

Definition at line 4104 of file win32.c.

◆ getlogin()

char* getlogin ( void  )

Definition at line 867 of file win32.c.

◆ getnetbyaddr()

struct netent* getnetbyaddr ( long  net,
int  type 
)

Definition at line 4214 of file win32.c.

References NULL.

◆ getnetbyname()

struct netent* getnetbyname ( const char *  name)

Definition at line 4216 of file win32.c.

References NULL.

◆ getnetent()

struct netent* getnetent ( void  )

Definition at line 4212 of file win32.c.

References NULL.

◆ getprotoent()

struct protoent* getprotoent ( void  )

Definition at line 4218 of file win32.c.

References NULL.

◆ getservent()

struct servent* getservent ( void  )

Definition at line 4220 of file win32.c.

References NULL.

◆ gettimeofday()

int __cdecl gettimeofday ( struct timeval tv,
struct timezone tz 
)

◆ getuid()

rb_uid_t getuid ( void  )

Definition at line 2710 of file win32.c.

References ROOT_UID.

Referenced by eaccess().

◆ gmtime_r()

struct tm* gmtime_r ( const time_t *  tp,
struct tm *  rp 
)

Definition at line 7772 of file win32.c.

References errno, and NULL.

◆ ioctl()

int ioctl ( int  i,
int  u,
  ... 
)

Definition at line 2756 of file win32.c.

References errno.

◆ kill()

int kill ( int  pid,
int  sig 
)

Definition at line 4783 of file win32.c.

References EPERM, err, errno, FALSE, map_errno, NULL, RUBY_CRITICAL, SIGINT, and SIGKILL.

◆ lchown()

int lchown ( const char *  path,
int  owner,
int  group 
)

Definition at line 4770 of file win32.c.

◆ link()

int link ( const char *  from,
const char *  to 
)

Definition at line 4925 of file win32.c.

References filecp_to_wstr, free(), and NULL.

Referenced by rb_mark_end_proc(), and rb_set_end_proc().

◆ localtime_r()

struct tm* localtime_r ( const time_t *  tp,
struct tm *  rp 
)

Definition at line 7796 of file win32.c.

References errno, and NULL.

◆ rb_dir_getwd_ospath()

VALUE rb_dir_getwd_ospath ( void  )

◆ rb_w32_accept()

int WSAAPI rb_w32_accept ( int  s,
struct sockaddr *  addr,
int *  addrlen 
)

Definition at line 3222 of file win32.c.

◆ rb_w32_access()

int rb_w32_access ( const char *  path,
int  mode 
)

Definition at line 5830 of file win32.c.

References errno, and rb_w32_stati64.

◆ rb_w32_aspawn()

rb_pid_t rb_w32_aspawn ( int  mode,
const char *  prog,
char *const argv 
)

Definition at line 1509 of file win32.c.

References rb_w32_aspawn_flags().

◆ rb_w32_aspawn_flags()

rb_pid_t rb_w32_aspawn_flags ( int  mode,
const char *  prog,
char *const argv,
DWORD  flags 
)

Definition at line 1494 of file win32.c.

Referenced by rb_w32_aspawn().

◆ rb_w32_asynchronize()

uintptr_t rb_w32_asynchronize ( asynchronous_func_t  func,
uintptr_t  self,
int  argc,
uintptr_t argv,
uintptr_t  intrval 
)

◆ rb_w32_bind()

int WSAAPI rb_w32_bind ( int  s,
const struct sockaddr *  addr,
int  addrlen 
)

Definition at line 3252 of file win32.c.

◆ rb_w32_check_interrupt()

int rb_w32_check_interrupt ( void *  )

◆ rb_w32_close()

int rb_w32_close ( int  fd)

Definition at line 6925 of file win32.c.

References errno, is_socket, LK_LEN, and TO_SOCKET.

Referenced by rb_w32_pipe().

◆ rb_w32_closedir()

void rb_w32_closedir ( DIR dirp)

Definition at line 2341 of file win32.c.

References DIR::bits, direct::d_altname, direct::d_name, DIR::dirstr, free(), and DIR::start.

◆ rb_w32_connect()

int WSAAPI rb_w32_connect ( int  s,
const struct sockaddr *  addr,
int  addrlen 
)

Definition at line 3271 of file win32.c.

◆ rb_w32_conv_from_wchar()

VALUE rb_w32_conv_from_wchar ( const WCHAR *  wstr,
rb_encoding enc 
)

◆ rb_w32_conv_from_wstr()

char* rb_w32_conv_from_wstr ( const WCHAR *  wstr,
long *  lenp,
rb_encoding enc 
)

Definition at line 2205 of file win32.c.

References len, malloc, NIL_P, rb_w32_conv_from_wchar(), RSTRING_LEN, RSTRING_PTR, and wstr_to_filecp.

◆ rb_w32_dup2()

int rb_w32_dup2 ( int  oldfd,
int  newfd 
)

Definition at line 6155 of file win32.c.

References dup2(), and set_new_std_fd.

◆ rb_w32_fclose()

int rb_w32_fclose ( FILE fp)

Definition at line 6410 of file win32.c.

References _set_osfhnd, errno, fileno, is_socket, LK_LEN, map_errno, and TO_SOCKET.

◆ rb_w32_fd_copy()

void rb_w32_fd_copy ( rb_fdset_t dst,
const fd_set *  src,
int  max 
)

Definition at line 2802 of file win32.c.

◆ rb_w32_fd_dup()

void rb_w32_fd_dup ( rb_fdset_t dst,
const rb_fdset_t src 
)

Definition at line 2817 of file win32.c.

References xrealloc.

◆ rb_w32_fd_is_text()

char rb_w32_fd_is_text ( int  fd)

Definition at line 7690 of file win32.c.

References _osfile, and FTEXT.

◆ rb_w32_fdclr()

void rb_w32_fdclr ( int  fd,
fd_set *  set 
)

Definition at line 2772 of file win32.c.

References memmove(), and TO_SOCKET.

◆ rb_w32_fdisset()

int rb_w32_fdisset ( int  fd,
fd_set *  set 
)

Definition at line 2790 of file win32.c.

References RUBY_CRITICAL, and TO_SOCKET.

◆ rb_w32_fdset()

void rb_w32_fdset ( int  fd,
fd_set *  set 
)

Definition at line 2763 of file win32.c.

References FD_SET.

◆ rb_w32_free_environ()

void rb_w32_free_environ ( char **  env)

Definition at line 6098 of file win32.c.

References env, and free().

◆ rb_w32_fstat()

int rb_w32_fstat ( int  fd,
struct stat st 
)

Definition at line 5410 of file win32.c.

References fstat, and NULL.

◆ rb_w32_fstati64()

int rb_w32_fstati64 ( int  fd,
struct stati64 *  st 
)

Definition at line 5427 of file win32.c.

References NULL, and stat.

◆ rb_w32_ftruncate()

int rb_w32_ftruncate ( int  fd,
off_t  length 
)

Definition at line 5925 of file win32.c.

◆ rb_w32_get_environ()

char** rb_w32_get_environ ( void  )

Definition at line 6061 of file win32.c.

References env, malloc, NULL, and wstr_to_utf8.

◆ rb_w32_get_osfhandle()

SOCKET rb_w32_get_osfhandle ( int  fh)

Definition at line 1064 of file win32.c.

Referenced by rb_io_addstr().

◆ rb_w32_getcwd()

char* rb_w32_getcwd ( char *  buffer,
int  size 
)

Definition at line 4725 of file win32.c.

◆ rb_w32_getenv()

char* rb_w32_getenv ( const char *  name)

Definition at line 5208 of file win32.c.

◆ rb_w32_gethostbyaddr()

struct hostent* WSAAPI rb_w32_gethostbyaddr ( const char *  addr,
int  len,
int  type 
)

Definition at line 3821 of file win32.c.

◆ rb_w32_gethostbyname()

struct hostent* WSAAPI rb_w32_gethostbyname ( const char *  name)

Definition at line 3839 of file win32.c.

◆ rb_w32_gethostname()

int WSAAPI rb_w32_gethostname ( char *  name,
int  len 
)

Definition at line 3857 of file win32.c.

◆ rb_w32_getpeername()

int WSAAPI rb_w32_getpeername ( int  s,
struct sockaddr *  addr,
int *  addrlen 
)

Definition at line 3295 of file win32.c.

◆ rb_w32_getpid()

rb_pid_t rb_w32_getpid ( void  )

Definition at line 6108 of file win32.c.

Referenced by rb_w32_pipe().

◆ rb_w32_getppid()

rb_pid_t rb_w32_getppid ( void  )

Definition at line 6116 of file win32.c.

◆ rb_w32_getprotobyname()

struct protoent* WSAAPI rb_w32_getprotobyname ( const char *  name)

Definition at line 3875 of file win32.c.

◆ rb_w32_getprotobynumber()

struct protoent* WSAAPI rb_w32_getprotobynumber ( int  num)

Definition at line 3893 of file win32.c.

◆ rb_w32_getservbyname()

struct servent* WSAAPI rb_w32_getservbyname ( const char *  name,
const char *  proto 
)

Definition at line 3911 of file win32.c.

◆ rb_w32_getservbyport()

struct servent* WSAAPI rb_w32_getservbyport ( int  port,
const char *  proto 
)

Definition at line 3929 of file win32.c.

◆ rb_w32_getsockname()

int WSAAPI rb_w32_getsockname ( int  fd,
struct sockaddr *  addr,
int *  addrlen 
)

Definition at line 3313 of file win32.c.

◆ rb_w32_getsockopt()

int WSAAPI rb_w32_getsockopt ( int  s,
int  level,
int  optname,
char *  optval,
int *  optlen 
)

Definition at line 3346 of file win32.c.

◆ rb_w32_home_dir()

WCHAR* rb_w32_home_dir ( void  )

Definition at line 540 of file win32.c.

References ALLOC_N, len, and NULL.

◆ rb_w32_inet_ntop()

const char* WSAAPI rb_w32_inet_ntop ( int  af,
const void *  addr,
char *  numaddr,
size_t  numaddr_len 
)

Definition at line 7657 of file win32.c.

◆ rb_w32_inet_pton()

int WSAAPI rb_w32_inet_pton ( int  af,
const char *  src,
void *  dst 
)

Definition at line 7676 of file win32.c.

◆ rb_w32_io_cancelable_p()

int rb_w32_io_cancelable_p ( int  fd)

Definition at line 2547 of file win32.c.

References is_socket, and TO_SOCKET.

◆ rb_w32_ioctlsocket()

int WSAAPI rb_w32_ioctlsocket ( int  s,
long  cmd,
u_long argp 
)

Definition at line 3364 of file win32.c.

◆ rb_w32_is_socket()

int rb_w32_is_socket ( int  fd)

Definition at line 2636 of file win32.c.

References is_socket, and TO_SOCKET.

◆ rb_w32_isatty()

int rb_w32_isatty ( int  fd)

Definition at line 7613 of file win32.c.

References _osfhnd, and errno.

◆ rb_w32_listen()

int WSAAPI rb_w32_listen ( int  s,
int  backlog 
)

Definition at line 3382 of file win32.c.

◆ rb_w32_lstati64()

int rb_w32_lstati64 ( const char *  path,
struct stati64 *  st 
)

Definition at line 5809 of file win32.c.

◆ rb_w32_map_errno()

int rb_w32_map_errno ( DWORD  winerr)

Definition at line 273 of file win32.c.

◆ rb_w32_mbstr_to_wstr()

WCHAR* rb_w32_mbstr_to_wstr ( UINT  cp,
const char *  str,
int  clen,
long *  plen 
)

Definition at line 2095 of file win32.c.

References len, malloc, and NULL.

Referenced by dln_load().

◆ rb_w32_mkdir()

int rb_w32_mkdir ( const char *  path,
int  mode 
)

Definition at line 7437 of file win32.c.

References filecp_to_wstr, and NULL.

◆ rb_w32_open()

int rb_w32_open ( const char *  file,
int  oflag,
  ... 
)

Definition at line 6202 of file win32.c.

References filecp_to_wstr, and NULL.

◆ rb_w32_opendir()

DIR* rb_w32_opendir ( const char *  filename)

Definition at line 2111 of file win32.c.

References filecp_to_wstr, and NULL.

◆ rb_w32_osver()

DWORD rb_w32_osver ( void  )

Definition at line 319 of file win32.c.

◆ rb_w32_pipe()

int rb_w32_pipe ( int  fds[2])

◆ rb_w32_read()

ssize_t rb_w32_read ( int  fd,
void *  buf,
size_t  size 
)

◆ rb_w32_read_reparse_point()

int rb_w32_read_reparse_point ( const WCHAR *  path,
rb_w32_reparse_buffer_t rp,
size_t  bufsize,
WCHAR **  result,
DWORD len 
)

Definition at line 5006 of file win32.c.

Referenced by rb_w32_reparse_symlink_p().

◆ rb_w32_readdir()

struct direct* rb_w32_readdir ( DIR dirp,
rb_encoding enc 
)

Definition at line 2282 of file win32.c.

References ENCINDEX_ASCII, filecp, and rb_enc_to_index().

◆ rb_w32_recv()

int WSAAPI rb_w32_recv ( int  fd,
char *  buf,
int  len,
int  flags 
)

Definition at line 3530 of file win32.c.

Referenced by rb_w32_read().

◆ rb_w32_recvfrom()

int WSAAPI rb_w32_recvfrom ( int  fd,
char *  buf,
int  len,
int  flags,
struct sockaddr *  from,
int *  fromlen 
)

Definition at line 3537 of file win32.c.

◆ rb_w32_rename()

int rb_w32_rename ( const char *  from,
const char *  to 
)

Definition at line 5304 of file win32.c.

References filecp_to_wstr, free(), and NULL.

◆ rb_w32_reparse_symlink_p()

int rb_w32_reparse_symlink_p ( const WCHAR *  path)

◆ rb_w32_rewinddir()

void rb_w32_rewinddir ( DIR dirp)

Definition at line 2329 of file win32.c.

References DIR::curr, DIR::loc, and DIR::start.

Referenced by rb_w32_seekdir().

◆ rb_w32_rmdir()

int rb_w32_rmdir ( const char *  path)

Definition at line 7472 of file win32.c.

References filecp_to_wstr, and NULL.

◆ rb_w32_seekdir()

void rb_w32_seekdir ( DIR dirp,
long  loc 
)

Definition at line 2314 of file win32.c.

References DIR::curr, DIR::loc, and rb_w32_rewinddir().

◆ rb_w32_select()

int WSAAPI rb_w32_select ( int  nfds,
fd_set *  rd,
fd_set *  wr,
fd_set *  ex,
struct timeval timeout 
)

Definition at line 3198 of file win32.c.

References rb_w32_select_with_thread().

◆ rb_w32_select_with_thread()

int rb_w32_select_with_thread ( int  nfds,
fd_set *  rd,
fd_set *  wr,
fd_set *  ex,
struct timeval timeout,
void *  th 
)

Definition at line 3061 of file win32.c.

References errno, gettimeofday(), NULL, rb_fd_init, timeval::tv_sec, and timeval::tv_usec.

Referenced by rb_w32_select().

◆ rb_w32_send()

int WSAAPI rb_w32_send ( int  fd,
const char *  buf,
int  len,
int  flags 
)

Definition at line 3545 of file win32.c.

Referenced by rb_w32_write().

◆ rb_w32_sendto()

int WSAAPI rb_w32_sendto ( int  fd,
const char *  buf,
int  len,
int  flags,
const struct sockaddr *  to,
int  tolen 
)

Definition at line 3552 of file win32.c.

◆ rb_w32_set_nonblock()

int rb_w32_set_nonblock ( int  fd)

Definition at line 4374 of file win32.c.

References is_socket, and TO_SOCKET.

Referenced by rb_io_set_nonblock().

◆ rb_w32_set_thread_description()

int rb_w32_set_thread_description ( HANDLE  th,
const WCHAR *  name 
)

Definition at line 7876 of file win32.c.

◆ rb_w32_set_thread_description_str()

int rb_w32_set_thread_description_str ( HANDLE  th,
VALUE  name 
)

Definition at line 7893 of file win32.c.

◆ rb_w32_setsockopt()

int WSAAPI rb_w32_setsockopt ( int  s,
int  level,
int  optname,
const char *  optval,
int  optlen 
)

Definition at line 3706 of file win32.c.

◆ rb_w32_shutdown()

int WSAAPI rb_w32_shutdown ( int  s,
int  how 
)

Definition at line 3724 of file win32.c.

◆ rb_w32_socket()

int WSAAPI rb_w32_socket ( int  af,
int  type,
int  protocol 
)

Definition at line 3792 of file win32.c.

◆ rb_w32_spawn()

rb_pid_t rb_w32_spawn ( int  mode,
const char *  cmd,
const char *  prog 
)

Definition at line 1409 of file win32.c.

◆ rb_w32_special_folder()

VALUE rb_w32_special_folder ( int  type)

Definition at line 499 of file win32.c.

References PATH_MAX.

◆ rb_w32_stat()

int rb_w32_stat ( const char *  path,
struct stat st 
)

Definition at line 5683 of file win32.c.

References COPY_STAT, and rb_w32_stati64.

◆ rb_w32_stati64()

int rb_w32_stati64 ( const char *  path,
struct stati64 *  st 
)

Definition at line 5781 of file win32.c.

◆ rb_w32_strerror()

char* rb_w32_strerror ( int  e)

Definition at line 2651 of file win32.c.

References EADDRINUSE, EWOULDBLOCK, and sys_nerr.

◆ rb_w32_sysinit()

void rb_w32_sysinit ( int *  argc,
char ***  argv 
)

Definition at line 831 of file win32.c.

Referenced by ruby_sysinit().

◆ rb_w32_system_tmpdir()

UINT rb_w32_system_tmpdir ( WCHAR *  path,
UINT  len 
)

Definition at line 515 of file win32.c.

◆ rb_w32_telldir()

long rb_w32_telldir ( DIR dirp)

Definition at line 2303 of file win32.c.

References DIR::loc.

◆ rb_w32_time_subtract()

int rb_w32_time_subtract ( struct timeval rest,
const struct timeval wait 
)

Definition at line 3022 of file win32.c.

References timeval::tv_sec, and timeval::tv_usec.

◆ rb_w32_times()

int rb_w32_times ( struct tms tmbuf)

Definition at line 5947 of file win32.c.

References tms::tms_utime.

◆ rb_w32_truncate()

int rb_w32_truncate ( const char *  path,
off_t  length 
)

Definition at line 5918 of file win32.c.

◆ rb_w32_uaccess()

int rb_w32_uaccess ( const char *  path,
int  mode 
)

Definition at line 5845 of file win32.c.

References errno, and rb_w32_ustati64().

◆ rb_w32_uaspawn()

rb_pid_t rb_w32_uaspawn ( int  mode,
const char *  prog,
char *const argv 
)

Definition at line 1516 of file win32.c.

References rb_w32_uaspawn_flags().

◆ rb_w32_uaspawn_flags()

rb_pid_t rb_w32_uaspawn_flags ( int  mode,
const char *  prog,
char *const argv,
DWORD  flags 
)

Definition at line 1502 of file win32.c.

Referenced by rb_w32_uaspawn().

◆ rb_w32_uchdir()

int rb_w32_uchdir ( const char *  path)

Definition at line 7389 of file win32.c.

References free(), NULL, and utf8_to_wstr.

◆ rb_w32_uchmod()

int rb_w32_uchmod ( const char *  path,
int  mode 
)

Definition at line 7558 of file win32.c.

References free(), NULL, and utf8_to_wstr.

◆ rb_w32_uchown()

int rb_w32_uchown ( const char *  path,
int  owner,
int  group 
)

Definition at line 4764 of file win32.c.

◆ rb_w32_ugetcwd()

char* rb_w32_ugetcwd ( char *  buffer,
int  size 
)

Definition at line 4732 of file win32.c.

◆ rb_w32_ugetenv()

char* rb_w32_ugetenv ( const char *  name)

Definition at line 5201 of file win32.c.

◆ rb_w32_ulchown()

int rb_w32_ulchown ( const char *  path,
int  owner,
int  group 
)

Definition at line 4776 of file win32.c.

◆ rb_w32_ulink()

int rb_w32_ulink ( const char *  from,
const char *  to 
)

Definition at line 4905 of file win32.c.

References free(), NULL, and utf8_to_wstr.

◆ rb_w32_ulstati64()

int rb_w32_ulstati64 ( const char *  path,
struct stati64 *  st 
)

Definition at line 5802 of file win32.c.

◆ rb_w32_umkdir()

int rb_w32_umkdir ( const char *  path,
int  mode 
)

Definition at line 7423 of file win32.c.

References NULL, and utf8_to_wstr.

◆ rb_w32_unlink()

int rb_w32_unlink ( const char *  path)

Definition at line 7544 of file win32.c.

References filecp_to_wstr, and NULL.

◆ rb_w32_unwrap_io_handle()

int rb_w32_unwrap_io_handle ( int  fd)

Definition at line 7842 of file win32.c.

References _set_osfhnd, is_socket, LK_LEN, and TO_SOCKET.

◆ rb_w32_uopen()

int rb_w32_uopen ( const char *  file,
int  oflag,
  ... 
)

Definition at line 6168 of file win32.c.

References NULL, and utf8_to_wstr.

◆ rb_w32_uopendir()

DIR* rb_w32_uopendir ( const char *  filename)

Definition at line 2124 of file win32.c.

References NULL, and utf8_to_wstr.

◆ rb_w32_ureadlink()

ssize_t rb_w32_ureadlink ( const char *  path,
char *  buf,
size_t  bufsize 
)

Definition at line 5083 of file win32.c.

◆ rb_w32_urename()

int rb_w32_urename ( const char *  from,
const char *  to 
)

Definition at line 5285 of file win32.c.

References free(), NULL, and utf8_to_wstr.

◆ rb_w32_urmdir()

int rb_w32_urmdir ( const char *  path)

Definition at line 7486 of file win32.c.

References NULL, and utf8_to_wstr.

◆ rb_w32_uspawn()

rb_pid_t rb_w32_uspawn ( int  mode,
const char *  cmd,
const char *  prog 
)

Definition at line 1417 of file win32.c.

◆ rb_w32_ustati64()

int rb_w32_ustati64 ( const char *  path,
struct stati64 *  st 
)

Definition at line 5774 of file win32.c.

Referenced by rb_w32_uaccess().

◆ rb_w32_usymlink()

int rb_w32_usymlink ( const char *  src,
const char *  link 
)

Definition at line 5146 of file win32.c.

◆ rb_w32_utime()

int rb_w32_utime ( const char *  path,
const struct utimbuf times 
)

Definition at line 7375 of file win32.c.

References filecp_to_wstr, and NULL.

◆ rb_w32_utruncate()

int rb_w32_utruncate ( const char *  path,
off_t  length 
)

Definition at line 5911 of file win32.c.

◆ rb_w32_uunlink()

int rb_w32_uunlink ( const char *  path)

Definition at line 7530 of file win32.c.

References NULL, and utf8_to_wstr.

◆ rb_w32_uutime()

int rb_w32_uutime ( const char *  path,
const struct utimbuf times 
)

Definition at line 7361 of file win32.c.

References NULL, and utf8_to_wstr.

◆ rb_w32_wait_events()

int rb_w32_wait_events ( HANDLE *  events,
int  num,
DWORD  timeout 
)

◆ rb_w32_wopen()

int rb_w32_wopen ( const WCHAR *  file,
int  oflag,
  ... 
)

Definition at line 6222 of file win32.c.

◆ rb_w32_wrap_io_handle()

int rb_w32_wrap_io_handle ( HANDLE  h,
int  flags 
)

Definition at line 7820 of file win32.c.

References f, and O_NONBLOCK.

◆ rb_w32_write()

ssize_t rb_w32_write ( int  fd,
const void *  buf,
size_t  size 
)

◆ rb_w32_write_console()

long rb_w32_write_console ( uintptr_t  strarg,
int  fd 
)

Definition at line 7237 of file win32.c.

References _osfhnd, and len.

◆ rb_w32_wstr_to_mbstr()

char* rb_w32_wstr_to_mbstr ( UINT  cp,
const WCHAR *  wstr,
int  clen,
long *  plen 
)

Definition at line 2079 of file win32.c.

References len, malloc, and NULL.

◆ readlink()

ssize_t readlink ( const char *  path,
char *  buf,
size_t  bufsize 
)

Definition at line 5090 of file win32.c.

◆ recvmsg()

int recvmsg ( int  fd,
struct msghdr msg,
int  flags 
)

Definition at line 3596 of file win32.c.

◆ ruby_brace_glob_with_enc()

int ruby_brace_glob_with_enc ( const char *  str,
int  flags,
ruby_glob_func func,
VALUE  arg,
rb_encoding enc 
)

◆ sendmsg()

int sendmsg ( int  fd,
const struct msghdr msg,
int  flags 
)

Definition at line 3654 of file win32.c.

◆ setgid()

int setgid ( rb_gid_t  gid)

Definition at line 2745 of file win32.c.

References ROOT_GID.

◆ sethostent()

void sethostent ( int  stayopen)

Definition at line 4222 of file win32.c.

◆ setnetent()

void setnetent ( int  stayopen)

Definition at line 4224 of file win32.c.

◆ setprotoent()

void setprotoent ( int  stayopen)

Definition at line 4226 of file win32.c.

◆ setservent()

void setservent ( int  stayopen)

Definition at line 4228 of file win32.c.

◆ setuid()

int setuid ( rb_uid_t  uid)

Definition at line 2738 of file win32.c.

References ROOT_UID.

◆ signbit()

int signbit ( double  x)

Definition at line 7648 of file win32.c.

Referenced by lgamma_r().

◆ socketpair()

int socketpair ( int  af,
int  type,
int  protocol,
int *  sv 
)

Definition at line 4037 of file win32.c.

◆ STATIC_ASSERT()

STATIC_ASSERT ( std_handle  ,
(STD_OUTPUT_HANDLE-STD_INPUT_HANDLE)  = =(STD_ERROR_HANDLE-STD_OUTPUT_HANDLE) 
)

◆ symlink()

int symlink ( const char *  src,
const char *  link 
)

Definition at line 5153 of file win32.c.

◆ wait()

int wait ( int *  status)

Definition at line 5160 of file win32.c.

References waitpid().

Referenced by rb_w32_read(), and rb_w32_write().

◆ waitpid()

rb_pid_t waitpid ( rb_pid_t  pid,
int *  stat_loc,
int  options 
)

Definition at line 4480 of file win32.c.

Referenced by wait().

Variable Documentation

◆ __pioinfo

EXTERN_C _CRTIMP ioinfo* __pioinfo[]

Definition at line 2423 of file win32.c.

◆ err

int err

◆ rb_f_notimplement_

VALUE(*const rb_f_notimplement_) (int, const VALUE *, VALUE) = rb_f_notimplement

Definition at line 7916 of file win32.c.

◆ winerr

DWORD winerr

Definition at line 134 of file win32.c.