msvc: opendir: fix malloc-failure
[gitweb.git] / compat / mingw.h
index a5bde82b9a7b2ad5bb1743aa471cdef19148a8f5..99a746703f3c9fb19e043109e4a044efe151e0e7 100644 (file)
@@ -59,16 +59,6 @@ struct passwd {
 
 extern char *getpass(const char *prompt);
 
-#ifndef POLLIN
-struct pollfd {
-       int fd;           /* file descriptor */
-       short events;     /* requested events */
-       short revents;    /* returned events */
-};
-#define POLLIN 1
-#define POLLHUP 2
-#endif
-
 typedef void (__cdecl *sig_handler_t)(int);
 struct sigaction {
        sig_handler_t sa_handler;
@@ -140,13 +130,11 @@ static inline int mingw_unlink(const char *pathname)
 }
 #define unlink mingw_unlink
 
-static inline pid_t waitpid(pid_t pid, int *status, unsigned options)
-{
-       if (options == 0)
-               return _cwait(status, pid, 0);
-       errno = EINVAL;
-       return -1;
-}
+#define WNOHANG 1
+pid_t waitpid(pid_t pid, int *status, unsigned options);
+
+#define kill mingw_kill
+int mingw_kill(pid_t pid, int sig);
 
 #ifndef NO_OPENSSL
 #include <openssl/ssl.h>
@@ -177,7 +165,6 @@ int pipe(int filedes[2]);
 unsigned int sleep (unsigned int seconds);
 int mkstemp(char *template);
 int gettimeofday(struct timeval *tv, void *tz);
-int poll(struct pollfd *ufds, unsigned int nfds, int timeout);
 struct tm *gmtime_r(const time_t *timep, struct tm *result);
 struct tm *localtime_r(const time_t *timep, struct tm *result);
 int getpagesize(void); /* defined in MinGW's libgcc.a */
@@ -321,11 +308,13 @@ void free_environ(char **env);
 static int mingw_main(); \
 int main(int argc, const char **argv) \
 { \
+       extern CRITICAL_SECTION pinfo_cs; \
        _fmode = _O_BINARY; \
        _setmode(_fileno(stdin), _O_BINARY); \
        _setmode(_fileno(stdout), _O_BINARY); \
        _setmode(_fileno(stderr), _O_BINARY); \
        argv[0] = xstrdup(_pgmptr); \
+       InitializeCriticalSection(&pinfo_cs); \
        return mingw_main(argc, argv); \
 } \
 static int mingw_main(c,v)