aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Thorpe <thorpej@me.com>2024-03-02 18:06:27 -0800
committerJason Thorpe <thorpej@me.com>2024-03-02 18:06:27 -0800
commit98d4c3d7c38c46b198bf2832c1b1a7ead9ed640d (patch)
treeb6b3bc64b6b19c5f9bc506697495ee8b8fa7a025
parent1a40ae75d4eebee9cce73a2c4d634fd42ed0110f (diff)
Tweak the FreeBSD version of proc_self_dirname() to work on NetBSD
and use it.
-rw-r--r--icetime/iceutil.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/icetime/iceutil.cc b/icetime/iceutil.cc
index 440b9a8..c9075a4 100644
--- a/icetime/iceutil.cc
+++ b/icetime/iceutil.cc
@@ -32,7 +32,7 @@
# include <unistd.h>
#endif
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__) || defined(__NetBSD__)
# include <sys/sysctl.h>
#endif
@@ -51,10 +51,14 @@ std::string proc_self_dirname()
buflen--;
return std::string(path, buflen);
}
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined(__NetBSD__)
std::string proc_self_dirname()
{
+#ifdef __NetBSD__
+ int mib[4] = {CTL_KERN, KERN_PROC_ARGS, getpid(), KERN_PROC_PATHNAME};
+#else
int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1};
+#endif
size_t buflen;
char *buffer;
std::string path;