diff --git a/editors/imhex/Makefile b/editors/imhex/Makefile index 41e96e621458..e212860f14a0 100644 --- a/editors/imhex/Makefile +++ b/editors/imhex/Makefile @@ -1,103 +1,104 @@ PORTNAME= imhex -PORTVERSION= 1.24.3 +PORTVERSION= 1.25.0 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 + ${LOCALBASE}/include/range/v3/range.hpp:devel/range-v3 \ + ${LOCALBASE}/include/hpx/functional.hpp:devel/hpx LIB_DEPENDS= libcurl.so:ftp/curl \ 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= a337011 -GH_TAG_IMHEX_PATTERNS= 8e70a55 +GH_TAG_IMHEX_PATTERNS= a9ada89 GH_TAG_JTHREAD= 0fa8d39 -GH_TAG_LIBROMFS= 8efe4c4 +GH_TAG_LIBROMFS= 53a6bf5 GH_TAG_NATIVEFILEDIALOG= d4df2b6 -GH_TAG_PATTERN_LANGUAGE= ab7d738 +GH_TAG_PATTERN_LANGUAGE= 7aeac4a 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 58cfaee19cbf..cff429a8a5cb 100644 --- a/editors/imhex/distinfo +++ b/editors/imhex/distinfo @@ -1,23 +1,23 @@ -TIMESTAMP = 1665857378 +TIMESTAMP = 1669206632 SHA256 (imhex/xdg.hpp) = 2e08ce74adb71ff9b9aa9e1c999733fccd4b00967b9cf0c0e51dbf049392a9ec SIZE (imhex/xdg.hpp) = 7674 -SHA256 (imhex/WerWolv-ImHex-v1.24.3_GH0.tar.gz) = 5d6780b2d4c3b92bbe7619dcae34138072a8ed9c540523d25760da237f01d279 -SIZE (imhex/WerWolv-ImHex-v1.24.3_GH0.tar.gz) = 11126282 +SHA256 (imhex/WerWolv-ImHex-v1.25.0_GH0.tar.gz) = c2d730df224252159f9be3d2a3cbf3a592bfe38101414e06f64b0ac1776ec2c2 +SIZE (imhex/WerWolv-ImHex-v1.25.0_GH0.tar.gz) = 11001840 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-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 +SHA256 (imhex/WerWolv-ImHex-Patterns-a9ada89_GH0.tar.gz) = fd1be6d54d1dfdeeb94cc3cb9789e6079cee80a0a3dc409b8d0c961eee747f17 +SIZE (imhex/WerWolv-ImHex-Patterns-a9ada89_GH0.tar.gz) = 5180991 +SHA256 (imhex/WerWolv-PatternLanguage-7aeac4a_GH0.tar.gz) = 170f3852353c28858fa3756b03f55a4a9bbd69561da071c36834bc00a56f19ca +SIZE (imhex/WerWolv-PatternLanguage-7aeac4a_GH0.tar.gz) = 420016 +SHA256 (imhex/WerWolv-libromfs-53a6bf5_GH0.tar.gz) = 2caa05a847665ebff301dd7e684b4c7a1a9cc903a3bc0a83d4dccfdc1ea616de +SIZE (imhex/WerWolv-libromfs-53a6bf5_GH0.tar.gz) = 3799 diff --git a/editors/imhex/files/patch-CMakeLists.txt b/editors/imhex/files/patch-CMakeLists.txt index 290002b6d217..210b207d0448 100644 --- a/editors/imhex/files/patch-CMakeLists.txt +++ b/editors/imhex/files/patch-CMakeLists.txt @@ -1,11 +1,20 @@ ---- CMakeLists.txt.orig 2022-10-08 08:03:47 UTC +--- CMakeLists.txt.orig 2022-11-14 09:07:21 UTC +++ CMakeLists.txt +@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.20) + # Options + option(IMHEX_USE_BUNDLED_CA "Use the CA bundle in romfs instead of the system one" OFF) + option(IMHEX_PLUGINS_IN_SHARE "Put the plugins in share/imhex/plugins instead of lib[..]/imhex/plugins" OFF) +-option(IMHEX_STRIP_RELEASE "Strip the release builds" ON) ++option(IMHEX_STRIP_RELEASE "Strip the release builds" OFF) + option(IMHEX_OFFLINE_BUILD "Enable offline build" OFF) + option(IMHEX_IGNORE_BAD_CLONE "Disable the bad clone prevention checks" OFF) + option(IMHEX_PATTERNS_PULL_MASTER "Download latest files from master branch of the ImHex-Patterns repo" OFF) @@ -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-lib_external_libromfs_generator_source_main.cpp b/editors/imhex/files/patch-lib_external_libromfs_generator_source_main.cpp new file mode 100644 index 000000000000..70f22d9a5651 --- /dev/null +++ b/editors/imhex/files/patch-lib_external_libromfs_generator_source_main.cpp @@ -0,0 +1,11 @@ +--- lib/external/libromfs/generator/source/main.cpp.orig 2022-11-23 12:47:55 UTC ++++ lib/external/libromfs/generator/source/main.cpp +@@ -87,7 +87,7 @@ int main() { + for (std::uint64_t i = 0; i < identifierCount; i++) { + std::printf("libromfs: Bundling resource: %s\n", paths[i].string().c_str()); + +- outputFile << " " << "{ \"" << paths[i].string() << "\", romfs::Resource({ reinterpret_cast(resource_" LIBROMFS_PROJECT_NAME "_" << i << ".data()), " << "resource_" LIBROMFS_PROJECT_NAME "_" << i << ".size() }) " << "},\n"; ++ outputFile << " " << "{ \"" << paths[i].string() << "\", romfs::Resource({ reinterpret_cast(resource_" LIBROMFS_PROJECT_NAME "_" << i << ".data()), " << "resource_" LIBROMFS_PROJECT_NAME "_" << i << ".size() - 1 }) " << "},\n"; + } + outputFile << "};"; + } 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 6f6e219eae3d..ad9cdf6ce02e 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-10-15 20:26:43 UTC +--- lib/external/pattern_language/lib/include/pl/core/token.hpp.orig 2022-11-19 17:06:38 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); } @@ -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) { ++ inline pl::core::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_external_pattern__language_lib_source_pl_helpers_file.cpp b/editors/imhex/files/patch-lib_external_pattern__language_lib_source_pl_helpers_file.cpp index 493d143c3cf4..a0e9d7509c14 100644 --- a/editors/imhex/files/patch-lib_external_pattern__language_lib_source_pl_helpers_file.cpp +++ b/editors/imhex/files/patch-lib_external_pattern__language_lib_source_pl_helpers_file.cpp @@ -1,51 +1,44 @@ ---- lib/external/pattern_language/lib/source/pl/helpers/file.cpp.orig 2022-08-14 15:37:26 UTC +--- lib/external/pattern_language/lib/source/pl/helpers/file.cpp.orig 2022-11-16 14:22:38 UTC +++ lib/external/pattern_language/lib/source/pl/helpers/file.cpp -@@ -19,12 +19,12 @@ namespace pl::hlp::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"); - 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"); - - 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"); - #endif - } +@@ -8,7 +8,7 @@ + + namespace pl::hlp::fs { -@@ -52,7 +52,7 @@ namespace pl::hlp::fs { +-#if defined(OS_MACOS) ++#if defined(OS_MACOS) || defined(__FreeBSD__) + #define fopen64 fopen + #define ftruncate64 ftruncate + #endif +@@ -57,7 +57,7 @@ namespace pl::hlp::fs { void File::seek(u64 offset) { - fseeko64(this->m_file, offset, SEEK_SET); + fseeko(this->m_file, offset, SEEK_SET); } void File::close() { -@@ -137,10 +137,10 @@ namespace pl::hlp::fs { +@@ -142,10 +142,10 @@ namespace pl::hlp::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; -@@ -151,7 +151,7 @@ namespace pl::hlp::fs { +@@ -156,7 +156,7 @@ namespace pl::hlp::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); hlp::unused(result); } 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 24945986719f..0bea605d4827 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-10-08 08:03:47 UTC +--- lib/libimhex/source/api/imhex_api.cpp.orig 2022-11-14 09:07:21 UTC +++ lib/libimhex/source/api/imhex_api.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include -@@ -266,7 +267,7 @@ namespace hex { +@@ -272,7 +273,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-plugins_builtin_include_content_views_view__pattern__editor.hpp b/editors/imhex/files/patch-plugins_builtin_include_content_views_view__pattern__editor.hpp new file mode 100644 index 000000000000..1ea8e959ef00 --- /dev/null +++ b/editors/imhex/files/patch-plugins_builtin_include_content_views_view__pattern__editor.hpp @@ -0,0 +1,19 @@ +--- plugins/builtin/include/content/views/view_pattern_editor.hpp.orig 2022-11-14 09:07:21 UTC ++++ plugins/builtin/include/content/views/view_pattern_editor.hpp +@@ -16,6 +16,7 @@ + #include + #include + #include ++#include + + #include + +@@ -65,7 +66,7 @@ namespace hex::plugin::builtin { + bool m_syncPatternSourceCode = false; + bool m_autoLoadPatterns = true; + +- std::map> m_sectionWindowDrawer; ++ std::map> m_sectionWindowDrawer; + private: + void drawConsole(ImVec2 size, const std::vector> &console); + void drawEnvVars(ImVec2 size, std::list &envVars); 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 bea962f71143..ba671e2666d4 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-10-12 10:48:50 UTC +--- plugins/builtin/source/content/views/view_hex_editor.cpp.orig 2022-11-14 09:07:21 UTC +++ plugins/builtin/source/content/views/view_hex_editor.cpp -@@ -290,7 +290,7 @@ namespace hex::plugin::builtin { - reader.seek(this->m_searchPosition.value_or(0x00)); +@@ -296,7 +296,7 @@ namespace hex::plugin::builtin { + reader.seek(this->m_searchPosition.value_or(provider->getBaseAddress())); 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_builtin_source_content_views_view__pattern__editor.cpp b/editors/imhex/files/patch-plugins_builtin_source_content_views_view__pattern__editor.cpp new file mode 100644 index 000000000000..7372fc620a86 --- /dev/null +++ b/editors/imhex/files/patch-plugins_builtin_source_content_views_view__pattern__editor.cpp @@ -0,0 +1,29 @@ +--- plugins/builtin/source/content/views/view_pattern_editor.cpp.orig 2022-11-23 07:51:06 UTC ++++ plugins/builtin/source/content/views/view_pattern_editor.cpp +@@ -461,7 +461,7 @@ namespace hex::plugin::builtin { + dataProvider->setReadOnly(true); + + auto hexEditor = ui::HexEditor(); +- hexEditor.setBackgroundHighlightCallback([this, id](u64 address, const u8 *, size_t) -> std::optional { ++ hexEditor.setBackgroundHighlightCallback([this, id = id](u64 address, const u8 *, size_t) -> std::optional { + if (this->m_runningEvaluators != 0) + return std::nullopt; + if (!ImHexApi::Provider::isValid()) +@@ -483,7 +483,7 @@ namespace hex::plugin::builtin { + + auto patternProvider = ImHexApi::Provider::get(); + +- this->m_sectionWindowDrawer[patternProvider] = [id, patternProvider, dataProvider = std::move(dataProvider), hexEditor, patternDrawer = ui::PatternDrawer()] mutable { ++ this->m_sectionWindowDrawer[patternProvider] = [id=id, patternProvider, dataProvider = std::move(dataProvider), hexEditor, patternDrawer = ui::PatternDrawer()] mutable { + hexEditor.setProvider(dataProvider.get()); + hexEditor.draw(480_scaled); + +@@ -944,7 +944,7 @@ namespace hex::plugin::builtin { + if (type->isTemplateType()) + continue; + +- createNestedMenu(hex::splitString(typeName, "::"), [&] { ++ createNestedMenu(hex::splitString(typeName, "::"), [&, typeName=typeName] { + std::string variableName; + for (char &c : hex::replaceStrings(typeName, "::", "_")) + variableName += static_cast(std::tolower(c)); diff --git a/editors/imhex/pkg-plist b/editors/imhex/pkg-plist index bcd5457bc959..be18e512855b 100644 --- a/editors/imhex/pkg-plist +++ b/editors/imhex/pkg-plist @@ -1,123 +1,123 @@ bin/imhex -lib/libimhex.so.1.24.3 +lib/libimhex.so.1.25.0 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