On Fri, 18 Sep 2026 09:04:01 +0200,
Brad Smith <[email protected]> wrote:
> 
> Here is a diff for Boost to fill in the other spots where
> getexecpath() is relevant.
> 
> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/devel/boost/Makefile,v
> retrieving revision 1.164
> diff -u -p -u -p -r1.164 Makefile
> --- Makefile  15 Sep 2026 10:21:13 -0000      1.164
> +++ Makefile  17 Sep 2026 06:50:59 -0000
> @@ -13,7 +13,7 @@ CATEGORIES= devel
>  SITES=               https://archives.boost.io/release/${VERSION}/source/
>  EXTRACT_SUFX=        .tar.bz2
>  
> -REVISION-main=       0
> +REVISION=    1
>  
>  SO_VERSION=  27.0
>  BOOST_LIBS=  boost_atomic-mt \
> Index: patches/patch-boost_dll_detail_posix_program_location_impl_hpp
> ===================================================================
> RCS file: 
> /cvs/ports/devel/boost/patches/patch-boost_dll_detail_posix_program_location_impl_hpp,v
> retrieving revision 1.1
> diff -u -p -u -p -r1.1 patch-boost_dll_detail_posix_program_location_impl_hpp
> --- patches/patch-boost_dll_detail_posix_program_location_impl_hpp    15 Sep 
> 2026 10:21:13 -0000      1.1
> +++ patches/patch-boost_dll_detail_posix_program_location_impl_hpp    17 Sep 
> 2026 06:50:59 -0000
> @@ -1,19 +1,28 @@
> -Add support of getexecpath()
> +Add support for getexecpath()
>  
>  Index: boost/dll/detail/posix/program_location_impl.hpp
>  --- boost/dll/detail/posix/program_location_impl.hpp.orig
>  +++ boost/dll/detail/posix/program_location_impl.hpp
> -@@ -96,6 +96,30 @@ namespace boost { namespace dll { namespace detail {
> +@@ -16,6 +16,10 @@
> + # pragma once
> + #endif
>   
> ++#if BOOST_OS_BSD_OPEN
> ++#include <sys/param.h>
> ++#endif
> ++
> + #if BOOST_OS_MACOS || BOOST_OS_IOS
>   
> + #include <string>
> +@@ -94,7 +98,27 @@ namespace boost { namespace dll { namespace detail {
> +     }
> + }}} // namespace boost::dll::detail
> + 
> ++#elif BOOST_OS_BSD_OPEN && BSD >= 202610
>   
> -+#elif BOOST_OS_BSD_OPEN
> -+
> -+#if !defined(BOOST_DLL_INTERFACE_UNIT)
>  +#include <errno.h>
>  +#include <limits.h>
>  +#include <unistd.h>
> -+#endif // !defined(BOOST_DLL_INTERFACE_UNIT)
>  +
>  +namespace boost { namespace dll { namespace detail {
>  +    inline boost::dll::fs::path program_location_impl(std::error_code& ec) {
> @@ -30,7 +39,6 @@ Index: boost/dll/detail/posix/program_lo
>  +        return boost::dll::fs::path(path);
>  +    }
>  +}}} // namespace boost::dll::detail
> -+
> + 
>   #elif BOOST_OS_BSD_NET
>   
> - namespace boost { namespace dll { namespace detail {
> Index: patches/patch-libs_log_src_process_name_cpp
> ===================================================================
> RCS file: patches/patch-libs_log_src_process_name_cpp
> diff -N patches/patch-libs_log_src_process_name_cpp
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-libs_log_src_process_name_cpp       17 Sep 2026 06:50:59 
> -0000
> @@ -0,0 +1,55 @@
> +Add support for getexecpath()
> +
> +Index: libs/log/src/process_name.cpp
> +--- libs/log/src/process_name.cpp.orig
> ++++ libs/log/src/process_name.cpp
> +@@ -26,6 +26,10 @@
> + #define PATH_MAX 1024
> + #endif
> + 
> ++#ifdef __OpenBSD__
> ++#include <sys/param.h>
> ++#endif
> ++
> + #if defined(BOOST_WINDOWS)
> + 
> + #include <windows.h>
> +@@ -138,6 +142,38 @@ BOOST_LOG_API std::string get_process_name()
> +         return 
> filesystem::read_symlink("/proc/curproc/file").filename().string();
> + 
> +     return std::to_string(getpid());
> ++}
> ++
> ++} // namespace aux
> ++
> ++BOOST_LOG_CLOSE_NAMESPACE // namespace log
> ++
> ++} // namespace boost
> ++
> ++#include <boost/log/detail/footer.hpp>
> ++
> ++#elif defined(__OpenBSD__) && BSD >= 202610
> ++
> ++#include <unistd.h>
> ++
> ++namespace boost {
> ++
> ++BOOST_LOG_OPEN_NAMESPACE
> ++
> ++namespace aux {
> ++
> ++//! The function returns the current process name
> ++BOOST_LOG_API std::string get_process_name()
> ++{
> ++    std::string buf(PATH_MAX, '\0');
> ++
> ++    if (getexecpath(&buf[0], buf.size()) == 0)
> ++    {
> ++        buf.resize(std::strlen(&buf[0]));
> ++        return filesystem::path(buf).filename().string();
> ++    }
> ++
> ++    return std::string();
> + }
> + 
> + } // namespace aux
> Index: patches/patch-tools_build_src_engine_pathsys_cpp
> ===================================================================
> RCS file: patches/patch-tools_build_src_engine_pathsys_cpp
> diff -N patches/patch-tools_build_src_engine_pathsys_cpp
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-tools_build_src_engine_pathsys_cpp  17 Sep 2026 06:50:59 
> -0000
> @@ -0,0 +1,28 @@
> +Add support for getexecpath()
> +
> +Index: tools/build/src/engine/pathsys.cpp
> +--- tools/build/src/engine/pathsys.cpp.orig
> ++++ tools/build/src/engine/pathsys.cpp
> +@@ -38,6 +38,9 @@
> + 
> + #include <algorithm>
> + 
> ++#ifdef __OpenBSD__
> ++#include <sys/param.h>
> ++#endif
> + 
> + /* Internal OS specific implementation details - have names ending with an
> +  * underscore and are expected to be implemented in an OS specific pathXXX.c
> +@@ -421,6 +424,12 @@ char * executable_path( char const * argv0 )
> +     size_t size = sizeof( buf );
> +     sysctl( mib, 4, buf, &size, NULL, 0 );
> +     return ( !size || size == sizeof( buf ) ) ? NULL : strndup( buf, size );
> ++}
> ++#elif defined(__OpenBSD__) && BSD >= 202610
> ++char * executable_path( char const * argv0 )
> ++{
> ++    char buf[ 1024 ];

Why do not use PATH_MAX here?

> ++    return getexecpath( buf, sizeof( buf ) ) == -1 ? NULL : strdup( buf );
> + }
> + #elif defined(__linux__) || defined(__CYGWIN__) || defined(__GNU__)
> + # include <unistd.h>
> 

-- 
wbr, Kirill

Reply via email to