aboutsummaryrefslogtreecommitdiff
path: root/src/pack.h
diff options
context:
space:
mode:
authorDavid Timber <mieabby@gmail.com>2020-01-19 13:12:29 +1100
committerDavid Timber <mieabby@gmail.com>2020-01-19 13:12:29 +1100
commitd328cbbdc256197d02ec03eef0022b4122d38bb8 (patch)
tree088f711afe755ef99c28955fab716a0752e47029 /src/pack.h
parenta9762b186c68797c19c61bf0284a80d9bc51a2ca (diff)
bin pack redesign. resolv bug fix
Diffstat (limited to 'src/pack.h')
-rw-r--r--src/pack.h66
1 files changed, 36 insertions, 30 deletions
diff --git a/src/pack.h b/src/pack.h
index 66171e1..5279f92 100644
--- a/src/pack.h
+++ b/src/pack.h
@@ -4,45 +4,51 @@
#include "protocol.h"
-
+struct prne_bin_tuple;
+struct prne_bin_archive;
+struct prne_pack_ret;
+struct prne_unpack_ctx;
+typedef struct prne_bin_tuple prne_bin_tuple_t;
typedef struct prne_bin_archive prne_bin_archive_t;
-typedef struct prne_unpack_bin_archive_result prne_unpack_bin_archive_result_t;
+typedef struct prne_pack_ret prne_pack_ret_t;
+typedef struct prne_unpack_ctx* prne_unpack_ctx_pt;
+
+typedef enum {
+ PRNE_PACK_RC_OK,
+ PRNE_PACK_RC_FMT_ERR,
+ PRNE_PACK_RC_ERRNO,
+ PRNE_PACK_RC_Z_ERR,
+ PRNE_PACK_RC_MBEDTLS_ERR,
+ PRNE_PACK_RC_NO_BIN,
+} prne_pack_rc_t;
+
+struct prne_bin_tuple {
+ prne_arch_t arch;
+ size_t offset;
+ size_t size;
+};
struct prne_bin_archive {
- size_t data_size;
uint8_t *data;
- size_t nb_binaries;
- prne_arch_t *arch_arr;
- size_t *offset_arr;
- size_t *size_arr;
+ size_t data_size;
+ size_t nb_bin;
+ prne_bin_tuple_t *bin;
};
-typedef enum {
- PRNE_UNPACK_BIN_ARCHIVE_OK,
- PRNE_UNPACK_BIN_ARCHIVE_CRYPTO_ERR,
- PRNE_UNPACK_BIN_ARCHIVE_Z_ERR,
- PRNE_UNPACK_BIN_ARCHIVE_ERRNO,
- PRNE_UNPACK_BIN_ARCHIVE_MEM_ERR,
- PRNE_UNPACK_BIN_ARCHIVE_FMT_ERR
-} prne_unpack_bin_archive_result_code_t;
-
-struct prne_unpack_bin_archive_result {
- size_t data_size;
- uint8_t *data;
- prne_unpack_bin_archive_result_code_t result;
- long err;
+struct prne_pack_ret {
+ prne_pack_rc_t rc;
+ int err;
};
-typedef enum {
- PRNE_INDEX_BIN_ARCHIVE_OK,
- PRNE_INDEX_BIN_ARCHIVE_FMT_ERR,
- PRNE_INDEX_BIN_ARCHIVE_MEM_ERR
-} prne_index_bin_archive_result_code_t;
+typedef prne_pack_ret_t(*prne_bin_archive_read_ft)(void *ctx, const size_t req, uint8_t *out, size_t *out_len);
void prne_init_bin_archive (prne_bin_archive_t *a);
-void prne_init_unpack_bin_archive_result (prne_unpack_bin_archive_result_t *r);
-prne_unpack_bin_archive_result_t prne_unpack_bin_archive (const int fd);
-prne_index_bin_archive_result_code_t prne_index_bin_archive (prne_unpack_bin_archive_result_t *in, prne_bin_archive_t *out);
-void prne_free_unpack_bin_archive_result (prne_unpack_bin_archive_result_t *r);
void prne_free_bin_archive (prne_bin_archive_t *a);
+prne_pack_ret_t prne_index_bin_archive (void *rf_ctx, prne_bin_archive_read_ft rf, prne_bin_archive_t *out);
+
+prne_unpack_ctx_pt prne_alloc_unpack_ctx (const prne_bin_archive_t *archive, const prne_arch_t arch, prne_pack_ret_t *pr_out);
+void prne_free_unpack_ctx (prne_unpack_ctx_pt ctx);
+ssize_t prne_do_unpack (prne_unpack_ctx_pt ctx, uint8_t *out, const size_t out_len, prne_pack_ret_t *pr_out);
+
+char *prne_pack_ret_tostr (const prne_pack_ret_t pr);