Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Define a wrapper to strings for when printf(%s,NULL) segfaults
[simgrid.git] / src / portable.h
index 62ff5d7..bd7c397 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 
@@ -87,7 +91,11 @@ const char *gras_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
 
 /****
@@ -114,9 +122,25 @@ const char *gras_wsa_err2string(int errcode);
  ****/
 
 #ifdef HAVE_UCONTEXT_H
-#  include <ucontext.h>
-#else
+# ifndef S_SPLINT_S /* This header drives splint into the wall */
+#   include <ucontext.h>
+# endif 
+#endif
+
+#ifdef _WIN32
 #  include "xbt/context_win32.h" /* Manual reimplementation for prehistoric platforms */
 #endif
 
+/**
+ ** What is needed to protect solaris's printf from ever seing NULL associated to a %s format
+ ** (without adding an extra check on linux :)
+ **/
+
+#ifdef PRINTF_NULL_WORKING
+#  define PRINTF_STR(a) (a)
+#else
+#  define PRINTF_STR(a) (a)?:"(null)"
+#endif
+  
+
 #endif /* GRAS_PORTABLE_H */