diff --git a/src/remotefile.h b/src/remotefile.h index 79dcd71..25d7a6c 100644 --- a/src/remotefile.h +++ b/src/remotefile.h @@ -44,7 +44,9 @@ class RemoteFile final : public QObject { QDir basePath() const { return _basePath; } QString localFilePath() const { return _localFilePath; } bool localFileExists() const { return QFile(_localFilePath).exists(); } - QFile &localFile() const { return QFile(_localFilePath); } + #if defined(Q_OS_WIN) + QFile &localFile() const { return QFile(_localFilePath); } + #endif bool isMemoryOnly() const { return _memoryOnly; } QString errorMsg() const { return _error; } QByteArray bytes() const { return _bytes; } diff --git a/src/zip.cpp b/src/zip.cpp index da9ff2f..1be8ee1 100644 --- a/src/zip.cpp +++ b/src/zip.cpp @@ -88,21 +88,24 @@ void Zip::extract(const QString &out) { } void Zip::extractTarGz() { - auto gzProcess = new QProcess(this); - QStringList gzArgs{ "-zxf", _in }; - Logger::Debug(_extractProgram + " " + gzArgs.join(" ")); + auto gzProcess = new QProcess(this); - connect(gzProcess, static_cast(&QProcess::finished), [=](int exitCode, QProcess::ExitStatus exitStatus) { - delete gzProcess; - emit extracted(true); - }); + if(!QDir(_out).exists()) { + if(!QDir(_out).mkpath(".")) { + Logger::Debug("cannot create: " + _out); + } + } - gzProcess->start(_extractProgram, gzArgs); + QStringList gzArgs{ "-zxf", _in, "-C", _out }; + Logger::Debug(_extractProgram + " " + gzArgs.join(" ")); - if(!gzProcess->waitForStarted()) { - Logger::Debug("gzProcess failed to start!"); - emit extracted(false); - } + connect(gzProcess, static_cast(&QProcess::finished), [=](int exitCode, QProcess::ExitStatus exitStatus) { + delete gzProcess; + _extracted = true; + emit extracted(true); + }); + + gzProcess->start(_extractProgram, gzArgs); } #else void Zip::extract() { diff --git a/src/zip.h b/src/zip.h index 283087d..aeee716 100644 --- a/src/zip.h +++ b/src/zip.h @@ -32,7 +32,7 @@ class Zip final : public QObject { #if defined(Q_OS_WIN) QString _extractProgram = "7za.exe"; #elif defined(Q_OS_DARWIN) - QString _extractProgtam = "tar"; + QString _extractProgram = "tar"; #else #endif