add disk full error handling to consoleprocess

This commit is contained in:
Oswald Buddenhagen
2011-03-30 11:54:57 +02:00
parent 776c599384
commit 35743ea1ad
4 changed files with 26 additions and 3 deletions

View File

@@ -65,6 +65,11 @@ QString ConsoleProcess::msgCannotCreateTempFile(const QString &why)
return tr("Cannot create temporary file: %1").arg(why); return tr("Cannot create temporary file: %1").arg(why);
} }
QString ConsoleProcess::msgCannotWriteTempFile()
{
return tr("Cannot write temporary file. Disk full?");
}
QString ConsoleProcess::msgCannotCreateTempDir(const QString & dir, const QString &why) QString ConsoleProcess::msgCannotCreateTempDir(const QString & dir, const QString &why)
{ {
return tr("Cannot create temporary directory '%1': %2").arg(dir, why); return tr("Cannot create temporary directory '%1': %2").arg(dir, why);

View File

@@ -104,6 +104,7 @@ private:
static QString msgCommChannelFailed(const QString &error); static QString msgCommChannelFailed(const QString &error);
static QString msgPromptToClose(); static QString msgPromptToClose();
static QString msgCannotCreateTempFile(const QString &why); static QString msgCannotCreateTempFile(const QString &why);
static QString msgCannotWriteTempFile();
static QString msgCannotCreateTempDir(const QString & dir, const QString &why); static QString msgCannotCreateTempDir(const QString & dir, const QString &why);
static QString msgUnexpectedOutput(const QByteArray &what); static QString msgUnexpectedOutput(const QByteArray &what);
static QString msgCannotChangeToWorkDir(const QString & dir, const QString &why); static QString msgCannotChangeToWorkDir(const QString & dir, const QString &why);

View File

@@ -173,11 +173,18 @@ bool ConsoleProcess::start(const QString &program, const QString &args)
d->m_tempFile = 0; d->m_tempFile = 0;
return false; return false;
} }
QByteArray contents;
foreach (const QString &var, env) { foreach (const QString &var, env) {
d->m_tempFile->write(var.toLocal8Bit()); QByteArray l8b = var.toLocal8Bit();
d->m_tempFile->write("", 1); contents.append(l8b.constData(), l8b.size() + 1);
}
if (d->m_tempFile->write(contents) != contents.size() || !d->m_tempFile->flush()) {
stubServerShutdown();
emit processMessage(msgCannotWriteTempFile(), true);
delete d->m_tempFile;
d->m_tempFile = 0;
return false;
} }
d->m_tempFile->flush();
} }
xtermArgs xtermArgs

View File

@@ -157,6 +157,16 @@ bool ConsoleProcess::start(const QString &program, const QString &args)
foreach (const QString &var, fixWinEnvironment(env)) foreach (const QString &var, fixWinEnvironment(env))
out << var << QChar(0); out << var << QChar(0);
out << QChar(0); out << QChar(0);
#if QT_VERSION >= QT_VERSION_CHECK(4, 8, 0)
out.flush();
if (out.status() != QTextStream::Ok) {
stubServerShutdown();
emit processMessage(msgCannotWriteTempFile(), true);
delete d->m_tempFile;
d->m_tempFile = 0;
return false;
}
#endif
} }
STARTUPINFO si; STARTUPINFO si;