Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use doxygen's section instead of my poor approximation; link to the list of all exist...
[simgrid.git] / src / portable.h
index f7f0f6d..5534f4f 100644 (file)
@@ -1,18 +1,25 @@
 /* $Id$ */
 
-/* portable -- header loading to write portable code */
+/* portable -- header loading to write portable code                         */
+/* loads much more stuff than sysdep.h since the latter is in public interface*/
 
-/* Copyright (c) 2004 Martin Quinson. */
-/* LGPL*/
+/* Copyright (c) 2004 Martin Quinson. All rights reserved.                   */
+
+/* This program is free software; you can redistribute it and/or modify it
+  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #ifndef GRAS_PORTABLE_H
 #define GRAS_PORTABLE_H
 
 #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 
@@ -30,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
@@ -64,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 ))
@@ -79,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
@@ -101,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 */