forked from Alepha/Alepha
47 lines
840 B
C++
47 lines
840 B
C++
static_assert( __cplusplus > 2020'99 );
|
|
|
|
#pragma once
|
|
|
|
#include <Alepha/Alepha.h>
|
|
|
|
#if defined( __FreeBSD__ )
|
|
# include <sys/types.h>
|
|
# include <sys/sysctl.h>
|
|
#elif defined( _GNU_SOURCE )
|
|
#endif
|
|
|
|
#include <string>
|
|
|
|
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;
|
|
}
|