summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/formats/fsmgr.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/formats/fsmgr.h')
-rw-r--r--src/lib/formats/fsmgr.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/lib/formats/fsmgr.h b/src/lib/formats/fsmgr.h
index 6ca909e3bcd..ed3a553843e 100644
--- a/src/lib/formats/fsmgr.h
+++ b/src/lib/formats/fsmgr.h
@@ -281,6 +281,8 @@ protected:
virtual fs_meta_data metadata() = 0;
virtual std::vector<u8> read_all() = 0;
virtual std::vector<u8> read(u64 start, u64 length) = 0;
+ virtual std::vector<u8> rsrc_read_all();
+ virtual std::vector<u8> rsrc_read(u64 start, u64 length);
};
public:
@@ -312,6 +314,8 @@ public:
std::vector<u8> read_all() { return m_object->read_all(); }
std::vector<u8> read(u32 start, u32 length) { return m_object->read(start, length); }
+ std::vector<u8> rsrc_read_all() { return m_object->rsrc_read_all(); }
+ std::vector<u8> rsrc_read(u32 start, u32 length) { return m_object->rsrc_read(start, length); }
};
filesystem_t(fsblk_t &blockdev, u32 size) : m_blockdev(blockdev) {
@@ -324,6 +328,26 @@ public:
virtual fs_meta_data metadata();
virtual dir_t root();
+ static void copy(uint8_t *p, const uint8_t *src, uint32_t size);
+ static void fill(uint8_t *p, uint8_t data, uint32_t size);
+ static void wstr(uint8_t *p, const std::string &str);
+ static void w8( uint8_t *p, uint8_t data);
+ static void w16b(uint8_t *p, uint16_t data);
+ static void w24b(uint8_t *p, uint32_t data);
+ static void w32b(uint8_t *p, uint32_t data);
+ static void w16l(uint8_t *p, uint16_t data);
+ static void w24l(uint8_t *p, uint32_t data);
+ static void w32l(uint8_t *p, uint32_t data);
+
+ static std::string rstr(const uint8_t *p, uint32_t size);
+ static uint8_t r8( const uint8_t *p);
+ static uint16_t r16b(const uint8_t *p);
+ static uint32_t r24b(const uint8_t *p);
+ static uint32_t r32b(const uint8_t *p);
+ static uint16_t r16l(const uint8_t *p);
+ static uint32_t r24l(const uint8_t *p);
+ static uint32_t r32l(const uint8_t *p);
+
protected:
fsblk_t &m_blockdev;
};
@@ -361,6 +385,7 @@ public:
virtual bool can_format() const = 0;
virtual bool can_read() const = 0;
virtual bool can_write() const = 0;
+ virtual bool has_rsrc() const = 0;
virtual char directory_separator() const;
bool has_subdirectories() const { return directory_separator() != 0; }