diff options
Diffstat (limited to 'src/lib/evil/evil_unistd.c')
-rw-r--r-- | src/lib/evil/evil_unistd.c | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/src/lib/evil/evil_unistd.c b/src/lib/evil/evil_unistd.c index 02f01baaef..5c02c69e91 100644 --- a/src/lib/evil/evil_unistd.c +++ b/src/lib/evil/evil_unistd.c @@ -33,139 +33,3 @@ evil_time_get(void) return (double)(count.QuadPart - _evil_time_count)/ (double)_evil_time_freq; } - -/* - * Sockets and pipe related functions - * - */ - -EVIL_API int -evil_sockets_init(void) -{ - WSADATA wsa_data; - WORD version; - - version = MAKEWORD(2, 2); - if (WSAStartup(version, &wsa_data) == 0) - { - if ((LOBYTE(wsa_data.wVersion) == 2) && - (HIBYTE(wsa_data.wVersion) == 2)) - return 1; - else - { - WSACleanup(); - return 0; - } - } - - return 0; -} - -EVIL_API void -evil_sockets_shutdown(void) -{ - WSACleanup(); -} - -/* - * The code of the following functions has been kindly offered - * by Tor Lillqvist. - */ -EVIL_API int -evil_pipe(int *fds) -{ - struct sockaddr_in saddr; - SOCKET temp; - SOCKET socket1 = INVALID_SOCKET; - SOCKET socket2 = INVALID_SOCKET; - u_long arg; - fd_set read_set; - fd_set write_set; - int len; - - temp = socket (AF_INET, SOCK_STREAM, 0); - - if (temp == INVALID_SOCKET) - goto out0; - - arg = 1; - if (ioctlsocket (temp, FIONBIO, &arg) == SOCKET_ERROR) - goto out0; - - memset (&saddr, 0, sizeof (saddr)); - saddr.sin_family = AF_INET; - saddr.sin_port = 0; - saddr.sin_addr.s_addr = htonl (INADDR_LOOPBACK); - - if (bind (temp, (struct sockaddr *)&saddr, sizeof (saddr))) - goto out0; - - if (listen (temp, 1) == SOCKET_ERROR) - goto out0; - - len = sizeof (saddr); - if (getsockname (temp, (struct sockaddr *)&saddr, &len)) - goto out0; - - socket1 = socket (AF_INET, SOCK_STREAM, 0); - - if (socket1 == INVALID_SOCKET) - goto out0; - - arg = 1; - if (ioctlsocket (socket1, FIONBIO, &arg) == SOCKET_ERROR) - goto out1; - - if ((connect (socket1, (struct sockaddr *)&saddr, len) == SOCKET_ERROR) && - (WSAGetLastError () != WSAEWOULDBLOCK)) - goto out1; - - FD_ZERO (&read_set); - FD_SET (temp, &read_set); - - if (select (0, &read_set, NULL, NULL, NULL) == SOCKET_ERROR) - goto out1; - - if (!FD_ISSET (temp, &read_set)) - goto out1; - - socket2 = accept (temp, (struct sockaddr *) &saddr, &len); - if (socket2 == INVALID_SOCKET) - goto out1; - - FD_ZERO (&write_set); - FD_SET (socket1, &write_set); - - if (select (0, NULL, &write_set, NULL, NULL) == SOCKET_ERROR) - goto out2; - - if (!FD_ISSET (socket1, &write_set)) - goto out2; - - arg = 0; - if (ioctlsocket (socket1, FIONBIO, &arg) == SOCKET_ERROR) - goto out2; - - arg = 0; - if (ioctlsocket (socket2, FIONBIO, &arg) == SOCKET_ERROR) - goto out2; - - fds[0] = socket1; - fds[1] = socket2; - - closesocket (temp); - - return 0; - - out2: - closesocket (socket2); - out1: - closesocket (socket1); - out0: - closesocket (temp); - - fds[0] = -1; - fds[1] = -1; - - return -1; -} |