#include <fstream>
#include <sys/stat.h>
-#if not defined(__APPLE__)
+#if not defined(__APPLE__) && not defined(__HAIKU__)
#include <link.h>
#endif
# define MAC_OS_X_VERSION_10_12 101200
# endif
constexpr bool HAVE_WORKING_MMAP = (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12);
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__sun)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__sun) || defined(__HAIKU__)
constexpr bool HAVE_WORKING_MMAP = false;
#else
constexpr bool HAVE_WORKING_MMAP = true;
#endif
// If this point is reached, sendfile() actually is not available. Copy file by hand.
const int bufsize = 1024 * 1024 * 4;
- char buf[bufsize];
+ char* buf = new char[bufsize];
while (int got = read(fdin, buf, bufsize)) {
if (got == -1) {
xbt_assert(errno == EINTR, "Cannot read from %s", src.c_str());
}
}
}
+ delete[] buf;
close(fdin);
close(fdout);
}
-#if not defined(__APPLE__)
+#if not defined(__APPLE__) && not defined(__HAIKU__)
static int visit_libs(struct dl_phdr_info* info, size_t, void* data)
{
char* libname = (char*)(data);
// get library name from path
char fullpath[512] = {'\0'};
strncpy(fullpath, libname.c_str(), 511);
-#if not defined(__APPLE__)
+#if not defined(__APPLE__) && not defined(__HAIKU__)
int ret = dl_iterate_phdr(visit_libs, fullpath);
if (ret == 0)
xbt_die("Can't find a linked %s - check the setting you gave to smpi/privatize-libs", fullpath);