diff options
author | midipix <writeonce@midipix.org> | 2024-01-06 09:15:26 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2024-01-22 03:49:50 +0000 |
commit | d4473b3be02d429a72347914a6fc7e5688ad98e5 (patch) | |
tree | 138d10289bb4f7b5dc42da466447807591ba1836 /include/slibtool/slibtool.h | |
parent | 8a9ab12c467fe48944272ae9bd073f90854b13f8 (diff) | |
download | slibtool-d4473b3be02d429a72347914a6fc7e5688ad98e5.tar.bz2 slibtool-d4473b3be02d429a72347914a6fc7e5688ad98e5.tar.xz |
slbt_get_archive_meta(): initial implementation.
Diffstat (limited to 'include/slibtool/slibtool.h')
-rw-r--r-- | include/slibtool/slibtool.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/include/slibtool/slibtool.h b/include/slibtool/slibtool.h index a742037..1743262 100644 --- a/include/slibtool/slibtool.h +++ b/include/slibtool/slibtool.h @@ -7,6 +7,7 @@ #include <unistd.h> #include "slibtool_api.h" +#include "slibtool_arbits.h" #ifdef __cplusplus extern "C" { @@ -96,6 +97,13 @@ enum slbt_custom_error { SLBT_ERR_LCONF_MAP, SLBT_ERR_LCONF_PARSE, SLBT_ERR_AR_FAIL, + SLBT_ERR_AR_EMPTY_FILE, + SLBT_ERR_AR_INVALID_SIGNATURE, + SLBT_ERR_AR_INVALID_HEADER, + SLBT_ERR_AR_TRUNCATED_DATA, + SLBT_ERR_AR_DUPLICATE_LONG_NAMES, + SLBT_ERR_AR_DUPLICATE_ARMAP_MEMBER, + SLBT_ERR_AR_MISPLACED_ARMAP_MEMBER, }; /* execution modes */ @@ -277,6 +285,31 @@ struct slbt_driver_ctx { void * any; }; +struct slbt_raw_archive { + void * map_addr; + size_t map_size; +}; + +struct slbt_archive_meta { + struct slbt_raw_archive r_archive; + struct ar_raw_signature * r_signature; + + struct ar_meta_signature * m_signature; + + struct ar_meta_member_info ** a_memberv; + struct ar_meta_member_info * a_namestrs; + + struct ar_meta_armap_info a_armap_primary; + struct ar_meta_armap_info a_armap_pecoff; +}; + +struct slbt_archive_ctx { + const char * const * path; + const struct slbt_raw_archive * map; + const struct slbt_archive_meta *meta; + void * any; +}; + /* raw input api */ slbt_api int slbt_map_input (const struct slbt_driver_ctx *, int, const char *, int, @@ -323,6 +356,13 @@ slbt_api int slbt_copy_file (const struct slbt_driver_ctx *, struct slbt_api int slbt_dump_machine (const char * compiler, char * machine, size_t bufsize); slbt_api int slbt_realpath (int, const char *, int, char *, size_t); +/* archiver api */ +slbt_api int slbt_get_archive_meta (const struct slbt_driver_ctx *, + const struct slbt_raw_archive *, + struct slbt_archive_meta **); + +slbt_api void slbt_free_archive_meta (struct slbt_archive_meta *); + /* utility api */ slbt_api int slbt_main (char **, char **, const struct slbt_fd_ctx *); |