Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ktnef for openSUSE:Factory checked in at 2025-08-16 20:36:33 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ktnef (Old) and /work/SRC/openSUSE:Factory/.ktnef.new.1085 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ktnef" Sat Aug 16 20:36:33 2025 rev:118 rq:1299695 version:25.08.0 Changes: -------- --- /work/SRC/openSUSE:Factory/ktnef/ktnef.changes 2025-07-06 17:04:09.901649669 +0200 +++ /work/SRC/openSUSE:Factory/.ktnef.new.1085/ktnef.changes 2025-08-16 20:37:38.867910306 +0200 @@ -1,0 +2,21 @@ +Fri Aug 8 07:47:57 UTC 2025 - Christophe Marin <christo...@krop.fr> + +- Update to 25.08.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/gear/25.08.0/ +- No code change since 25.07.80 + +------------------------------------------------------------------- +Mon Jul 14 14:25:43 UTC 2025 - Christophe Marin <christo...@krop.fr> + +- Update to 25.07.80 + * New feature release +- Changes since 25.04.3: + * Add .gersemirc + * It compiles fine without qt 6.10 deprecated methods + * Use string literals inline operators + * add pre-commit support + * Use c++20 + +------------------------------------------------------------------- Old: ---- ktnef-25.04.3.tar.xz ktnef-25.04.3.tar.xz.sig New: ---- ktnef-25.08.0.tar.xz ktnef-25.08.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ktnef.spec ++++++ --- /var/tmp/diff_new_pack.XLcPe5/_old 2025-08-16 20:37:39.399932546 +0200 +++ /var/tmp/diff_new_pack.XLcPe5/_new 2025-08-16 20:37:39.399932546 +0200 @@ -1,7 +1,7 @@ # # spec file for package ktnef # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2025 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,13 +16,13 @@ # -%define kf6_version 6.6.0 -%define qt6_version 6.6.0 -%define kpim6_version 6.4.3 +%define kf6_version 6.14.0 +%define qt6_version 6.8.0 +%define kpim6_version 6.5.0 %bcond_without released Name: ktnef -Version: 25.04.3 +Version: 25.08.0 Release: 0 Summary: TNEF support License: LGPL-2.1-or-later ++++++ ktnef-25.04.3.tar.xz -> ktnef-25.08.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ktnef-25.04.3/.clang-format-pre-commit new/ktnef-25.08.0/.clang-format-pre-commit --- old/ktnef-25.04.3/.clang-format-pre-commit 1970-01-01 01:00:00.000000000 +0100 +++ new/ktnef-25.08.0/.clang-format-pre-commit 2025-07-29 07:37:56.000000000 +0200 @@ -0,0 +1,95 @@ +--- +# SPDX-FileCopyrightText: 2019 Christoph Cullmann <cullm...@kde.org> +# SPDX-FileCopyrightText: 2019 Gernot Gebhard <gebh...@absint.com> +# +# SPDX-License-Identifier: MIT + +# This file got automatically created by ECM, do not edit +# See https://clang.llvm.org/docs/ClangFormatStyleOptions.html for the config options +# and https://community.kde.org/Policies/Frameworks_Coding_Style#Clang-format_automatic_code_formatting +# for clang-format tips & tricks +--- +Language: JavaScript +DisableFormat: true +--- +Language: Json +DisableFormat: false +IndentWidth: 4 +--- + +# Style for C++ +Language: Cpp + +# base is WebKit coding style: https://webkit.org/code-style-guidelines/ +# below are only things set that diverge from this style! +BasedOnStyle: WebKit + +# enforce C++11 (e.g. for std::vector<std::vector<lala>> +Standard: Cpp11 + +# 4 spaces indent +TabWidth: 4 + +# 2 * 80 wide lines +ColumnLimit: 160 + +# sort includes inside line separated groups +SortIncludes: true + +# break before braces on function, namespace and class definitions. +BreakBeforeBraces: Linux + +# CrlInstruction *a; +PointerAlignment: Right + +# horizontally aligns arguments after an open bracket. +AlignAfterOpenBracket: Align + +# don't move all parameters to new line +AllowAllParametersOfDeclarationOnNextLine: false + +# no single line functions +AllowShortFunctionsOnASingleLine: None + +# no single line enums +AllowShortEnumsOnASingleLine: false + +# always break before you encounter multi line strings +AlwaysBreakBeforeMultilineStrings: true + +# don't move arguments to own lines if they are not all on the same +BinPackArguments: false + +# don't move parameters to own lines if they are not all on the same +BinPackParameters: false + +# In case we have an if statement with multiple lines the operator should be at the beginning of the line +# but we do not want to break assignments +BreakBeforeBinaryOperators: NonAssignment + +# format C++11 braced lists like function calls +Cpp11BracedListStyle: true + +# do not put a space before C++11 braced lists +SpaceBeforeCpp11BracedList: false + +# remove empty lines +KeepEmptyLinesAtTheStartOfBlocks: false + +# no namespace indentation to keep indent level low +NamespaceIndentation: None + +# we use template< without space. +SpaceAfterTemplateKeyword: false + +# Always break after template declaration +AlwaysBreakTemplateDeclarations: true + +# macros for which the opening brace stays attached. +ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH, forever, Q_FOREVER, QBENCHMARK, QBENCHMARK_ONCE , wl_resource_for_each, wl_resource_for_each_safe ] + +# keep lambda formatting multi-line if not empty +AllowShortLambdasOnASingleLine: Empty + +# We do not want clang-format to put all arguments on a new line +AllowAllArgumentsOnNextLine: false diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ktnef-25.04.3/.gersemirc new/ktnef-25.08.0/.gersemirc --- old/ktnef-25.04.3/.gersemirc 1970-01-01 01:00:00.000000000 +0100 +++ new/ktnef-25.08.0/.gersemirc 2025-07-29 07:37:56.000000000 +0200 @@ -0,0 +1,3 @@ +indent: 4 +line_length: 120 +list_expansion: favour-expansion diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ktnef-25.04.3/.gitlab-ci.yml new/ktnef-25.08.0/.gitlab-ci.yml --- old/ktnef-25.04.3/.gitlab-ci.yml 2025-06-07 08:55:54.000000000 +0200 +++ new/ktnef-25.08.0/.gitlab-ci.yml 2025-07-29 07:37:56.000000000 +0200 @@ -6,11 +6,8 @@ file: - /gitlab-templates/linux-qt6.yml - /gitlab-templates/linux-qt6-next.yml - - /gitlab-templates/json-validation.yml - /gitlab-templates/freebsd-qt6.yml - /gitlab-templates/windows-qt6.yml - /gitlab-templates/cppcheck.yml - - /gitlab-templates/clang-format.yml - /gitlab-templates/alpine-qt6.yml - - /gitlab-templates/xml-lint.yml - - /gitlab-templates/yaml-lint.yml + - /gitlab-templates/pre-commit.yml diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ktnef-25.04.3/.pre-commit-config.yaml new/ktnef-25.08.0/.pre-commit-config.yaml --- old/ktnef-25.04.3/.pre-commit-config.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/ktnef-25.08.0/.pre-commit-config.yaml 2025-07-29 07:37:56.000000000 +0200 @@ -0,0 +1,50 @@ +# SPDX-FileCopyrightText: none +# SPDX-License-Identifier: CC0-1.0 +# See https://pre-commit.com for more information +# See https://pre-commit.com/hooks.html for more hooks + +exclude: (^po/|.desktop|Messages.sh) +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v5.0.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-added-large-files + - id: check-case-conflict + - id: check-xml + - id: check-yaml + args: [--allow-multiple-documents] + exclude: ^(.clang-tidy) + - id: check-json + - id: check-symlinks + - id: destroyed-symlinks + - id: check-executables-have-shebangs + - id: check-toml + - repo: https://github.com/pre-commit/mirrors-clang-format + rev: v20.1.4 + hooks: + - id: clang-format + # force using this project's configuration rather + # than the one provided by CI + args: ["--style=file:.clang-format-pre-commit"] + - repo: https://github.com/astral-sh/ruff-pre-commit + # Ruff version. + rev: v0.11.9 + hooks: + # Run the linter. + - id: ruff + # Run the formatter. + - id: ruff-format + - repo: https://github.com/BlankSpruce/gersemi + rev: 0.19.3 + hooks: + - id: gersemi + - repo: https://github.com/scop/pre-commit-shfmt + rev: v3.11.0-1 + hooks: + - id: shfmt + - repo: https://github.com/shellcheck-py/shellcheck-py + rev: v0.10.0.1 + hooks: + - id: shellcheck diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ktnef-25.04.3/CMakeLists.txt new/ktnef-25.08.0/CMakeLists.txt --- old/ktnef-25.04.3/CMakeLists.txt 2025-06-07 08:55:54.000000000 +0200 +++ new/ktnef-25.08.0/CMakeLists.txt 2025-07-29 07:37:56.000000000 +0200 @@ -1,10 +1,11 @@ cmake_minimum_required(VERSION 3.16 FATAL_ERROR) -set(PIM_VERSION "6.4.3") +set(PIM_VERSION "6.5.0") project(KTnef VERSION ${PIM_VERSION}) -set(KF_MIN_VERSION "6.9.0") -set(QT_REQUIRED_VERSION "6.7.0") +set(KF_MIN_VERSION "6.14.0") +set(QT_REQUIRED_VERSION "6.8.0") +set(CMAKE_CXX_STANDARD 20) find_package(ECM ${KF_MIN_VERSION} CONFIG REQUIRED) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) @@ -16,35 +17,53 @@ include(ECMGenerateHeaders) include(ECMSetupVersion) -include(KDEGitCommitHooks) -include(KDEClangFormat) -file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES -src/*.cpp -src/*.h -autotests/*.cpp -autotests/*.h -) -kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES}) +file( + GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES + src/*.cpp + src/*.h + autotests/*.cpp + autotests/*.h +) +set(PRE_COMMIT_INSTALLED FALSE) +if(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR}) + if(EXISTS "${PROJECT_SOURCE_DIR}/.git/hooks/pre-commit") + file(READ "${PROJECT_SOURCE_DIR}/.git/hooks/pre-commit" FILE_CONTENTS) + string(FIND "${FILE_CONTENTS}" "File generated by pre-commit" INDEX) + if(${INDEX} GREATER_EQUAL 0) + set(PRE_COMMIT_INSTALLED TRUE) + endif() + endif() +endif() +if(NOT ${PRE_COMMIT_INSTALLED}) + include(KDEGitCommitHooks) + include(KDEClangFormat) + kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES}) +endif() + include(ECMQtDeclareLoggingCategory) include(ECMDeprecationSettings) include(ECMFeatureSummary) include(ECMCheckOutboundLicense) -file(GLOB_RECURSE ALL_SOURCE_FILES -src/*.cpp -src/*.h -autotests/*.cpp -autotests/*.h +file( + GLOB_RECURSE ALL_SOURCE_FILES + src/*.cpp + src/*.h + autotests/*.cpp + autotests/*.h ) ecm_check_outbound_license(LICENSES GPL-2.0-only FILES ${ALL_SOURCE_FILES}) include(ECMAddQch) option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF) -add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)") - +add_feature_info( + QCH + ${BUILD_QCH} + "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" +) set(KTNEF_LIB_VERSION ${PIM_VERSION}) -set(CALENDARUTILS_LIB_VERSION "6.4.3") +set(CALENDARUTILS_LIB_VERSION "6.5.0") ecm_setup_version(PROJECT VARIABLE_PREFIX KTNEF VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/ktnef_version.h" PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KPim6TnefConfigVersion.cmake" @@ -60,23 +79,17 @@ find_package(KF6I18n ${KF_MIN_VERSION} CONFIG REQUIRED) add_definitions(-DQT_NO_CONTEXTLESS_CONNECT) -ecm_set_disabled_deprecation_versions(QT 6.9.0 KF 6.12.0) +ecm_set_disabled_deprecation_versions(QT 6.10.0 KF 6.16.0) +install(EXPORT KPim6TnefTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KPim6TnefTargets.cmake NAMESPACE KPim6::) - -install(EXPORT KPim6TnefTargets - DESTINATION "${CMAKECONFIG_INSTALL_DIR}" - FILE KPim6TnefTargets.cmake - NAMESPACE KPim6:: +install( + FILES + ${CMAKE_CURRENT_BINARY_DIR}/ktnef_version.h + DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KPim6/KTNEF/ + COMPONENT Devel ) -install(FILES - ${CMAKE_CURRENT_BINARY_DIR}/ktnef_version.h - DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KPim6/KTNEF/ - COMPONENT Devel -) - - add_definitions(-DTRANSLATION_DOMAIN=\"libktnef6\") option(USE_UNITY_CMAKE_SUPPORT "Use UNITY cmake support (speedup compile time)" OFF) @@ -96,25 +109,26 @@ FILE KPim6TnefQchTargets.cmake DESTINATION "${CMAKECONFIG_INSTALL_DIR}" COMPONENT Devel -) + ) set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KPim6TnefQchTargets.cmake\")") endif() configure_package_config_file( - "${KTnef_SOURCE_DIR}/KPimTnefConfig.cmake.in" - "${KTnef_BINARY_DIR}/KPim6TnefConfig.cmake" - INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} + "${KTnef_SOURCE_DIR}/KPimTnefConfig.cmake.in" + "${KTnef_BINARY_DIR}/KPim6TnefConfig.cmake" + INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} ) - -install(FILES - "${KTnef_BINARY_DIR}/KPim6TnefConfig.cmake" - "${KTnef_BINARY_DIR}/KPim6TnefConfigVersion.cmake" - DESTINATION "${CMAKECONFIG_INSTALL_DIR}" - COMPONENT Devel +install( + FILES + "${KTnef_BINARY_DIR}/KPim6TnefConfig.cmake" + "${KTnef_BINARY_DIR}/KPim6TnefConfigVersion.cmake" + DESTINATION "${CMAKECONFIG_INSTALL_DIR}" + COMPONENT Devel ) - -kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT) +if(DEFINED kde_configure_git_pre_commit_hook) + kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT) +endif() ki18n_install(po) ecm_feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ktnef-25.04.3/CMakePresets.json new/ktnef-25.08.0/CMakePresets.json --- old/ktnef-25.04.3/CMakePresets.json 2025-06-07 08:55:54.000000000 +0200 +++ new/ktnef-25.08.0/CMakePresets.json 2025-07-29 07:37:56.000000000 +0200 @@ -40,7 +40,7 @@ "displayName": "Build with Asan support.", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", - "ECM_ENABLE_SANITIZERS" : "'address;undefined'" + "ECM_ENABLE_SANITIZERS": "'address;undefined'" }, "inherits": [ "base" @@ -146,7 +146,7 @@ { "name": "ftime-trace", "configurePreset": "ftime-trace" - }, + }, { "name": "dev-mold", "configurePreset": "dev-mold" @@ -175,35 +175,55 @@ "name": "clazy", "configurePreset": "clazy", "environment": { - "CLAZY_CHECKS" : "level0,level1,detaching-member,ifndef-define-typo,isempty-vs-count,qrequiredresult-candidates,reserve-candidates,signal-with-return-value,unneeded-cast,function-args-by-ref,function-args-by-value,returning-void-expression,no-ctor-missing-parent-argument,isempty-vs-count,qhash-with-char-pointer-key,raw-environment-function,qproperty-type-mismatch,old-style-connect,qstring-allocations,container-inside-loop,heap-allocated-small-trivial-type,inefficient-qlist,qstring-varargs,level2,detaching-member,heap-allocated-small-trivial-type,isempty-vs-count,qstring-varargs,qvariant-template-instantiation,raw-environment-function,reserve-candidates,signal-with-return-value,thread-with-slots,no-ctor-missing-parent-argument,no-missing-typeinfo", - "CCACHE_DISABLE" : "ON" + "CLAZY_CHECKS": "level0,level1,detaching-member,ifndef-define-typo,isempty-vs-count,qrequiredresult-candidates,reserve-candidates,signal-with-return-value,unneeded-cast,function-args-by-ref,function-args-by-value,returning-void-expression,no-ctor-missing-parent-argument,isempty-vs-count,qhash-with-char-pointer-key,raw-environment-function,qproperty-type-mismatch,old-style-connect,qstring-allocations,container-inside-loop,heap-allocated-small-trivial-type,inefficient-qlist,qstring-varargs,level2,detaching-member,heap-allocated-small-trivial-type,isempty-vs-count,qstring-varargs,qvariant-template-instantiation,raw-environment-function,reserve-candidates,signal-with-return-value,thread-with-slots,no-ctor-missing-parent-argument,no-missing-typeinfo", + "CCACHE_DISABLE": "ON" } } ], "testPresets": [ - { - "name": "dev", - "configurePreset": "dev", - "output": {"outputOnFailure": true}, - "execution": {"noTestsAction": "error", "stopOnFailure": false} - }, - { - "name": "asan", - "configurePreset": "asan", - "output": {"outputOnFailure": true}, - "execution": {"noTestsAction": "error", "stopOnFailure": true} - }, - { - "name": "unity", - "configurePreset": "unity", - "output": {"outputOnFailure": true}, - "execution": {"noTestsAction": "error", "stopOnFailure": true} - }, - { - "name": "coverage", - "configurePreset": "coverage", - "output": {"outputOnFailure": true}, - "execution": {"noTestsAction": "error", "stopOnFailure": true} - } - ] + { + "name": "dev", + "configurePreset": "dev", + "output": { + "outputOnFailure": true + }, + "execution": { + "noTestsAction": "error", + "stopOnFailure": false + } + }, + { + "name": "asan", + "configurePreset": "asan", + "output": { + "outputOnFailure": true + }, + "execution": { + "noTestsAction": "error", + "stopOnFailure": true + } + }, + { + "name": "unity", + "configurePreset": "unity", + "output": { + "outputOnFailure": true + }, + "execution": { + "noTestsAction": "error", + "stopOnFailure": true + } + }, + { + "name": "coverage", + "configurePreset": "coverage", + "output": { + "outputOnFailure": true + }, + "execution": { + "noTestsAction": "error", + "stopOnFailure": true + } + } + ] } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ktnef-25.04.3/LICENSES/MIT.txt new/ktnef-25.08.0/LICENSES/MIT.txt --- old/ktnef-25.04.3/LICENSES/MIT.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/ktnef-25.08.0/LICENSES/MIT.txt 2025-07-29 07:37:56.000000000 +0200 @@ -0,0 +1,19 @@ +MIT License Copyright (c) <year> <copyright holders> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ktnef-25.04.3/README.md new/ktnef-25.08.0/README.md --- old/ktnef-25.04.3/README.md 2025-06-07 08:55:54.000000000 +0200 +++ new/ktnef-25.08.0/README.md 2025-07-29 07:37:56.000000000 +0200 @@ -1,4 +1,4 @@ -# KTNEF - an API for handling TNEF data. +# KTNEF - an API for handling TNEF data ## Purpose diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ktnef-25.04.3/autotests/CMakeLists.txt new/ktnef-25.08.0/autotests/CMakeLists.txt --- old/ktnef-25.04.3/autotests/CMakeLists.txt 2025-06-07 08:55:54.000000000 +0200 +++ new/ktnef-25.08.0/autotests/CMakeLists.txt 2025-07-29 07:37:56.000000000 +0200 @@ -3,7 +3,6 @@ include(ECMAddTests) find_package(Qt6Test ${QT_REQUIRED_VERSION} CONFIG REQUIRED) - configure_file(config-ktnef-tests.h.in ${CMAKE_CURRENT_BINARY_DIR}/config-ktnef-tests.h) ecm_add_tests( parsertest.cpp NAME_PREFIX "ktnetf-" LINK_LIBRARIES KPim6Tnef Qt::Test) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ktnef-25.04.3/po/ar/libktnef6.po new/ktnef-25.08.0/po/ar/libktnef6.po --- old/ktnef-25.04.3/po/ar/libktnef6.po 2025-06-07 08:55:54.000000000 +0200 +++ new/ktnef-25.08.0/po/ar/libktnef6.po 2025-07-29 07:37:56.000000000 +0200 @@ -17,7 +17,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " -"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" #: formatter.cpp:300 #, kde-format diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ktnef-25.04.3/readme-build-ftime.txt new/ktnef-25.08.0/readme-build-ftime.txt --- old/ktnef-25.04.3/readme-build-ftime.txt 2025-06-07 08:55:54.000000000 +0200 +++ new/ktnef-25.08.0/readme-build-ftime.txt 2025-07-29 07:37:56.000000000 +0200 @@ -23,4 +23,3 @@ see https://aras-p.info/blog/2019/09/28/Clang-Build-Analyzer/ - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ktnef-25.04.3/src/CMakeLists.txt new/ktnef-25.08.0/src/CMakeLists.txt --- old/ktnef-25.04.3/src/CMakeLists.txt 2025-06-07 08:55:54.000000000 +0200 +++ new/ktnef-25.08.0/src/CMakeLists.txt 2025-07-29 07:37:56.000000000 +0200 @@ -1,55 +1,67 @@ add_library(KPim6Tnef) add_library(KPim6::Tnef ALIAS KPim6Tnef) -target_sources(KPim6Tnef PRIVATE - ktnefparser.cpp - ktnefproperty.cpp - ktnefattach.cpp - mapi.cpp - ktnefpropertyset.cpp - ktnefmessage.cpp - ktnefwriter.cpp - lzfu.cpp - formatter.cpp - ktnefpropertyset.h - ktnefparser.h - mapi.h - ktnefattach.h - lzfu.h - ktnefmessage.h - ktnefdefs.h - formatter.h - ktnefwriter.h - ktnefproperty.h +target_sources( + KPim6Tnef + PRIVATE + ktnefparser.cpp + ktnefproperty.cpp + ktnefattach.cpp + mapi.cpp + ktnefpropertyset.cpp + ktnefmessage.cpp + ktnefwriter.cpp + lzfu.cpp + formatter.cpp + ktnefpropertyset.h + ktnefparser.h + mapi.h + ktnefattach.h + lzfu.h + ktnefmessage.h + ktnefdefs.h + formatter.h + ktnefwriter.h + ktnefproperty.h ) ecm_qt_declare_logging_category(KPim6Tnef HEADER ktnef_debug.h IDENTIFIER KTNEF_LOG CATEGORY_NAME org.kde.pim.ktnef OLD_CATEGORY_NAMES log_ktnef - DESCRIPTION "ktnef (pim lib)" EXPORT KTNEF) + DESCRIPTION "ktnef (pim lib)" EXPORT KTNEF +) if(COMPILE_WITH_UNITY_CMAKE_SUPPORT) - set_target_properties(KPim6Tnef PROPERTIES UNITY_BUILD ON) + set_target_properties( + KPim6Tnef + PROPERTIES + UNITY_BUILD + ON + ) endif() generate_export_header(KPim6Tnef BASE_NAME ktnef) - - target_include_directories(KPim6Tnef INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR}/KPim6/KTNEF>") target_include_directories(KPim6Tnef PUBLIC "$<BUILD_INTERFACE:${KTnef_SOURCE_DIR}/src;${KTnef_BINARY_DIR}/src>") -target_link_libraries(KPim6Tnef -PUBLIC - KF6::CalendarCore -PRIVATE - KPim6::CalendarUtils - KF6::Contacts - KF6::I18n -) - -set_target_properties(KPim6Tnef PROPERTIES - VERSION ${KTNEF_VERSION} - SOVERSION ${KTNEF_SOVERSION} - EXPORT_NAME Tnef +target_link_libraries( + KPim6Tnef + PUBLIC + KF6::CalendarCore + PRIVATE + KPim6::CalendarUtils + KF6::Contacts + KF6::I18n +) + +set_target_properties( + KPim6Tnef + PROPERTIES + VERSION + ${KTNEF_VERSION} + SOVERSION + ${KTNEF_SOVERSION} + EXPORT_NAME + Tnef ) install(TARGETS KPim6Tnef EXPORT KPim6TnefTargets ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) @@ -70,16 +82,16 @@ install(FILES ${KTnef_CamelCase_HEADERS} DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KPim6/KTNEF/KTNEF/ COMPONENT Devel) -install(FILES - ${CMAKE_CURRENT_BINARY_DIR}/ktnef_export.h - ${KTnef_HEADERS} +install( + FILES + ${CMAKE_CURRENT_BINARY_DIR}/ktnef_export.h + ${KTnef_HEADERS} DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KPim6/KTNEF/ktnef COMPONENT Devel ) ecm_qt_install_logging_categories(EXPORT KTNEF FILE ktnef.categories DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}) - if(BUILD_QCH) ecm_add_qch( KPim6Tnef_QCH @@ -100,5 +112,5 @@ TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} COMPONENT Devel -) + ) endif() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ktnef-25.04.3/src/formatter.cpp new/ktnef-25.08.0/src/formatter.cpp --- old/ktnef-25.04.3/src/formatter.cpp 2025-06-07 08:55:54.000000000 +0200 +++ new/ktnef-25.08.0/src/formatter.cpp 2025-07-29 07:37:56.000000000 +0200 @@ -77,7 +77,7 @@ QDateTime dT = QDateTime(tmpDate, tmpTime); // correct for GMT ( == Zulu time == UTC ) - if (dtStr.at(dtStr.length() - 1) == QLatin1Char('Z')) { + if (dtStr.at(dtStr.length() - 1) == u'Z') { // dT = dT.addSecs( 60 * KRFCDate::localUTCOffset() ); // localUTCOffset( dT ) ); dT = dT.toLocalTime(); @@ -134,11 +134,11 @@ if (bCompatClassAppointment || "IPM.APPOINTMENT"_L1 == msgClass) { // Compose a vCal bool bIsReply = false; - QString prodID = QStringLiteral("-//Microsoft Corporation//Outlook "); - prodID += tnefMsg->findNamedProp(QStringLiteral("0x8554"), QStringLiteral("9.0")); + QString prodID = u"-//Microsoft Corporation//Outlook "_s; + prodID += tnefMsg->findNamedProp(u"0x8554"_s, u"9.0"_s); prodID += "MIMEDIR/EN\n"_L1; prodID += "VERSION:2.0\n"_L1; - calFormat.setApplication(QStringLiteral("Outlook"), prodID); + calFormat.setApplication(u"Outlook"_s, prodID); // iTIPMethod method; if (bCompatMethodRequest) { @@ -157,7 +157,7 @@ // // - if (tnefMsg->findProp(0x0c17) == QLatin1Char('1')) { + if (tnefMsg->findProp(0x0c17) == u'1') { bIsReply = true; } // method = iTIPRequest; @@ -172,7 +172,7 @@ } if (!sSenderSearchKeyEmail.isEmpty()) { - const int colon = sSenderSearchKeyEmail.indexOf(QLatin1Char(':')); + const int colon = sSenderSearchKeyEmail.indexOf(u':'); // May be e.g. "SMTP:k...@kde.org" if (colon == -1) { sSenderSearchKeyEmail.remove(0, colon + 1); @@ -180,12 +180,12 @@ } QString s(tnefMsg->findProp(0x8189)); - const QStringList attendees = s.split(QLatin1Char(';')); + const QStringList attendees = s.split(u';'); if (!attendees.isEmpty()) { for (auto it = attendees.cbegin(), end = attendees.cend(); it != end; ++it) { // Skip all entries that have no '@' since these are // no mail addresses - if (!(*it).contains(QLatin1Char('@'))) { + if (!(*it).contains(u'@')) { s = (*it).trimmed(); Attendee attendee(s, s, true); @@ -263,11 +263,11 @@ // PENDING(khz): is this value in local timezone? Must it be // adjusted? Most likely this is a bug in the server or in // Outlook - we ignore it for now. - s = tnefMsg->findProp(0x8202).remove(QLatin1Char('-')).remove(QLatin1Char(':')); + s = tnefMsg->findProp(0x8202).remove(u'-').remove(u':'); // ### kcal always uses currentDateTime() // event->setDtStamp( QDateTime::fromString( s ) ); - s = tnefMsg->findNamedProp(QStringLiteral("Keywords")); + s = tnefMsg->findNamedProp(u"Keywords"_s); event->setCategories(s); s = tnefMsg->findProp(0x1000); @@ -287,8 +287,8 @@ // is reminder flag set ? if (!tnefMsg->findProp(0x8503).isEmpty()) { Alarm::Ptr alarm(new Alarm(event.data())); // TODO: fix when KCalendarCore::Alarm is fixed - QDateTime highNoonTime = pureISOToLocalQDateTime(tnefMsg->findProp(0x8502).remove(QLatin1Char('-')).remove(QLatin1Char(':'))); - QDateTime wakeMeUpTime = pureISOToLocalQDateTime(tnefMsg->findProp(0x8560, QString()).remove(QLatin1Char('-')).remove(QLatin1Char(':'))); + QDateTime highNoonTime = pureISOToLocalQDateTime(tnefMsg->findProp(0x8502).remove(u'-').remove(u':')); + QDateTime wakeMeUpTime = pureISOToLocalQDateTime(tnefMsg->findProp(0x8560, QString()).remove(u'-').remove(u':')); alarm->setTime(wakeMeUpTime); if (highNoonTime.isValid() && wakeMeUpTime.isValid()) { @@ -318,19 +318,17 @@ addressee.addEmail(email); addressee.addEmail(KContacts::Email(sNamedProp(tnefMsg, QStringLiteral(MAPI_TAG_CONTACT_EMAIL2EMAILADDRESS)))); addressee.addEmail(KContacts::Email(sNamedProp(tnefMsg, QStringLiteral(MAPI_TAG_CONTACT_EMAIL3EMAILADDRESS)))); - addressee.insertCustom(QStringLiteral("KADDRESSBOOK"), - QStringLiteral("X-IMAddress"), - sNamedProp(tnefMsg, QStringLiteral(MAPI_TAG_CONTACT_IMADDRESS))); - addressee.insertCustom(QStringLiteral("KADDRESSBOOK"), QStringLiteral("X-SpousesName"), stringProp(tnefMsg, MAPI_TAG_PR_SPOUSE_NAME)); - addressee.insertCustom(QStringLiteral("KADDRESSBOOK"), QStringLiteral("X-ManagersName"), stringProp(tnefMsg, MAPI_TAG_PR_MANAGER_NAME)); - addressee.insertCustom(QStringLiteral("KADDRESSBOOK"), QStringLiteral("X-AssistantsName"), stringProp(tnefMsg, MAPI_TAG_PR_ASSISTANT)); - addressee.insertCustom(QStringLiteral("KADDRESSBOOK"), QStringLiteral("X-Department"), stringProp(tnefMsg, MAPI_TAG_PR_DEPARTMENT_NAME)); - addressee.insertCustom(QStringLiteral("KADDRESSBOOK"), QStringLiteral("X-Office"), stringProp(tnefMsg, MAPI_TAG_PR_OFFICE_LOCATION)); - addressee.insertCustom(QStringLiteral("KADDRESSBOOK"), QStringLiteral("X-Profession"), stringProp(tnefMsg, MAPI_TAG_PR_PROFESSION)); + addressee.insertCustom(u"KADDRESSBOOK"_s, u"X-IMAddress"_s, sNamedProp(tnefMsg, QStringLiteral(MAPI_TAG_CONTACT_IMADDRESS))); + addressee.insertCustom(u"KADDRESSBOOK"_s, u"X-SpousesName"_s, stringProp(tnefMsg, MAPI_TAG_PR_SPOUSE_NAME)); + addressee.insertCustom(u"KADDRESSBOOK"_s, u"X-ManagersName"_s, stringProp(tnefMsg, MAPI_TAG_PR_MANAGER_NAME)); + addressee.insertCustom(u"KADDRESSBOOK"_s, u"X-AssistantsName"_s, stringProp(tnefMsg, MAPI_TAG_PR_ASSISTANT)); + addressee.insertCustom(u"KADDRESSBOOK"_s, u"X-Department"_s, stringProp(tnefMsg, MAPI_TAG_PR_DEPARTMENT_NAME)); + addressee.insertCustom(u"KADDRESSBOOK"_s, u"X-Office"_s, stringProp(tnefMsg, MAPI_TAG_PR_OFFICE_LOCATION)); + addressee.insertCustom(u"KADDRESSBOOK"_s, u"X-Profession"_s, stringProp(tnefMsg, MAPI_TAG_PR_PROFESSION)); - QString s = tnefMsg->findProp(MAPI_TAG_PR_WEDDING_ANNIVERSARY).remove(QLatin1Char('-')).remove(QLatin1Char(':')); + QString s = tnefMsg->findProp(MAPI_TAG_PR_WEDDING_ANNIVERSARY).remove(u'-').remove(u':'); if (!s.isEmpty()) { - addressee.insertCustom(QStringLiteral("KADDRESSBOOK"), QStringLiteral("X-Anniversary"), s); + addressee.insertCustom(u"KADDRESSBOOK"_s, u"X-Anniversary"_s, s); } KContacts::ResourceLocatorUrl url; @@ -399,7 +397,7 @@ nr = stringProp(tnefMsg, MAPI_TAG_PR_BUSINESS_FAX_NUMBER); addressee.insertPhoneNumber(KContacts::PhoneNumber(nr, KContacts::PhoneNumber::Fax | KContacts::PhoneNumber::Work)); - s = tnefMsg->findProp(MAPI_TAG_PR_BIRTHDAY).remove(QLatin1Char('-')).remove(QLatin1Char(':')); + s = tnefMsg->findProp(MAPI_TAG_PR_BIRTHDAY).remove(u'-').remove(u':'); if (!s.isEmpty()) { addressee.setBirthday(QDateTime::fromString(s)); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ktnef-25.04.3/src/ktnefparser.cpp new/ktnef-25.08.0/src/ktnefparser.cpp --- old/ktnef-25.04.3/src/ktnefparser.cpp 2025-06-07 08:55:54.000000000 +0200 +++ new/ktnef-25.08.0/src/ktnefparser.cpp 2025-07-29 07:37:56.000000000 +0200 @@ -189,7 +189,7 @@ readMAPIProperties(message_->properties(), nullptr); device_->seek(i2); qCDebug(KTNEF_LOG) << "Properties:" << message_->properties().count(); - value = QStringLiteral("< %1 properties >").arg(message_->properties().count() - nProps); + value = u"< %1 properties >"_s.arg(message_->properties().count() - nProps); } break; case attTNEFVERSION: { @@ -327,7 +327,7 @@ current_->setSize(i); current_->setOffset(device_->pos()); device_->seek(device_->pos() + i); - value = QStringLiteral("< size=%1 >").arg(i); + value = u"< size=%1 >"_s.arg(i); qCDebug(KTNEF_LOG) << "Attachment Data: size=" << i; break; case attATTACHMENT: // try to get attachment info @@ -346,7 +346,7 @@ current_->setMimeTag(str); } current_->setExtension(current_->property(MAPI_TAG_EXTENSION).toString()); - value = QStringLiteral("< %1 properties >").arg(current_->properties().count()); + value = u"< %1 properties >"_s.arg(current_->properties().count()); break; case attATTACHMODDATE: value = readTNEFDate(stream_); @@ -406,7 +406,7 @@ stream_ >> i; if (i == TNEF_SIGNATURE) { stream_ >> u; - qCDebug(KTNEF_LOG).nospace() << "Attachment cross reference key: 0x" << Qt::hex << qSetFieldWidth(4) << qSetPadChar(QLatin1Char('0')) << u; + qCDebug(KTNEF_LOG).nospace() << "Attachment cross reference key: 0x" << Qt::hex << qSetFieldWidth(4) << qSetPadChar(u'0') << u; // qCDebug(KTNEF_LOG) << "stream:" << device_->pos(); while (!stream_.atEnd()) { stream_ >> c; @@ -455,13 +455,13 @@ { const QString destDir(QDir(dirname).absolutePath()); // get directory path without any "." or ".." - QString filename = destDir + QLatin1Char('/'); + QString filename = destDir + u'/'; if (!att->fileName().isEmpty()) { filename += att->fileName(); } else { filename += att->name(); } - if (filename.endsWith(QLatin1Char('/'))) { + if (filename.endsWith(u'/')) { return false; } @@ -476,7 +476,7 @@ if (!fi.absoluteFilePath().startsWith(destDir)) { qCWarning(KTNEF_LOG) << "Attempted extract into" << fi.absoluteFilePath() << "which is outside of the extraction root folder" << destDir << "." << "Changing export of contained files to extraction root folder."; - filename = destDir + QLatin1Char('/') + fi.fileName(); + filename = destDir + u'/' + fi.fileName(); } QSaveFile outfile(filename); @@ -557,7 +557,7 @@ if (current_->attributes().contains(key)) { if (current_->offset() >= 0) { if (current_->name().isEmpty()) { - current_->setName(QStringLiteral("Unnamed")); + current_->setName(u"Unnamed"_s); } if (current_->mimeTag().isEmpty()) { // No mime type defined in the TNEF structure, @@ -627,7 +627,7 @@ if (u64 <= 0xffffffffU) { dt = QDateTime::fromSecsSinceEpoch((unsigned int)u64); } else { - qCWarning(KTNEF_LOG).nospace() << "Invalid date: low byte=" << Qt::showbase << qSetFieldWidth(8) << qSetPadChar(QLatin1Char('0')) << lowB + qCWarning(KTNEF_LOG).nospace() << "Invalid date: low byte=" << Qt::showbase << qSetFieldWidth(8) << qSetPadChar(u'0') << lowB << ", high byte=" << highB; } return dt; @@ -649,16 +649,16 @@ if ((it = props.find(0x0C15)) != props.end()) { switch ((*it)->value().toInt()) { case 0: - t = QStringLiteral("From:"); + t = u"From:"_s; break; case 1: - t = QStringLiteral("To:"); + t = u"To:"_s; break; case 2: - t = QStringLiteral("Cc:"); + t = u"Cc:"_s; break; case 3: - t = QStringLiteral("Bcc:"); + t = u"Bcc:"_s; break; } } @@ -666,10 +666,10 @@ s.append(t); } if (!dn.isEmpty()) { - s.append(QLatin1Char(' ') + dn); + s.append(u' ' + dn); } if (!addr.isEmpty() && addr != dn) { - s.append(" <"_L1 + addr + QLatin1Char('>')); + s.append(" <"_L1 + addr + u'>'); } return s.trimmed(); @@ -914,8 +914,8 @@ attach->unsetDataParser(); attach->setOffset(device_->pos() + 12); attach->setSize(data.size() - 16); - attach->setMimeTag(QStringLiteral("application/vnd.ms-tnef")); - attach->setDisplayName(QStringLiteral("Embedded Message")); + attach->setMimeTag(u"application/vnd.ms-tnef"_s); + attach->setDisplayName(u"Embedded Message"_s); qCDebug(KTNEF_LOG) << "MAPI Embedded Message: size=" << data.size(); } device_->seek(device_->pos() + (len - 4)); @@ -926,7 +926,7 @@ ALIGN(len, 4) attach->setSize(len); attach->setOffset(device_->pos() - len); - attach->addAttribute(attATTACHDATA, atpBYTE, QStringLiteral("< size=%1 >").arg(len), false); + attach->addAttribute(attATTACHDATA, atpBYTE, u"< size=%1 >"_s.arg(len), false); } } qCDebug(KTNEF_LOG) << "MAPI data: size=" << mapi.value.toByteArray().size(); @@ -937,7 +937,7 @@ if (mapi.name.type == 0) { mapiname = QString::asprintf(" [name = 0x%04x]", mapi.name.value.toUInt()); } else { - mapiname = QStringLiteral(" [name = %1]").arg(mapi.name.value.toString()); + mapiname = u" [name = %1]"_s.arg(mapi.name.value.toString()); } } switch (mapi.type & 0x0FFF) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ktnef-25.04.3/src/ktnefproperty.cpp new/ktnef-25.08.0/src/ktnefproperty.cpp --- old/ktnef-25.04.3/src/ktnefproperty.cpp 2025-06-07 08:55:54.000000000 +0200 +++ new/ktnef-25.08.0/src/ktnefproperty.cpp 2025-07-29 07:37:56.000000000 +0200 @@ -94,11 +94,11 @@ for (i = 0; i < txtCount; ++i) { s.append(QString::asprintf("%02X", (uchar)arr[i])); if (beautify) { - s.append(QLatin1Char(' ')); + s.append(u' '); } } if (i < arr.size()) { - s.append("... (size="_L1 + QString::number(arr.size()) + QLatin1Char(')')); + s.append("... (size="_L1 + QString::number(arr.size()) + u')'); } return s; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ktnef-25.04.3/src/ktnefpropertyset.cpp new/ktnef-25.08.0/src/ktnefpropertyset.cpp --- old/ktnef-25.04.3/src/ktnefpropertyset.cpp 2025-06-07 08:55:54.000000000 +0200 +++ new/ktnef-25.08.0/src/ktnefpropertyset.cpp 2025-07-29 07:37:56.000000000 +0200 @@ -16,6 +16,8 @@ */ #include "ktnefpropertyset.h" +using namespace Qt::Literals::StringLiterals; + #include "ktnefproperty.h" #include <QList> @@ -81,7 +83,7 @@ s.clear(); for (QList<QVariant>::ConstIterator lit = l.constBegin(), litEnd = l.constEnd(); lit != litEnd; ++lit) { if (!s.isEmpty()) { - s += QLatin1Char(','); + s += u','; } s += KTNEFProperty::formatValue(*lit, false); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ktnef-25.04.3/src/ktnefwriter.cpp new/ktnef-25.08.0/src/ktnefwriter.cpp --- old/ktnef-25.04.3/src/ktnefwriter.cpp 2025-06-07 08:55:54.000000000 +0200 +++ new/ktnef-25.08.0/src/ktnefwriter.cpp 2025-07-29 07:37:56.000000000 +0200 @@ -431,7 +431,7 @@ // U also assume that this is like "Name <address>" void KTNEFWriter::setOrganizer(const QString &organizer) { - int i = organizer.indexOf(QLatin1Char('<')); + int i = organizer.indexOf(u'<'); if (i == -1) { return;