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;

Reply via email to