diff options
author | WaluigiWare64 <68647953+WaluigiWare64@users.noreply.github.com> | 2021-01-05 15:34:28 +0000 |
---|---|---|
committer | WaluigiWare64 <68647953+WaluigiWare64@users.noreply.github.com> | 2021-01-05 15:34:28 +0000 |
commit | 00e9a5e0c7afcea3502e8627db7066cc14aa2536 (patch) | |
tree | 39d3f8b2947f05eb9df286aa3ffe1c9c8ead6457 /src/frontend/qt_sdl | |
parent | 6c911574952eda12dbdeeca04d837af7dc1e2b93 (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.cpp | 19 | ||||
-rw-r--r-- | src/frontend/qt_sdl/ArchiveUtil.h | 2 |
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> |