Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kcodecs for openSUSE:Factory checked in at 2021-07-15 23:59:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kcodecs (Old) and /work/SRC/openSUSE:Factory/.kcodecs.new.2625 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kcodecs" Thu Jul 15 23:59:22 2021 rev:93 rq:905478 version:5.84.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kcodecs/kcodecs.changes 2021-06-16 20:35:07.387149074 +0200 +++ /work/SRC/openSUSE:Factory/.kcodecs.new.2625/kcodecs.changes 2021-07-16 00:01:01.589254948 +0200 @@ -1,0 +2,11 @@ +Sun Jul 4 07:45:12 UTC 2021 - Christophe Giboudeaux <[email protected]> + +- Update to 5.84.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/frameworks/5/5.84.0 +- Changes since 5.83.0: + * Add Base45 decoding +- Only install the license files once + +------------------------------------------------------------------- Old: ---- kcodecs-5.83.0.tar.xz kcodecs-5.83.0.tar.xz.sig New: ---- kcodecs-5.84.0.tar.xz kcodecs-5.84.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kcodecs.spec ++++++ --- /var/tmp/diff_new_pack.4h2x5O/_old 2021-07-16 00:01:02.193250576 +0200 +++ /var/tmp/diff_new_pack.4h2x5O/_new 2021-07-16 00:01:02.193250576 +0200 @@ -17,14 +17,14 @@ %define lname libKF5Codecs5 -%define _tar_path 5.83 +%define _tar_path 5.84 # Full KF5 version (e.g. 5.33.0) %{!?_kf5_version: %global _kf5_version %{version}} # Last major and minor KF5 version (e.g. 5.33) %{!?_kf5_bugfix_version: %define _kf5_bugfix_version %(echo %{_kf5_version} | awk -F. '{print $1"."$2}')} %bcond_without lang Name: kcodecs -Version: 5.83.0 +Version: 5.84.0 Release: 0 Summary: Method collection to manipulate strings using various encodings License: LGPL-2.1-or-later @@ -104,7 +104,6 @@ %{_kf5_libdir}/libKF5Codecs.so.* %files devel -%license LICENSES/* %{_kf5_includedir}/ %{_kf5_libdir}/cmake/KF5Codecs/ %{_kf5_libdir}/libKF5Codecs.so ++++++ kcodecs-5.83.0.tar.xz -> kcodecs-5.84.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcodecs-5.83.0/CMakeLists.txt new/kcodecs-5.84.0/CMakeLists.txt --- old/kcodecs-5.83.0/CMakeLists.txt 2021-06-05 11:13:45.000000000 +0200 +++ new/kcodecs-5.84.0/CMakeLists.txt 2021-07-03 14:07:38.000000000 +0200 @@ -1,10 +1,10 @@ cmake_minimum_required(VERSION 3.16) -set(KF_VERSION "5.83.0") # handled by release scripts +set(KF_VERSION "5.84.0") # handled by release scripts project(KCodecs VERSION ${KF_VERSION}) include(FeatureSummary) -find_package(ECM 5.83.0 NO_MODULE) +find_package(ECM 5.84.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcodecs-5.83.0/autotests/CMakeLists.txt new/kcodecs-5.84.0/autotests/CMakeLists.txt --- old/kcodecs-5.83.0/autotests/CMakeLists.txt 2021-06-05 11:13:45.000000000 +0200 +++ new/kcodecs-5.84.0/autotests/CMakeLists.txt 2021-07-03 14:07:38.000000000 +0200 @@ -11,6 +11,7 @@ kcharsetstest.cpp kencodingprobertest.cpp rfc2047test.cpp + base45test.cpp codectest.cpp kemailaddresstest.cpp LINK_LIBRARIES KF5::Codecs Qt5::Test diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcodecs-5.83.0/autotests/base45test.cpp new/kcodecs-5.84.0/autotests/base45test.cpp --- old/kcodecs-5.83.0/autotests/base45test.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/kcodecs-5.84.0/autotests/base45test.cpp 2021-07-03 14:07:38.000000000 +0200 @@ -0,0 +1,71 @@ +/* + SPDX-FileCopyrightText: 2021 Volker Krause <[email protected]> + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#include <QTest> + +#include <KCodecs> + +class Base45Test : public QObject +{ + Q_OBJECT +private Q_SLOTS: + void testBase45Decode_data() + { + QTest::addColumn<QByteArray>("in"); + QTest::addColumn<QByteArray>("out"); + + QTest::newRow("empty") << QByteArray() << QByteArray(); + + // examples from the RFC - https://datatracker.ietf.org/doc/draft-faltstrom-base45/ + QTest::newRow("hello") << QByteArray("%69 VD92EX0") << QByteArray("Hello!!"); + QTest::newRow("base-45") << QByteArray("UJCLQE7W581") << QByteArray("base-45"); + QTest::newRow("ietf") << QByteArray("QED8WEX0") << QByteArray("ietf!"); + + // from EU DCG test data - https://github.com/eu-digital-green-certificates/dgc-testdata + QTest::newRow("eu-dcg") + << QByteArray( + "6BF+70790T9WJWG.FKY*4GO0.O1CV2 O5 " + "N2FBBRW1*70HS8WY04AC*WIFN0AHCD8KD97TK0F90KECTHGWJC0FDC:5AIA%G7X+AQB9746HS80:54IBQF60R6$A80X6S1BTYACG6M+9XG8KIAWNA91AY%67092L4WJCT3EHS8XJC$+" + "DXJCCWENF6OF63W5NW6WF6%JC QE/IAYJC5LEW34U3ET7DXC9 QE-ED8%E.JCBECB1A-:8$96646AL60A60S6Q$D.UDRYA " + "96NF6L/5QW6307KQEPD09WEQDD+Q6TW6FA7C466KCN9E%961A6DL6FA7D46JPCT3E5JDLA7$Q6E464W5TG6..DX%DZJC6/DTZ9 QE5$CB$DA/D " + "JC1/D3Z8WED1ECW.CCWE.Y92OAGY8MY9L+9MPCG/D5 C5IA5N9$PC5$CUZCY$5Y$527B+A4KZNQG5TKOWWD9FL%I8U$F7O2IBM85CWOC%LEZU4R/BXHDAHN " + "11$CA5MRI:AONFN7091K9FKIGIY%VWSSSU9%01FO2*FTPQ3C3F") + << QByteArray::fromHex( + "789c0163019cfed28443a10126a104480c4b15512be9140159010da401624445061a60b29429041a61f39fa9390103a101a4617681aa626369782f55524e3a555643493a303" + "144452f495a3132333435412f3543574c553132524e4f4239525853454f5036464738235762636f62444562646e026264746a323032312d30352d323962697374526f626572" + "74204b6f63682d496e737469747574626d616d4f52472d313030303331313834626d706c45552f312f32302f3135303762736402627467693834303533393030366276706a3" + "131313933343930303763646f626a313936342d30382d3132636e616da462666e6a4d75737465726d616e6e62676e654572696b6163666e746a4d55535445524d414e4e6367" + "6e74654552494b416376657265312e302e305840218ebc2a2a77c1796c95a8c942987d461411b0075fd563447295250d5ead69f3b8f6083a515bd97656e87aca01529e6aa0e" + "09144fc07e2884c93080f1419e82f1c66773a"); + } + + void testBase45Decode() + { + QFETCH(QByteArray, in); + QFETCH(QByteArray, out); + + QCOMPARE(KCodecs::base45Decode(in), out); + } + + void testBase45DecodeInvalid_data() + { + QTest::addColumn<QByteArray>("in"); + QTest::newRow("1 byte") << QByteArray("X"); + QTest::newRow("invalid chars") << QByteArray("%69 vD92Ex0"); + } + + void testBase45DecodeInvalid() + { + QFETCH(QByteArray, in); + + // undefined return value, but must not crash or produce ASAN errors + KCodecs::base45Decode(in); + } +}; + +QTEST_APPLESS_MAIN(Base45Test) + +#include "base45test.moc" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcodecs-5.83.0/po/de/kcodecs5_qt.po new/kcodecs-5.84.0/po/de/kcodecs5_qt.po --- old/kcodecs-5.83.0/po/de/kcodecs5_qt.po 2021-06-05 11:13:45.000000000 +0200 +++ new/kcodecs-5.84.0/po/de/kcodecs5_qt.po 2021-07-03 14:07:38.000000000 +0200 @@ -21,9 +21,8 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 19.04.3\n" -"X-Qt-Contexts: true\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Qt-Contexts: true\n" #: kcharsets.cpp:155 msgctxt "KCharsets|@item Text character set" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcodecs-5.83.0/po/zh_CN/kcodecs5_qt.po new/kcodecs-5.84.0/po/zh_CN/kcodecs5_qt.po --- old/kcodecs-5.83.0/po/zh_CN/kcodecs5_qt.po 2021-06-05 11:13:45.000000000 +0200 +++ new/kcodecs-5.84.0/po/zh_CN/kcodecs5_qt.po 2021-07-03 14:07:38.000000000 +0200 @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: kdeorg\n" -"PO-Revision-Date: 2021-06-03 16:05\n" +"PO-Revision-Date: 2021-06-20 07:35\n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcodecs-5.83.0/src/CMakeLists.txt new/kcodecs-5.84.0/src/CMakeLists.txt --- old/kcodecs-5.83.0/src/CMakeLists.txt 2021-06-05 11:13:45.000000000 +0200 +++ new/kcodecs-5.84.0/src/CMakeLists.txt 2021-07-03 14:07:38.000000000 +0200 @@ -9,6 +9,7 @@ target_sources(KF5Codecs PRIVATE kcharsets.cpp kcodecs.cpp + kcodecsbase45.cpp kcodecsbase64.cpp kcodecsidentity.cpp kcodecsqp.cpp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcodecs-5.83.0/src/kcodecs.h new/kcodecs-5.84.0/src/kcodecs.h --- old/kcodecs-5.83.0/src/kcodecs.h 2021-06-05 11:13:45.000000000 +0200 +++ new/kcodecs-5.84.0/src/kcodecs.h 2021-07-03 14:07:38.000000000 +0200 @@ -327,6 +327,17 @@ */ KCODECS_EXPORT QByteArray encodeRFC2047String(const QString &src, const QByteArray &charset); +/** + * Decodes the given data that was encoded using the + * base45 codec. + * + * @param in data to be decoded. + * @return decoded string. + * @since 5.84 + * @see https://datatracker.ietf.org/doc/draft-faltstrom-base45/ + */ +KCODECS_EXPORT QByteArray base45Decode(const QByteArray &in); + class Encoder; class EncoderPrivate; class Decoder; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcodecs-5.83.0/src/kcodecsbase45.cpp new/kcodecs-5.84.0/src/kcodecsbase45.cpp --- old/kcodecs-5.83.0/src/kcodecsbase45.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/kcodecs-5.84.0/src/kcodecsbase45.cpp 2021-07-03 14:07:38.000000000 +0200 @@ -0,0 +1,44 @@ + +/* + SPDX-FileCopyrightText: 2021 Volker Krause <[email protected]> + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#include "kcodecs.h" +#include "kcodecs_debug.h" + +#include <QDebug> + +static constexpr const char base45Table[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:"; + +static uint8_t base45MapFromChar(char c) +{ + const auto it = std::find(std::begin(base45Table), std::end(base45Table), c); + if (it == std::end(base45Table)) { + qCWarning(KCODECS_LOG) << "invalid base45 character:" << c; + return 0; + } + return std::distance(std::begin(base45Table), it); +} + +QByteArray KCodecs::base45Decode(const QByteArray &in) +{ + QByteArray out; + out.reserve(((in.size() / 3) + 1) * 2); + + for (int i = 0; i + 1 < in.size(); i += 3) { + uint32_t n = base45MapFromChar(in[i]) + base45MapFromChar(in[i + 1]) * 45; + if (i + 2 < in.size()) { + n += 45 * 45 * base45MapFromChar(in[i + 2]); + out.push_back(n >> 8); + } else { + if (n >> 8) { + out.push_back(n >> 8); + } + } + out.push_back(n % 256); + } + + return out; +}
