X-Git-Url: https://git.siccegge.de//index.cgi?p=frida%2Ffrida.git;a=blobdiff_plain;f=src%2Fcore%2FInformationManager.cxx;h=3525ca9e7548e741f92f3dc28e91c5982dc5d464;hp=8834a7a39f479b49a0d9b9dad115eaf7269d33cc;hb=98e46099f6366309366ea54fc4b97fd5cb383fa7;hpb=d1b23c7274d6430ccc70bf2baf616437db9f5706 diff --git a/src/core/InformationManager.cxx b/src/core/InformationManager.cxx index 8834a7a..3525ca9 100644 --- a/src/core/InformationManager.cxx +++ b/src/core/InformationManager.cxx @@ -7,7 +7,7 @@ #include "core/events/NewFunctionEvent.hxx" #include "core/events/ChangeCommentEvent.hxx" -#include "gui/qt.hxx" +#include "qt.hxx" #include #include @@ -50,7 +50,10 @@ void InformationManager::load(const std::string& filename) { QuaZipFile file(&zip); QuaZipFileInfo info; - zip.open(QuaZip::mdUnzip); + if (!zip.open(QuaZip::mdUnzip)) { + LOG4CXX_ERROR(logger, "Failed to open archive " << filename); + return; + } tmpfile.reset(new QTemporaryFile()); { @@ -73,10 +76,21 @@ void InformationManager::load(const std::string& filename) { file.open(QIODevice::ReadOnly); if(info.name != "binary") { - QXmlStreamReader reader(&file); - assert(QXmlStreamReader::StartDocument == reader.readNext()); - assert(QXmlStreamReader::StartElement == reader.readNext()); - Function * fun = Function::deserialize(reader, this); + if (info.name.startsWith("comment:")) { + QXmlStreamReader reader(&file); + auto starttoken = reader.readNext(); + auto elementtoken = reader.readNext(); + assert(QXmlStreamReader::StartDocument == starttoken); + assert(QXmlStreamReader::StartElement == elementtoken); + Comment::deserialize(reader, this); + } else { + QXmlStreamReader reader(&file); + auto starttoken = reader.readNext(); + auto elementtoken = reader.readNext(); + assert(QXmlStreamReader::StartDocument == starttoken); + assert(QXmlStreamReader::StartElement == elementtoken); + Function::deserialize(reader, this); + } } file.close(); } @@ -117,6 +131,23 @@ void InformationManager::save(const std::string& filename) { stream.writeEndDocument(); outZipFile.close(); } + for (auto commentpair : comments) { + Comment* comment = commentpair.second; + if (!comment->isLocal()) { + QuaZipNewInfo zipinfo(QString("comment:%1").arg(comment->getAddress(), 0, 16)); + zipinfo.setPermissions(static_cast(0x6444)); + outZipFile.open(QIODevice::WriteOnly, zipinfo); + QXmlStreamWriter stream(&outZipFile); + stream.setAutoFormatting(true); + stream.setAutoFormattingIndent(-1); + stream.writeStartDocument(); + + comment->serialize(stream); + + stream.writeEndDocument(); + outZipFile.close(); + } + } zip.close(); }