Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package c++utilities for openSUSE:Factory checked in at 2026-09-28 10:44:40 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/c++utilities (Old) and /work/SRC/openSUSE:Factory/.c++utilities.new.383539 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "c++utilities" Mon Sep 28 10:44:40 2026 rev:3 rq:1380736 version:5.36.0 Changes: -------- --- /work/SRC/openSUSE:Factory/c++utilities/c++utilities.changes 2026-07-12 16:22:20.102417185 +0200 +++ /work/SRC/openSUSE:Factory/.c++utilities.new.383539/c++utilities.changes 2026-09-28 10:44:53.498028560 +0200 @@ -1,0 +2,11 @@ +Thu Sep 24 23:35:49 UTC 2026 - Jonatas Gonçalves <[email protected]> + +- Update to version 5.36.0 + * Add tests also under bin when building for Windows + * Improve finding test file path under Windows + * Remove arch-i686-w64-mingw32-qt6 preset + * Remove problematic link_directories from CMake config + * Bump minor version + * Update default C++ version to C++20 + +------------------------------------------------------------------- Old: ---- _scmsync.obsinfo cpp-utilities-5.34.2.tar.gz New: ---- cpp-utilities-5.36.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ c++utilities.spec ++++++ --- /var/tmp/diff_new_pack.qSIrKi/_old 2026-09-28 10:44:54.198057889 +0200 +++ /var/tmp/diff_new_pack.qSIrKi/_new 2026-09-28 10:44:54.199057930 +0200 @@ -20,7 +20,7 @@ %define soname 5 Name: %{reponame} -Version: 5.34.2 +Version: 5.36.0 Release: 0 Summary: Common C++ classes and routines License: GPL-2.0-or-later @@ -109,6 +109,9 @@ %cmake_install %endif +# Strip debugging symbols from the shared library +strip --strip-unneeded %{buildroot}%{_libdir}/lib%{reponame}.so.* + %post -n lib%{reponame}%{soname} -p /sbin/ldconfig %postun -n lib%{reponame}%{soname} -p /sbin/ldconfig ++++++ cpp-utilities-5.34.2.tar.gz -> cpp-utilities-5.36.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpp-utilities-5.34.2/CMakeLists.txt new/cpp-utilities-5.36.0/CMakeLists.txt --- old/cpp-utilities-5.34.2/CMakeLists.txt 2026-06-28 19:42:10.000000000 +0200 +++ new/cpp-utilities-5.36.0/CMakeLists.txt 2026-09-19 23:10:37.000000000 +0200 @@ -95,6 +95,7 @@ cmake/templates/Config.cmake.in cmake/templates/config.h.in cmake/templates/desktop.in + cmake/templates/env_init.cpp.in cmake/templates/appdata.xml.in cmake/templates/doxygen.in cmake/templates/sphinx-conf.py.in @@ -121,8 +122,8 @@ set(META_APP_URL "https://github.com/${META_APP_AUTHOR}/${META_PROJECT_NAME}") set(META_APP_DESCRIPTION "Useful C++ classes and routines such as argument parser, IO and conversion utilities") set(META_VERSION_MAJOR 5) -set(META_VERSION_MINOR 34) -set(META_VERSION_PATCH 2) +set(META_VERSION_MINOR 36) +set(META_VERSION_PATCH 0) # find required 3rd party libraries include(3rdParty) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpp-utilities-5.34.2/CMakePresets.json new/cpp-utilities-5.36.0/CMakePresets.json --- old/cpp-utilities-5.34.2/CMakePresets.json 2026-06-28 19:42:10.000000000 +0200 +++ new/cpp-utilities-5.36.0/CMakePresets.json 2026-09-19 23:10:37.000000000 +0200 @@ -303,13 +303,6 @@ } }, { - "name": "arch-i686-w64-mingw32-qt6", - "inherits": ["qt6", "arch-i686-w64-mingw32"], - "displayName": "Combination of qt6 and arch-i686-w64-mingw32", - "description": "See description of qt6 and arch-i686-w64-mingw32", - "binaryDir": "$env{BUILD_DIR}/${sourceDirName}/arch-i686-w64-mingw32-qt6" - }, - { "name": "arch-x86_64-w64-mingw32-qt6", "inherits": ["qt6", "arch-x86_64-w64-mingw32"], "displayName": "Combination of qt6 and arch-x86_64-w64-mingw32", @@ -678,7 +671,6 @@ {"name": "arch-x86_64-w64-mingw32", "configurePreset": "arch-x86_64-w64-mingw32"}, {"name": "arch-i686-w64-mingw32-static", "configurePreset": "arch-i686-w64-mingw32-static"}, {"name": "arch-x86_64-w64-mingw32-static", "configurePreset": "arch-x86_64-w64-mingw32-static"}, - {"name": "arch-i686-w64-mingw32-qt6", "configurePreset": "arch-i686-w64-mingw32-qt6"}, {"name": "arch-x86_64-w64-mingw32-qt6", "configurePreset": "arch-x86_64-w64-mingw32-qt6"}, {"name": "arch-i686-w64-mingw32-static-qt6", "configurePreset": "arch-i686-w64-mingw32-static-qt6"}, {"name": "arch-x86_64-w64-mingw32-static-qt6", "configurePreset": "arch-x86_64-w64-mingw32-static-qt6"}, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpp-utilities-5.34.2/README.md new/cpp-utilities-5.36.0/README.md --- old/cpp-utilities-5.34.2/README.md 2026-06-28 19:42:10.000000000 +0200 +++ new/cpp-utilities-5.36.0/README.md 2026-09-19 23:10:37.000000000 +0200 @@ -415,8 +415,11 @@ * The Android packages for the dependencies Boost, Qt, iconv, OpenSSL, and Kirigami are provided on the AUR and by my [PKGBUILDs](http://github.com/Martchus/PKGBUILDs) repo. * The latest Java version that is currently supported is version 17; see QTBUG-119223. -* Use `QT_QUICK_CONTROLS_STYLE=Material` and `QT_QUICK_CONTROLS_MOBILE=1` to test the Qt Quick GUI as it would - be shown under Android via a normal desktop build. +* Set `QT_QUICK_CONTROLS_STYLE=Material` if dynamic selection of the + [Qt Quick Controls style](https://doc.qt.io/qt-6/qtquickcontrols-styles.html) is enabled to test the Qt Quick GUI + as it would be shown under Android via a normal desktop build. +* Set `QT_QUICK_CONTROLS_MOBILE=1` for Kirigami apps to test the Qt Quick GUI as it would be shown under Android + via a normal desktop build. * One can open the Gradle project that is created within the build directory in Android Studio and run the app in the emulator. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpp-utilities-5.34.2/cmake/modules/3rdPartyFunctions.cmake new/cpp-utilities-5.36.0/cmake/modules/3rdPartyFunctions.cmake --- old/cpp-utilities-5.34.2/cmake/modules/3rdPartyFunctions.cmake 2026-06-28 19:42:10.000000000 +0200 +++ new/cpp-utilities-5.36.0/cmake/modules/3rdPartyFunctions.cmake 2026-09-19 23:10:37.000000000 +0200 @@ -155,8 +155,8 @@ CACHE PATH "whether to force usage of external iconv (rather than the using the one bundled with glibc)") if (NOT FORCE_EXTERNAL_ICONV) # check whether iconv exists in standard lib - include(CheckFunctionExists) - check_function_exists(iconv HAS_ICONV) + include(CheckSymbolExists) + check_symbol_exists(iconv_open iconv.h HAS_ICONV) endif () if (NOT FORCE_EXTERNAL_ICONV AND HAS_ICONV) message(STATUS "Using iconv from the standard library for target ${META_PROJECT_NAME}.") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpp-utilities-5.34.2/cmake/modules/AppTarget.cmake new/cpp-utilities-5.36.0/cmake/modules/AppTarget.cmake --- old/cpp-utilities-5.34.2/cmake/modules/AppTarget.cmake 2026-06-28 19:42:10.000000000 +0200 +++ new/cpp-utilities-5.36.0/cmake/modules/AppTarget.cmake 2026-09-19 23:10:37.000000000 +0200 @@ -15,6 +15,21 @@ ) endif () +include(AppUtilities) + +# allow injecting runtime env vars at build time by setting CMake cache variable +set("INJECT_ENV_LIST_DOC" + "Inject env vars to be available at runtime (KEY=VALUE:OVERWRITE, e.g. MY_VAR=hello:1;ANOTHER_VAR=test:0)") +set("INJECT_ENV_LIST" + "" + CACHE STRING "${INJECT_ENV_LIST_DOC}") +set("${META_PROJECT_VARNAME_UPPER}_INJECT_ENV_LIST" + "" + CACHE STRING "${INJECT_ENV_LIST_DOC} for ${META_PROJECT_NAME}") +if (INJECT_ENV_LIST) + generate_env_config(ENV_LIST "${INJECT_ENV_LIST};${${META_PROJECT_VARNAME_UPPER}_INJECT_ENV_LIST}" OUT_VAR SRC_FILES) +endif () + # define relevant files set(ALL_FILES ${HEADER_FILES} @@ -83,6 +98,11 @@ set_target_properties(${META_TARGET_NAME} PROPERTIES CXX_STANDARD "${META_CXX_STANDARD}") endif () +# output all libs and executables in one "bin" directory under Windows for easier execution as there is no RPATH +if (WIN32) + set_target_properties(${META_TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") +endif () + # set properties for macOS bundle and generate icon for macOS bundle if (GUI_TYPE STREQUAL "MACOSX_BUNDLE") set_target_properties( @@ -223,6 +243,4 @@ endif () endif () -include(AppUtilities) - set(TARGET_CONFIG_DONE YES) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpp-utilities-5.34.2/cmake/modules/AppUtilities.cmake new/cpp-utilities-5.36.0/cmake/modules/AppUtilities.cmake --- old/cpp-utilities-5.34.2/cmake/modules/AppUtilities.cmake 2026-06-28 19:42:10.000000000 +0200 +++ new/cpp-utilities-5.36.0/cmake/modules/AppUtilities.cmake 2026-09-19 23:10:37.000000000 +0200 @@ -128,3 +128,51 @@ add_appstream_file() endfunction () + +function (generate_env_config) + # parse arguments + set(ONE_VALUE_ARGS OUT_VAR) + set(MULTI_VALUE_ARGS ENV_LIST) + set(OPTIONAL_ARGS) + cmake_parse_arguments(ARGS "${OPTIONAL_ARGS}" "${ONE_VALUE_ARGS}" "${MULTI_VALUE_ARGS}" ${ARGN}) + + # make @ENV_VAR_LIST@ + set(ENV_VAR_LIST "") + foreach (PAIR ${ARGS_ENV_LIST}) + # extract key, VALUE, and overwrite flag format: KEY=VALUE:OVERWRITE + string(FIND "${PAIR}" "=" EQ_POS) + if (EQ_POS EQUAL -1) + message(FATAL_ERROR "Invalid env PAIR '${PAIR}': must be KEY=VALUE[:OVERWRITE]") + endif () + string(SUBSTRING "${PAIR}" 0 ${EQ_POS} KEY) + string(SUBSTRING "${PAIR}" ${EQ_POS} -1 REST) + string(SUBSTRING "${REST}" 1 -1 KEY_VALUE_REST) # skip '=' + string(FIND "${KEY_VALUE_REST}" ":" COL_POS) + if (COL_POS EQUAL -1) + set(VALUE "${KEY_VALUE_REST}") + set(OVERWRITE 0) # no overwrite specified, default to 0 + else () + string(SUBSTRING "${KEY_VALUE_REST}" 0 ${COL_POS} VALUE) + string(SUBSTRING "${KEY_VALUE_REST}" ${COL_POS} -1 REST2) + string(SUBSTRING "${REST2}" 1 -1 OVERWRITE) # skip ':' + endif () + + # escape backslashes and quotes in KEY and VALUE + string(REPLACE "\\" "\\\\" ESCAPED_VALUE "${VALUE}") + string(REPLACE "\"" "\\\"" ESCAPED_VALUE "${ESCAPED_VALUE}") + string(REPLACE "\\" "\\\\" ESCAPED_KEY "${KEY}") + string(REPLACE "\"" "\\\"" ESCAPED_KEY "${ESCAPED_KEY}") + + # append to @ENV_VAR_LIST@ + set(ENV_VAR_LIST "${ENV_VAR_LIST} EnvVar{\"${ESCAPED_KEY}\", \"${ESCAPED_VALUE}\", ${OVERWRITE}},\n") + endforeach () + + # generate env_init.cpp + find_template_file("env_init.cpp" CPP_UTILITIES ENV_INIT_TEMPLATE_FILE) + set(INIT_FILE "${CMAKE_CURRENT_BINARY_DIR}/resources/env_init.cpp") + configure_file("${ENV_INIT_TEMPLATE_FILE}" "${INIT_FILE}") + list(APPEND "${ARGS_OUT_VAR}" "${INIT_FILE}") + set("${ARGS_OUT_VAR}" + "${${ARGS_OUT_VAR}}" + PARENT_SCOPE) +endfunction () diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpp-utilities-5.34.2/cmake/modules/BasicConfig.cmake new/cpp-utilities-5.36.0/cmake/modules/BasicConfig.cmake --- old/cpp-utilities-5.34.2/cmake/modules/BasicConfig.cmake 2026-06-28 19:42:10.000000000 +0200 +++ new/cpp-utilities-5.36.0/cmake/modules/BasicConfig.cmake 2026-09-19 23:10:37.000000000 +0200 @@ -121,11 +121,7 @@ # set default CXX_STANDARD for all library, application and test targets if (NOT META_CXX_STANDARD) - if (MSVC) - set(META_CXX_STANDARD 20) # MSVC needs C++ 20 mode for designated initializers - else () - set(META_CXX_STANDARD 17) - endif () + set(META_CXX_STANDARD 20) endif () # set version to 0.0.0 if not specified explicitly @@ -372,7 +368,22 @@ if (NOT META_SRCDIR_REFS) set(META_SRCDIR_REFS "${CMAKE_CURRENT_SOURCE_DIR}") endif () -file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/srcdirref" "${META_SRCDIR_REFS}") +if (WIN32) + # under Windows all executables and libs are output in the same directory + set(PRESENT_SRCDIR_REFS "") + if (EXISTS "${CMAKE_BINARY_DIR}/bin/srcdirref") + file(STRINGS "${CMAKE_BINARY_DIR}/bin/srcdirref" PRESENT_SRCDIR_REFS) + endif () + if (NOT "${META_SRCDIR_REFS}" IN_LIST PRESENT_SRCDIR_REFS) + if (PRESENT_SRCDIR_REFS) + file(APPEND "${CMAKE_BINARY_DIR}/bin/srcdirref" "\n${META_SRCDIR_REFS}") + else () + file(APPEND "${CMAKE_BINARY_DIR}/bin/srcdirref" "${META_SRCDIR_REFS}") + endif () + endif () +else () + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/srcdirref" "${META_SRCDIR_REFS}") +endif () # -> ensure the directory "testfiles" exists in the build directory; tests of my projects use it by default to create working # copies of testfiles file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/testfiles") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpp-utilities-5.34.2/cmake/modules/LibraryTarget.cmake new/cpp-utilities-5.36.0/cmake/modules/LibraryTarget.cmake --- old/cpp-utilities-5.34.2/cmake/modules/LibraryTarget.cmake 2026-06-28 19:42:10.000000000 +0200 +++ new/cpp-utilities-5.36.0/cmake/modules/LibraryTarget.cmake 2026-09-19 23:10:37.000000000 +0200 @@ -217,9 +217,6 @@ if (NOT META_CXX_STANDARD STREQUAL "any") set_target_properties(${META_TARGET_NAME} PROPERTIES CXX_STANDARD "${META_CXX_STANDARD}") endif () - if (META_PLUGIN_CATEGORY) - set_target_properties(${META_TARGET_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${META_PLUGIN_CATEGORY}") - endif () # incorporate the SOVERSION into the library name for mingw-w64 targets set(TARGET_SUFFIX_FOR_PC "") @@ -260,6 +257,18 @@ target_compile_definitions(${META_TARGET_NAME}-headers INTERFACE "${META_PUBLIC_COMPILE_DEFINITIONS}") target_compile_options(${META_TARGET_NAME}-headers INTERFACE "${META_PUBLIC_COMPILE_OPTIONS}") endif () + + # set output directory + if (WIN32) + # output all libs and executables in one "bin" directory under Windows for easier execution as there is no RPATH + set_target_properties(${META_TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") + if (META_PLUGIN_CATEGORY) + set_target_properties(${META_TARGET_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY + "${CMAKE_BINARY_DIR}/bin/${META_PLUGIN_CATEGORY}") + endif () + elseif (META_PLUGIN_CATEGORY) + set_target_properties(${META_TARGET_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${META_PLUGIN_CATEGORY}") + endif () endif () # avoid warnings when including autogen files diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpp-utilities-5.34.2/cmake/modules/TestUtilities.cmake new/cpp-utilities-5.36.0/cmake/modules/TestUtilities.cmake --- old/cpp-utilities-5.34.2/cmake/modules/TestUtilities.cmake 2026-06-28 19:42:10.000000000 +0200 +++ new/cpp-utilities-5.36.0/cmake/modules/TestUtilities.cmake 2026-09-19 23:10:37.000000000 +0200 @@ -87,6 +87,11 @@ set_target_properties("${TEST_TARGET_NAME}" PROPERTIES CXX_STANDARD "${META_CXX_STANDARD}") endif () + # output all libs and executables in one "bin" directory under Windows for easier execution as there is no RPATH + if (WIN32) + set_target_properties(${TEST_TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") + endif () + # avoid warnings when including autogen files if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.27) set_target_properties("${TEST_TARGET_NAME}" PROPERTIES AUTOGEN_USE_SYSTEM_INCLUDE ON) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpp-utilities-5.34.2/cmake/templates/Config.cmake.in new/cpp-utilities-5.36.0/cmake/templates/Config.cmake.in --- old/cpp-utilities-5.34.2/cmake/templates/Config.cmake.in 2026-06-28 19:42:10.000000000 +0200 +++ new/cpp-utilities-5.36.0/cmake/templates/Config.cmake.in 2026-09-19 23:10:37.000000000 +0200 @@ -124,7 +124,6 @@ parse_arguments_for_use_functions(${ARGN}) # link against library (also "link" against header-only libs to get compile defs and interface link libs) - link_directories(${@META_PROJECT_VARNAME_UPPER@_LIB_DIR}) if (ARGS_ONLY_HEADERS) set(TARGET_NAME "${@META_PROJECT_VARNAME_UPPER@_LIB}-headers") else () diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpp-utilities-5.34.2/cmake/templates/env_init.cpp.in new/cpp-utilities-5.36.0/cmake/templates/env_init.cpp.in --- old/cpp-utilities-5.34.2/cmake/templates/env_init.cpp.in 1970-01-01 01:00:00.000000000 +0100 +++ new/cpp-utilities-5.36.0/cmake/templates/env_init.cpp.in 2026-09-19 23:10:37.000000000 +0200 @@ -0,0 +1,21 @@ +// Created via CMake from template env_init.cpp.in +// WARNING! Any changes to this file will be overwritten by the next CMake run! + +#include <array> +#include <cstdlib> + +struct EnvVar { + const char *name = nullptr; + const char *value = nullptr; + int overwrite = 0; +}; + +// List of environment variables to set +extern const auto envVars = [] { + static constexpr auto vars = std::array{ +@ENV_VAR_LIST@ }; + for (const auto &envVar : vars) { + setenv(envVar.name, envVar.value, envVar.overwrite); + } + return vars; +}(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpp-utilities-5.34.2/doc/buildvariables.md new/cpp-utilities-5.36.0/doc/buildvariables.md --- old/cpp-utilities-5.34.2/doc/buildvariables.md 2026-06-28 19:42:10.000000000 +0200 +++ new/cpp-utilities-5.36.0/doc/buildvariables.md 2026-09-19 23:10:37.000000000 +0200 @@ -235,7 +235,7 @@ version; the default is 0 * `META_PROJECT_TYPE=application/library/plugin/qtplugin`: specifies whether to build an application, a library, or a plugin -* `META_CXX_STANDARD=11/14/..`: specifies the C++ version; the default is 14 +* `META_CXX_STANDARD=11/14/…`: specifies the C++ version; the default is 20 * `META_NO_TIDY`: disables the availability of enabling formatting via `CLANG_FORMAT_ENABLED` for this project * `META_NO_INSTALL_TARGETS`: the project is not meant to be installed, e.g., a diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpp-utilities-5.34.2/tests/testutils.cpp new/cpp-utilities-5.36.0/tests/testutils.cpp --- old/cpp-utilities-5.34.2/tests/testutils.cpp 2026-06-28 19:42:10.000000000 +0200 +++ new/cpp-utilities-5.36.0/tests/testutils.cpp 2026-09-19 23:10:37.000000000 +0200 @@ -25,6 +25,12 @@ #include <unistd.h> #endif +#ifdef PLATFORM_WINDOWS +#ifdef CPP_UTILITIES_USE_STANDARD_FILESYSTEM +#include <filesystem> +#endif +#endif + #ifdef CPP_UTILITIES_BOOST_PROCESS #include <boost/asio/buffers_iterator.hpp> #include <boost/asio/io_context.hpp> @@ -707,15 +713,24 @@ #if defined(CPP_UTILITIES_USE_STANDARD_FILESYSTEM) && defined(PLATFORM_UNIX) try { binaryPath = std::filesystem::read_symlink("/proc/self/exe").parent_path(); - binaryPath += '/'; } catch (const std::filesystem::filesystem_error &e) { cerr << Phrases::Warning << "Unable to detect binary path for finding \"srcdirref\": " << e.what() << Phrases::EndFlush; } +#elif defined(CPP_UTILITIES_USE_STANDARD_FILESYSTEM) && defined(PLATFORM_WINDOWS) + auto binaryPathBuffer = std::vector<wchar_t>(); + auto copied = DWORD(); + do { + binaryPathBuffer.resize(binaryPathBuffer.size() + MAX_PATH); + copied = GetModuleFileNameW(0, binaryPathBuffer.data(), static_cast<DWORD>(binaryPathBuffer.size())); + } while (copied >= binaryPathBuffer.size()); + binaryPath = std::filesystem::path(binaryPathBuffer.begin(), binaryPathBuffer.begin() + copied, std::filesystem::path::native_format) + .parent_path() + .generic_string(); #endif - const auto srcdirrefPath = binaryPath + "srcdirref"; + const auto srcdirrefPath = binaryPath.empty() ? "srcdirref" : binaryPath + "/srcdirref"; try { // read "srcdirref" file which should contain the path of the source directory - const auto srcDirContent = readFile(srcdirrefPath, 2 * 1024); + const auto srcDirContent = readFile(srcdirrefPath, 1024 * 1024); if (srcDirContent.empty()) { cerr << Phrases::Warning << "The file \"srcdirref\" is empty." << Phrases::EndFlush; return res;
