diff options
Diffstat (limited to 'lang/qt/tests/run-signarchivejob.cpp')
-rw-r--r-- | lang/qt/tests/run-signarchivejob.cpp | 45 |
1 files changed, 26 insertions, 19 deletions
diff --git a/lang/qt/tests/run-signarchivejob.cpp b/lang/qt/tests/run-signarchivejob.cpp index affd8e4d..4bf769b2 100644 --- a/lang/qt/tests/run-signarchivejob.cpp +++ b/lang/qt/tests/run-signarchivejob.cpp @@ -40,7 +40,9 @@ #include <QCommandLineParser> #include <QCoreApplication> #include <QDebug> +#include <QDir> #include <QFile> +#include <QFileInfo> #include <context.h> #include <signingresult.h> @@ -90,23 +92,14 @@ CommandLineOptions parseCommandLine(const QStringList &arguments) return options; } -std::shared_ptr<QIODevice> createOutput(const QString &fileName) +QString checkOutputFilePath(const QString &fileName, const QString &baseDirectory) { - std::shared_ptr<QFile> output; - - if (fileName.isEmpty()) { - output.reset(new QFile); - output->open(stdout, QIODevice::WriteOnly); - } else { - if (QFile::exists(fileName)) { - qCritical() << "File" << fileName << "exists. Bailing out."; - } else { - output.reset(new QFile{fileName}); - output->open(QIODevice::WriteOnly); - } + const QFileInfo fi{QDir{baseDirectory}, fileName}; + if (fi.exists()) { + qCritical() << "File" << fi.filePath() << "exists. Bailing out."; + return {}; } - - return output; + return fileName; } int main(int argc, char **argv) @@ -123,9 +116,16 @@ int main(int argc, char **argv) return 1; } - auto output = createOutput(options.archiveName); - if (!output) { - return 1; + std::shared_ptr<QFile> output; + QString outputFilePath; + if (options.archiveName.isEmpty() || options.archiveName == QLatin1String{"-"}) { + output.reset(new QFile); + output->open(stdout, QIODevice::WriteOnly); + } else { + outputFilePath = checkOutputFilePath(options.archiveName, options.baseDirectory); + if (outputFilePath.isEmpty()) { + return 1; + } } auto job = QGpgME::openpgp()->signArchiveJob(options.armor); @@ -140,7 +140,14 @@ int main(int argc, char **argv) qApp->quit(); }); - const auto err = job->start({}, options.filesAndDirectories, output); + GpgME::Error err; + if (output) { + err = job->start({}, options.filesAndDirectories, output); + } else { + job->setInputPaths(options.filesAndDirectories); + job->setOutputFile(outputFilePath); + err = job->startIt(); + } if (err) { std::cerr << "Error: Starting the job failed: " << err.asString() << std::endl; return 1; |