summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/formats/fs_hplif.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/formats/fs_hplif.cpp')
-rw-r--r--src/lib/formats/fs_hplif.cpp72
1 files changed, 36 insertions, 36 deletions
diff --git a/src/lib/formats/fs_hplif.cpp b/src/lib/formats/fs_hplif.cpp
index 48dde255cb4..8a3d2c52da4 100644
--- a/src/lib/formats/fs_hplif.cpp
+++ b/src/lib/formats/fs_hplif.cpp
@@ -64,27 +64,27 @@ public:
u8 size() const;
private:
- const impl & m_fs;
- fsblk_t::block_t m_block;
- u8 m_sector;
- u32 m_sector_count;
+ const impl & m_fs;
+ fsblk_t::block_t::ptr m_block;
+ u8 m_sector;
+ u32 m_sector_count;
};
impl(fsblk_t &blockdev);
virtual ~impl() = default;
virtual meta_data volume_metadata() override;
- virtual std::pair<err_t, meta_data> metadata(const std::vector<std::string> &path) override;
- virtual std::pair<err_t, std::vector<dir_entry>> directory_contents(const std::vector<std::string> &path) override;
- virtual std::pair<err_t, std::vector<u8>> file_read(const std::vector<std::string> &path) override;
+ virtual std::pair<std::error_condition, meta_data> metadata(const std::vector<std::string> &path) override;
+ virtual std::pair<std::error_condition, std::vector<dir_entry>> directory_contents(const std::vector<std::string> &path) override;
+ virtual std::pair<std::error_condition, std::vector<u8>> file_read(const std::vector<std::string> &path) override;
private:
- fsblk_t::block_t read_sector(u32 starting_sector) const;
+ fsblk_t::block_t::ptr read_sector(u32 starting_sector) const;
std::optional<hplif_dirent> dirent_from_path(const std::vector<std::string> &path) const;
void iterate_directory_entries(const std::function<bool(const hplif_dirent &dirent)> &callback) const;
util::arbitrary_datetime decode_datetime(const hplif_time *time) const;
meta_data metadata_from_dirent(const hplif_dirent &dirent) const;
- err_t format(const meta_data &meta) override;
+ std::error_condition format(const meta_data &meta) override;
};
// methods
@@ -120,10 +120,10 @@ const char *fs::hplif_image::description() const
void fs::hplif_image::enumerate_f(floppy_enumerator &fe) const
{
- fe.add(FLOPPY_HP300_FORMAT, floppy_image::FF_35, floppy_image::DSDD, 630784, "hp_lif_9121_format_1", "HP 9212 LIF 3.5\" dual-sided double density Format 1");
+ fe.add(FLOPPY_HP300_FORMAT, floppy_image::FF_35, floppy_image::DSDD, 630784, "hp_lif_9121_format_1", "HP 9121 LIF 3.5\" dual-sided double density Format 1");
fe.add(FLOPPY_HP300_FORMAT, floppy_image::FF_35, floppy_image::DSDD, 709632, "hp_lif_9121_format_2", "HP 9121 LIF 3.5\" dual-sided double density Format 2");
fe.add(FLOPPY_HP300_FORMAT, floppy_image::FF_35, floppy_image::DSDD, 788480, "hp_lif_9121_format_3", "HP 9121 LIF 3.5\" dual-sided double density Format 3");
- fe.add(FLOPPY_HP300_FORMAT, floppy_image::FF_35, floppy_image::SSDD, 286720, "hp_lif_9121_format_4", "HP 9121 LIF 3.5\" single-sided double density Format 4");
+ fe.add(FLOPPY_HP300_FORMAT, floppy_image::FF_35, floppy_image::SSDD, 270336, "hp_lif_9121_format_4", "HP 9121 LIF 3.5\" single-sided double density Format 4");
fe.add(FLOPPY_HP300_FORMAT, floppy_image::FF_35, floppy_image::DSDD, 737280, "hp_lif_9121_format_16", "HP 9121 LIF 3.5\" dual-sided double density Format 16");
fe.add(FLOPPY_HP300_FORMAT, floppy_image::FF_35, floppy_image::DSHD, 1261568, "hp_lif_9122_format_014", "HP 9122 LIF 3.5\" dual-sided high density Format 0, 1, 4");
@@ -252,11 +252,11 @@ impl::impl(fsblk_t &blockdev)
meta_data impl::volume_metadata()
{
auto block = read_sector(0);
- std::string_view disk_name = std::string_view((const char *) block.rodata() + 2, 6);
+ std::string_view disk_name = block->rstr(2, 6);
meta_data results;
results.set(meta_name::name, strtrimright_hplif(disk_name));
- results.set(meta_name::creation_date, decode_datetime(reinterpret_cast<const hplif_time *>(block.rodata() + 36)));
+ results.set(meta_name::creation_date, decode_datetime(reinterpret_cast<const hplif_time *>(block->rodata() + 36)));
return results;
}
@@ -265,13 +265,13 @@ meta_data impl::volume_metadata()
// impl::metadata
//-------------------------------------------------
-std::pair<err_t, meta_data> impl::metadata(const std::vector<std::string> &path)
+std::pair<std::error_condition, meta_data> impl::metadata(const std::vector<std::string> &path)
{
std::optional<hplif_dirent> dirent = dirent_from_path(path);
if (!dirent)
- return std::make_pair(ERR_NOT_FOUND, meta_data());
+ return std::make_pair(error::not_found, meta_data());
- return std::make_pair(ERR_OK, metadata_from_dirent(*dirent));
+ return std::make_pair(std::error_condition(), metadata_from_dirent(*dirent));
}
@@ -279,7 +279,7 @@ std::pair<err_t, meta_data> impl::metadata(const std::vector<std::string> &path)
// impl::directory_contents
//-------------------------------------------------
-std::pair<err_t, std::vector<dir_entry>> impl::directory_contents(const std::vector<std::string> &path)
+std::pair<std::error_condition, std::vector<dir_entry>> impl::directory_contents(const std::vector<std::string> &path)
{
std::vector<dir_entry> results;
auto callback = [this, &results](const hplif_dirent &ent)
@@ -288,7 +288,7 @@ std::pair<err_t, std::vector<dir_entry>> impl::directory_contents(const std::vec
return false;
};
iterate_directory_entries(callback);
- return std::make_pair(ERR_OK, std::move(results));
+ return std::make_pair(std::error_condition(), std::move(results));
}
@@ -296,12 +296,12 @@ std::pair<err_t, std::vector<dir_entry>> impl::directory_contents(const std::vec
// impl::file_read
//-------------------------------------------------
-std::pair<err_t, std::vector<u8>> impl::file_read(const std::vector<std::string> &path)
+std::pair<std::error_condition, std::vector<u8>> impl::file_read(const std::vector<std::string> &path)
{
// find the file
std::optional<hplif_dirent> dirent = dirent_from_path(path);
if (!dirent)
- return std::make_pair(ERR_NOT_FOUND, std::vector<u8>());
+ return std::make_pair(error::not_found, std::vector<u8>());
// and get the data
u32 sector_count = big_endianize_int32(dirent->m_sector_count);
@@ -316,7 +316,7 @@ std::pair<err_t, std::vector<u8>> impl::file_read(const std::vector<std::string>
while (iter.next())
result.insert(result.end(), (const u8 *)iter.data(), (const u8 *)iter.data() + 256);
- return std::make_pair(ERR_OK, std::move(result));
+ return std::make_pair(std::error_condition(), std::move(result));
}
@@ -324,7 +324,7 @@ std::pair<err_t, std::vector<u8>> impl::file_read(const std::vector<std::string>
// impl::read_sector
//-------------------------------------------------
-fsblk_t::block_t impl::read_sector(u32 sector) const
+fsblk_t::block_t::ptr impl::read_sector(u32 sector) const
{
return m_blockdev.get(sector);
}
@@ -359,10 +359,10 @@ std::optional<impl::hplif_dirent> impl::dirent_from_path(const std::vector<std::
void impl::iterate_directory_entries(const std::function<bool(const hplif_dirent &dirent)> &callback) const
{
- fsblk_t::block_t block = m_blockdev.get(0);
- block_iterator iter(*this, block.r32b(8), block.r32b(16));
+ fsblk_t::block_t::ptr block = m_blockdev.get(0);
+ block_iterator iter(*this, block->r32b(8), block->r32b(16));
- if (block.r16b(0) != 0x8000)
+ if (block->r16b(0) != 0x8000)
{
return;
}
@@ -461,30 +461,30 @@ bool impl::block_iterator::next()
const void *impl::block_iterator::data() const
{
- return m_block.rodata();
+ return m_block->rodata();
}
//-------------------------------------------------
// impl::format
//-------------------------------------------------
-err_t impl::format(const meta_data &meta)
+std::error_condition impl::format(const meta_data &meta)
{
std::string volume_name = meta.get_string(meta_name::name, "B9826 ");
- fsblk_t::block_t block = m_blockdev.get(0);
+ fsblk_t::block_t::ptr block = m_blockdev.get(0);
if (volume_name.size() < 6)
volume_name.insert(volume_name.end(), 6 - volume_name.size(), ' ');
if (volume_name.size() > 6)
volume_name.resize(6);
- block.w16b(0, 0x8000); // LIF magic
- block.wstr(2, volume_name);
- block.w32b(8, 2); // directory start
- block.w16b(12, 0x1000); // LIF identifier
- block.w32b(16, 14); // directory size
- block.w16b(20, 1); // LIF version
- return ERR_OK;
+ block->w16b(0, 0x8000); // LIF magic
+ block->wstr(2, volume_name);
+ block->w32b(8, 2); // directory start
+ block->w16b(12, 0x1000); // LIF identifier
+ block->w32b(16, 14); // directory size
+ block->w16b(20, 1); // LIF version
+ return std::error_condition();
}
//-------------------------------------------------
@@ -493,7 +493,7 @@ err_t impl::format(const meta_data &meta)
const std::array<impl::hplif_dirent, 8> &impl::block_iterator::dirent_data() const
{
- return *reinterpret_cast<const std::array<impl::hplif_dirent, 8> *>(m_block.rodata());
+ return *reinterpret_cast<const std::array<impl::hplif_dirent, 8> *>(m_block->rodata());
}
} // anonymous namespace