summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libs/installer/init.cpp27
-rw-r--r--src/libs/installer/utils.cpp42
-rw-r--r--src/libs/installer/utils.h7
3 files changed, 17 insertions, 59 deletions
diff --git a/src/libs/installer/init.cpp b/src/libs/installer/init.cpp
index 478d77ae8..036a595e1 100644
--- a/src/libs/installer/init.cpp
+++ b/src/libs/installer/init.cpp
@@ -143,29 +143,29 @@ static void initResources()
}
#endif
-static QByteArray trimAndPrepend(QtMsgType type, const QByteArray &msg)
+static QString trimAndPrepend(QtMsgType type, const QString &msg)
{
- QByteArray ba(msg);
+ QString ba(msg);
// last character is a space from qDebug
- if (ba.endsWith(' '))
+ if (ba.endsWith(QLatin1Char(' ')))
ba.chop(1);
// remove quotes if the whole message is surrounded with them
- if (ba.startsWith('"') && ba.endsWith('"'))
+ if (ba.startsWith(QLatin1Char('"')) && ba.endsWith(QLatin1Char('"')))
ba = ba.mid(1, ba.length() - 2);
// prepend the message type, skip QtDebugMsg
switch (type) {
case QtWarningMsg:
- ba.prepend("Warning: ");
+ ba.prepend(QStringLiteral("Warning: "));
break;
case QtCriticalMsg:
- ba.prepend("Critical: ");
+ ba.prepend(QStringLiteral("Critical: "));
break;
case QtFatalMsg:
- ba.prepend("Fatal: ");
+ ba.prepend(QStringLiteral("Fatal: "));
break;
default:
@@ -179,19 +179,18 @@ void messageHandler(QtMsgType type, const QMessageLogContext &context, const QSt
// suppress warning from QPA minimal plugin
if (msg.contains(QLatin1String("This plugin does not support propagateSizeHints")))
return;
- QByteArray ba = trimAndPrepend(type, msg.toLocal8Bit());
+ QString ba = trimAndPrepend(type, msg);
if (type != QtDebugMsg) {
ba += QString(QStringLiteral(" (%1:%2, %3)")).arg(
QString::fromLatin1(context.file)).arg(context.line).arg(
- QString::fromLatin1(context.function)).toLocal8Bit();
+ QString::fromLatin1(context.function));
}
- if (!VerboseWriter::instance())
- return;
+ if (VerboseWriter *log = VerboseWriter::instance())
+ log->appendLine(ba);
- verbose() << ba.constData() << std::endl;
- if (!isVerbose() && type != QtDebugMsg)
- std::cout << ba.constData() << std::endl << std::endl;
+ if (type != QtDebugMsg || isVerbose())
+ std::cout << qPrintable(ba) << std::endl;
if (type == QtFatalMsg) {
QtMessageHandler oldMsgHandler = qInstallMessageHandler(0);
diff --git a/src/libs/installer/utils.cpp b/src/libs/installer/utils.cpp
index 5e706ab13..9d0648268 100644
--- a/src/libs/installer/utils.cpp
+++ b/src/libs/installer/utils.cpp
@@ -133,44 +133,6 @@ bool QInstaller::isVerbose()
return verb;
}
-#ifdef Q_OS_WIN
-class debugstream : public std::ostream
-{
- class buf : public std::stringbuf
- {
- public:
- buf() {}
-
- int sync()
- {
- std::string s = str();
- if (s[s.length() - 1] == '\n' )
- s[s.length() - 1] = '\0'; // remove \n
- std::cout << s << std::endl;
- str(std::string());
- return 0;
- }
- };
-public:
- debugstream() : std::ostream(&b) {}
-private:
- buf b;
-};
-#endif
-
-std::ostream &QInstaller::stdverbose()
-{
- static std::fstream null;
-#ifdef Q_OS_WIN
- static debugstream stream;
-#else
- static std::ostream& stream = std::cout;
-#endif
- if (verb)
- return stream;
- return null;
-}
-
std::ostream &QInstaller::operator<<(std::ostream &os, const QString &string)
{
return os << qPrintable(string);
@@ -281,9 +243,9 @@ QInstaller::VerboseWriter *QInstaller::VerboseWriter::instance()
return verboseWriter();
}
-QInstaller::VerboseWriter &QInstaller::verbose()
+void QInstaller::VerboseWriter::appendLine(const QString &msg)
{
- return *verboseWriter();
+ stream << msg << endl;
}
#ifdef Q_OS_WIN
diff --git a/src/libs/installer/utils.h b/src/libs/installer/utils.h
index 879b29afc..8b6b31ea3 100644
--- a/src/libs/installer/utils.h
+++ b/src/libs/installer/utils.h
@@ -75,11 +75,8 @@ namespace QInstaller {
void INSTALLER_EXPORT setVerbose(bool v);
bool INSTALLER_EXPORT isVerbose();
- INSTALLER_EXPORT std::ostream& stdverbose();
INSTALLER_EXPORT std::ostream& operator<<(std::ostream &os, const QString &string);
- class VerboseWriter;
- INSTALLER_EXPORT VerboseWriter &verbose();
class INSTALLER_EXPORT VerboseWriter : public QObject
{
@@ -90,8 +87,8 @@ namespace QInstaller {
static VerboseWriter *instance();
- inline VerboseWriter &operator<<(const char *t) { stdverbose() << t; stream << t; return *this; }
- inline VerboseWriter &operator<<(std::ostream& (*f)(std::ostream &s)) { stdverbose() << *f; stream << "\n"; return *this; }
+ void appendLine(const QString &msg);
+
public slots:
void setOutputStream(const QString &fileName);