Description: Do proper temporary file creation Upstream is using predictable temporary file names. Fix this in Debian for now by using QTemporaryFile. This additionally ensures removal of temporary files upon exit. Author: Jakob Haufe Bug-Debian: http://bugs.debian.org/644935 diff --git a/src/temporary.cpp b/src/temporary.cpp index 2bf7fcd..0561ecb 100644 --- a/src/temporary.cpp +++ b/src/temporary.cpp @@ -21,52 +21,27 @@ $END_LICENSE */ #include "temporary.h" #include "constants.h" -static QVector paths; -#ifdef APP_LINUX -static QString userName; -#endif +static QList tempfiles; Temporary::Temporary() { } QString Temporary::filename() { - static const QString tempDir = QStandardPaths::writableLocation(QStandardPaths::TempLocation); + QTemporaryFile *tempfile = new QTemporaryFile(QDir::tempPath() + "/" + QString::number(qrand())); + tempfiles += tempfile; - QString tempFile = tempDir + "/" + Constants::UNIX_NAME + "-" + - QString::number(QRandomGenerator::global()->generate()); - -#ifdef APP_LINUX - if (userName.isNull()) { - userName = QString(getenv("USERNAME")); - if (userName.isEmpty()) - userName = QString(getenv("USER")); - } - if (!userName.isEmpty()) - tempFile += "-" + userName; -#endif - - // tempFile += ".mp4"; - - if (QFile::exists(tempFile) && !QFile::remove(tempFile)) { - qDebug() << "Cannot remove temp file" << tempFile; - } - - paths << tempFile; - - if (paths.size() > 1) { - QString removedFile = paths.takeFirst(); - if (QFile::exists(removedFile) && !QFile::remove(removedFile)) { - qDebug() << "Cannot remove temp file" << removedFile; - } + if(tempfiles.size() > 1) + { + QTemporaryFile *removedFile = tempfiles.takeFirst(); + delete removedFile; } - return tempFile; + tempfile->open(); + return tempfile->fileName(); } void Temporary::deleteAll() { - foreach(const QString &path, paths) { - if (QFile::exists(path) && !QFile::remove(path)) { - qDebug() << "Cannot remove temp file" << path; - } + foreach(QTemporaryFile *tempfile, tempfiles) { + delete tempfile; } } diff --git a/src/temporary.h b/src/temporary.h index de5e24d..b8fbba9 100644 --- a/src/temporary.h +++ b/src/temporary.h @@ -23,6 +23,7 @@ $END_LICENSE */ #include #include +#include class Temporary {