on xenial help sign in
Use Qt's temporary file facilities.
6e003b3Jussi Pakkanen
plugins/Utils/albumartprovider.cpp+9−6
@@ -24,6 +24,7 @@
24#include <QNetworkRequest>
24#include <QNetworkRequest>
25#include <QNetworkReply>
25#include <QNetworkReply>
26#include <QXmlQuery>
26#include <QXmlQuery>
27+#include <QTemporaryFile>
27#include <QBuffer>
28#include <QBuffer>
28#include <cstdio>
29#include <cstdio>
29#include <QDebug>
30#include <QDebug>
@@ -31,7 +32,6 @@
31#include <QStringList>
32#include <QStringList>
32#include <QByteArray>
33#include <QByteArray>
33#include <unistd.h>
34#include <unistd.h>
34−#include <memory>
35#include <QImage>
35#include <QImage>
36#include <QUrl>
36#include <QUrl>
37
37
@@ -158,14 +158,17 @@ std::string AlbumArtProvider::get_image(const std::string &artist, const std::st
158 if(image_url.empty()) {
158 if(image_url.empty()) {
159 return DEFAULT_ALBUM_ART;
159 return DEFAULT_ALBUM_ART;
160 }
160 }
161− char tmpname[] = "/tmp/path/to/some/file/somewhere/maybe.jpg";
161+ QTemporaryFile tempFile;
162− tmpnam(tmpname);
162+ tempFile.open();
163− //std::unique_ptr<char, int(*)(const char*)> deleter(tmpname, unlink);
163+ tempFile.setAutoRemove(true);
164+ QString fname = tempFile.fileName();
165+ std::string tmpname = fname.toUtf8().data();
166+
164 if(!download_and_store(image_url, tmpname)) {
167 if(!download_and_store(image_url, tmpname)) {
165 return DEFAULT_ALBUM_ART;
168 return DEFAULT_ALBUM_ART;
166 }
169 }
167− fix_format(tmpname);
170+ fix_format(tmpname.c_str());
168− FILE *f = fopen(tmpname, "r");
171+ FILE *f = fopen(tmpname.c_str(), "r");
169 fseek(f, 0, SEEK_END);
172 fseek(f, 0, SEEK_END);
170 long s = ftell(f);
173 long s = ftell(f);
171 fseek(f, 0, SEEK_SET);
174 fseek(f, 0, SEEK_SET);