diff --git a/src/libpsl-native/CMakeLists.txt b/src/libpsl-native/CMakeLists.txt index ce0e198..b6f999d 100644 --- a/src/libpsl-native/CMakeLists.txt +++ b/src/libpsl-native/CMakeLists.txt @@ -5,7 +5,7 @@ project(PSL-NATIVE) set(CMAKE_BUILD_TYPE "Release") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Werror -fstack-protector-strong -fpie -D_FORTIFY_SOURCE=2") -if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") +if (${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR "FreeBSD") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,relro,-z,now") elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl") diff --git a/src/libpsl-native/src/getcurrentthreadid.cpp b/src/libpsl-native/src/getcurrentthreadid.cpp index 499589e..453635b 100644 --- a/src/libpsl-native/src/getcurrentthreadid.cpp +++ b/src/libpsl-native/src/getcurrentthreadid.cpp @@ -8,6 +8,10 @@ #include #include +#if __FreeBSD__ +#include +#endif + pid_t GetCurrentThreadId() { pid_t tid = 0; @@ -17,6 +21,8 @@ pid_t GetCurrentThreadId() uint64_t tid64; pthread_threadid_np(NULL, &tid64); tid = (pid_t)tid64; +#elif defined(__FreeBSD__) + tid = pthread_getthreadid_np(); #endif return tid; } diff --git a/src/libpsl-native/src/getppid.cpp b/src/libpsl-native/src/getppid.cpp index a20bc90..d67e2df 100644 --- a/src/libpsl-native/src/getppid.cpp +++ b/src/libpsl-native/src/getppid.cpp @@ -13,6 +13,11 @@ #include #endif +#if __FreeBSD__ +#include +#include +#endif + //! @brief GetPPid returns the parent process id for a process //! //! GetPPid @@ -26,20 +31,20 @@ //! pid_t GetPPid(pid_t pid) { - -#if defined(__APPLE__) && defined(__MACH__) - +#if defined (__APPLE__) && defined(__MACH__) || defined(__FreeBSD__) const pid_t PIDUnknown = UINT_MAX; struct kinfo_proc info; size_t length = sizeof(struct kinfo_proc); - int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, pid}; + int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, pid }; if (sysctl(mib, 4, &info, &length, NULL, 0) < 0) return PIDUnknown; if (length == 0) return PIDUnknown; - +#if defined (__APPLE__) && defined(__MACH__) return info.kp_eproc.e_ppid; - +#elif defined(__FreeBSD__) + return info.ki_ppid; +#endif #else return UINT_MAX; diff --git a/src/libpsl-native/src/getuserfrompid.cpp b/src/libpsl-native/src/getuserfrompid.cpp index 63478a2..15d79a6 100644 --- a/src/libpsl-native/src/getuserfrompid.cpp +++ b/src/libpsl-native/src/getuserfrompid.cpp @@ -21,6 +21,7 @@ #if __FreeBSD__ #include +#include #endif char* GetUserFromPid(pid_t pid) diff --git a/src/libpsl-native/test/test-getcommonlstat.cpp b/src/libpsl-native/test/test-getcommonlstat.cpp index ad73e9a..d7206c1 100644 --- a/src/libpsl-native/test/test-getcommonlstat.cpp +++ b/src/libpsl-native/test/test-getcommonlstat.cpp @@ -39,7 +39,7 @@ TEST(GetCommonLStat, GetOwnerIdOfRoot) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %u /", "r"); #else p = popen("/usr/bin/stat -c %u /", "r"); @@ -56,7 +56,7 @@ TEST(GetCommonLStat, GetGroupId) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %g /", "r"); #else p = popen("/usr/bin/stat -c %g /", "r"); @@ -73,7 +73,7 @@ TEST(GetCommonLStat, GetInodeNumber) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %i /", "r"); #else p = popen("/usr/bin/stat -c %i /", "r"); @@ -90,7 +90,7 @@ TEST(GetCommonLStat, GetSize) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %z /", "r"); #else p = popen("/usr/bin/stat -c %s /", "r"); @@ -107,7 +107,7 @@ TEST(GetCommonLStat, GetBlockSize) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %k /", "r"); #else p = popen("/usr/bin/stat -c %o /", "r"); @@ -124,7 +124,7 @@ TEST(GetCommonLStat, GetBlockCount) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %b /", "r"); #else p = popen("/usr/bin/stat -c %b /", "r"); @@ -141,7 +141,7 @@ TEST(GetCommonLStat, GetLinkCount) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %l /", "r"); #else p = popen("/usr/bin/stat -c %h /", "r"); @@ -158,7 +158,7 @@ TEST(GetCommonLStat, GetDeviceId) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %d /", "r"); #else p = popen("/usr/bin/stat -c %d /", "r"); @@ -175,7 +175,7 @@ TEST(GetCommonLStat, GetATime) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %a /", "r"); #else p = popen("/usr/bin/stat -c %X /", "r"); @@ -192,7 +192,7 @@ TEST(GetCommonLStat, GetMTime) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %m /", "r"); #else p = popen("/usr/bin/stat -c %Y /", "r"); @@ -209,7 +209,7 @@ TEST(GetCommonLStat, GetCTime) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %c /", "r"); #else p = popen("/usr/bin/stat -c %Z /", "r"); diff --git a/src/libpsl-native/test/test-getcommonstat.cpp b/src/libpsl-native/test/test-getcommonstat.cpp index 7407fc3..70279c9 100644 --- a/src/libpsl-native/test/test-getcommonstat.cpp +++ b/src/libpsl-native/test/test-getcommonstat.cpp @@ -41,7 +41,7 @@ TEST(GetCommonStat, GetOwnerIdOfRoot) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %u /", "r"); #else p = popen("/usr/bin/stat -c %u /", "r"); @@ -58,7 +58,7 @@ TEST(GetCommonStat, GetGroupId) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %g /", "r"); #else p = popen("/usr/bin/stat -c %g /", "r"); @@ -75,7 +75,7 @@ TEST(GetCommonStat, GetInodeNumber) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %i /", "r"); #else p = popen("/usr/bin/stat -c %i /", "r"); @@ -93,7 +93,7 @@ TEST(GetCommonStat, GetMode) FILE *p; CommonStat cs; unsigned int mode = -1; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %p /", "r"); int result = fscanf(p, "%o", &mode); #else @@ -110,7 +110,7 @@ TEST(GetCommonStat, GetSize) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %z /", "r"); #else p = popen("/usr/bin/stat -c %s /", "r"); @@ -127,7 +127,7 @@ TEST(GetCommonStat, GetBlockSize) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %k /", "r"); #else p = popen("/usr/bin/stat -c %o /", "r"); @@ -144,7 +144,7 @@ TEST(GetCommonStat, GetBlockCount) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %b /", "r"); #else p = popen("/usr/bin/stat -c %b /", "r"); @@ -161,7 +161,7 @@ TEST(GetCommonStat, GetLinkCount) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %l /", "r"); #else p = popen("/usr/bin/stat -c %h /", "r"); @@ -178,7 +178,7 @@ TEST(GetCommonStat, GetDeviceId) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %d /", "r"); #else p = popen("/usr/bin/stat -c %d /", "r"); @@ -195,7 +195,7 @@ TEST(GetCommonStat, GetATime) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %a /", "r"); #else p = popen("/usr/bin/stat -c %X /", "r"); @@ -212,7 +212,7 @@ TEST(GetCommonStat, GetMTime) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %m /", "r"); #else p = popen("/usr/bin/stat -c %Y /", "r"); @@ -229,7 +229,7 @@ TEST(GetCommonStat, GetCTime) { FILE *p; CommonStat cs; -#if defined (__APPLE__) +#if defined (__APPLE__) || defined(__FreeBSD__) p = popen("/usr/bin/stat -f %c /", "r"); #else p = popen("/usr/bin/stat -c %Z /", "r");