use simple stdio for binary buffer writes instead of filestream

This commit is contained in:
Henny022p 2021-11-27 07:23:35 +01:00
parent 48aa1d7720
commit 9e9dc07d23
3 changed files with 10 additions and 21 deletions

View File

@ -3,6 +3,6 @@ file(GLOB_RECURSE sources *.cpp)
add_executable(asset_processor ${sources})
target_include_directories(asset_processor PRIVATE .)
target_link_libraries(asset_processor PRIVATE project_settings)
target_link_libraries(asset_processor PRIVATE fmt::fmt nlohmann_json::nlohmann_json filesystem)
target_link_libraries(asset_processor PRIVATE fmt::fmt nlohmann_json::nlohmann_json filesystem util)
install(TARGETS asset_processor RUNTIME DESTINATION bin)

View File

@ -1,11 +1,7 @@
#include "asset.h"
#include <fstream>
#include <util/file.h>
void BaseAsset::extractBinary(const std::vector<char>& baserom) {
auto first = baserom.begin() + start;
auto last = baserom.begin() + start + size;
std::vector<char> data(first, last);
std::fstream file(path, std::ios::out | std::ios::binary);
file.write(&data[0], static_cast<std::streamsize>(data.size()));
file.close();
}
auto file = util::open_file(path.string(), "w");
std::fwrite(baserom.data() + start, 1, static_cast<size_t>(size), file.get());
}

View File

@ -4,6 +4,7 @@
#include <filesystem>
#include <iostream>
#include <fstream>
#include <util/file.h>
#include <nlohmann/json.hpp>
#include <fmt/format.h>
@ -32,21 +33,13 @@ void MidiAsset::extractBinary(const std::vector<char>& baserom) {
// Extract tracks
{
auto first = baserom.begin() + start;
auto last = baserom.begin() + start + headerOffset;
std::vector<char> data(first, last);
std::fstream file(tracksPath, std::ios::out | std::ios::binary);
file.write(&data[0], static_cast<std::streamsize>(data.size()));
file.close();
auto file = util::open_file(tracksPath.string(), "w");
std::fwrite(baserom.data() + start, 1, static_cast<size_t>(headerOffset), file.get());
}
// Extract header
{
auto first = baserom.begin() + start + headerOffset;
auto last = baserom.begin() + start + size;
std::vector<char> data(first, last);
std::fstream file(headerPath, std::ios::out | std::ios::binary);
file.write(&data[0], static_cast<std::streamsize>(data.size()));
file.close();
auto file = util::open_file(headerPath.string(), "w");
std::fwrite(baserom.data() + start + headerOffset, 1, static_cast<size_t>(size - headerOffset), file.get());
}
// Create dummy .s file.