summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/formats/vdk_dsk.cpp
diff options
context:
space:
mode:
author Vas Crabb <cuavas@users.noreply.github.com>2024-02-25 02:27:26 +1100
committer GitHub <noreply@github.com>2024-02-25 02:27:26 +1100
commit1615b8551a3a73532ac234973cfb04dd8ed98ba4 (patch)
tree25575506b4117afa614b94b4370af7f16eb9dbb5 /src/lib/formats/vdk_dsk.cpp
parent334ec12e0043ef939be418283235e3dbe5a005fe (diff)
util/ioprocs.cpp: Added wrappers for common patterns. (#11608)
emu/diimage.h: Removed fread overloads that allocate memory for output. util/core_file.cpp: Changed output size of load to size_t.
Diffstat (limited to 'src/lib/formats/vdk_dsk.cpp')
-rw-r--r--src/lib/formats/vdk_dsk.cpp15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/lib/formats/vdk_dsk.cpp b/src/lib/formats/vdk_dsk.cpp
index e47d3502981..02e25ec5df9 100644
--- a/src/lib/formats/vdk_dsk.cpp
+++ b/src/lib/formats/vdk_dsk.cpp
@@ -36,9 +36,10 @@ const char *vdk_format::extensions() const noexcept
int vdk_format::identify(util::random_read &io, uint32_t form_factor, const std::vector<uint32_t> &variants) const
{
- size_t actual;
uint8_t id[2];
- io.read_at(0, id, 2, actual);
+ auto const [err, actual] = read_at(io, 0, id, 2);
+ if (err || (2 != actual))
+ return 0;
if (id[0] == 'd' && id[1] == 'k')
return FIFID_SIGN;
@@ -48,12 +49,11 @@ int vdk_format::identify(util::random_read &io, uint32_t form_factor, const std:
bool vdk_format::load(util::random_read &io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image &image) const
{
- size_t actual;
if (io.seek(0, SEEK_SET))
return false;
uint8_t header[0x100];
- io.read(header, 0x100, actual);
+ read(io, header, 0x100); // FIXME: check for errors and premature EOF
int const header_size = header[3] * 0x100 + header[2];
int const track_count = header[8];
@@ -81,7 +81,7 @@ bool vdk_format::load(util::random_read &io, uint32_t form_factor, const std::ve
sectors[i].bad_crc = false;
sectors[i].data = &sector_data[sector_offset];
- io.read(sectors[i].data, SECTOR_SIZE, actual);
+ read(io, sectors[i].data, SECTOR_SIZE); // FIXME: check for errors and premature EOF
sector_offset += SECTOR_SIZE;
}
@@ -95,7 +95,6 @@ bool vdk_format::load(util::random_read &io, uint32_t form_factor, const std::ve
bool vdk_format::save(util::random_read_write &io, const std::vector<uint32_t> &variants, const floppy_image &image) const
{
- size_t actual;
if (io.seek(0, SEEK_SET))
return false;
@@ -118,7 +117,7 @@ bool vdk_format::save(util::random_read_write &io, const std::vector<uint32_t> &
header[10] = 0;
header[11] = 0;
- io.write(header, sizeof(header), actual);
+ write(io, header, sizeof(header)); // FIXME: check for errors
// write disk data
for (int track = 0; track < track_count; track++)
@@ -129,7 +128,7 @@ bool vdk_format::save(util::random_read_write &io, const std::vector<uint32_t> &
auto sectors = extract_sectors_from_bitstream_mfm_pc(bitstream);
for (int i = 0; i < SECTOR_COUNT; i++)
- io.write(sectors[FIRST_SECTOR_ID + i].data(), SECTOR_SIZE, actual);
+ write(io, sectors[FIRST_SECTOR_ID + i].data(), SECTOR_SIZE); // FIXME: check for errors
}
}