static_assert( __cplusplus > 2020'99 ); #pragma once #include #if defined( __FreeBSD__ ) # include # include #elif defined( _GNU_SOURCE ) #endif #include namespace Alepha::Hydrogen::System ::detail:: programName_m { inline namespace exports { inline std::string programName() { #if defined( __FreeBSD__ ) int mib[] { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1, }; char buf[ 4096 ]; std::size_t cb = sizeof( buf ); ::sysctl( mib, 4, buf, &cb, nullptr, 0); return buf; #elif defined( _GNU_SOURCE ) return ::program_invocation_short_name; #else #error "Not supported." #endif } } } namespace Alepha::Hydrogen::System::inline exports::inline programName_m { using namespace detail::programName_m::exports; }