144 lines
4.6 KiB
Plaintext
144 lines
4.6 KiB
Plaintext
From d4b74d78e5483b18a6d74212682b1324fe35d1c1 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= <revol@free.fr>
|
|
Date: Sun, 24 Feb 2019 02:20:34 +0100
|
|
Subject: [PATCH 1/3] test for mlock (Haiku does not have it)
|
|
|
|
---
|
|
cmake/config.cmake | 1 +
|
|
configure.ac | 6 +++++-
|
|
corelib/mapped.cpp | 4 ++++
|
|
3 files changed, 10 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/cmake/config.cmake b/cmake/config.cmake
|
|
index d887f13a..e04b0d45 100644
|
|
--- a/cmake/config.cmake
|
|
+++ b/cmake/config.cmake
|
|
@@ -58,6 +58,7 @@ check_function_exists(waitpid HAVE_WAITPID)
|
|
check_function_exists(wait4 HAVE_WAIT4)
|
|
check_function_exists(setgroups HAVE_SETGROUPS)
|
|
check_function_exists(strlcpy HAVE_STRLCPY)
|
|
+check_function_exists(mlocl HAVE_MLOCK)
|
|
|
|
check_include_files(sys/stat.h HAVE_SYS_STAT_H)
|
|
check_include_files(strings.h HAVE_STRINGS_H)
|
|
diff --git a/configure.ac b/configure.ac
|
|
index 9bcaca5e..77bc9265 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -255,6 +255,10 @@ AC_CHECK_LIB($clib, stristr, [
|
|
AC_DEFINE(HAVE_STRISTR, [1], [string istr])
|
|
])
|
|
|
|
+AC_CHECK_LIB($clib, mlock, [
|
|
+ AC_DEFINE(HAVE_MLOCK, [1], [mlock])
|
|
+])
|
|
+
|
|
AC_CHECK_LIB($clib, sysconf, [
|
|
AC_DEFINE(HAVE_SYSCONF, [1], [system config])
|
|
])
|
|
@@ -347,7 +351,7 @@ if test "$threading" = "none" ; then
|
|
fi
|
|
fi
|
|
|
|
-for func in ftok shm_open nanosleep clock_nanosleep clock_gettime strerror_r localtime_r gmtime_r posix_fadvise ftruncate pwrite setgroups setpgrp setlocale gettext execvp atexit realpath symlink readlink waitpid wait4 endgrent strlcpy; do
|
|
+for func in ftok shm_open nanosleep clock_nanosleep clock_gettime strerror_r localtime_r gmtime_r posix_fadvise ftruncate pwrite setgroups setpgrp setlocale gettext execvp atexit realpath symlink readlink waitpid wait4 endgrent strlcpy mlock; do
|
|
found="no"
|
|
AC_CHECK_FUNC($func,[
|
|
found=$func
|
|
diff --git a/corelib/mapped.cpp b/corelib/mapped.cpp
|
|
index f23e2f8c..87839df1 100644
|
|
--- a/corelib/mapped.cpp
|
|
+++ b/corelib/mapped.cpp
|
|
@@ -354,7 +354,9 @@ void MappedMemory::create(const char *fn, size_t len)
|
|
::close(fd);
|
|
if(map != (caddr_t)MAP_FAILED) {
|
|
size = mapsize = len;
|
|
+#ifdef HAVE_MLOCK
|
|
mlock(map, mapsize);
|
|
+#endif
|
|
#if INSERT_OFFSET > 0
|
|
if(prot & PROT_WRITE) {
|
|
size -= INSERT_OFFSET;
|
|
@@ -377,7 +379,9 @@ void MappedMemory::release()
|
|
if(size) {
|
|
if(use_mapping) {
|
|
map -= INSERT_OFFSET;
|
|
+#ifdef HAVE_MLOCK
|
|
munlock(map, mapsize);
|
|
+#endif
|
|
munmap(map, mapsize);
|
|
}
|
|
else
|
|
--
|
|
2.19.1
|
|
|
|
|
|
From 070bfcfe30f6ae94449bf2ab12cf3a73a13d2595 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= <revol@free.fr>
|
|
Date: Sun, 24 Feb 2019 02:41:23 +0100
|
|
Subject: [PATCH 2/3] use libnetwork on Haiku
|
|
|
|
---
|
|
cmake/ucommon.cmake | 4 ++++
|
|
configure.ac | 3 +++
|
|
2 files changed, 7 insertions(+)
|
|
|
|
diff --git a/cmake/ucommon.cmake b/cmake/ucommon.cmake
|
|
index 134c115c..f921f17a 100644
|
|
--- a/cmake/ucommon.cmake
|
|
+++ b/cmake/ucommon.cmake
|
|
@@ -17,6 +17,10 @@ if (NOT UCOMMON_CONFIGURED)
|
|
set(UCOMMON_LIBS ${UCOMMON_LIBS} nsl socket)
|
|
endif()
|
|
|
|
+ if(CMAKE_SYSTEM_NAME MATCHES "Haiku")
|
|
+ set(UCOMMON_LIBS ${UCOMMON_LIBS} network)
|
|
+ endif()
|
|
+
|
|
if(CMAKE_COMPILER_IS_GNUCXX)
|
|
set(UCOMMON_VISIBILITY_FLAG "-fvisibility=hidden")
|
|
if(MINGW OR MSYS OR CMAKE_SYSTEM MATCHES "Windows")
|
|
diff --git a/configure.ac b/configure.ac
|
|
index 77bc9265..455c31fe 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -110,6 +110,9 @@ osf*|cygwin*|mingw*)
|
|
darwin*)
|
|
MODULE_FLAGS="-dynamic -bundle -undefined suppress -flat_namespace -read_only_relocs suppress"
|
|
;;
|
|
+haiku*)
|
|
+ UCOMMON_LIBC="-lnetwork"
|
|
+ ;;
|
|
esac
|
|
|
|
AC_ARG_ENABLE(posix-timers,
|
|
--
|
|
2.19.1
|
|
|
|
|
|
From d8c6e7fc8a2f5a2caecf78e3fc1c56debdb3fd73 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= <revol@free.fr>
|
|
Date: Sun, 24 Feb 2019 02:41:45 +0100
|
|
Subject: [PATCH 3/3] use ifr_name (Haiku doesn't have named unions in ifreq)
|
|
|
|
---
|
|
corelib/socket.cpp | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/corelib/socket.cpp b/corelib/socket.cpp
|
|
index 077fe930..4db6bf0b 100644
|
|
--- a/corelib/socket.cpp
|
|
+++ b/corelib/socket.cpp
|
|
@@ -3027,7 +3027,7 @@ int Socket::bindto(socket_t so, const char *host, const char *svc, int protocol)
|
|
if(host && !strchr(host, '.') && !strchr(host, ':')) {
|
|
struct ifreq ifr;
|
|
memset(&ifr, 0, sizeof(ifr));
|
|
- strncpy(ifr.ifr_ifrn.ifrn_name, host, IFNAMSIZ);
|
|
+ strncpy(ifr.ifr_name, host, IFNAMSIZ);
|
|
ifr.ifr_name[IFNAMSIZ - 1] = '\0';
|
|
setsockopt(so, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr));
|
|
host = NULL;
|
|
--
|
|
2.19.1
|
|
|