diff --git a/editors/imhex/Makefile b/editors/imhex/Makefile index 395c44c03bf3..41e96e621458 100644 --- a/editors/imhex/Makefile +++ b/editors/imhex/Makefile @@ -1,99 +1,103 @@ PORTNAME= imhex -PORTVERSION= 1.23.1 +PORTVERSION= 1.24.3 DISTVERSIONPREFIX= v CATEGORIES= editors MASTER_SITES= https://git.sr.ht/~danyspin97/xdgpp/blob/f01f810714443d0f10c333d4d1d9c0383be41375/:xdg DISTFILES= xdg.hpp:xdg DIST_SUBDIR= imhex MAINTAINER= nobutaka@FreeBSD.org COMMENT= Hex editor for reverse engineers and programmers WWW= https://github.com/WerWolv/ImHex LICENSE= GPLv2 LICENSE_FILE= ${WRKSRC}/LICENSE NOT_FOR_ARCHS= i386 powerpc NOT_FOR_ARCHS_REASON= __uint128_t and __int128_t are not supported EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX} \ btzy-nativefiledialog-extended-${GH_TAG_NATIVEFILEDIALOG}_GH0${EXTRACT_SUFX} \ capstone-engine-capstone-${GH_TAG_CAPSTONE}_GH0${EXTRACT_SUFX} \ CLIUtils-CLI11-${GH_TAG_CLI11}_GH0${EXTRACT_SUFX} \ fmtlib-fmt-${GH_TAG_FMT}_GH0${EXTRACT_SUFX} \ + josuttis-jthread-${GH_TAG_JTHREAD}_GH0${EXTRACT_SUFX} \ VirusTotal-yara-${GH_TAG_YARA}_GH0${EXTRACT_SUFX} \ WerWolv-libromfs-${GH_TAG_LIBROMFS}_GH0${EXTRACT_SUFX} \ WerWolv-ImHex-Patterns-${GH_TAG_IMHEX_PATTERNS}_GH0${EXTRACT_SUFX} \ WerWolv-PatternLanguage-${GH_TAG_PATTERN_LANGUAGE}_GH0${EXTRACT_SUFX} BUILD_DEPENDS= glm>0:math/glm \ nlohmann-json>0:devel/nlohmann-json \ ${LOCALBASE}/include/range/v3/range.hpp:devel/range-v3 LIB_DEPENDS= libcurl.so:ftp/curl \ - libfreetype.so:print/freetype2 \ libglfw.so:graphics/glfw \ + libfreetype.so:print/freetype2 \ libharfbuzz.so:print/harfbuzz \ libmbedtls.so:security/mbedtls \ libtre.so:textproc/libtre USES= cmake gl gnome pkgconfig python:3.8+ xorg USE_GL= gl USE_GNOME= cairo gdkpixbuf2 gtk30 USE_XORG= x11 xcb xau xdmcp USE_GITHUB= yes GH_ACCOUNT= WerWolv GH_PROJECT= ImHex GH_TUPLE= btzy:nativefiledialog-extended:${GH_TAG_NATIVEFILEDIALOG}:nativefiledialog \ capstone-engine:capstone:${GH_TAG_CAPSTONE}:capstone \ CLIUtils:CLI11:${GH_TAG_CLI11}:cli11 \ fmtlib:fmt:${GH_TAG_FMT}:fmt \ + josuttis:jthread:${GH_TAG_JTHREAD}:jthread \ VirusTotal:yara:${GH_TAG_YARA}:yara \ WerWolv:ImHex-Patterns:${GH_TAG_IMHEX_PATTERNS}:imhex_patterns \ WerWolv:PatternLanguage:${GH_TAG_PATTERN_LANGUAGE}:pattern_language \ WerWolv:libromfs:${GH_TAG_LIBROMFS}:libromfs GH_TAG_CAPSTONE= d5141c0 GH_TAG_CLI11= faea921 -GH_TAG_FMT= c4ee726 -GH_TAG_IMHEX_PATTERNS= 5481c2f -GH_TAG_LIBROMFS= 8c8556d -GH_TAG_NATIVEFILEDIALOG= 6967d28 -GH_TAG_PATTERN_LANGUAGE= 143628a -GH_TAG_YARA= d5a7565 +GH_TAG_FMT= a337011 +GH_TAG_IMHEX_PATTERNS= 8e70a55 +GH_TAG_JTHREAD= 0fa8d39 +GH_TAG_LIBROMFS= 8efe4c4 +GH_TAG_NATIVEFILEDIALOG= d4df2b6 +GH_TAG_PATTERN_LANGUAGE= ab7d738 +GH_TAG_YARA= ba94b4f CMAKE_ARGS= -DUSE_SYSTEM_CURL=ON -DUSE_SYSTEM_NLOHMANN_JSON=ON \ -DIMHEX_STRIP_RELEASE=OFF -DIMHEX_PLUGINS_IN_SHARE=ON \ -DIMHEX_OFFLINE_BUILD=ON PORTDOCS= README.md OPTIONS_DEFINE= DOCS NLS NLS_USES= gettext .include OSMAJOR=${OSVERSION:C/([0-9]*)[0-9]{5}/\1/} # Before LLVM13 import to the base system .if (${OSMAJOR} == 12 && ${OSVERSION} < 1203505) \ || (${OSMAJOR} == 14 && ${OSVERSION} < 1400042) IGNORE= will not build due to C++20 API functions unavailable in old libc++ .endif post-extract: ${CP} ${DISTDIR}/${DIST_SUBDIR}/xdg.hpp ${WRKSRC}/lib/external/xdgpp ${CP} -R ${WRKSRC_capstone}/* ${WRKSRC}/lib/external/capstone ${CP} -R ${WRKSRC_fmt}/* ${WRKSRC}/lib/external/fmt + ${CP} -R ${WRKSRC_jthread}/source/*.hpp ${WRKSRC}/lib/libimhex/include ${CP} -R ${WRKSRC_libromfs}/* ${WRKSRC}/lib/external/libromfs ${CP} -R ${WRKSRC_nativefiledialog}/* ${WRKSRC}/lib/external/nativefiledialog ${CP} -R ${WRKSRC_pattern_language}/* ${WRKSRC}/lib/external/pattern_language ${CP} -R ${WRKSRC_cli11}/* ${WRKSRC}/lib/external/pattern_language/external/cli11 ${CP} -R ${WRKSRC_yara}/* ${WRKSRC}/lib/external/yara/yara ${MKDIR} ${WRKDIR}/.build/_deps/imhex_patterns_src ${CP} -R ${WRKSRC_imhex_patterns}/* ${WRKDIR}/.build/_deps/imhex_patterns_src post-install-DOCS-on: ${MKDIR} ${STAGEDIR}${DOCSDIR} ${INSTALL_DATA} ${WRKSRC}/README.md ${STAGEDIR}${DOCSDIR} .include diff --git a/editors/imhex/distinfo b/editors/imhex/distinfo index 7a9b808d2e73..58cfaee19cbf 100644 --- a/editors/imhex/distinfo +++ b/editors/imhex/distinfo @@ -1,21 +1,23 @@ -TIMESTAMP = 1663402501 +TIMESTAMP = 1665857378 SHA256 (imhex/xdg.hpp) = 2e08ce74adb71ff9b9aa9e1c999733fccd4b00967b9cf0c0e51dbf049392a9ec SIZE (imhex/xdg.hpp) = 7674 -SHA256 (imhex/WerWolv-ImHex-v1.23.1_GH0.tar.gz) = 37bd49d0a8f9b7785106b15f829965affb6235199ea0763397af4fe97b3a1682 -SIZE (imhex/WerWolv-ImHex-v1.23.1_GH0.tar.gz) = 10927633 -SHA256 (imhex/btzy-nativefiledialog-extended-6967d28_GH0.tar.gz) = 67575871aca25f6b448831183851656d95cee5af773ac7b2a1f7f887f6d874d6 -SIZE (imhex/btzy-nativefiledialog-extended-6967d28_GH0.tar.gz) = 412145 +SHA256 (imhex/WerWolv-ImHex-v1.24.3_GH0.tar.gz) = 5d6780b2d4c3b92bbe7619dcae34138072a8ed9c540523d25760da237f01d279 +SIZE (imhex/WerWolv-ImHex-v1.24.3_GH0.tar.gz) = 11126282 +SHA256 (imhex/btzy-nativefiledialog-extended-d4df2b6_GH0.tar.gz) = a0440e52bd25b8f85cb25ef68fe19ca39b4b0fad39358d5a501b317cad9d0f69 +SIZE (imhex/btzy-nativefiledialog-extended-d4df2b6_GH0.tar.gz) = 412249 SHA256 (imhex/capstone-engine-capstone-d5141c0_GH0.tar.gz) = 435d40757928fa73dec19c6d0fbf171bd76341391c8525ce1286927dab44c3e7 SIZE (imhex/capstone-engine-capstone-d5141c0_GH0.tar.gz) = 5761632 SHA256 (imhex/CLIUtils-CLI11-faea921_GH0.tar.gz) = 84773ee9577e6b719e5a84ad62cc381cf3027756690e1db839eaa50bcafc6c78 SIZE (imhex/CLIUtils-CLI11-faea921_GH0.tar.gz) = 299718 -SHA256 (imhex/fmtlib-fmt-c4ee726_GH0.tar.gz) = 05ba66b0a9ed040e5cfb07e845a0aa61fdbbb9a0cbd22a1860a303e8cbf343e4 -SIZE (imhex/fmtlib-fmt-c4ee726_GH0.tar.gz) = 833672 -SHA256 (imhex/VirusTotal-yara-d5a7565_GH0.tar.gz) = 1c908b160f2432a25aefc1e94147949d24bcb79c1412a2be840f767531f3ff7e -SIZE (imhex/VirusTotal-yara-d5a7565_GH0.tar.gz) = 1287317 -SHA256 (imhex/WerWolv-ImHex-Patterns-5481c2f_GH0.tar.gz) = cfa2c76fb0986e406a3541202df4b7e2e5b8cf6bcf5fb14d6605efb1ca32f6bc -SIZE (imhex/WerWolv-ImHex-Patterns-5481c2f_GH0.tar.gz) = 5171762 -SHA256 (imhex/WerWolv-PatternLanguage-143628a_GH0.tar.gz) = 4d284923d1fec8bb942145365cd57e0b33e786c5db2cd7d3d133be417a516070 -SIZE (imhex/WerWolv-PatternLanguage-143628a_GH0.tar.gz) = 288257 -SHA256 (imhex/WerWolv-libromfs-8c8556d_GH0.tar.gz) = 46364edcf21a4cbe7c48094e755751aa03704a9c1efe3be5add5f52a15690474 -SIZE (imhex/WerWolv-libromfs-8c8556d_GH0.tar.gz) = 3868 +SHA256 (imhex/fmtlib-fmt-a337011_GH0.tar.gz) = ba190d69d8b7994ef2ceb533c56bc34feec296fef2f87efab4cfb981a04601cf +SIZE (imhex/fmtlib-fmt-a337011_GH0.tar.gz) = 837936 +SHA256 (imhex/josuttis-jthread-0fa8d39_GH0.tar.gz) = ccd9c871dc2da9611e6d0cba5fc859cec9b233541be7501e5cef9eaa367e1280 +SIZE (imhex/josuttis-jthread-0fa8d39_GH0.tar.gz) = 4450456 +SHA256 (imhex/VirusTotal-yara-ba94b4f_GH0.tar.gz) = 4c81120bff451a55deaa23b48155d3eb35955ce11a1d76fbfcbbe2c2e33770b9 +SIZE (imhex/VirusTotal-yara-ba94b4f_GH0.tar.gz) = 1288534 +SHA256 (imhex/WerWolv-ImHex-Patterns-8e70a55_GH0.tar.gz) = 8d283e8806412d4083f9da9c7b1ff499bc7374394397bd7f270ba11277cd6df2 +SIZE (imhex/WerWolv-ImHex-Patterns-8e70a55_GH0.tar.gz) = 5176390 +SHA256 (imhex/WerWolv-PatternLanguage-ab7d738_GH0.tar.gz) = d7b5844a21622265a1ecd5184650177595cfa40a7bb17cb44f2104f29dc38ac5 +SIZE (imhex/WerWolv-PatternLanguage-ab7d738_GH0.tar.gz) = 415301 +SHA256 (imhex/WerWolv-libromfs-8efe4c4_GH0.tar.gz) = cc538b4add2a451c7c9be4237717b3231171cce56db51a956eaffd85d7f5af5b +SIZE (imhex/WerWolv-libromfs-8efe4c4_GH0.tar.gz) = 4078 diff --git a/editors/imhex/files/patch-CMakeLists.txt b/editors/imhex/files/patch-CMakeLists.txt index 9ad03de1dafd..290002b6d217 100644 --- a/editors/imhex/files/patch-CMakeLists.txt +++ b/editors/imhex/files/patch-CMakeLists.txt @@ -1,11 +1,11 @@ ---- CMakeLists.txt.orig 2022-09-03 22:05:27 UTC +--- CMakeLists.txt.orig 2022-10-08 08:03:47 UTC +++ CMakeLists.txt -@@ -22,8 +22,6 @@ project(imhex VERSION ${IMHEX_VERSION}) +@@ -23,8 +23,6 @@ project(imhex VERSION ${IMHEX_VERSION}) # Make sure project is configured correctly setDefaultBuiltTypeIfUnset() -detectBadClone() -verifyCompiler() # List plugin names here. Project name must match folder name set(PLUGINS diff --git a/editors/imhex/files/patch-cmake_build__helpers.cmake b/editors/imhex/files/patch-cmake_build__helpers.cmake index 0ebdb118cf2a..818003a32010 100644 --- a/editors/imhex/files/patch-cmake_build__helpers.cmake +++ b/editors/imhex/files/patch-cmake_build__helpers.cmake @@ -1,37 +1,37 @@ ---- cmake/build_helpers.cmake.orig 2022-09-15 12:40:14 UTC +--- cmake/build_helpers.cmake.orig 2022-10-08 08:03:47 UTC +++ cmake/build_helpers.cmake @@ -383,24 +383,15 @@ function(downloadImHexPatternsFiles dest) else () set(PATTERNS_BRANCH ImHex-v${IMHEX_VERSION}) endif () - - FetchContent_Declare( - imhex_patterns - GIT_REPOSITORY https://github.com/WerWolv/ImHex-Patterns.git - GIT_TAG master - ) - - FetchContent_Populate(imhex_patterns) - else () # Maybe patterns are cloned to a subdirectory - set(imhex_patterns_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ImHex-Patterns") + set(imhex_patterns_SOURCE_DIR "${CMAKE_BINARY_DIR}/_deps/imhex_patterns_src") endif () if (EXISTS ${imhex_patterns_SOURCE_DIR}) set(PATTERNS_FOLDERS_TO_INSTALL constants encodings includes patterns magic) foreach (FOLDER ${PATTERNS_FOLDERS_TO_INSTALL}) - install(DIRECTORY "${imhex_patterns_SOURCE_DIR}/${FOLDER}" DESTINATION ${dest}) + install(DIRECTORY "${imhex_patterns_SOURCE_DIR}/${FOLDER}" DESTINATION "share/imhex/") endforeach () endif () @@ -408,7 +399,6 @@ endfunction() macro(setupCompilerWarnings target) set(IMHEX_COMMON_FLAGS "-Wall -Wextra -Werror") -- set(IMHEX_C_FLAGS "${IMHEX_COMMON_FLAGS} -Wno-restrict -Wno-stringop-overread") +- set(IMHEX_C_FLAGS "${IMHEX_COMMON_FLAGS} -Wno-restrict -Wno-stringop-overread -Wno-stringop-overflow") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${IMHEX_C_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${IMHEX_C_FLAGS}") diff --git a/editors/imhex/files/patch-lib_external_pattern__language_lib_include_pl_core_ast_ast__node__bitfield.hpp b/editors/imhex/files/patch-lib_external_pattern__language_lib_include_pl_core_ast_ast__node__bitfield.hpp deleted file mode 100644 index cc4198d9685b..000000000000 --- a/editors/imhex/files/patch-lib_external_pattern__language_lib_include_pl_core_ast_ast__node__bitfield.hpp +++ /dev/null @@ -1,11 +0,0 @@ ---- lib/external/pattern_language/lib/include/pl/core/ast/ast_node_bitfield.hpp.orig 2022-08-18 14:31:33 UTC -+++ lib/external/pattern_language/lib/include/pl/core/ast/ast_node_bitfield.hpp -@@ -86,7 +86,6 @@ namespace pl::core::ast { - - private: - std::vector> m_entries; -- mutable size_t m_bitOffset = 0x00; - }; - - } -\ No newline at end of file diff --git a/editors/imhex/files/patch-lib_external_pattern__language_lib_include_pl_core_token.hpp b/editors/imhex/files/patch-lib_external_pattern__language_lib_include_pl_core_token.hpp index 674688dd1b86..6f6e219eae3d 100644 --- a/editors/imhex/files/patch-lib_external_pattern__language_lib_include_pl_core_token.hpp +++ b/editors/imhex/files/patch-lib_external_pattern__language_lib_include_pl_core_token.hpp @@ -1,244 +1,244 @@ ---- lib/external/pattern_language/lib/include/pl/core/token.hpp.orig 2022-09-16 15:30:16 UTC +--- lib/external/pattern_language/lib/include/pl/core/token.hpp.orig 2022-10-15 20:26:43 UTC +++ lib/external/pattern_language/lib/include/pl/core/token.hpp @@ -148,9 +148,9 @@ namespace pl::core { using Literal = std::variant; using ValueTypes = std::variant; + // These changes are necessary for Clang + inline Token(Type type, auto value, u32 line, u32 column) : type(type), value(std::move(value)), line(line), column(column) {} - constexpr Token(Type type, auto value, u32 line, u32 column) : type(type), value(std::move(value)), line(line), column(column) {} - [[nodiscard]] constexpr static inline bool isInteger(const ValueType &type) { return isUnsigned(type) || isSigned(type); } -@@ -194,133 +194,133 @@ namespace pl::core { +@@ -206,133 +206,133 @@ namespace pl::core { namespace tkn { - constexpr inline Token createToken(const core::Token::Type type, const core::Token::ValueTypes &value) { + inline Token createToken(const core::Token::Type type, const core::Token::ValueTypes &value) { return { type, value, 1, 1 }; } namespace Keyword { - constexpr auto If = createToken(core::Token::Type::Keyword, Token::Keyword::If); - constexpr auto Else = createToken(core::Token::Type::Keyword, Token::Keyword::Else); - constexpr auto While = createToken(core::Token::Type::Keyword, Token::Keyword::While); - constexpr auto For = createToken(core::Token::Type::Keyword, Token::Keyword::For); - constexpr auto Return = createToken(core::Token::Type::Keyword, Token::Keyword::Return); - constexpr auto Break = createToken(core::Token::Type::Keyword, Token::Keyword::Break); - constexpr auto Continue = createToken(core::Token::Type::Keyword, Token::Keyword::Continue); - constexpr auto Struct = createToken(core::Token::Type::Keyword, Token::Keyword::Struct); - constexpr auto Enum = createToken(core::Token::Type::Keyword, Token::Keyword::Enum); - constexpr auto Union = createToken(core::Token::Type::Keyword, Token::Keyword::Union); - constexpr auto Function = createToken(core::Token::Type::Keyword, Token::Keyword::Function); - constexpr auto Bitfield = createToken(core::Token::Type::Keyword, Token::Keyword::Bitfield); - constexpr auto LittleEndian = createToken(core::Token::Type::Keyword, Token::Keyword::LittleEndian); - constexpr auto BigEndian = createToken(core::Token::Type::Keyword, Token::Keyword::BigEndian); - constexpr auto Parent = createToken(core::Token::Type::Keyword, Token::Keyword::Parent); - constexpr auto Namespace = createToken(core::Token::Type::Keyword, Token::Keyword::Namespace); - constexpr auto Using = createToken(core::Token::Type::Keyword, Token::Keyword::Using); - constexpr auto This = createToken(core::Token::Type::Keyword, Token::Keyword::This); - constexpr auto In = createToken(core::Token::Type::Keyword, Token::Keyword::In); - constexpr auto Out = createToken(core::Token::Type::Keyword, Token::Keyword::Out); - constexpr auto Reference = createToken(core::Token::Type::Keyword, Token::Keyword::Reference); + inline auto If = createToken(core::Token::Type::Keyword, Token::Keyword::If); + inline auto Else = createToken(core::Token::Type::Keyword, Token::Keyword::Else); + inline auto While = createToken(core::Token::Type::Keyword, Token::Keyword::While); + inline auto For = createToken(core::Token::Type::Keyword, Token::Keyword::For); + inline auto Return = createToken(core::Token::Type::Keyword, Token::Keyword::Return); + inline auto Break = createToken(core::Token::Type::Keyword, Token::Keyword::Break); + inline auto Continue = createToken(core::Token::Type::Keyword, Token::Keyword::Continue); + inline auto Struct = createToken(core::Token::Type::Keyword, Token::Keyword::Struct); + inline auto Enum = createToken(core::Token::Type::Keyword, Token::Keyword::Enum); + inline auto Union = createToken(core::Token::Type::Keyword, Token::Keyword::Union); + inline auto Function = createToken(core::Token::Type::Keyword, Token::Keyword::Function); + inline auto Bitfield = createToken(core::Token::Type::Keyword, Token::Keyword::Bitfield); + inline auto LittleEndian = createToken(core::Token::Type::Keyword, Token::Keyword::LittleEndian); + inline auto BigEndian = createToken(core::Token::Type::Keyword, Token::Keyword::BigEndian); + inline auto Parent = createToken(core::Token::Type::Keyword, Token::Keyword::Parent); + inline auto Namespace = createToken(core::Token::Type::Keyword, Token::Keyword::Namespace); + inline auto Using = createToken(core::Token::Type::Keyword, Token::Keyword::Using); + inline auto This = createToken(core::Token::Type::Keyword, Token::Keyword::This); + inline auto In = createToken(core::Token::Type::Keyword, Token::Keyword::In); + inline auto Out = createToken(core::Token::Type::Keyword, Token::Keyword::Out); + inline auto Reference = createToken(core::Token::Type::Keyword, Token::Keyword::Reference); } namespace Literal { - constexpr auto IdentifierValue = [](const std::string &name = { }) -> Token { return createToken(core::Token::Type::Identifier, Token::Identifier(name)); }; - constexpr auto NumericValue = [](const Token::Literal &value = { }) -> Token { return createToken(core::Token::Type::Integer, value); }; - constexpr auto StringValue = [](const std::string &value = { }) -> Token { return createToken(core::Token::Type::String, Token::Literal(value)); }; + inline auto IdentifierValue = [](const std::string &name = { }) -> Token { return createToken(core::Token::Type::Identifier, Token::Identifier(name)); }; + inline auto NumericValue = [](const Token::Literal &value = { }) -> Token { return createToken(core::Token::Type::Integer, value); }; + inline auto StringValue = [](const std::string &value = { }) -> Token { return createToken(core::Token::Type::String, Token::Literal(value)); }; - constexpr auto Identifier = createToken(core::Token::Type::Identifier, { }); - constexpr auto Numeric = createToken(core::Token::Type::Integer, { }); - constexpr auto String = createToken(core::Token::Type::String, { }); + inline auto Identifier = createToken(core::Token::Type::Identifier, { }); + inline auto Numeric = createToken(core::Token::Type::Integer, { }); + inline auto String = createToken(core::Token::Type::String, { }); } namespace Operator { - constexpr auto Plus = createToken(core::Token::Type::Operator, Token::Operator::Plus); - constexpr auto Minus = createToken(core::Token::Type::Operator, Token::Operator::Minus); - constexpr auto Star = createToken(core::Token::Type::Operator, Token::Operator::Star); - constexpr auto Slash = createToken(core::Token::Type::Operator, Token::Operator::Slash); - constexpr auto Percent = createToken(core::Token::Type::Operator, Token::Operator::Percent); - constexpr auto LeftShift = createToken(core::Token::Type::Operator, Token::Operator::LeftShift); - constexpr auto RightShift = createToken(core::Token::Type::Operator, Token::Operator::RightShift); - constexpr auto BitAnd = createToken(core::Token::Type::Operator, Token::Operator::BitAnd); - constexpr auto BitOr = createToken(core::Token::Type::Operator, Token::Operator::BitOr); - constexpr auto BitXor = createToken(core::Token::Type::Operator, Token::Operator::BitXor); - constexpr auto BitNot = createToken(core::Token::Type::Operator, Token::Operator::BitNot); - constexpr auto BoolEqual = createToken(core::Token::Type::Operator, Token::Operator::BoolEqual); - constexpr auto BoolNotEqual = createToken(core::Token::Type::Operator, Token::Operator::BoolNotEqual); - constexpr auto BoolLessThan = createToken(core::Token::Type::Operator, Token::Operator::BoolLessThan); - constexpr auto BoolGreaterThan = createToken(core::Token::Type::Operator, Token::Operator::BoolGreaterThan); - constexpr auto BoolLessThanOrEqual = createToken(core::Token::Type::Operator, Token::Operator::BoolLessThanOrEqual); - constexpr auto BoolGreaterThanOrEqual = createToken(core::Token::Type::Operator, Token::Operator::BoolGreaterThanOrEqual); - constexpr auto BoolAnd = createToken(core::Token::Type::Operator, Token::Operator::BoolAnd); - constexpr auto BoolOr = createToken(core::Token::Type::Operator, Token::Operator::BoolOr); - constexpr auto BoolNot = createToken(core::Token::Type::Operator, Token::Operator::BoolNot); - constexpr auto BoolXor = createToken(core::Token::Type::Operator, Token::Operator::BoolXor); - constexpr auto Dollar = createToken(core::Token::Type::Operator, Token::Operator::Dollar); - constexpr auto Colon = createToken(core::Token::Type::Operator, Token::Operator::Colon); - constexpr auto ScopeResolution = createToken(core::Token::Type::Operator, Token::Operator::ScopeResolution); - constexpr auto TernaryConditional = createToken(core::Token::Type::Operator, Token::Operator::TernaryConditional); - constexpr auto AddressOf = createToken(core::Token::Type::Operator, Token::Operator::AddressOf); - constexpr auto SizeOf = createToken(core::Token::Type::Operator, Token::Operator::SizeOf); - constexpr auto At = createToken(core::Token::Type::Operator, Token::Operator::At); - constexpr auto Assign = createToken(core::Token::Type::Operator, Token::Operator::Assign); + inline auto Plus = createToken(core::Token::Type::Operator, Token::Operator::Plus); + inline auto Minus = createToken(core::Token::Type::Operator, Token::Operator::Minus); + inline auto Star = createToken(core::Token::Type::Operator, Token::Operator::Star); + inline auto Slash = createToken(core::Token::Type::Operator, Token::Operator::Slash); + inline auto Percent = createToken(core::Token::Type::Operator, Token::Operator::Percent); + inline auto LeftShift = createToken(core::Token::Type::Operator, Token::Operator::LeftShift); + inline auto RightShift = createToken(core::Token::Type::Operator, Token::Operator::RightShift); + inline auto BitAnd = createToken(core::Token::Type::Operator, Token::Operator::BitAnd); + inline auto BitOr = createToken(core::Token::Type::Operator, Token::Operator::BitOr); + inline auto BitXor = createToken(core::Token::Type::Operator, Token::Operator::BitXor); + inline auto BitNot = createToken(core::Token::Type::Operator, Token::Operator::BitNot); + inline auto BoolEqual = createToken(core::Token::Type::Operator, Token::Operator::BoolEqual); + inline auto BoolNotEqual = createToken(core::Token::Type::Operator, Token::Operator::BoolNotEqual); + inline auto BoolLessThan = createToken(core::Token::Type::Operator, Token::Operator::BoolLessThan); + inline auto BoolGreaterThan = createToken(core::Token::Type::Operator, Token::Operator::BoolGreaterThan); + inline auto BoolLessThanOrEqual = createToken(core::Token::Type::Operator, Token::Operator::BoolLessThanOrEqual); + inline auto BoolGreaterThanOrEqual = createToken(core::Token::Type::Operator, Token::Operator::BoolGreaterThanOrEqual); + inline auto BoolAnd = createToken(core::Token::Type::Operator, Token::Operator::BoolAnd); + inline auto BoolOr = createToken(core::Token::Type::Operator, Token::Operator::BoolOr); + inline auto BoolNot = createToken(core::Token::Type::Operator, Token::Operator::BoolNot); + inline auto BoolXor = createToken(core::Token::Type::Operator, Token::Operator::BoolXor); + inline auto Dollar = createToken(core::Token::Type::Operator, Token::Operator::Dollar); + inline auto Colon = createToken(core::Token::Type::Operator, Token::Operator::Colon); + inline auto ScopeResolution = createToken(core::Token::Type::Operator, Token::Operator::ScopeResolution); + inline auto TernaryConditional = createToken(core::Token::Type::Operator, Token::Operator::TernaryConditional); + inline auto AddressOf = createToken(core::Token::Type::Operator, Token::Operator::AddressOf); + inline auto SizeOf = createToken(core::Token::Type::Operator, Token::Operator::SizeOf); + inline auto At = createToken(core::Token::Type::Operator, Token::Operator::At); + inline auto Assign = createToken(core::Token::Type::Operator, Token::Operator::Assign); } namespace ValueType { - constexpr auto CustomType = createToken(core::Token::Type::ValueType, Token::ValueType::CustomType); - constexpr auto Padding = createToken(core::Token::Type::ValueType, Token::ValueType::Padding); - constexpr auto Unsigned = createToken(core::Token::Type::ValueType, Token::ValueType::Unsigned); - constexpr auto Signed = createToken(core::Token::Type::ValueType, Token::ValueType::Signed); - constexpr auto FloatingPoint = createToken(core::Token::Type::ValueType, Token::ValueType::FloatingPoint); - constexpr auto Auto = createToken(core::Token::Type::ValueType, Token::ValueType::Auto); - constexpr auto Any = createToken(core::Token::Type::ValueType, Token::ValueType::Any); + inline auto CustomType = createToken(core::Token::Type::ValueType, Token::ValueType::CustomType); + inline auto Padding = createToken(core::Token::Type::ValueType, Token::ValueType::Padding); + inline auto Unsigned = createToken(core::Token::Type::ValueType, Token::ValueType::Unsigned); + inline auto Signed = createToken(core::Token::Type::ValueType, Token::ValueType::Signed); + inline auto FloatingPoint = createToken(core::Token::Type::ValueType, Token::ValueType::FloatingPoint); + inline auto Auto = createToken(core::Token::Type::ValueType, Token::ValueType::Auto); + inline auto Any = createToken(core::Token::Type::ValueType, Token::ValueType::Any); - constexpr auto Unsigned8Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Unsigned8Bit); - constexpr auto Unsigned16Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Unsigned16Bit); - constexpr auto Unsigned24Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Unsigned24Bit); - constexpr auto Unsigned32Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Unsigned32Bit); - constexpr auto Unsigned48Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Unsigned48Bit); - constexpr auto Unsigned64Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Unsigned64Bit); - constexpr auto Unsigned96Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Unsigned96Bit); - constexpr auto Unsigned128Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Unsigned128Bit); + inline auto Unsigned8Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Unsigned8Bit); + inline auto Unsigned16Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Unsigned16Bit); + inline auto Unsigned24Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Unsigned24Bit); + inline auto Unsigned32Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Unsigned32Bit); + inline auto Unsigned48Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Unsigned48Bit); + inline auto Unsigned64Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Unsigned64Bit); + inline auto Unsigned96Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Unsigned96Bit); + inline auto Unsigned128Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Unsigned128Bit); - constexpr auto Signed8Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Signed8Bit); - constexpr auto Signed16Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Signed16Bit); - constexpr auto Signed24Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Signed24Bit); - constexpr auto Signed32Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Signed32Bit); - constexpr auto Signed48Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Signed48Bit); - constexpr auto Signed64Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Signed64Bit); - constexpr auto Signed96Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Signed96Bit); - constexpr auto Signed128Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Signed128Bit); + inline auto Signed8Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Signed8Bit); + inline auto Signed16Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Signed16Bit); + inline auto Signed24Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Signed24Bit); + inline auto Signed32Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Signed32Bit); + inline auto Signed48Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Signed48Bit); + inline auto Signed64Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Signed64Bit); + inline auto Signed96Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Signed96Bit); + inline auto Signed128Bit = createToken(core::Token::Type::ValueType, Token::ValueType::Signed128Bit); - constexpr auto Float = createToken(core::Token::Type::ValueType, Token::ValueType::Float); - constexpr auto Double = createToken(core::Token::Type::ValueType, Token::ValueType::Double); + inline auto Float = createToken(core::Token::Type::ValueType, Token::ValueType::Float); + inline auto Double = createToken(core::Token::Type::ValueType, Token::ValueType::Double); - constexpr auto Boolean = createToken(core::Token::Type::ValueType, Token::ValueType::Boolean); + inline auto Boolean = createToken(core::Token::Type::ValueType, Token::ValueType::Boolean); - constexpr auto Character = createToken(core::Token::Type::ValueType, Token::ValueType::Character); - constexpr auto Character16 = createToken(core::Token::Type::ValueType, Token::ValueType::Character16); - constexpr auto String = createToken(core::Token::Type::ValueType, Token::ValueType::String); + inline auto Character = createToken(core::Token::Type::ValueType, Token::ValueType::Character); + inline auto Character16 = createToken(core::Token::Type::ValueType, Token::ValueType::Character16); + inline auto String = createToken(core::Token::Type::ValueType, Token::ValueType::String); } namespace Separator { - constexpr auto Comma = createToken(core::Token::Type::Separator, Token::Separator::Comma); - constexpr auto LeftParenthesis = createToken(core::Token::Type::Separator, Token::Separator::LeftParenthesis); - constexpr auto RightParenthesis = createToken(core::Token::Type::Separator, Token::Separator::RightParenthesis); - constexpr auto LeftBracket = createToken(core::Token::Type::Separator, Token::Separator::LeftBracket); - constexpr auto RightBracket = createToken(core::Token::Type::Separator, Token::Separator::RightBracket); - constexpr auto LeftBrace = createToken(core::Token::Type::Separator, Token::Separator::LeftBrace); - constexpr auto RightBrace = createToken(core::Token::Type::Separator, Token::Separator::RightBrace); - constexpr auto Dot = createToken(core::Token::Type::Separator, Token::Separator::Dot); - constexpr auto Semicolon = createToken(core::Token::Type::Separator, Token::Separator::Semicolon); - constexpr auto EndOfProgram = createToken(core::Token::Type::Separator, Token::Separator::EndOfProgram); + inline auto Comma = createToken(core::Token::Type::Separator, Token::Separator::Comma); + inline auto LeftParenthesis = createToken(core::Token::Type::Separator, Token::Separator::LeftParenthesis); + inline auto RightParenthesis = createToken(core::Token::Type::Separator, Token::Separator::RightParenthesis); + inline auto LeftBracket = createToken(core::Token::Type::Separator, Token::Separator::LeftBracket); + inline auto RightBracket = createToken(core::Token::Type::Separator, Token::Separator::RightBracket); + inline auto LeftBrace = createToken(core::Token::Type::Separator, Token::Separator::LeftBrace); + inline auto RightBrace = createToken(core::Token::Type::Separator, Token::Separator::RightBrace); + inline auto Dot = createToken(core::Token::Type::Separator, Token::Separator::Dot); + inline auto Semicolon = createToken(core::Token::Type::Separator, Token::Separator::Semicolon); + inline auto EndOfProgram = createToken(core::Token::Type::Separator, Token::Separator::EndOfProgram); } diff --git a/editors/imhex/files/patch-lib_libimhex_CMakeLists.txt b/editors/imhex/files/patch-lib_libimhex_CMakeLists.txt index cc5d449b4c4b..d91be6ec76a6 100644 --- a/editors/imhex/files/patch-lib_libimhex_CMakeLists.txt +++ b/editors/imhex/files/patch-lib_libimhex_CMakeLists.txt @@ -1,10 +1,10 @@ ---- lib/libimhex/CMakeLists.txt.orig 2022-08-14 12:54:20 UTC +--- lib/libimhex/CMakeLists.txt.orig 2022-10-08 08:03:47 UTC +++ lib/libimhex/CMakeLists.txt -@@ -26,7 +26,6 @@ set(FPHSA_NAME_MISMATCHED ON CACHE BOOL "") +@@ -27,7 +27,6 @@ set(FPHSA_NAME_MISMATCHED ON CACHE BOOL "") find_package(PkgConfig REQUIRED) if (NOT USE_SYSTEM_NFD) - set(NFD_PORTAL ON CACHE BOOL "Use Portals for Linux file dialogs" FORCE) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../external/nativefiledialog ${CMAKE_CURRENT_BINARY_DIR}/external/nativefiledialog EXCLUDE_FROM_ALL) set_target_properties(nfd PROPERTIES POSITION_INDEPENDENT_CODE ON) set(NFD_LIBRARIES nfd) diff --git a/editors/imhex/files/patch-lib_libimhex_include_hex_api_task.hpp b/editors/imhex/files/patch-lib_libimhex_include_hex_api_task.hpp new file mode 100644 index 000000000000..d5fef1616abe --- /dev/null +++ b/editors/imhex/files/patch-lib_libimhex_include_hex_api_task.hpp @@ -0,0 +1,18 @@ +--- lib/libimhex/include/hex/api/task.hpp.orig 2022-10-08 08:03:47 UTC ++++ lib/libimhex/include/hex/api/task.hpp +@@ -1,6 +1,7 @@ + #pragma once + + #include ++#include + + #include + #include +@@ -11,6 +12,7 @@ + #include + #include + #include ++#include + + namespace hex { + diff --git a/editors/imhex/files/patch-lib_libimhex_include_hex_data__processor_node.hpp b/editors/imhex/files/patch-lib_libimhex_include_hex_data__processor_node.hpp index a42bdab95f2b..b0388d966bd2 100644 --- a/editors/imhex/files/patch-lib_libimhex_include_hex_data__processor_node.hpp +++ b/editors/imhex/files/patch-lib_libimhex_include_hex_data__processor_node.hpp @@ -1,10 +1,10 @@ ---- lib/libimhex/include/hex/data_processor/node.hpp.orig 2022-08-14 15:02:06 UTC +--- lib/libimhex/include/hex/data_processor/node.hpp.orig 2022-10-08 08:03:47 UTC +++ lib/libimhex/include/hex/data_processor/node.hpp -@@ -45,6 +45,7 @@ namespace hex::dp { +@@ -46,6 +46,7 @@ namespace hex::dp { struct NodeError { Node *node; std::string message; + NodeError(Node *n, std::string m) : node(n), message(m) {}; }; void resetOutputData() { diff --git a/editors/imhex/files/patch-lib_libimhex_source_api_imhex__api.cpp b/editors/imhex/files/patch-lib_libimhex_source_api_imhex__api.cpp index a38d2f10790f..24945986719f 100644 --- a/editors/imhex/files/patch-lib_libimhex_source_api_imhex__api.cpp +++ b/editors/imhex/files/patch-lib_libimhex_source_api_imhex__api.cpp @@ -1,19 +1,19 @@ ---- lib/libimhex/source/api/imhex_api.cpp.orig 2022-08-17 21:25:52 UTC +--- lib/libimhex/source/api/imhex_api.cpp.orig 2022-10-08 08:03:47 UTC +++ lib/libimhex/source/api/imhex_api.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include -@@ -260,7 +261,7 @@ namespace hex { +@@ -266,7 +267,7 @@ namespace hex { } bool isDirty() { - return std::ranges::any_of(s_providers, [](const auto &provider) { + return ranges::any_of(s_providers, [](const auto &provider) { return provider->isDirty(); }); } diff --git a/editors/imhex/files/patch-lib_libimhex_source_helpers_file.cpp b/editors/imhex/files/patch-lib_libimhex_source_helpers_file.cpp index f0d74435b58e..c3e38e800446 100644 --- a/editors/imhex/files/patch-lib_libimhex_source_helpers_file.cpp +++ b/editors/imhex/files/patch-lib_libimhex_source_helpers_file.cpp @@ -1,51 +1,51 @@ ---- lib/libimhex/source/helpers/file.cpp.orig 2022-08-17 21:25:52 UTC +--- lib/libimhex/source/helpers/file.cpp.orig 2022-10-08 08:03:47 UTC +++ lib/libimhex/source/helpers/file.cpp @@ -17,12 +17,12 @@ namespace hex::fs { this->m_file = _wfopen(path.c_str(), L"w+b"); #else if (mode == File::Mode::Read) -- this->m_file = fopen64(path.string().c_str(), "rb"); -+ this->m_file = fopen(path.string().c_str(), "rb"); +- this->m_file = fopen64(hex::toUTF8String(path).c_str(), "rb"); ++ this->m_file = fopen(hex::toUTF8String(path).c_str(), "rb"); else if (mode == File::Mode::Write) -- this->m_file = fopen64(path.string().c_str(), "r+b"); -+ this->m_file = fopen(path.string().c_str(), "r+b"); +- this->m_file = fopen64(hex::toUTF8String(path).c_str(), "r+b"); ++ this->m_file = fopen(hex::toUTF8String(path).c_str(), "r+b"); if (mode == File::Mode::Create || (mode == File::Mode::Write && this->m_file == nullptr)) -- this->m_file = fopen64(path.string().c_str(), "w+b"); -+ this->m_file = fopen(path.string().c_str(), "w+b"); +- this->m_file = fopen64(hex::toUTF8String(path).c_str(), "w+b"); ++ this->m_file = fopen(hex::toUTF8String(path).c_str(), "w+b"); #endif } @@ -50,7 +50,7 @@ namespace hex::fs { void File::seek(u64 offset) { - fseeko64(this->m_file, offset, SEEK_SET); + fseeko(this->m_file, offset, SEEK_SET); } void File::close() { @@ -135,10 +135,10 @@ namespace hex::fs { size_t File::getSize() const { if (!isValid()) return 0; - auto startPos = ftello64(this->m_file); - fseeko64(this->m_file, 0, SEEK_END); - auto size = ftello64(this->m_file); - fseeko64(this->m_file, startPos, SEEK_SET); + auto startPos = ftello(this->m_file); + fseeko(this->m_file, 0, SEEK_END); + auto size = ftello(this->m_file); + fseeko(this->m_file, startPos, SEEK_SET); if (size < 0) return 0; @@ -149,7 +149,7 @@ namespace hex::fs { void File::setSize(u64 size) { if (!isValid()) return; - auto result = ftruncate64(fileno(this->m_file), size); + auto result = ftruncate(fileno(this->m_file), size); hex::unused(result); } diff --git a/editors/imhex/files/patch-lib_libimhex_source_helpers_fs.cpp b/editors/imhex/files/patch-lib_libimhex_source_helpers_fs.cpp index 9a0b4d5bab60..a36b83e2d2ff 100644 --- a/editors/imhex/files/patch-lib_libimhex_source_helpers_fs.cpp +++ b/editors/imhex/files/patch-lib_libimhex_source_helpers_fs.cpp @@ -1,27 +1,27 @@ ---- lib/libimhex/source/helpers/fs.cpp.orig 2022-08-05 10:52:34 UTC +--- lib/libimhex/source/helpers/fs.cpp.orig 2022-10-08 08:03:47 UTC +++ lib/libimhex/source/helpers/fs.cpp @@ -14,10 +14,15 @@ #include #elif defined(OS_LINUX) #include +# if defined(__FreeBSD__) + #include +# else #include +# endif #endif #include +#include #include namespace hex::fs { -@@ -179,7 +184,7 @@ namespace hex::fs { +@@ -189,7 +194,7 @@ namespace hex::fs { #endif } - constexpr std::vector appendPath(std::vector paths, const std::fs::path &folder) { + std::vector appendPath(std::vector paths, const std::fs::path &folder) { for (auto &path : paths) path = path / folder; diff --git a/editors/imhex/files/patch-plugins_builtin_source_content_helpers_math__evaluator.cpp b/editors/imhex/files/patch-plugins_builtin_source_content_helpers_math__evaluator.cpp new file mode 100644 index 000000000000..44d28a094316 --- /dev/null +++ b/editors/imhex/files/patch-plugins_builtin_source_content_helpers_math__evaluator.cpp @@ -0,0 +1,15 @@ +--- plugins/builtin/source/content/helpers/math_evaluator.cpp.orig 2022-10-12 10:48:50 UTC ++++ plugins/builtin/source/content/helpers/math_evaluator.cpp +@@ -434,9 +434,9 @@ namespace hex { + template + void MathEvaluator::registerStandardVariables() { + this->setVariable("ans", 0); +- this->setVariable("pi", std::numbers::pi, true); +- this->setVariable("e", std::numbers::e, true); +- this->setVariable("phi", std::numbers::phi, true); ++ this->setVariable("pi", 3.141592653589793238462643383279502884L, true); ++ this->setVariable("e", 2.718281828459045235360287471352662498L, true); ++ this->setVariable("phi", 1.618033988749894848204586834365638117L, true); + } + + template diff --git a/editors/imhex/files/patch-plugins_builtin_source_content_providers_disk__provider.cpp b/editors/imhex/files/patch-plugins_builtin_source_content_providers_disk__provider.cpp index 2269f67780d5..6f842aea0d2a 100644 --- a/editors/imhex/files/patch-plugins_builtin_source_content_providers_disk__provider.cpp +++ b/editors/imhex/files/patch-plugins_builtin_source_content_providers_disk__provider.cpp @@ -1,13 +1,11 @@ ---- plugins/builtin/source/content/providers/disk_provider.cpp.orig 2022-08-14 12:54:20 UTC +--- plugins/builtin/source/content/providers/disk_provider.cpp.orig 2022-10-08 08:03:47 UTC +++ plugins/builtin/source/content/providers/disk_provider.cpp -@@ -18,8 +18,9 @@ - #include +@@ -20,7 +20,7 @@ #include + #endif -+# if !defined(__FreeBSD__) +-#if defined(OS_LINUX) ++#if !defined(__FreeBSD__) #define lseek lseek64 -- -+# endif - #elif defined(OS_MACOS) + #endif - #include diff --git a/editors/imhex/files/patch-plugins_builtin_source_content_settings__entries.cpp b/editors/imhex/files/patch-plugins_builtin_source_content_settings__entries.cpp index 75bacccf8a5e..2df3722bff2f 100644 --- a/editors/imhex/files/patch-plugins_builtin_source_content_settings__entries.cpp +++ b/editors/imhex/files/patch-plugins_builtin_source_content_settings__entries.cpp @@ -1,12 +1,12 @@ ---- plugins/builtin/source/content/settings_entries.cpp.orig 2022-07-16 11:41:37 UTC +--- plugins/builtin/source/content/settings_entries.cpp.orig 2022-10-08 08:03:47 UTC +++ plugins/builtin/source/content/settings_entries.cpp -@@ -19,8 +19,7 @@ namespace { +@@ -21,8 +21,7 @@ namespace { userFolders.clear(); std::vector paths = setting; for (const auto &path : paths) { - // JSON reads char8_t as array, char8_t is not supported as of now - std::u8string_view uString(reinterpret_cast(&path.front()), reinterpret_cast(std::next(&path.back()))); + std::string_view uString(&path.front()); // This is necessary for Clang13 userFolders.emplace_back(uString); } } diff --git a/editors/imhex/files/patch-plugins_builtin_source_content_views_view__find.cpp b/editors/imhex/files/patch-plugins_builtin_source_content_views_view__find.cpp index 1bdd6465fdb3..a3f5987cf764 100644 --- a/editors/imhex/files/patch-plugins_builtin_source_content_views_view__find.cpp +++ b/editors/imhex/files/patch-plugins_builtin_source_content_views_view__find.cpp @@ -1,11 +1,128 @@ ---- plugins/builtin/source/content/views/view_find.cpp.orig 2022-09-15 12:40:14 UTC +--- plugins/builtin/source/content/views/view_find.cpp.orig 2022-10-08 08:03:47 UTC +++ plugins/builtin/source/content/views/view_find.cpp -@@ -239,7 +239,7 @@ namespace hex::plugin::builtin { +@@ -153,34 +153,87 @@ namespace hex::plugin::builtin { + } + + template +- static std::tuple, size_t> parseNumericValue(const std::string &string) { ++ static std::tuple parseNumericValue_u(const std::string &string) { + static_assert(sizeof(StorageType) >= sizeof(Type)); + + StorageType value = 0x00; +- auto result = std::from_chars(string.data(), string.data() + string.size(), value); +- if (result.ec != std::errc() || result.ptr != string.data() + string.size()) ++ try { ++ value = std::stoull(string.data()); ++ } catch (...) { + return { false, { }, 0 }; ++ } + +- if (value < std::numeric_limits::min() || value > std::numeric_limits::max()) ++ if (value < std::numeric_limits::lowest() || value > std::numeric_limits::max()) + return { false, { }, 0 }; + + return { true, value, sizeof(Type) }; + } + ++ template ++ static std::tuple parseNumericValue_i(const std::string &string) { ++ static_assert(sizeof(StorageType) >= sizeof(Type)); ++ ++ StorageType value = 0x00; ++ try { ++ value = std::stoll(string.data()); ++ } catch (...) { ++ return { false, { }, 0 }; ++ } ++ ++ if (value < std::numeric_limits::lowest() || value > std::numeric_limits::max()) ++ return { false, { }, 0 }; ++ ++ return { true, value, sizeof(Type) }; ++ } ++ ++ template ++ static std::tuple parseNumericValue_f(const std::string &string) { ++ static_assert(sizeof(StorageType) >= sizeof(Type)); ++ ++ StorageType value = 0x00; ++ try { ++ value = std::stof(string.data()); ++ } catch (...) { ++ return { false, { }, 0 }; ++ } ++ ++ if (value < std::numeric_limits::lowest() || value > std::numeric_limits::max()) ++ return { false, { }, 0 }; ++ ++ return { true, value, sizeof(float) }; ++ } ++ ++ template ++ static std::tuple parseNumericValue_d(const std::string &string) { ++ static_assert(sizeof(StorageType) >= sizeof(Type)); ++ ++ StorageType value = 0x00; ++ try { ++ value = std::stod(string.data()); ++ } catch (...) { ++ return { false, { }, 0 }; ++ } ++ ++ if (value < std::numeric_limits::lowest() || value > std::numeric_limits::max()) ++ return { false, { }, 0 }; ++ ++ return { true, value, sizeof(Type) }; ++ } ++ + std::tuple, size_t> ViewFind::parseNumericValueInput(const std::string &input, SearchSettings::Value::Type type) { + switch (type) { + using enum SearchSettings::Value::Type; + +- case U8: return parseNumericValue(input); +- case U16: return parseNumericValue(input); +- case U32: return parseNumericValue(input); +- case U64: return parseNumericValue(input); +- case I8: return parseNumericValue(input); +- case I16: return parseNumericValue(input); +- case I32: return parseNumericValue(input); +- case I64: return parseNumericValue(input); +- case F32: return parseNumericValue(input); +- case F64: return parseNumericValue(input); ++ case U8: return parseNumericValue_u(input); ++ case U16: return parseNumericValue_u(input); ++ case U32: return parseNumericValue_u(input); ++ case U64: return parseNumericValue_u(input); ++ case I8: return parseNumericValue_i(input); ++ case I16: return parseNumericValue_i(input); ++ case I32: return parseNumericValue_i(input); ++ case I64: return parseNumericValue_i(input); ++ case F32: return parseNumericValue_f(input); ++ case F64: return parseNumericValue_d(input); + default: return { false, { }, 0 }; + } + } +@@ -293,7 +346,7 @@ namespace hex::plugin::builtin { auto occurrence = reader.begin(); while (true) { -- occurrence = std::search(reader.begin(), reader.end(), std::boyer_moore_horspool_searcher(sequence.begin(), sequence.end())); -+ occurrence = std::search(reader.begin(), reader.end(), sequence.begin(), sequence.end()); +- occurrence = std::search(reader.begin(), reader.end(), std::boyer_moore_horspool_searcher(bytes.begin(), bytes.end())); ++ occurrence = std::search(reader.begin(), reader.end(), bytes.begin(), bytes.end()); if (occurrence == reader.end()) break; +@@ -377,8 +430,12 @@ namespace hex::plugin::builtin { + reader.seek(searchRegion.getStartAddress()); + reader.setEndAddress(searchRegion.getEndAddress()); + +- const auto [validMin, min, sizeMin] = parseNumericValueInput(settings.inputMin, settings.type); +- const auto [validMax, max, sizeMax] = parseNumericValueInput(settings.inputMax, settings.type); ++ const auto validMin = std::get<0>(parseNumericValueInput(settings.inputMin, settings.type)); ++ const auto min = std::get<1>(parseNumericValueInput(settings.inputMin, settings.type)); ++ const auto sizeMin = std::get<2>(parseNumericValueInput(settings.inputMin, settings.type)); ++ const auto validMax = std::get<0>(parseNumericValueInput(settings.inputMax, settings.type)); ++ const auto max = std::get<1>(parseNumericValueInput(settings.inputMax, settings.type)); ++ const auto sizeMax = std::get<2>(parseNumericValueInput(settings.inputMax, settings.type)); + + if (!validMin || !validMax || sizeMin != sizeMax) + return { }; diff --git a/editors/imhex/files/patch-plugins_builtin_source_content_views_view__hex__editor.cpp b/editors/imhex/files/patch-plugins_builtin_source_content_views_view__hex__editor.cpp index 46ef7fe6c59b..bea962f71143 100644 --- a/editors/imhex/files/patch-plugins_builtin_source_content_views_view__hex__editor.cpp +++ b/editors/imhex/files/patch-plugins_builtin_source_content_views_view__hex__editor.cpp @@ -1,11 +1,11 @@ ---- plugins/builtin/source/content/views/view_hex_editor.cpp.orig 2022-09-03 22:05:27 UTC +--- plugins/builtin/source/content/views/view_hex_editor.cpp.orig 2022-10-12 10:48:50 UTC +++ plugins/builtin/source/content/views/view_hex_editor.cpp -@@ -288,7 +288,7 @@ namespace hex::plugin::builtin { +@@ -290,7 +290,7 @@ namespace hex::plugin::builtin { reader.seek(this->m_searchPosition.value_or(0x00)); constexpr static auto searchFunction = [](const auto &haystackBegin, const auto &haystackEnd, const auto &needleBegin, const auto &needleEnd) { - return std::search(haystackBegin, haystackEnd, std::boyer_moore_horspool_searcher(needleBegin, needleEnd)); + return std::search(haystackBegin, haystackEnd, needleBegin, needleEnd); }; if (!backwards) { diff --git a/editors/imhex/files/patch-plugins_windows_include_views_view__tty__console.hpp b/editors/imhex/files/patch-plugins_windows_include_views_view__tty__console.hpp new file mode 100644 index 000000000000..8044d81e7896 --- /dev/null +++ b/editors/imhex/files/patch-plugins_windows_include_views_view__tty__console.hpp @@ -0,0 +1,10 @@ +--- plugins/windows/include/views/view_tty_console.hpp.orig 2022-10-15 14:50:11 UTC ++++ plugins/windows/include/views/view_tty_console.hpp +@@ -1,6 +1,7 @@ + #pragma once + + #include ++#include + + #include + diff --git a/editors/imhex/pkg-plist b/editors/imhex/pkg-plist index f5a17e71071f..bcd5457bc959 100644 --- a/editors/imhex/pkg-plist +++ b/editors/imhex/pkg-plist @@ -1,116 +1,123 @@ bin/imhex -lib/libimhex.so.1.23.1 +lib/libimhex.so.1.24.3 share/applications/imhex.desktop %%DATADIR%%/constants/_schema.json %%DATADIR%%/constants/crc16.json %%DATADIR%%/constants/crc32.json %%DATADIR%%/constants/http_status.json %%DATADIR%%/constants/linux_errors.json %%DATADIR%%/includes/hex/core.pat +%%DATADIR%%/includes/hex/dec.pat %%DATADIR%%/includes/hex/http.pat %%DATADIR%%/includes/hex/impl/imhex_check.pat +%%DATADIR%%/includes/hex/type/mangled.pat +%%DATADIR%%/includes/std/array.pat %%DATADIR%%/includes/type/types/010.pat %%DATADIR%%/includes/type/types/c.pat %%DATADIR%%/includes/type/types/linux.pat %%DATADIR%%/includes/type/types/rust.pat %%DATADIR%%/includes/type/types/win32.pat +%%DATADIR%%/includes/type/base.pat +%%DATADIR%%/includes/type/color.pat %%DATADIR%%/patterns/bson.hexpat %%DATADIR%%/patterns/flac.hexpat +%%DATADIR%%/patterns/id3.hexpat %%DATADIR%%/patterns/minidump.hexpat %%DATADIR%%/patterns/msgpack.hexpat +%%DATADIR%%/patterns/usb.hexpat %%DATADIR%%/patterns/xilinx_bit.hexpat %%DATADIR%%/encodings/arabic_iso.tbl %%DATADIR%%/encodings/arabic_windows.tbl %%DATADIR%%/encodings/ascii.tbl %%DATADIR%%/encodings/ascii_ansi.tbl %%DATADIR%%/encodings/ascii_oem.tbl %%DATADIR%%/encodings/baltic_iso.tbl %%DATADIR%%/encodings/baltic_windows.tbl %%DATADIR%%/encodings/cyrillic_cp866.tbl %%DATADIR%%/encodings/cyrillic_iso.tbl %%DATADIR%%/encodings/cyrillic_koi8_r.tbl %%DATADIR%%/encodings/cyrillic_koi8_u.tbl %%DATADIR%%/encodings/cyrillic_windows.tbl %%DATADIR%%/encodings/eastern_europe_iso.tbl %%DATADIR%%/encodings/eastern_europe_windows.tbl %%DATADIR%%/encodings/ebcdic.tbl %%DATADIR%%/encodings/euc_jp.tbl %%DATADIR%%/encodings/euc_kr.tbl %%DATADIR%%/encodings/greek_iso.tbl %%DATADIR%%/encodings/greek_windows.tbl %%DATADIR%%/encodings/hebrew_iso.tbl %%DATADIR%%/encodings/hebrew_windows.tbl %%DATADIR%%/encodings/iso_646.tbl %%DATADIR%%/encodings/iso_6937.tbl %%DATADIR%%/encodings/jis_x_0201.tbl %%DATADIR%%/encodings/jis_x_0211.tbl %%DATADIR%%/encodings/jis_x_0213.tbl %%DATADIR%%/encodings/macintosh.tbl %%DATADIR%%/encodings/pokegen1_en.tbl %%DATADIR%%/encodings/shiftjis.tbl %%DATADIR%%/encodings/thai.tbl %%DATADIR%%/encodings/turkish_iso.tbl %%DATADIR%%/encodings/turkish_windows.tbl %%DATADIR%%/encodings/utf8.tbl %%DATADIR%%/encodings/vietnamese.tbl %%DATADIR%%/includes/std/bit.pat %%DATADIR%%/includes/std/core.pat %%DATADIR%%/includes/std/ctype.pat %%DATADIR%%/includes/std/file.pat %%DATADIR%%/includes/std/fxpt.pat %%DATADIR%%/includes/std/hash.pat %%DATADIR%%/includes/std/io.pat %%DATADIR%%/includes/std/limits.pat %%DATADIR%%/includes/std/math.pat %%DATADIR%%/includes/std/mem.pat %%DATADIR%%/includes/std/ptr.pat %%DATADIR%%/includes/std/string.pat %%DATADIR%%/includes/std/sys.pat %%DATADIR%%/includes/std/time.pat %%DATADIR%%/includes/type/byte.pat %%DATADIR%%/includes/type/float16.pat %%DATADIR%%/includes/type/guid.pat %%DATADIR%%/includes/type/ip.pat %%DATADIR%%/includes/type/leb128.pat %%DATADIR%%/includes/type/mac.pat %%DATADIR%%/includes/type/path.pat %%DATADIR%%/includes/type/size.pat %%DATADIR%%/includes/type/time.pat %%DATADIR%%/magic/nintendo_switch_magic %%DATADIR%%/magic/portable_executable_magic %%DATADIR%%/patterns/afe2.hexpat %%DATADIR%%/patterns/ar.hexpat %%DATADIR%%/patterns/arm_cm_vtor.hexpat %%DATADIR%%/patterns/bencode.hexpat %%DATADIR%%/patterns/bmp.hexpat %%DATADIR%%/patterns/dds.hexpat %%DATADIR%%/patterns/elf.hexpat %%DATADIR%%/patterns/fs.hexpat %%DATADIR%%/patterns/ico.hexpat %%DATADIR%%/patterns/intel_hex.hexpat %%DATADIR%%/patterns/ip.hexpat %%DATADIR%%/patterns/iso.hexpat %%DATADIR%%/patterns/java_class.hexpat %%DATADIR%%/patterns/lnk.hexpat %%DATADIR%%/patterns/midi.hexpat %%DATADIR%%/patterns/nacp.hexpat %%DATADIR%%/patterns/nro.hexpat %%DATADIR%%/patterns/ntag.hexpat %%DATADIR%%/patterns/ogg.hexpat %%DATADIR%%/patterns/pcap.hexpat %%DATADIR%%/patterns/pe.hexpat %%DATADIR%%/patterns/png.hexpat %%DATADIR%%/patterns/prodinfo.hexpat %%DATADIR%%/patterns/protobuf.hexpat %%DATADIR%%/patterns/spirv.hexpat %%DATADIR%%/patterns/stl.hexpat %%DATADIR%%/patterns/tga.hexpat %%DATADIR%%/patterns/uf2.hexpat %%DATADIR%%/patterns/vdf.hexpat %%DATADIR%%/patterns/vhdx.hexpat %%DATADIR%%/patterns/wav.hexpat %%DATADIR%%/patterns/zip.hexpat %%DATADIR%%/plugins/builtin.hexplug share/metainfo/net.werwolv.imhex.appdata.xml share/metainfo/net.werwolv.imhex.metainfo.xml share/pixmaps/imhex.png