aboutsummaryrefslogtreecommitdiff
path: root/src/frontend/qt_sdl
diff options
context:
space:
mode:
authorWaluigiWare64 <68647953+WaluigiWare64@users.noreply.github.com>2021-01-05 15:34:28 +0000
committerWaluigiWare64 <68647953+WaluigiWare64@users.noreply.github.com>2021-01-05 15:34:28 +0000
commit00e9a5e0c7afcea3502e8627db7066cc14aa2536 (patch)
tree39d3f8b2947f05eb9df286aa3ffe1c9c8ead6457 /src/frontend/qt_sdl
parent6c911574952eda12dbdeeca04d837af7dc1e2b93 (diff)
Allow melonDS to write the file
The directory wasn't created, so the file was not being written
Diffstat (limited to 'src/frontend/qt_sdl')
-rw-r--r--src/frontend/qt_sdl/ArchiveUtil.cpp19
-rw-r--r--src/frontend/qt_sdl/ArchiveUtil.h2
2 files changed, 13 insertions, 8 deletions
diff --git a/src/frontend/qt_sdl/ArchiveUtil.cpp b/src/frontend/qt_sdl/ArchiveUtil.cpp
index f7ca8e6..ba6e4b6 100644
--- a/src/frontend/qt_sdl/ArchiveUtil.cpp
+++ b/src/frontend/qt_sdl/ArchiveUtil.cpp
@@ -18,6 +18,11 @@
#include "ArchiveUtil.h"
+#ifdef _WIN32
+ #include <direct.h>
+ #define mkdir(dir, mode) _mkdir(dir)
+#endif
+
namespace Archive
{
@@ -86,15 +91,17 @@ QVector<QString> ExtractFileFromArchive(const char* path, const char* wantedFile
archiveBuffer.reset(nullptr);
return QVector<QString> {"Err", archive_error_string(a)};
}
-
- QString fileToWrite = QFileInfo(path).absolutePath() + "/" + QFileInfo(path).baseName() + "/" + archive_entry_pathname(entry);
-
- std::ofstream(fileToWrite.toUtf8().constData(), std::ofstream::binary).write((char*)archiveBuffer.get(), bytesToWrite);
-
+ QString nameToWrite = QFileInfo(path).absolutePath() + "/" + QFileInfo(path).baseName() + "/" + archive_entry_pathname(entry);
+
+ mkdir(QFileInfo(path).baseName().toUtf8().constData(), 600); // Create directory otherwise fopen will not open the file
+ FILE* fileToWrite = fopen(nameToWrite.toUtf8().constData(), "wb");
+ fwrite((char*)archiveBuffer.get(), bytesToWrite, 1, fileToWrite);
+ fclose(fileToWrite);
+
archiveBuffer.reset(nullptr);
archive_read_close(a);
archive_read_free(a);
- return QVector<QString> {fileToWrite};
+ return QVector<QString> {nameToWrite};
}
diff --git a/src/frontend/qt_sdl/ArchiveUtil.h b/src/frontend/qt_sdl/ArchiveUtil.h
index 5b03a59..a6f404a 100644
--- a/src/frontend/qt_sdl/ArchiveUtil.h
+++ b/src/frontend/qt_sdl/ArchiveUtil.h
@@ -4,8 +4,6 @@
#include <stdio.h>
#include <string>
-#include <iostream>
-#include <fstream>
#include <memory>
#include <QVector>