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 }