aboutsummaryrefslogtreecommitdiff
path: root/src/pack.h
diff options
context:
space:
mode:
authorDavid Timber <mieabby@gmail.com>2020-01-01 09:50:34 +1100
committerDavid Timber <mieabby@gmail.com>2020-01-01 09:50:34 +1100
commited809a51fdd1c313cd256301ef6f7211e8394cb1 (patch)
tree81a3054ce0d42976f80c973e2b6ebf9c1b8b7476 /src/pack.h
parent6e456edb2757cf9d28d306afb836aa16780fb912 (diff)
checkpoint
Diffstat (limited to 'src/pack.h')
-rw-r--r--src/pack.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/pack.h b/src/pack.h
new file mode 100644
index 0000000..9f37cb5
--- /dev/null
+++ b/src/pack.h
@@ -0,0 +1,47 @@
+#pragma once
+#include <stdint.h>
+#include <stdbool.h>
+
+#include "protocol.h"
+
+
+typedef struct prne_bin_archive prne_bin_archive_t;
+typedef struct prne_unpack_bin_archive_result prne_unpack_bin_archive_result_t;
+
+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;
+};
+
+typedef enum {
+ PRNE_UNPACK_BIN_ARCHIVE_OK,
+ PRNE_UNPACK_BIN_ARCHIVE_OPENSSL_ERR,
+ PRNE_UNPACK_BIN_ARCHIVE_Z_ERR,
+ PRNE_UNPACK_BIN_ARCHIVE_ERRNO,
+ PRNE_UNPACK_BIN_ARCHIVE_MEM_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;
+};
+
+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;
+
+
+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);