From b883dd8a32b1b58910272ec4791aeb241914932e Mon Sep 17 00:00:00 2001 From: Gleb Popov <6yearold@gmail.com> Date: Thu, 22 Oct 2020 19:33:41 +0400 Subject: Implement SalGenericInstance::getOSVersion() for FreeBSD. Change-Id: I01f565bdfc3c46a94485a62cd0f249ce2002fe21 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104689 Reviewed-by: Noel Grandin Reviewed-by: Mike Kaganski Tested-by: Jenkins --- vcl/unx/generic/app/geninst.cxx | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'vcl') diff --git a/vcl/unx/generic/app/geninst.cxx b/vcl/unx/generic/app/geninst.cxx index b6611631b50d..c385ab57d587 100644 --- a/vcl/unx/generic/app/geninst.cxx +++ b/vcl/unx/generic/app/geninst.cxx @@ -22,6 +22,9 @@ #if defined(LINUX) # include #endif +#if defined(__FreeBSD__) +# include +#endif #include #if HAVE_FEATURE_OPENGL @@ -50,7 +53,6 @@ OUString SalGenericInstance::getOSVersion() { OUString aKernelVer = "unknown"; -// not so generic, but at least shared between all unix backend #if defined(LINUX) FILE* pVersion = fopen( "/proc/version", "r" ); if ( pVersion ) @@ -70,8 +72,26 @@ OUString SalGenericInstance::getOSVersion() } fclose( pVersion ); } -#endif return aKernelVer; +#elif defined(__FreeBSD__) + struct utsname stName; + if ( uname( &stName ) != 0 ) + return aKernelVer; + + sal_Int32 nDots = 0; + sal_Int32 nIndex = 0; + aKernelVer = OUString::createFromAscii( stName.release ); + while ( nIndex++ < aKernelVer.getLength() ) + { + const char c = stName.release[ nIndex ]; + if ( c == ' ' || c == '-' || ( c == '.' && nDots++ > 0 ) ) + break; + } + return OUString::createFromAscii( stName.sysname ) + " " + + aKernelVer.copy( 0, nIndex ); +#else + return aKernelVer; +#endif } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit v1.2.3