File indexing completed on 2023-12-03 12:20:56

0001 /*
0002     SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0003     SPDX-FileCopyrightText: 2019-2022 Harald Sitter <sitter@kde.org>
0004 */
0005 
0006 #include "coredump.h"
0007 
0008 using namespace Qt::StringLiterals;
0009 
0010 Coredump::Coredump(QByteArray cursor, EntriesHash data)
0011     : m_cursor(std::move(cursor))
0012     , m_rawData(std::move(data))
0013     , uid(m_rawData[QByteArrayLiteral("COREDUMP_UID")].toInt())
0014     , pid(m_rawData[QByteArrayLiteral("COREDUMP_PID")].toInt())
0015     , exe(QString::fromLocal8Bit(m_rawData[QByteArrayLiteral("COREDUMP_EXE")]))
0016     , filename(QString::fromLocal8Bit(m_rawData[keyFilename()]))
0017     , systemd_unit(QString::fromLocal8Bit(m_rawData[QByteArrayLiteral("_SYSTEMD_UNIT")]))
0018 {
0019 }
0020 
0021 Coredump::Coredump(const QJsonDocument &document)
0022     : Coredump(QByteArray() /* not from journal, has no cursor */, documentToHash(document))
0023 {
0024 }
0025 
0026 QByteArray Coredump::keyFilename()
0027 {
0028     return QByteArrayLiteral("COREDUMP_FILENAME");
0029 }
0030 
0031 Coredump::EntriesHash Coredump::documentToHash(const QJsonDocument &document)
0032 {
0033     const QVariantMap variantMap = document.toVariant().toMap();
0034     EntriesHash hash;
0035     for (auto it = variantMap.cbegin(); it != variantMap.cend(); ++it) {
0036         hash.insert(it.key().toUtf8(), it->value<QByteArray>());
0037     }
0038     return hash;
0039 }
0040 
0041 QByteArray Coredump::keyPickup()
0042 {
0043     return "_DRKONQI_PICKUP"_ba;
0044 }