Files
haikuports/dev-libs/poco/patches/poco-1.12.4.patchset
2024-02-14 15:11:53 +01:00

1325 lines
47 KiB
Plaintext

From f436eed91214a54fa923c754765c49776af28906 Mon Sep 17 00:00:00 2001
From: Maite Gamper <victor@wenzeslaus.de>
Date: Thu, 22 Dec 2022 13:36:46 +0100
Subject: poco: add a plattform identifier
diff --git a/Foundation/include/Poco/Platform.h b/Foundation/include/Poco/Platform.h
index 192d6c7..ac21e57 100644
--- a/Foundation/include/Poco/Platform.h
+++ b/Foundation/include/Poco/Platform.h
@@ -43,6 +43,7 @@
#define POCO_OS_WINDOWS_NT 0x1001
#define POCO_OS_WINDOWS_CE 0x1011
#define POCO_OS_VMS 0x2001
+#define POCO_OS_HAIKU 0x0001
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
@@ -107,6 +108,9 @@
#elif defined(__VMS)
#define POCO_OS_FAMILY_VMS 1
#define POCO_OS POCO_OS_VMS
+#elif defined(__HAIKU__)
+ #define POCO_OS_FAMILY_BE 1
+ #define POCO_OS POCO_OS_HAIKU
#endif
--
2.42.1
From 2d7d9c9764c93469200949e10c0014104ac4ce76 Mon Sep 17 00:00:00 2001
From: Maite Gamper <victor@wenzeslaus.de>
Date: Thu, 22 Dec 2022 13:47:56 +0100
Subject: poco: implemented debugger for haiku
diff --git a/Foundation/src/Debugger.cpp b/Foundation/src/Debugger.cpp
index f50a7f7..17ddbe1 100644
--- a/Foundation/src/Debugger.cpp
+++ b/Foundation/src/Debugger.cpp
@@ -21,6 +21,8 @@
#elif defined(POCO_OS_FAMILY_UNIX) && !defined(POCO_VXWORKS)
#include <unistd.h>
#include <signal.h>
+#elif defined(POCO_OS_FAMILY_BE)
+ #include <OS.h>
#endif
#include "Poco/UnicodeConverter.h"
@@ -55,6 +57,8 @@ bool Debugger::isAvailable()
return false;
#elif defined(POCO_OS_FAMILY_UNIX)
return std::getenv("POCO_ENABLE_DEBUGGER") ? true : false;
+ #elif defined(POCO_OS_FAMILY_BE)
+ return true;
#endif
#else
return false;
@@ -103,6 +107,10 @@ void Debugger::enter()
{
// not supported
}
+ #elif defined(POCO_OS_FAMILY_BE)
+ if(isAvailable()) {
+ debugger("");
+ }
#elif defined(POCO_OS_FAMILY_UNIX)
if (isAvailable())
{
--
2.42.1
From bdbde563ef5e67fc5d1fef2160eeee4f1f8b99e3 Mon Sep 17 00:00:00 2001
From: Maite Gamper <victor@wenzeslaus.de>
Date: Sat, 18 Mar 2023 09:42:24 +0100
Subject: libpoco: initial porting to Haiku
Basically, for now we use Haiku's POSIX compatibility layer.
It would be nice to use Haiku's native API
Thread names are not implemented at all currenty.
diff --git a/Foundation/CMakeLists.txt b/Foundation/CMakeLists.txt
index f504bc1..3207021 100644
--- a/Foundation/CMakeLists.txt
+++ b/Foundation/CMakeLists.txt
@@ -168,6 +168,9 @@ else()
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "AIX")
target_compile_definitions(Foundation PUBLIC _XOPEN_SOURCE=500 POCO_HAVE_FD_POLL)
target_link_libraries(Foundation PUBLIC pthread ${CMAKE_DL_LIBS} rt)
+ elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Haiku")
+ target_compile_definitions(Foundation PUBLIC _XOPEN_SOURCE=500 POCO_HAVE_FD_POLL)
+ target_link_libraries(Foundation PUBLIC pthread ${CMAKE_DL_LIBS} network)
else()
target_compile_definitions(Foundation PUBLIC _XOPEN_SOURCE=500 POCO_HAVE_FD_EPOLL)
target_link_libraries(Foundation PUBLIC pthread ${CMAKE_DL_LIBS} rt)
diff --git a/Foundation/include/Poco/FPEnvironment.h b/Foundation/include/Poco/FPEnvironment.h
index 4602f57..e18be55 100644
--- a/Foundation/include/Poco/FPEnvironment.h
+++ b/Foundation/include/Poco/FPEnvironment.h
@@ -31,6 +31,8 @@
#include "Poco/FPEnvironment_QNX.h"
#elif defined(POCO_OS_FAMILY_UNIX)
#include "Poco/FPEnvironment_C99.h"
+#elif defined(POCO_OS_FAMILY_BE)
+#include "Poco/FPEnvironment_C99.h"
#elif defined(POCO_OS_FAMILY_WINDOWS)
#include "Poco/FPEnvironment_WIN32.h"
#else
diff --git a/Foundation/include/Poco/File.h b/Foundation/include/Poco/File.h
index 2ba1e96..402e32f 100644
--- a/Foundation/include/Poco/File.h
+++ b/Foundation/include/Poco/File.h
@@ -31,6 +31,9 @@
#endif
#elif defined(POCO_VXWORKS)
#include "Poco/File_VX.h"
+#elif defined(POCO_OS_FAMILY_BE)
+// TODO use the api
+#include "Poco/File_UNIX.h"
#elif defined(POCO_OS_FAMILY_UNIX)
#include "Poco/File_UNIX.h"
#endif
diff --git a/Foundation/include/Poco/Foundation.h b/Foundation/include/Poco/Foundation.h
index 74a3bf9..d143221 100644
--- a/Foundation/include/Poco/Foundation.h
+++ b/Foundation/include/Poco/Foundation.h
@@ -100,6 +100,9 @@
#include "Poco/Platform_WIN32.h"
#elif defined(POCO_VXWORKS)
#include "Poco/Platform_VX.h"
+#elif defined(POCO_OS_FAMILY_BE)
+ //TODO use native api
+ #include "Poco/Platform_POSIX.h"
#elif defined(POCO_OS_FAMILY_UNIX)
#include "Poco/Platform_POSIX.h"
#endif
diff --git a/Foundation/include/Poco/NamedEvent.h b/Foundation/include/Poco/NamedEvent.h
index 93c4b27..ab97e23 100644
--- a/Foundation/include/Poco/NamedEvent.h
+++ b/Foundation/include/Poco/NamedEvent.h
@@ -25,6 +25,9 @@
#include "Poco/NamedEvent_WIN32U.h"
#elif POCO_OS == POCO_OS_ANDROID
#include "Poco/NamedEvent_Android.h"
+#elif defined(POCO_OS_FAMILY_BE)
+//TODO use native api
+#include "Poco/NamedEvent_UNIX.h"
#elif defined(POCO_OS_FAMILY_UNIX)
#include "Poco/NamedEvent_UNIX.h"
#endif
diff --git a/Foundation/include/Poco/NamedEvent_UNIX.h b/Foundation/include/Poco/NamedEvent_UNIX.h
index 22cb31d..5823d02 100644
--- a/Foundation/include/Poco/NamedEvent_UNIX.h
+++ b/Foundation/include/Poco/NamedEvent_UNIX.h
@@ -19,7 +19,7 @@
#include "Poco/Foundation.h"
-#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX)
+#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX) || (POCO_OS == POCO_OS_HAIKU)
#include <semaphore.h>
#endif
@@ -39,7 +39,7 @@ private:
std::string getFileName();
std::string _name;
-#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX)
+#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX) || (POCO_OS == POCO_OS_HAIKU)
sem_t* _sem;
#else
int _semid; // semaphore id
diff --git a/Foundation/include/Poco/NamedMutex.h b/Foundation/include/Poco/NamedMutex.h
index 197fe38..a6e5048 100644
--- a/Foundation/include/Poco/NamedMutex.h
+++ b/Foundation/include/Poco/NamedMutex.h
@@ -26,6 +26,9 @@
#include "Poco/NamedMutex_WIN32U.h"
#elif POCO_OS == POCO_OS_ANDROID
#include "Poco/NamedMutex_Android.h"
+#elif defined(POCO_OS_FAMILY_BE)
+//TODO use native api
+#include "Poco/NamedMutex_UNIX.h"
#elif defined(POCO_OS_FAMILY_UNIX)
#include "Poco/NamedMutex_UNIX.h"
#endif
diff --git a/Foundation/include/Poco/NamedMutex_UNIX.h b/Foundation/include/Poco/NamedMutex_UNIX.h
index 151aa1e..e1f61d1 100644
--- a/Foundation/include/Poco/NamedMutex_UNIX.h
+++ b/Foundation/include/Poco/NamedMutex_UNIX.h
@@ -21,7 +21,7 @@
#include "Poco/Foundation.h"
#include <sys/types.h>
#include <sys/stat.h>
-#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX)
+#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX) || (POCO_OS == POCO_OS_HAIKU)
#include <semaphore.h>
#endif
@@ -42,7 +42,7 @@ private:
std::string getFileName();
std::string _name;
-#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX)
+#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX) || (POCO_OS == POCO_OS_HAIKU)
sem_t* _sem;
#else
int _semid; // semaphore id
diff --git a/Foundation/include/Poco/PipeImpl.h b/Foundation/include/Poco/PipeImpl.h
index b0b7183..ea9a96e 100644
--- a/Foundation/include/Poco/PipeImpl.h
+++ b/Foundation/include/Poco/PipeImpl.h
@@ -27,6 +27,9 @@
#else
#include "Poco/PipeImpl_WIN32.h"
#endif
+#elif defined(POCO_OS_FAMILY_BE)
+//TODO use native api
+#include "Poco/PipeImpl_POSIX.h"
#elif defined(POCO_OS_FAMILY_UNIX)
#include "Poco/PipeImpl_POSIX.h"
#else
diff --git a/Foundation/include/Poco/Platform.h b/Foundation/include/Poco/Platform.h
index ac21e57..c9c62f4 100644
--- a/Foundation/include/Poco/Platform.h
+++ b/Foundation/include/Poco/Platform.h
@@ -43,7 +43,7 @@
#define POCO_OS_WINDOWS_NT 0x1001
#define POCO_OS_WINDOWS_CE 0x1011
#define POCO_OS_VMS 0x2001
-#define POCO_OS_HAIKU 0x0001
+#define POCO_OS_HAIKU 0x3001
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
diff --git a/Foundation/include/Poco/Process.h b/Foundation/include/Poco/Process.h
index f84b68e..7543dba 100644
--- a/Foundation/include/Poco/Process.h
+++ b/Foundation/include/Poco/Process.h
@@ -29,6 +29,9 @@
#endif
#elif defined(POCO_VXWORKS)
#include "Poco/Process_VX.h"
+#elif defined(POCO_OS_FAMILY_BE)
+//TODO use native api
+#include "Poco/Process_UNIX.h"
#elif defined(POCO_OS_FAMILY_UNIX)
#include "Poco/Process_UNIX.h"
#endif
diff --git a/Foundation/include/Poco/Types.h b/Foundation/include/Poco/Types.h
index 6489a6f..14d61cc 100644
--- a/Foundation/include/Poco/Types.h
+++ b/Foundation/include/Poco/Types.h
@@ -21,10 +21,7 @@
#include "Poco/Foundation.h"
#include <cstdint>
-
namespace Poco {
-
-
using Int8 = std::int8_t;
using UInt8 = std::uint8_t;
using Int16 = std::int16_t;
@@ -36,7 +33,6 @@ using UInt64 = std::uint64_t;
using IntPtr = std::intptr_t;
using UIntPtr = std::uintptr_t;
-
#if defined(_MSC_VER)
#if defined(_WIN64)
#define POCO_PTR_IS_64_BIT 1
@@ -49,7 +45,7 @@ using UIntPtr = std::uintptr_t;
#if defined(__LP64__)
#define POCO_PTR_IS_64_BIT 1
#define POCO_LONG_IS_64_BIT 1
- #if POCO_OS == POCO_OS_LINUX || POCO_OS == POCO_OS_FREE_BSD || POCO_OS == POCO_OS_ANDROID
+ #if POCO_OS == POCO_OS_LINUX || POCO_OS == POCO_OS_FREE_BSD || POCO_OS == POCO_OS_ANDROID || defined(POCO_OS_FAMILY_BE)
#define POCO_INT64_IS_LONG 1
#endif
#endif
diff --git a/Foundation/src/DirectoryIterator.cpp b/Foundation/src/DirectoryIterator.cpp
index 432c593..9ed6d2e 100644
--- a/Foundation/src/DirectoryIterator.cpp
+++ b/Foundation/src/DirectoryIterator.cpp
@@ -19,6 +19,9 @@
#include "DirectoryIterator_WIN32U.cpp"
#elif defined(POCO_OS_FAMILY_UNIX)
#include "DirectoryIterator_UNIX.cpp"
+#elif defined(POCO_OS_FAMILY_BE)
+// TODO maybe use the be api
+#include "DirectoryIterator_UNIX.cpp"
#endif
diff --git a/Foundation/src/DirectoryIterator_UNIX.cpp b/Foundation/src/DirectoryIterator_UNIX.cpp
index 16be505..9d9485f 100644
--- a/Foundation/src/DirectoryIterator_UNIX.cpp
+++ b/Foundation/src/DirectoryIterator_UNIX.cpp
@@ -15,6 +15,9 @@
#include "Poco/DirectoryIterator_UNIX.h"
#if defined(POCO_VXWORKS)
#include "Poco/File_VX.h"
+#elif defined(POCO_OS_FAMILY_BE)
+// TODO maybe use the be api
+#include "Poco/File_UNIX.h"
#else
#include "Poco/File_UNIX.h"
#endif
diff --git a/Foundation/src/Environment.cpp b/Foundation/src/Environment.cpp
index 58a8ef3..c1ff0cb 100644
--- a/Foundation/src/Environment.cpp
+++ b/Foundation/src/Environment.cpp
@@ -27,6 +27,9 @@
#include "Environment_VX.cpp"
#elif defined(POCO_OS_FAMILY_UNIX)
#include "Environment_UNIX.cpp"
+#elif defined(POCO_OS_FAMILY_BE)
+// TODO maybe use the be api
+#include "Environment_UNIX.h"
#elif defined(POCO_OS_FAMILY_WINDOWS)
#if defined(_WIN32_WCE)
#include "Environment_WINCE.cpp"
diff --git a/Foundation/src/Environment_UNIX.cpp b/Foundation/src/Environment_UNIX.cpp
index b7e57e4..4ab09bf 100644
--- a/Foundation/src/Environment_UNIX.cpp
+++ b/Foundation/src/Environment_UNIX.cpp
@@ -136,7 +136,7 @@ unsigned EnvironmentImpl::processorCountImpl()
//
// nodeIdImpl
//
-#if defined(POCO_OS_FAMILY_BSD) || POCO_OS == POCO_OS_QNX
+#if defined(POCO_OS_FAMILY_BSD) || POCO_OS == POCO_OS_QNX || defined(POCO_OS_FAMILY_BE)
//
// BSD variants
//
@@ -161,7 +161,11 @@ void EnvironmentImpl::nodeIdImpl(NodeId& id)
if (ifap->ifa_addr && ifap->ifa_addr->sa_family == AF_LINK)
{
struct sockaddr_dl* sdl = reinterpret_cast<struct sockaddr_dl*>(ifap->ifa_addr);
+ #ifdef POCO_OS_HAIKU
+ caddr_t ap = (caddr_t) LLADDR(sdl);
+ #else
caddr_t ap = LLADDR(sdl);
+ #endif
int alen = sdl->sdl_alen;
if (ap && alen > 0)
{
diff --git a/Foundation/src/FPEnvironment.cpp b/Foundation/src/FPEnvironment.cpp
index 3b853dd..18011f6 100644
--- a/Foundation/src/FPEnvironment.cpp
+++ b/Foundation/src/FPEnvironment.cpp
@@ -32,6 +32,9 @@
#include "FPEnvironment_QNX.cpp"
#elif defined(POCO_OS_FAMILY_UNIX)
#include "FPEnvironment_C99.cpp"
+#elif defined(POCO_OS_FAMILY_BE)
+// TODO maybe use the be api
+#include "FPEnvironment_C99.cpp"
#elif defined(POCO_OS_FAMILY_WINDOWS)
#include "FPEnvironment_WIN32.cpp"
#else
diff --git a/Foundation/src/File.cpp b/Foundation/src/File.cpp
index 7f96d5d..f4e9cdc 100644
--- a/Foundation/src/File.cpp
+++ b/Foundation/src/File.cpp
@@ -27,6 +27,9 @@
#include "File_VX.cpp"
#elif defined(POCO_OS_FAMILY_UNIX)
#include "File_UNIX.cpp"
+#elif defined(POCO_OS_FAMILY_BE)
+// TODO maybe use the be api
+#include "File_UNIX.cpp"
#endif
#include "Poco/Thread.h"
diff --git a/Foundation/src/File_UNIX.cpp b/Foundation/src/File_UNIX.cpp
index 090567b..90a34f1 100644
--- a/Foundation/src/File_UNIX.cpp
+++ b/Foundation/src/File_UNIX.cpp
@@ -23,7 +23,7 @@
#if defined(POCO_OS_FAMILY_BSD)
#include <sys/param.h>
#include <sys/mount.h>
-#elif (POCO_OS == POCO_OS_SOLARIS) || (POCO_OS == POCO_OS_QNX)
+#elif (POCO_OS == POCO_OS_SOLARIS) || (POCO_OS == POCO_OS_QNX) || (POCO_OS == POCO_OS_HAIKU)
#include <sys/statvfs.h>
#else
#include <sys/statfs.h>
@@ -35,7 +35,7 @@
#include <utime.h>
#include <cstring>
-#if (POCO_OS == POCO_OS_SOLARIS) || (POCO_OS == POCO_OS_QNX)
+#if (POCO_OS == POCO_OS_SOLARIS) || (POCO_OS == POCO_OS_QNX) || (POCO_OS == POCO_OS_HAIKU)
#define STATFSFN statvfs
#define STATFSSTRUCT statvfs
#else
diff --git a/Foundation/src/Mutex.cpp b/Foundation/src/Mutex.cpp
index 843562a..92b61e2 100644
--- a/Foundation/src/Mutex.cpp
+++ b/Foundation/src/Mutex.cpp
@@ -24,6 +24,7 @@
#elif defined(POCO_VXWORKS)
#include "Mutex_VX.cpp"
#else
+// TODO Be: use the native api?
#include "Mutex_POSIX.cpp"
#endif
diff --git a/Foundation/src/NamedEvent.cpp b/Foundation/src/NamedEvent.cpp
index 0cdeddb..494e78e 100644
--- a/Foundation/src/NamedEvent.cpp
+++ b/Foundation/src/NamedEvent.cpp
@@ -19,6 +19,9 @@
#include "NamedEvent_WIN32U.cpp"
#elif POCO_OS == POCO_OS_ANDROID
#include "NamedEvent_Android.cpp"
+#elif defined(POCO_OS_FAMILY_BE)
+//TODO use native api
+#include "NamedEvent_UNIX.cpp"
#elif defined(POCO_OS_FAMILY_UNIX)
#include "NamedEvent_UNIX.cpp"
#endif
diff --git a/Foundation/src/NamedEvent_UNIX.cpp b/Foundation/src/NamedEvent_UNIX.cpp
index b0cc100..14e526b 100644
--- a/Foundation/src/NamedEvent_UNIX.cpp
+++ b/Foundation/src/NamedEvent_UNIX.cpp
@@ -18,7 +18,7 @@
#include <fcntl.h>
#include <sys/stat.h>
#include <errno.h>
-#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX)
+#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX)|| (POCO_OS == POCO_OS_HAIKU)
#include <semaphore.h>
#else
#include <unistd.h>
@@ -53,7 +53,7 @@ NamedEventImpl::NamedEventImpl(const std::string& name):
_name(name)
{
std::string fileName = getFileName();
-#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX)
+#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX)|| (POCO_OS == POCO_OS_HAIKU)
_sem = sem_open(fileName.c_str(), O_CREAT, S_IRWXU | S_IRWXG | S_IRWXO, 0);
if ((long) _sem == (long) SEM_FAILED)
throw SystemException(Poco::format("cannot create named mutex %s (sem_open() failed, errno=%d)", fileName, errno), _name);
@@ -86,7 +86,7 @@ NamedEventImpl::NamedEventImpl(const std::string& name):
NamedEventImpl::~NamedEventImpl()
{
-#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX)
+#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX) || (POCO_OS == POCO_OS_HAIKU)
sem_close(_sem);
#endif
}
@@ -94,7 +94,7 @@ NamedEventImpl::~NamedEventImpl()
void NamedEventImpl::setImpl()
{
-#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX)
+#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX) || (POCO_OS == POCO_OS_HAIKU)
if (sem_post(_sem) != 0)
throw SystemException("cannot set named event", _name);
#else
@@ -110,7 +110,7 @@ void NamedEventImpl::setImpl()
void NamedEventImpl::waitImpl()
{
-#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX)
+#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX) || (POCO_OS == POCO_OS_HAIKU)
int err;
do
{
diff --git a/Foundation/src/NamedMutex.cpp b/Foundation/src/NamedMutex.cpp
index 98c2f87..1b0c143 100644
--- a/Foundation/src/NamedMutex.cpp
+++ b/Foundation/src/NamedMutex.cpp
@@ -19,6 +19,9 @@
#include "NamedMutex_WIN32U.cpp"
#elif POCO_OS == POCO_OS_ANDROID
#include "NamedMutex_Android.cpp"
+#elif defined(POCO_OS_FAMILY_BE)
+//TODO use native api
+#include "NamedMutex_UNIX.cpp"
#elif defined(POCO_OS_FAMILY_UNIX)
#include "NamedMutex_UNIX.cpp"
#endif
diff --git a/Foundation/src/NamedMutex_UNIX.cpp b/Foundation/src/NamedMutex_UNIX.cpp
index 6466b2b..c6b5663 100644
--- a/Foundation/src/NamedMutex_UNIX.cpp
+++ b/Foundation/src/NamedMutex_UNIX.cpp
@@ -18,7 +18,7 @@
#include <fcntl.h>
#include <sys/stat.h>
#include <errno.h>
-#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(_AIX)
+#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(_AIX) || (POCO_OS == POCO_OS_HAIKU)
#include <semaphore.h>
#else
#include <unistd.h>
@@ -53,7 +53,7 @@ NamedMutexImpl::NamedMutexImpl(const std::string& name):
_name(name)
{
std::string fileName = getFileName();
-#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX)
+#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX) || (POCO_OS == POCO_OS_HAIKU)
_sem = sem_open(fileName.c_str(), O_CREAT, S_IRWXU | S_IRWXG | S_IRWXO, 1);
if ((long) _sem == (long) SEM_FAILED)
throw SystemException(Poco::format("cannot create named mutex %s (sem_open() failed, errno=%d)", fileName, errno), _name);
@@ -91,7 +91,7 @@ NamedMutexImpl::NamedMutexImpl(const std::string& name):
NamedMutexImpl::~NamedMutexImpl()
{
-#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX)
+#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX) || (POCO_OS == POCO_OS_HAIKU)
sem_close(_sem);
#else
if (_owned) semctl(_semid, 0, IPC_RMID, 0);
@@ -101,7 +101,7 @@ NamedMutexImpl::~NamedMutexImpl()
void NamedMutexImpl::lockImpl()
{
-#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX)
+#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX) || (POCO_OS == POCO_OS_HAIKU)
int err;
do
{
@@ -127,7 +127,7 @@ void NamedMutexImpl::lockImpl()
bool NamedMutexImpl::tryLockImpl()
{
-#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX)
+#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX) || (POCO_OS == POCO_OS_HAIKU)
return sem_trywait(_sem) == 0;
#else
struct sembuf op;
@@ -141,7 +141,7 @@ bool NamedMutexImpl::tryLockImpl()
void NamedMutexImpl::unlockImpl()
{
-#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX)
+#if defined(sun) || defined(__APPLE__) || defined(__osf__) || defined(__QNX__) || defined(_AIX) || (POCO_OS == POCO_OS_HAIKU)
if (sem_post(_sem) != 0)
throw SystemException("cannot unlock named mutex", _name);
#else
diff --git a/Foundation/src/Path.cpp b/Foundation/src/Path.cpp
index 7b85a65..05ffc7a 100644
--- a/Foundation/src/Path.cpp
+++ b/Foundation/src/Path.cpp
@@ -22,8 +22,10 @@
#endif
#include <algorithm>
-
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_BE)
+//TODO use native api
+#include "Path_UNIX.cpp"
+#elif defined(POCO_OS_FAMILY_UNIX)
#include "Path_UNIX.cpp"
#elif defined(POCO_OS_FAMILY_WINDOWS)
#if defined(_WIN32_WCE)
diff --git a/Foundation/src/PipeImpl.cpp b/Foundation/src/PipeImpl.cpp
index 0f43b45..0c8eb5d 100644
--- a/Foundation/src/PipeImpl.cpp
+++ b/Foundation/src/PipeImpl.cpp
@@ -21,6 +21,9 @@
#else
#include "PipeImpl_WIN32.cpp"
#endif
+#elif defined(POCO_OS_FAMILY_BE)
+//TODO use native api
+#include "PipeImpl_POSIX.cpp"
#elif defined(POCO_OS_FAMILY_UNIX)
#include "PipeImpl_POSIX.cpp"
#else
diff --git a/Foundation/src/SharedLibrary.cpp b/Foundation/src/SharedLibrary.cpp
index a2bdce5..282e064 100644
--- a/Foundation/src/SharedLibrary.cpp
+++ b/Foundation/src/SharedLibrary.cpp
@@ -20,6 +20,9 @@
#include "SharedLibrary_HPUX.cpp"
#elif defined(POCO_VXWORKS)
#include "SharedLibrary_VX.cpp"
+#elif defined(POCO_OS_FAMILY_BE)
+//TODO use native api
+#include "SharedLibrary_UNIX.cpp"
#elif defined(POCO_OS_FAMILY_UNIX)
#include "SharedLibrary_UNIX.cpp"
#elif defined(POCO_OS_FAMILY_WINDOWS)
diff --git a/Foundation/src/SharedMemory.cpp b/Foundation/src/SharedMemory.cpp
index da43a42..47e5be4 100644
--- a/Foundation/src/SharedMemory.cpp
+++ b/Foundation/src/SharedMemory.cpp
@@ -18,6 +18,9 @@
#include "SharedMemory_DUMMY.cpp"
#elif defined(POCO_OS_FAMILY_WINDOWS)
#include "SharedMemory_WIN32.cpp"
+#elif defined(POCO_OS_FAMILY_BE)
+//TODO use native api
+#include "SharedMemory_POSIX.cpp"
#elif defined(POCO_OS_FAMILY_UNIX)
#include "SharedMemory_POSIX.cpp"
#else
diff --git a/Foundation/src/Thread_POSIX.cpp b/Foundation/src/Thread_POSIX.cpp
index ceab76e..2630d35 100644
--- a/Foundation/src/Thread_POSIX.cpp
+++ b/Foundation/src/Thread_POSIX.cpp
@@ -65,7 +65,9 @@ namespace
namespace {
void setThreadName(pthread_t thread, const std::string& threadName)
{
-#if (POCO_OS == POCO_OS_MAC_OS_X)
+#if POCO_OS == POCO_OS_HAIKU
+ return; // TODO allow thead names to be set
+#elif (POCO_OS == POCO_OS_MAC_OS_X)
pthread_setname_np(threadName.c_str()); // __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2)
#else
if (pthread_setname_np(thread, threadName.c_str()) == ERANGE && threadName.size() > 15)
@@ -277,7 +279,7 @@ long ThreadImpl::currentOsTidImpl()
#elif POCO_OS == POCO_OS_MAC_OS_X
return ::pthread_mach_thread_np(::pthread_self());
#else
- return ::pthread_self();
+ return (long) ::pthread_self();
#endif
}
@@ -289,7 +291,7 @@ void ThreadImpl::sleepImpl(long milliseconds)
interval.tv_sec = milliseconds / 1000;
interval.tv_nsec = (milliseconds % 1000)*1000000;
pthread_delay_np(&interval);
-#elif POCO_OS == POCO_OS_LINUX || POCO_OS == POCO_OS_ANDROID || POCO_OS == POCO_OS_MAC_OS_X || POCO_OS == POCO_OS_QNX || POCO_OS == POCO_OS_VXWORKS
+#elif POCO_OS == POCO_OS_LINUX || POCO_OS == POCO_OS_ANDROID || POCO_OS == POCO_OS_MAC_OS_X || POCO_OS == POCO_OS_QNX || POCO_OS == POCO_OS_VXWORKS || POCO_OS == POCO_OS_HAIKU
Poco::Timespan remainingTime(1000*Poco::Timespan::TimeDiff(milliseconds));
int rc;
do
diff --git a/Foundation/src/Timestamp.cpp b/Foundation/src/Timestamp.cpp
index da05a56..26557fa 100644
--- a/Foundation/src/Timestamp.cpp
+++ b/Foundation/src/Timestamp.cpp
@@ -19,7 +19,7 @@
#undef min
#undef max
#include <limits>
-#if defined(POCO_OS_FAMILY_UNIX)
+#if (defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_FAMILY_BE))
#include <time.h>
#include <unistd.h>
#if defined(POCO_VXWORKS)
diff --git a/Util/src/Application.cpp b/Util/src/Application.cpp
index fe61ddd..82ebed7 100644
--- a/Util/src/Application.cpp
+++ b/Util/src/Application.cpp
@@ -334,7 +334,7 @@ Application::WindowSize Application::windowSize()
size.width = csbi.srWindow.Right - csbi.srWindow.Left + 1;
size.height = csbi.srWindow.Bottom - csbi.srWindow.Top + 1;
}
-#elif defined(POCO_OS_FAMILY_UNIX)
+#elif defined(POCO_OS_FAMILY_UNIX) && (!defined(POCO_OS_FAMILY_BE))
struct winsize winsz;
if (ioctl(0, TIOCGWINSZ , &winsz) != -1)
{
--
2.42.1
From 43bac2b573c7092d6572e568bef449082d3def85 Mon Sep 17 00:00:00 2001
From: Maite Gamper <victor@wenzeslaus.de>
Date: Sat, 25 Mar 2023 07:03:07 +0100
Subject: poco: try to use GNUInstallDirs
diff --git a/ActiveRecord/Compiler/CMakeLists.txt b/ActiveRecord/Compiler/CMakeLists.txt
index 40a8b23..667392f 100644
--- a/ActiveRecord/Compiler/CMakeLists.txt
+++ b/ActiveRecord/Compiler/CMakeLists.txt
@@ -20,7 +20,7 @@ install(
TARGETS ActiveRecordCompiler EXPORT "ActiveRecordCompiler"
LIBRARY DESTINATION lib${LIB_SUFFIX}
ARCHIVE DESTINATION lib${LIB_SUFFIX}
- RUNTIME DESTINATION bin
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
BUNDLE DESTINATION bin
INCLUDES DESTINATION include
)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c552091..208b754 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -482,12 +482,13 @@ else()
endif()
configure_file(cmake/${PROJECT_NAME}Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}Config.cmake" @ONLY)
+include(GNUInstallDirs)
install(
FILES
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}ConfigVersion.cmake
DESTINATION
- "${PocoConfigPackageLocation}"
+ "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
COMPONENT
Devel
)
diff --git a/Encodings/Compiler/CMakeLists.txt b/Encodings/Compiler/CMakeLists.txt
index fa4e85b..d4ff144 100644
--- a/Encodings/Compiler/CMakeLists.txt
+++ b/Encodings/Compiler/CMakeLists.txt
@@ -14,7 +14,7 @@ install(
TARGETS EncodingsCompiler EXPORT "EncodingsCompilerTargets"
LIBRARY DESTINATION lib${LIB_SUFFIX}
ARCHIVE DESTINATION lib${LIB_SUFFIX}
- RUNTIME DESTINATION bin
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
BUNDLE DESTINATION bin
INCLUDES DESTINATION include
)
diff --git a/PageCompiler/CMakeLists.txt b/PageCompiler/CMakeLists.txt
index 48379eb..423fe99 100644
--- a/PageCompiler/CMakeLists.txt
+++ b/PageCompiler/CMakeLists.txt
@@ -22,7 +22,7 @@ install(
TARGETS PageCompiler EXPORT PageCompilerTargets
LIBRARY DESTINATION lib${LIB_SUFFIX}
ARCHIVE DESTINATION lib${LIB_SUFFIX}
- RUNTIME DESTINATION bin
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
BUNDLE DESTINATION bin
INCLUDES DESTINATION include
)
diff --git a/PageCompiler/File2Page/CMakeLists.txt b/PageCompiler/File2Page/CMakeLists.txt
index 6b69257..b56fe43 100644
--- a/PageCompiler/File2Page/CMakeLists.txt
+++ b/PageCompiler/File2Page/CMakeLists.txt
@@ -20,7 +20,7 @@ install(
TARGETS File2Page EXPORT File2PageTargets
LIBRARY DESTINATION lib${LIB_SUFFIX}
ARCHIVE DESTINATION lib${LIB_SUFFIX}
- RUNTIME DESTINATION bin
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
BUNDLE DESTINATION bin
INCLUDES DESTINATION include
)
diff --git a/PocoDoc/CMakeLists.txt b/PocoDoc/CMakeLists.txt
index 49ad7b4..f87d040 100644
--- a/PocoDoc/CMakeLists.txt
+++ b/PocoDoc/CMakeLists.txt
@@ -10,7 +10,7 @@ install(
TARGETS PocoDoc EXPORT PocoDocTargets
LIBRARY DESTINATION lib${LIB_SUFFIX}
ARCHIVE DESTINATION lib${LIB_SUFFIX}
- RUNTIME DESTINATION bin
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
BUNDLE DESTINATION bin
INCLUDES DESTINATION include
)
diff --git a/cmake/PocoMacros.cmake b/cmake/PocoMacros.cmake
index 0ef354e..71a2078 100644
--- a/cmake/PocoMacros.cmake
+++ b/cmake/PocoMacros.cmake
@@ -236,18 +236,19 @@ else()
set(PocoConfigPackageLocation "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
endif()
+include(GNUInstallDirs)
install(
EXPORT "${target_name}Targets"
FILE "${PROJECT_NAME}${target_name}Targets.cmake"
NAMESPACE "${PROJECT_NAME}::"
- DESTINATION "${PocoConfigPackageLocation}"
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
)
install(
FILES
"${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}${target_name}Config.cmake"
"${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}${target_name}ConfigVersion.cmake"
- DESTINATION "${PocoConfigPackageLocation}"
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
COMPONENT Devel
)
@@ -264,18 +265,18 @@ endmacro()
macro(POCO_INSTALL target_name)
install(
DIRECTORY include/Poco
- DESTINATION include
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
COMPONENT Devel
PATTERN ".svn" EXCLUDE
)
+include(GNUInstallDirs)
install(
TARGETS "${target_name}" EXPORT "${target_name}Targets"
- LIBRARY DESTINATION lib${LIB_SUFFIX}
- ARCHIVE DESTINATION lib${LIB_SUFFIX}
- RUNTIME DESTINATION bin
- BUNDLE DESTINATION bin
- INCLUDES DESTINATION include
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
)
if(MSVC)
@@ -297,7 +298,7 @@ macro(POCO_INSTALL_PDB target_name)
if("${type}" STREQUAL "SHARED_LIBRARY" OR "${type}" STREQUAL "EXECUTABLE")
install(
FILES $<TARGET_PDB_FILE:${target_name}>
- DESTINATION bin
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
COMPONENT Devel
OPTIONAL
)
--
2.42.1
From 6550b90bcf0f7aa5be83dc6d38b68f024b8da1bd Mon Sep 17 00:00:00 2001
From: Maite Gamper <victor@wenzeslaus.de>
Date: Wed, 19 Apr 2023 22:01:07 +0200
Subject: poco: hopefully make networking work somewhat
diff --git a/Net/CMakeLists.txt b/Net/CMakeLists.txt
index 237df1c..c893385 100644
--- a/Net/CMakeLists.txt
+++ b/Net/CMakeLists.txt
@@ -36,6 +36,10 @@ if(WIN32)
endif()
endif(WIN32)
+if(HAIKU)
+ target_link_libraries(Net PUBLIC network)
+endif(HAIKU)
+
target_include_directories(Net
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
diff --git a/Net/include/Poco/Net/Net.h b/Net/include/Poco/Net/Net.h
index 58e052a..9c9d77c 100644
--- a/Net/include/Poco/Net/Net.h
+++ b/Net/include/Poco/Net/Net.h
@@ -127,7 +127,7 @@ POCO_NET_FORCE_SYMBOL(pocoNetworkInitializer)
//
// Define POCO_NET_HAS_INTERFACE for platforms that have network interface detection implemented.
//
-#if defined(POCO_OS_FAMILY_WINDOWS) || (POCO_OS == POCO_OS_LINUX) || (POCO_OS == POCO_OS_ANDROID) || defined(POCO_OS_FAMILY_BSD) || (POCO_OS == POCO_OS_SOLARIS) || (POCO_OS == POCO_OS_QNX)
+#if defined(POCO_OS_FAMILY_WINDOWS) || (POCO_OS == POCO_OS_LINUX) || (POCO_OS == POCO_OS_ANDROID) || defined(POCO_OS_FAMILY_BSD) || (POCO_OS == POCO_OS_SOLARIS) || (POCO_OS == POCO_OS_QNX) || (POCO_OS == POCO_OS_HAIKU)
#define POCO_NET_HAS_INTERFACE
#endif
diff --git a/Net/include/Poco/Net/SocketAddress.h b/Net/include/Poco/Net/SocketAddress.h
index c6d3069..db217af 100644
--- a/Net/include/Poco/Net/SocketAddress.h
+++ b/Net/include/Poco/Net/SocketAddress.h
@@ -49,7 +49,7 @@ public:
#if defined(POCO_HAVE_IPv6)
static const Family IPv6 = AddressFamily::IPv6;
#endif
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
static const Family UNIX_LOCAL = AddressFamily::UNIX_LOCAL;
#endif
@@ -181,7 +181,7 @@ public:
enum
{
MAX_ADDRESS_LENGTH =
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
sizeof(struct sockaddr_un)
#elif defined(POCO_HAVE_IPv6)
sizeof(struct sockaddr_in6)
@@ -214,7 +214,7 @@ private:
void newIPv6(const IPAddress& hostAddress, Poco::UInt16 portNumber);
#endif
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
void newLocal(const sockaddr_un* sockAddr);
void newLocal(const std::string& path);
#endif
@@ -265,7 +265,7 @@ inline void SocketAddress::newIPv6(const IPAddress& hostAddress, Poco::UInt16 po
#endif // POCO_HAVE_IPv6
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
inline void SocketAddress::newLocal(const sockaddr_un* sockAddr)
{
_pImpl = new Poco::Net::Impl::LocalSocketAddressImpl(sockAddr);
@@ -281,7 +281,7 @@ inline void SocketAddress::newLocal(const std::string& path)
inline bool SocketAddress::operator == (const SocketAddress& socketAddress) const
{
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
if (family() == UNIX_LOCAL)
return toString() == socketAddress.toString();
else
diff --git a/Net/include/Poco/Net/SocketAddressImpl.h b/Net/include/Poco/Net/SocketAddressImpl.h
index b065ca2..8d33c0a 100644
--- a/Net/include/Poco/Net/SocketAddressImpl.h
+++ b/Net/include/Poco/Net/SocketAddressImpl.h
@@ -177,7 +177,7 @@ inline SocketAddressImpl::Family IPv6SocketAddressImpl::family() const
#endif // POCO_HAVE_IPv6
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || (POCO_OS == POCO_OS_HAIKU)
class Net_API LocalSocketAddressImpl: public SocketAddressImpl
diff --git a/Net/include/Poco/Net/SocketDefs.h b/Net/include/Poco/Net/SocketDefs.h
index d024a24..0d9f38b 100644
--- a/Net/include/Poco/Net/SocketDefs.h
+++ b/Net/include/Poco/Net/SocketDefs.h
@@ -132,7 +132,7 @@
#define POCO_TRY_AGAIN TRY_AGAIN
#define POCO_NO_RECOVERY NO_RECOVERY
#define POCO_NO_DATA NO_DATA
-#elif defined(POCO_OS_FAMILY_UNIX)
+#elif defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
@@ -148,7 +148,7 @@
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <netdb.h>
- #if defined(POCO_OS_FAMILY_UNIX)
+ #if defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
#if (POCO_OS == POCO_OS_LINUX) || (POCO_OS == POCO_OS_ANDROID)
// Net/src/NetworkInterface.cpp changed #include <linux/if.h> to #include <net/if.h>
// no more conflict, can use #include <net/if.h> here
@@ -165,6 +165,8 @@
#if (POCO_OS == POCO_OS_SOLARIS) || (POCO_OS == POCO_OS_MAC_OS_X)
#include <sys/sockio.h>
#include <sys/filio.h>
+ #elif (POCO_OS == POCO_OS_HAIKU)
+ #include <sys/sockio.h>
#endif
#define POCO_INVALID_SOCKET -1
#define poco_socket_t int
@@ -277,7 +279,7 @@
#if defined(POCO_HAVE_IPv6)
#define poco_set_sin6_len(pSA) (pSA)->sin6_len = sizeof(struct sockaddr_in6)
#endif
- #if defined(POCO_OS_FAMILY_UNIX)
+ #if defined(POCO_OS_FAMILY_UNIX) || (POCO_OS == POCO_OS_HAIKU)
#define poco_set_sun_len(pSA, len) (pSA)->sun_len = (len)
#endif
#else
@@ -343,7 +345,7 @@
#if !defined(s6_addr32)
- #if defined(POCO_OS_FAMILY_UNIX)
+ #if defined(POCO_OS_FAMILY_UNIX) || (POCO_OS == POCO_OS_HAIKU)
#if (POCO_OS == POCO_OS_SOLARIS)
#define s6_addr32 _S6_un._S6_u32
#else
@@ -359,7 +361,7 @@ namespace Net {
#if defined(POCO_OS_FAMILY_WINDOWS)
typedef WSABUF SocketBuf;
-#elif defined(POCO_OS_FAMILY_UNIX) // TODO: may need more refinement
+#elif defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU) // TODO: may need more refinement
typedef iovec SocketBuf;
#endif
@@ -374,7 +376,7 @@ struct AddressFamily
{
UNKNOWN = AF_UNSPEC,
/// Unspecified family
- #if defined(POCO_OS_FAMILY_UNIX)
+ #if defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
UNIX_LOCAL = AF_UNIX,
/// UNIX domain socket address family. Available on UNIX/POSIX platforms only.
#endif
diff --git a/Net/include/Poco/Net/SocketImpl.h b/Net/include/Poco/Net/SocketImpl.h
index 5d75e7c..3a2ed24 100644
--- a/Net/include/Poco/Net/SocketImpl.h
+++ b/Net/include/Poco/Net/SocketImpl.h
@@ -454,7 +454,7 @@ public:
void ioctl(poco_ioctl_request_t request, void* arg);
/// A wrapper for the ioctl system call.
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
int fcntl(poco_fcntl_request_t request);
/// A wrapper for the fcntl system call.
diff --git a/Net/src/DatagramSocketImpl.cpp b/Net/src/DatagramSocketImpl.cpp
index 9a4dfc1..bef76be 100644
--- a/Net/src/DatagramSocketImpl.cpp
+++ b/Net/src/DatagramSocketImpl.cpp
@@ -36,7 +36,7 @@ DatagramSocketImpl::DatagramSocketImpl(SocketAddress::Family family)
else if (family == SocketAddress::IPv6)
init(AF_INET6);
#endif
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || (POCO_OS == POCO_OS_HAIKU)
else if (family == SocketAddress::UNIX_LOCAL)
init(AF_UNIX);
#endif
diff --git a/Net/src/IPAddressImpl.cpp b/Net/src/IPAddressImpl.cpp
index b94b7e9..f019247 100644
--- a/Net/src/IPAddressImpl.cpp
+++ b/Net/src/IPAddressImpl.cpp
@@ -519,7 +519,7 @@ unsigned IPv6AddressImpl::prefixLength() const
{
unsigned bits = 0;
unsigned bitPos = 128;
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || (POCO_OS == POCO_OS_HAIKU)
for (int i = 3; i >= 0; --i)
{
unsigned addr = ntohl(_addr.s6_addr32[i]);
diff --git a/Net/src/MulticastSocket.cpp b/Net/src/MulticastSocket.cpp
index f624026..348ad63 100644
--- a/Net/src/MulticastSocket.cpp
+++ b/Net/src/MulticastSocket.cpp
@@ -53,7 +53,7 @@ MulticastSocket::MulticastSocket()
MulticastSocket::MulticastSocket(SocketAddress::Family family): DatagramSocket(family)
{
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || (POCO_OS == POCO_OS_HAIKU)
if (family == SocketAddress::UNIX_LOCAL)
throw Poco::InvalidArgumentException("Cannot create a MulticastSocket with UNIX_LOCAL socket");
#endif
diff --git a/Net/src/NetworkInterface.cpp b/Net/src/NetworkInterface.cpp
index 460250d..c8a3ad7 100644
--- a/Net/src/NetworkInterface.cpp
+++ b/Net/src/NetworkInterface.cpp
@@ -485,12 +485,16 @@ void NetworkInterfaceImpl::setRunning(bool running)
void NetworkInterfaceImpl::setFlags(short flags)
{
-#ifdef POCO_OS_FAMILY_UNIX
+#if defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
_broadcast = ((flags & IFF_BROADCAST) != 0);
_loopback = ((flags & IFF_LOOPBACK) != 0);
_multicast = ((flags & IFF_MULTICAST) != 0);
_pointToPoint = ((flags & IFF_POINTOPOINT) != 0);
+#if !(POCO_OS == POCO_OS_HAIKU)
_running = ((flags & IFF_RUNNING) != 0);
+#else
+ _running = ((flags & IFF_LINK) != 0);
+#endif
_up = ((flags & IFF_UP) != 0);
#endif
}
@@ -1322,7 +1326,7 @@ NetworkInterface::NetworkInterfaceList NetworkInterface::list()
} } // namespace Poco::Net
*/
-#elif defined(POCO_OS_FAMILY_BSD) || (POCO_OS == POCO_OS_QNX) || (POCO_OS == POCO_OS_SOLARIS)
+#elif defined(POCO_OS_FAMILY_BSD) || (POCO_OS == POCO_OS_QNX) || (POCO_OS == POCO_OS_SOLARIS) || (POCO_OS == POCO_OS_HAIKU)
//
// BSD variants, QNX(?) and Solaris
//
@@ -1349,14 +1353,18 @@ NetworkInterface::Type fromNative(u_char nativeType)
{
#ifndef POCO_NO_NET_IFTYPES
case IFT_ETHER: return NetworkInterface::NI_TYPE_ETHERNET_CSMACD;
+#ifndef POCO_OS_HAIKU
case IFT_ISO88025: return NetworkInterface::NI_TYPE_ISO88025_TOKENRING;
case IFT_FRELAY: return NetworkInterface::NI_TYPE_FRAMERELAY;
+#endif // POCO_OS_HAIKU
case IFT_PPP: return NetworkInterface::NI_TYPE_PPP;
case IFT_LOOP: return NetworkInterface::NI_TYPE_SOFTWARE_LOOPBACK;
+#ifndef POCO_OS_HAIKU
case IFT_ATM: return NetworkInterface::NI_TYPE_ATM;
#if (POCO_OS != POCO_OS_SOLARIS)
case IFT_IEEE1394: return NetworkInterface::NI_TYPE_IEEE1394;
#endif
+#endif // POCO_OS_HAIKU
#endif
default: return NetworkInterface::NI_TYPE_OTHER;
diff --git a/Net/src/Socket.cpp b/Net/src/Socket.cpp
index b848cb6..38d7854 100644
--- a/Net/src/Socket.cpp
+++ b/Net/src/Socket.cpp
@@ -334,7 +334,7 @@ void Socket::destroyBufVec(SocketBufVec& buf)
{
#if defined(POCO_OS_FAMILY_WINDOWS)
free(it->buf);
-#elif defined(POCO_OS_FAMILY_UNIX)
+#elif defined(POCO_OS_FAMILY_UNIX) || (POCO_OS == POCO_OS_HAIKU)
free(it->iov_base);
#endif
}
@@ -348,7 +348,7 @@ SocketBuf Socket::makeBuffer(void* buffer, std::size_t length)
#if defined(POCO_OS_FAMILY_WINDOWS)
ret.buf = reinterpret_cast<char*>(buffer);
ret.len = static_cast<ULONG>(length);
-#elif defined(POCO_OS_FAMILY_UNIX)
+#elif defined(POCO_OS_FAMILY_UNIX) || (POCO_OS == POCO_OS_HAIKU)
ret.iov_base = buffer;
ret.iov_len = length;
#else
diff --git a/Net/src/SocketAddress.cpp b/Net/src/SocketAddress.cpp
index 487f5ae..87477ab 100644
--- a/Net/src/SocketAddress.cpp
+++ b/Net/src/SocketAddress.cpp
@@ -33,7 +33,7 @@ using Poco::Net::Impl::IPv4SocketAddressImpl;
#ifdef POCO_HAVE_IPv6
using Poco::Net::Impl::IPv6SocketAddressImpl;
#endif
-#ifdef POCO_OS_FAMILY_UNIX
+#if defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
using Poco::Net::Impl::LocalSocketAddressImpl;
#endif
@@ -63,7 +63,7 @@ const SocketAddress::Family SocketAddress::IPv4;
#if defined(POCO_HAVE_IPv6)
const SocketAddress::Family SocketAddress::IPv6;
#endif
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
const SocketAddress::Family SocketAddress::UNIX_LOCAL;
#endif
#endif
@@ -143,7 +143,7 @@ SocketAddress::SocketAddress(const SocketAddress& socketAddress)
else if (socketAddress.family() == IPv6)
newIPv6(reinterpret_cast<const sockaddr_in6*>(socketAddress.addr()));
#endif
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
else if (socketAddress.family() == UNIX_LOCAL)
newLocal(reinterpret_cast<const sockaddr_un*>(socketAddress.addr()));
#endif
@@ -164,7 +164,7 @@ SocketAddress::SocketAddress(const struct sockaddr* sockAddr, poco_socklen_t len
else if (length == sizeof(struct sockaddr_in6) && sockAddr->sa_family == AF_INET6)
newIPv6(reinterpret_cast<const struct sockaddr_in6*>(sockAddr));
#endif
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
else if (length > 0 && length <= sizeof(struct sockaddr_un) && sockAddr->sa_family == AF_UNIX)
newLocal(reinterpret_cast<const sockaddr_un*>(sockAddr));
#endif
@@ -181,7 +181,7 @@ bool SocketAddress::operator < (const SocketAddress& socketAddress) const
{
if (family() < socketAddress.family()) return true;
if (family() > socketAddress.family()) return false;
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
if (family() == UNIX_LOCAL) return toString() < socketAddress.toString();
#endif
if (host() < socketAddress.host()) return true;
@@ -200,7 +200,7 @@ SocketAddress& SocketAddress::operator = (const SocketAddress& socketAddress)
else if (socketAddress.family() == IPv6)
newIPv6(reinterpret_cast<const sockaddr_in6*>(socketAddress.addr()));
#endif
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
else if (socketAddress.family() == UNIX_LOCAL)
newLocal(reinterpret_cast<const sockaddr_un*>(socketAddress.addr()));
#endif
@@ -325,7 +325,7 @@ void SocketAddress::init(Family fam, const std::string& hostAddress, Poco::UInt1
void SocketAddress::init(Family fam, const std::string& address)
{
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
if (fam == UNIX_LOCAL)
{
newLocal(address);
@@ -369,7 +369,7 @@ void SocketAddress::init(const std::string& hostAndPort)
std::string::const_iterator it = hostAndPort.begin();
std::string::const_iterator end = hostAndPort.end();
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
if (*it == '/')
{
newLocal(hostAndPort);
diff --git a/Net/src/SocketAddressImpl.cpp b/Net/src/SocketAddressImpl.cpp
index 5769017..ae10af3 100644
--- a/Net/src/SocketAddressImpl.cpp
+++ b/Net/src/SocketAddressImpl.cpp
@@ -127,7 +127,7 @@ std::string IPv6SocketAddressImpl::toString() const
#endif // POCO_HAVE_IPv6
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || (POCO_OS == POCO_OS_HAIKU)
//
diff --git a/Net/src/SocketImpl.cpp b/Net/src/SocketImpl.cpp
index 7bc99f3..b8d2d62 100644
--- a/Net/src/SocketImpl.cpp
+++ b/Net/src/SocketImpl.cpp
@@ -360,7 +360,7 @@ int SocketImpl::sendBytes(const SocketBufVec& buffers, int flags)
static_cast<DWORD>(flags), 0, 0);
if (rc == SOCKET_ERROR) error();
rc = sent;
-#elif defined(POCO_OS_FAMILY_UNIX)
+#elif defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
rc = writev(_sockfd, &buffers[0], static_cast<int>(buffers.size()));
#endif
}
@@ -410,7 +410,7 @@ int SocketImpl::receiveBytes(SocketBufVec& buffers, int flags)
&recvd, &dwFlags, 0, 0);
if (rc == SOCKET_ERROR) error();
rc = recvd;
-#elif defined(POCO_OS_FAMILY_UNIX)
+#elif defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
rc = readv(_sockfd, &buffers[0], static_cast<int>(buffers.size()));
#endif
}
@@ -491,7 +491,7 @@ int SocketImpl::sendTo(const SocketBufVec& buffers, const SocketAddress& address
address.addr(), address.length(), 0, 0);
if (rc == SOCKET_ERROR) error();
rc = sent;
-#elif defined(POCO_OS_FAMILY_UNIX)
+#elif defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
struct msghdr msgHdr;
msgHdr.msg_name = const_cast<sockaddr*>(address.addr());
msgHdr.msg_namelen = address.length();
@@ -577,7 +577,7 @@ int SocketImpl::receiveFrom(SocketBufVec& buffers, struct sockaddr** pSA, poco_s
&recvd, &dwFlags, *pSA, *ppSALen, 0, 0);
if (rc == SOCKET_ERROR) error();
rc = recvd;
-#elif defined(POCO_OS_FAMILY_UNIX)
+#elif defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
struct msghdr msgHdr;
msgHdr.msg_name = *pSA;
msgHdr.msg_namelen = **ppSALen;
@@ -1133,7 +1133,7 @@ bool SocketImpl::getBroadcast()
void SocketImpl::setBlocking(bool flag)
{
-#if !defined(POCO_OS_FAMILY_UNIX)
+#if !defined(POCO_OS_FAMILY_UNIX) || !(POCO_OS == POCO_OS_HAIKU)
int arg = flag ? 0 : 1;
ioctl(FIONBIO, arg);
#else
@@ -1205,7 +1205,7 @@ void SocketImpl::ioctl(poco_ioctl_request_t request, void* arg)
}
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
int SocketImpl::fcntl(poco_fcntl_request_t request)
{
int rc = ::fcntl(_sockfd, request);
@@ -1325,7 +1325,7 @@ void SocketImpl::error(int code, const std::string& arg)
throw NetException("Host is down", arg, code);
case POCO_EHOSTUNREACH:
throw NetException("No route to host", arg, code);
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_HAIKU)
case EPIPE:
throw IOException("Broken pipe", code);
case EBADF:
diff --git a/Net/src/StreamSocketImpl.cpp b/Net/src/StreamSocketImpl.cpp
index 6e86c8f..00973ba 100644
--- a/Net/src/StreamSocketImpl.cpp
+++ b/Net/src/StreamSocketImpl.cpp
@@ -34,7 +34,7 @@ StreamSocketImpl::StreamSocketImpl(SocketAddress::Family family)
else if (family == SocketAddress::IPv6)
init(AF_INET6);
#endif
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || (POCO_OS == POCO_OS_HAIKU)
else if (family == SocketAddress::UNIX_LOCAL)
init(AF_UNIX);
#endif
diff --git a/Net/src/TCPServer.cpp b/Net/src/TCPServer.cpp
index 71c91f7..65c9a3f 100644
--- a/Net/src/TCPServer.cpp
+++ b/Net/src/TCPServer.cpp
@@ -139,7 +139,7 @@ void TCPServer::run()
if (!_pConnectionFilter || _pConnectionFilter->accept(ss))
{
// enable nodelay per default: OSX really needs that
-#if defined(POCO_OS_FAMILY_UNIX)
+#if defined(POCO_OS_FAMILY_UNIX) || (POCO_OS == POCO_OS_HAIKU)
if (ss.address().family() != AddressFamily::UNIX_LOCAL)
#endif
{
--
2.42.1
From 7c44f86c1f5a117ee920feeb0b6821d3afe1936b Mon Sep 17 00:00:00 2001
From: Maite Gamper <victor@wenzeslaus.de>
Date: Fri, 28 Apr 2023 22:33:11 +0200
Subject: change an include for the debugger
diff --git a/Foundation/src/Debugger.cpp b/Foundation/src/Debugger.cpp
index 17ddbe1..1f9cf61 100644
--- a/Foundation/src/Debugger.cpp
+++ b/Foundation/src/Debugger.cpp
@@ -18,11 +18,11 @@
#include <cstdio>
#if defined(POCO_OS_FAMILY_WINDOWS)
#include "Poco/UnWindows.h"
+#elif defined(POCO_OS_FAMILY_BE)
+ #include <kernel/OS.h>
#elif defined(POCO_OS_FAMILY_UNIX) && !defined(POCO_VXWORKS)
#include <unistd.h>
#include <signal.h>
-#elif defined(POCO_OS_FAMILY_BE)
- #include <OS.h>
#endif
#include "Poco/UnicodeConverter.h"
--
2.42.1