Avoid using absolute file names with WGet/GnuPG, as they don't support Unicode file names. Instead we switch the working directory *before* calling WGet/GnuPG and pass the file's name only.
This commit is contained in:
parent
24da769a6d
commit
801500ce94
@ -25,7 +25,7 @@
|
|||||||
#define VER_LAMEXP_MAJOR 4
|
#define VER_LAMEXP_MAJOR 4
|
||||||
#define VER_LAMEXP_MINOR_HI 0
|
#define VER_LAMEXP_MINOR_HI 0
|
||||||
#define VER_LAMEXP_MINOR_LO 0
|
#define VER_LAMEXP_MINOR_LO 0
|
||||||
#define VER_LAMEXP_BUILD 127
|
#define VER_LAMEXP_BUILD 128
|
||||||
#define VER_LAMEXP_SUFFIX TechPreview
|
#define VER_LAMEXP_SUFFIX TechPreview
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -339,13 +339,14 @@ bool UpdateDialog::getFile(const QString &url, const QString &outFile)
|
|||||||
QProcess process;
|
QProcess process;
|
||||||
process.setProcessChannelMode(QProcess::MergedChannels);
|
process.setProcessChannelMode(QProcess::MergedChannels);
|
||||||
process.setReadChannel(QProcess::StandardOutput);
|
process.setReadChannel(QProcess::StandardOutput);
|
||||||
|
process.setWorkingDirectory(output.absolutePath());
|
||||||
|
|
||||||
QEventLoop loop;
|
QEventLoop loop;
|
||||||
connect(&process, SIGNAL(error(QProcess::ProcessError)), &loop, SLOT(quit()));
|
connect(&process, SIGNAL(error(QProcess::ProcessError)), &loop, SLOT(quit()));
|
||||||
connect(&process, SIGNAL(finished(int,QProcess::ExitStatus)), &loop, SLOT(quit()));
|
connect(&process, SIGNAL(finished(int,QProcess::ExitStatus)), &loop, SLOT(quit()));
|
||||||
connect(&process, SIGNAL(readyRead()), &loop, SLOT(quit()));
|
connect(&process, SIGNAL(readyRead()), &loop, SLOT(quit()));
|
||||||
|
|
||||||
process.start(m_binaryWGet, QStringList() << "-U" << USER_AGENT_STR << "-O" << output.absoluteFilePath() << url);
|
process.start(m_binaryWGet, QStringList() << "-U" << USER_AGENT_STR << "-O" << output.fileName() << url);
|
||||||
|
|
||||||
if(!process.waitForStarted())
|
if(!process.waitForStarted())
|
||||||
{
|
{
|
||||||
@ -367,19 +368,35 @@ bool UpdateDialog::getFile(const QString &url, const QString &outFile)
|
|||||||
|
|
||||||
bool UpdateDialog::checkSignature(const QString &file, const QString &signature)
|
bool UpdateDialog::checkSignature(const QString &file, const QString &signature)
|
||||||
{
|
{
|
||||||
|
if(QFileInfo(file).absolutePath().compare(QFileInfo(signature).absolutePath(), Qt::CaseInsensitive) != 0)
|
||||||
|
{
|
||||||
|
qWarning("CheckSignature: File and signature should be in same folder!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString keyring = QString("%1/%2.gpg").arg(QFileInfo(file).absolutePath(), QUuid::createUuid().toString());
|
||||||
|
|
||||||
|
if(!QFile::copy(m_binaryKeys, keyring))
|
||||||
|
{
|
||||||
|
qWarning("CheckSignature: Failed to copy keyring file to destination folder!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
QProcess process;
|
QProcess process;
|
||||||
process.setProcessChannelMode(QProcess::MergedChannels);
|
process.setProcessChannelMode(QProcess::MergedChannels);
|
||||||
process.setReadChannel(QProcess::StandardOutput);
|
process.setReadChannel(QProcess::StandardOutput);
|
||||||
|
process.setWorkingDirectory(QFileInfo(file).absolutePath());
|
||||||
|
|
||||||
QEventLoop loop;
|
QEventLoop loop;
|
||||||
connect(&process, SIGNAL(error(QProcess::ProcessError)), &loop, SLOT(quit()));
|
connect(&process, SIGNAL(error(QProcess::ProcessError)), &loop, SLOT(quit()));
|
||||||
connect(&process, SIGNAL(finished(int,QProcess::ExitStatus)), &loop, SLOT(quit()));
|
connect(&process, SIGNAL(finished(int,QProcess::ExitStatus)), &loop, SLOT(quit()));
|
||||||
connect(&process, SIGNAL(readyRead()), &loop, SLOT(quit()));
|
connect(&process, SIGNAL(readyRead()), &loop, SLOT(quit()));
|
||||||
|
|
||||||
process.start(m_binaryGnuPG, QStringList() << "--homedir" << lamexp_temp_folder() << "--keyring" << QDir::toNativeSeparators(m_binaryKeys) << QDir::toNativeSeparators(signature) << QDir::toNativeSeparators(file));
|
process.start(m_binaryGnuPG, QStringList() << "--homedir" << "." << "--keyring" << QFileInfo(keyring).fileName() << QFileInfo(signature).fileName() << QFileInfo(file).fileName());
|
||||||
|
|
||||||
if(!process.waitForStarted())
|
if(!process.waitForStarted())
|
||||||
{
|
{
|
||||||
|
QFile::remove(keyring);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -391,6 +408,8 @@ bool UpdateDialog::checkSignature(const QString &file, const QString &signature)
|
|||||||
m_logFile->append(QString::fromLatin1(process.readLine()).simplified());
|
m_logFile->append(QString::fromLatin1(process.readLine()).simplified());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QFile::remove(keyring);
|
||||||
|
|
||||||
m_logFile->append(QString().sprintf("Exited with code %d", process.exitCode()));
|
m_logFile->append(QString().sprintf("Exited with code %d", process.exitCode()));
|
||||||
return (process.exitCode() == 0);
|
return (process.exitCode() == 0);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user