diff options
author | Eike Ziller <eike.ziller@digia.com> | 2014-01-21 14:17:16 +0100 |
---|---|---|
committer | Eike Ziller <eike.ziller@digia.com> | 2014-01-21 14:17:16 +0100 |
commit | e95037347ae6ae3886ceb1afade970c666734bd4 (patch) | |
tree | 0eecb9adb8fa1d083e6d74cb79f9a38d5653591c /src/tools/iostool | |
parent | e0cae6150fa13e41b4a7301075ebd1381cacbff6 (diff) | |
parent | 1ce5b1273a0c14cb4bb19f8a6c2ce206c8af318d (diff) | |
download | qt-creator-e95037347ae6ae3886ceb1afade970c666734bd4.tar.gz |
Merge origin/3.0
Diffstat (limited to 'src/tools/iostool')
-rw-r--r-- | src/tools/iostool/main.cpp | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/src/tools/iostool/main.cpp b/src/tools/iostool/main.cpp index bfec66e07a..0d2c4cdf92 100644 --- a/src/tools/iostool/main.cpp +++ b/src/tools/iostool/main.cpp @@ -65,6 +65,7 @@ public: void writeMsg(const char *msg); void writeMsg(const QString &msg); void stopXml(int errorCode); + void writeTextInElement(const QString &output); private slots: void isTransferringApp(const QString &bundlePath, const QString &deviceId, int progress, const QString &info); @@ -338,13 +339,15 @@ void IosTool::didStartApp(const QString &bundlePath, const QString &deviceId, void IosTool::writeMsg(const char *msg) { - out.writeTextElement(QLatin1String("msg"), QLatin1String(msg)); - outFile.flush(); + writeMsg(QString::fromLatin1(msg)); } void IosTool::writeMsg(const QString &msg) { - out.writeTextElement(QLatin1String("msg"), msg); + out.writeStartElement(QLatin1String("msg")); + writeTextInElement(msg); + out.writeCharacters(QLatin1String("\n")); + out.writeEndElement(); outFile.flush(); } @@ -366,18 +369,35 @@ void IosTool::deviceInfo(const QString &deviceId, const Ios::IosDeviceManager::D doExit(); } +void IosTool::writeTextInElement(const QString &output) +{ + QRegExp controlCharRe(QLatin1String("[\x01-\x08]|\x0B|\x0C|[\x0E-\x1F]|\\0000")); + int pos = 0; + int oldPos = 0; + + while ((pos = controlCharRe.indexIn(output, pos)) != -1) { + out.writeCharacters(output.mid(oldPos, pos - oldPos)); + out.writeEmptyElement(QLatin1String("control_char")); + out.writeAttribute(QLatin1String("code"), QString::number(output.at(pos).toLatin1())); + pos += 1; + oldPos = pos; + } + out.writeCharacters(output.mid(oldPos, output.length() - oldPos)); +} + void IosTool::appOutput(const QString &output) { - if (inAppOutput) - out.writeCharacters(output); - else - out.writeTextElement(QLatin1String("app_output"), output); + if (!inAppOutput) + out.writeStartElement(QLatin1String("app_output")); + writeTextInElement(output); + if (!inAppOutput) + out.writeEndElement(); outFile.flush(); } void IosTool::errorMsg(const QString &msg) { - writeMsg(msg + QLatin1Char('\n')); + writeMsg(msg); } void IosTool::handleNewConnection() |