summaryrefslogtreecommitdiff
path: root/src/tools/iostool
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@digia.com>2014-01-21 14:17:16 +0100
committerEike Ziller <eike.ziller@digia.com>2014-01-21 14:17:16 +0100
commite95037347ae6ae3886ceb1afade970c666734bd4 (patch)
tree0eecb9adb8fa1d083e6d74cb79f9a38d5653591c /src/tools/iostool
parente0cae6150fa13e41b4a7301075ebd1381cacbff6 (diff)
parent1ce5b1273a0c14cb4bb19f8a6c2ce206c8af318d (diff)
downloadqt-creator-e95037347ae6ae3886ceb1afade970c666734bd4.tar.gz
Merge origin/3.0
Diffstat (limited to 'src/tools/iostool')
-rw-r--r--src/tools/iostool/main.cpp36
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()