#define _FCGIOS_H
#ifdef _WIN32
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <winsock2.h>
+#endif
+
+#include "fcgi_config.h"
+
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+#if defined (c_plusplus) || defined (__cplusplus)
+extern "C" {
+#endif
+
+#ifdef _WIN32
#define OS_Errno GetLastError()
#define OS_SetErrno(err) SetLastError(err)
-#ifndef DLLAPI
-#define DLLAPI __declspec(dllimport)
+#ifndef O_NONBLOCK
+#define O_NONBLOCK 0x0004 /* no delay */
#endif
-#else
-#define DLLAPI
+#else /* !_WIN32 */
#define OS_Errno errno
#define OS_SetErrno(err) errno = (err)
-#endif
+#endif /* !_WIN32 */
+#ifndef DLLAPI
#ifdef _WIN32
-#include <io.h>
+#define DLLAPI __declspec(dllimport)
+#else
+#define DLLAPI
#endif
+#endif
+
/* This is the initializer for a "struct timeval" used in a select() call
* right after a new request is accept()ed to determine readablity. Its
#define STDIN_FILENO 0
#endif
-
#ifndef STDOUT_FILENO
#define STDOUT_FILENO 1
#endif
#define X_OK 0x01
#endif
-#ifdef _WIN32
-#ifndef O_NONBLOCK
-#define O_NONBLOCK 0x0004 /* no delay */
-#endif
-#endif
-
-#if defined (c_plusplus) || defined (__cplusplus)
-extern "C" {
-#endif
-
#ifndef _CLIENTDATA
# if defined(__STDC__) || defined(__cplusplus)
typedef void *ClientData;
DLLAPI int OS_LibInit(int stdioFds[3]);
DLLAPI void OS_LibShutdown(void);
-DLLAPI int OS_CreateLocalIpcFd(char *bindPath);
+DLLAPI int OS_CreateLocalIpcFd(const char *bindPath, int backlog);
DLLAPI int OS_FcgiConnect(char *bindPath);
DLLAPI int OS_Read(int fd, char * buf, size_t len);
DLLAPI int OS_Write(int fd, char * buf, size_t len);
DLLAPI int OS_Close(int fd);
DLLAPI int OS_CloseRead(int fd);
DLLAPI int OS_DoIo(struct timeval *tmo);
-DLLAPI int OS_FcgiIpcAccept(char *clientAddrList);
+DLLAPI int OS_Accept(int listen_sock, int fail_on_intr, const char *webServerAddrs);
DLLAPI int OS_IpcClose(int ipcFd);
-DLLAPI int OS_IsFcgi(void);
+DLLAPI int OS_IsFcgi(int sock);
DLLAPI void OS_SetFlags(int fd, int flags);
+DLLAPI void OS_ShutdownPending(void);
+
#if defined (__cplusplus) || defined (c_plusplus)
} /* terminate extern "C" { */
#endif