diff --git a/exe.cpp b/exe.cpp index b389609b..7bfc07ca 100644 --- a/exe.cpp +++ b/exe.cpp @@ -53,6 +53,33 @@ retry: return boost::filesystem::path (resolved.data (), resolved.data () + written); } +#elif defined(PLATFORM_FREEBSD) + +#include "types.hpp" +#include "except.hpp" + +#include +#include + +boost::filesystem::path +util::image_path (void) +{ + int name[] = { + CTL_KERN, + KERN_PROC, + KERN_PROC_PATHNAME, + -1 + }; + + char data[1024]; + size_t len = sizeof (data); + + auto err = sysctl (name, elems (name), data, &len, nullptr, 0); + errno_error::try_code (err); + + return boost::filesystem::path (std::cbegin (data), std::cbegin (data) + len); +} + #elif defined(PLATFORM_WIN32) #include "except.hpp"