#ifndef __MCPU_ARCHIVE_H #define __MCPU_ARCHIVE_H #include typedef struct mcpu_archive_member { char *name; unsigned char *data; size_t size; char **symbols; size_t symbol_count; } mcpu_archive_member; typedef struct mcpu_archive { mcpu_archive_member *members; size_t member_count; int had_symbol_index; } mcpu_archive; void mcpu_archive_init( mcpu_archive *archive ); void mcpu_archive_free( mcpu_archive *archive ); void mcpu_archive_member_free( mcpu_archive_member *member ); int mcpu_archive_read( const char *path, mcpu_archive *archive, char *err, size_t errsz ); int mcpu_archive_write( const char *path, const mcpu_archive *archive, int write_symbol_index, char *err, size_t errsz ); int mcpu_archive_member_load( const char *path, mcpu_archive_member *member, char *err, size_t errsz ); int mcpu_archive_append( mcpu_archive *archive, mcpu_archive_member *member, char *err, size_t errsz ); const char *mcpu_archive_basename( const char *path ); #endif