# # # patch "src/model/Monotone.cpp" # from [b1c6f28fd2f403ddc59ddeadffecf5753ef5ab4e] # to [20087d8807f3611228c42a8056a8fae891ff0ab0] # ============================================================ --- src/model/Monotone.cpp b1c6f28fd2f403ddc59ddeadffecf5753ef5ab4e +++ src/model/Monotone.cpp 20087d8807f3611228c42a8056a8fae891ff0ab0 @@ -84,14 +84,24 @@ void Monotone::parseLineFromStdout() { QByteArray byteArray; - QRegExp regex("^(\\d+):(\\d+):([ml]):(\\d+):([^\\n]*)"); - //regex.setMinimal(TRUE); - while (byteArray = readStdout()) - { - if (regex.search(byteArray.data()) == -1) + // read all data from stdin + byteArray = readStdout(); + QString temp(byteArray); + + // splits the input into lines + QStringList inputList = QStringList::split("\n", temp); + + QString lineFromStdIn(""); + + // parse out the contents of each line + QRegExp regex("^(\\d+):(\\d+):([ml]):(\\d+):([^\\n]*)"); + for (QStringList::Iterator it = inputList.begin(); it != inputList.end(); ++it ) + { + lineFromStdIn = *it; + if (regex.search(lineFromStdIn) == -1) { - qWarning("Can't parse data %s", byteArray.data()); + qWarning("Monotone::parseLineFromStdout: Can't parse data %s", lineFromStdIn.latin1()); continue; } QStringList list = regex.capturedTexts(); @@ -104,10 +114,9 @@ emit commandFinished(list[2].toInt()); break; } - // valid output, append it output->append(list[5]); - } + } } QStringList* Monotone::getOutput()