Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Plug a memleak when using the parser
[simgrid.git] / src / portable.h
index 91cdc38..5534f4f 100644 (file)
 
 #include "gras_config.h"
 
-#include <errno.h>
-#include <sys/time.h> /* struct timeval */
-#include <sys/types.h>
+#ifdef HAVE_ERRNO_H
+#  include <errno.h>
+#endif
+
+#ifdef HAVE_UNISTD_H
+#  include <unistd.h>
+#endif
 
 /****
  **** Networking 
@@ -33,6 +37,9 @@
 #ifdef HAVE_WINSOCK2_H
 #  include <winsock2.h>
 #  include <ws2tcpip.h>  /* socklen_t, but doubtful */
+#  ifndef HAVE_WINSOCK_H
+#    define HAVE_WINSOCK_H
+#  endif
 #elif HAVE_WINSOCK_H
 #  include <winsock.h>
 #endif
 
 #       undef  sock_errno
 #       undef  sock_errstr
-#       define sock_errno()    WSAGetLastError()
-#       define sock_errstr(e)  ber_pvt_wsa_err2string(e)
+#       define sock_errno      WSAGetLastError()
+#       define sock_errstr     gras_wsa_err2string(WSAGetLastError())
 
-char *ber_pvt_wsa_err2string(int errcode);
+const char *gras_wsa_err2string(int errcode);
 
 #       define S_IRGRP 0
 #       define S_IWGRP 0
@@ -67,6 +74,8 @@ char *ber_pvt_wsa_err2string(int errcode);
 #else
 #       define tcp_read( s, buf, len)   read( s, buf, len )
 #       define tcp_write( s, buf, len)  write( s, buf, len )
+#       define sock_errno      errno
+#       define sock_errstr     strerror(errno)
 
 #       ifdef SHUT_RDWR
 #               define tcp_close( s )   (shutdown( s, SHUT_RDWR ), close( s ))
@@ -82,14 +91,18 @@ char *ber_pvt_wsa_err2string(int errcode);
 #include <fcntl.h>
 
 #ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
+#  include <sys/stat.h>
+#endif
+
+#ifndef O_BINARY
+#  define O_BINARY 0
 #endif
 
 /****
  **** Time handling
  ****/
 
-#if TIME_WITH_SYS_TIME
+#ifdef TIME_WITH_SYS_TIME
 # include <sys/time.h>
 # include <time.h>
 #else
@@ -104,5 +117,15 @@ char *ber_pvt_wsa_err2string(int errcode);
 #define sleep _sleep /* else defined in stdlib.h */
 #endif
 
+/****
+ **** Contexts
+ ****/
+
+#ifdef HAVE_UCONTEXT_H
+#  include <ucontext.h>
+#else
+#  include "xbt/context_win32.h" /* Manual reimplementation for prehistoric platforms */
+#endif
+
 
 #endif /* GRAS_PORTABLE_H */