summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/formats/fs_prodos.cpp
diff options
context:
space:
mode:
author Olivier Galibert <galibert@pobox.com>2021-04-28 22:58:51 +0200
committer Olivier Galibert <galibert@pobox.com>2021-04-28 22:58:57 +0200
commit18d1768325a37b3496a55a84698e7c7dc789e14c (patch)
treecdcbf932a7e76af7160b491ea050e39bc340228f /src/lib/formats/fs_prodos.cpp
parent67d7e16274f71ab6fefeeedcaab12066d2a12668 (diff)
floppy: first steps on metadata, and hopefully make gcc happier on enumerate
Diffstat (limited to 'src/lib/formats/fs_prodos.cpp')
-rw-r--r--src/lib/formats/fs_prodos.cpp32
1 files changed, 28 insertions, 4 deletions
diff --git a/src/lib/formats/fs_prodos.cpp b/src/lib/formats/fs_prodos.cpp
index 25e5cdc152f..e2908f6cebd 100644
--- a/src/lib/formats/fs_prodos.cpp
+++ b/src/lib/formats/fs_prodos.cpp
@@ -42,7 +42,7 @@ const u8 fs_prodos::impl::boot[512] = {
0xf0, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
-void fs_prodos::enumerate(floppy_enumerator &fe, uint32_t form_factor, const std::vector<uint32_t> &variants) const
+void fs_prodos::enumerate_f(floppy_enumerator &fe, uint32_t form_factor, const std::vector<uint32_t> &variants) const
{
if(has(form_factor, variants, floppy_image::FF_35, floppy_image::DSDD))
fe.add(this, FLOPPY_APPLE_GCR_FORMAT, 819200, "prodos_800k", "Apple ProDOS 800K");
@@ -70,10 +70,34 @@ bool fs_prodos::can_write() const
return false;
}
-void fs_prodos::impl::format()
+bool fs_prodos::has_subdirectories() const
{
- std::string volume_name = "UNTITLED";
- m_blockdev.set_block_size(512);
+ return true;
+}
+
+std::vector<fs_meta_description> fs_prodos::volume_meta_description() const
+{
+ std::vector<fs_meta_description> res;
+ res.emplace_back(fs_meta_description(fs_meta_name::name, fs_meta_type::string, "UNTITLED", false, [](const fs_meta &m) { std::string n = std::get<std::string>(m); return n.size() <= 15; }, "Volume name, up to 15 characters"));
+
+ return res;
+}
+
+std::vector<fs_meta_description> fs_prodos::file_meta_description() const
+{
+ std::vector<fs_meta_description> res;
+ return res;
+}
+
+std::vector<fs_meta_description> fs_prodos::directory_meta_description() const
+{
+ std::vector<fs_meta_description> res;
+ return res;
+}
+
+void fs_prodos::impl::format(const fs_meta_data &meta)
+{
+ std::string volume_name = std::get<std::string>(meta.find(fs_meta_name::name)->second);
u32 blocks = m_blockdev.block_count();
m_blockdev.get(0).copy(0x000, boot, 0x200); // Standard ProDOS boot sector as written by a 2gs