-extern int image_open(image_t *image, void *source, enum fileio_access access);
-extern int image_read_section(image_t *image, int section, u32 offset, u32 size, u8 *buffer, u32 *size_read);
-extern int image_close(image_t *image);
-extern int identify_image_type(image_type_t *type, char *type_string);
+typedef struct fileio_elf_s
+{
+ struct fileio fileio;
+ Elf32_Ehdr *header;
+ Elf32_Phdr *segments;
+ uint32_t segment_count;
+ uint8_t endianness;
+} image_elf_t;
+
+typedef struct image_mot_s
+{
+ struct fileio fileio;
+ uint8_t *buffer;
+} image_mot_t;
+
+int image_open(image_t *image, const char *url, const char *type_string);
+int image_read_section(image_t *image, int section, uint32_t offset,
+ uint32_t size, uint8_t *buffer, uint32_t *size_read);
+void image_close(image_t *image);
+
+int image_add_section(image_t *image, uint32_t base, uint32_t size,
+ int flags, uint8_t *data);
+
+int image_calculate_checksum(uint8_t* buffer, uint32_t nbytes,
+ uint32_t* checksum);