# # # patch "src/model/Manifest.cpp" # from [a4a1118533f18ba49b2be1e9da11f13a46ba7c4a] # to [35394fcd74604e4fb1e21bbf5885415a17cfb4cf] # # patch "src/util/StanzaParser.cpp" # from [e1fdb53ef86f383a645ddc6332c6a93bd2ebe08e] # to [ffea7b64010ce6f0402560e00cf5558d8a1c92c6] # # patch "src/util/StanzaParser.h" # from [06eef3f8b021197948a09ef78331a9db95fdeb31] # to [bcaf0eb24633167ee9b5b033edcc1b1c6b37bef4] # ============================================================ --- src/model/Manifest.cpp a4a1118533f18ba49b2be1e9da11f13a46ba7c4a +++ src/model/Manifest.cpp 35394fcd74604e4fb1e21bbf5885415a17cfb4cf @@ -83,7 +83,7 @@ { qWarning("Manifest::parseOutput(): First entry in first stanza should be used format version."); } else - if (entry.val1 != "1") + if (entry.vals.at(0) != "1") { qWarning("Manifest::parseOutput(): Format version is unequal to '1' - newer interface version?"); } @@ -97,21 +97,25 @@ if (entry.sym == "file" || entry.sym == "dir") { - path = entry.val1; + Q_ASSERT(entry.vals.size() == 1); + path = entry.vals.at(0); continue; } if (entry.sym == "content") { - item.fileId = entry.val1; + Q_ASSERT(entry.vals.size() == 1); + item.fileId = entry.vals.at(0); continue; } if (entry.sym == "attr") { - item.attr[entry.val1] = entry.val2; + Q_ASSERT(entry.vals.size() == 2); + item.attr[entry.vals.at(0)] = entry.vals.at(1); continue; } + qWarning("Manifest::parseOutput(): Unknown symbol %s.", qPrintable(entry.sym)); } // check if we really processed an item entry ============================================================ --- src/util/StanzaParser.cpp e1fdb53ef86f383a645ddc6332c6a93bd2ebe08e +++ src/util/StanzaParser.cpp ffea7b64010ce6f0402560e00cf5558d8a1c92c6 @@ -56,17 +56,19 @@ { qWarning("StanzaParser::getStanza(): %d: Couldn't get symbol.", charPos); } - entry.val1 = getHash(); + QString hash(getHash()); // not a hash? - if (entry.val1.size() == 0) + if (hash.size() == 0) { - entry.val1 = getValue(); - if (entry.val1.size() == 0) + //grab all string values and put them into a list + while (true) { - qWarning("StanzaParser::getStanza(): %d: Couldn't get string.", charPos); + // get value returns an empty string if there are no + // more opening quotes + QString value(getValue()); + if (value.size() == 0) break; + entry.vals.append(value); } - // optional: second string (e.g. for attribute sets) - entry.val2 = getValue(); } stanza.append(entry); ============================================================ --- src/util/StanzaParser.h 06eef3f8b021197948a09ef78331a9db95fdeb31 +++ src/util/StanzaParser.h bcaf0eb24633167ee9b5b033edcc1b1c6b37bef4 @@ -23,8 +23,7 @@ typedef struct { QString sym; - QString val1; - QString val2; + QStringList vals; } StanzaEntry; typedef QList Stanza;