aboutsummaryrefslogtreecommitdiff
path: root/src/pack.c
diff options
context:
space:
mode:
authorDavid Timber <mieabby@gmail.com>2020-09-18 00:39:10 +0930
committerDavid Timber <mieabby@gmail.com>2020-09-18 00:39:10 +0930
commit54166c46f32555532dc3c0e922fe6a591cb74128 (patch)
treedee32ffb8a15365cc2800f6c2cbc3520ef56324e /src/pack.c
parente6953dcb47193746a4f4d9fff0193723fadbb3e6 (diff)
* Impl: bne
* Add prne_index_nybin()
Diffstat (limited to 'src/pack.c')
-rw-r--r--src/pack.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/pack.c b/src/pack.c
index 10d9a54..e62af2b 100644
--- a/src/pack.c
+++ b/src/pack.c
@@ -503,3 +503,25 @@ ssize_t prne_bin_rcb_read (
{
return ctx->read_f(ctx, buf, len, prc, err);
}
+
+bool prne_index_nybin (
+ const uint8_t *m_nybin,
+ const size_t nybin_len,
+ const uint8_t **m_dv,
+ size_t *dv_len,
+ const uint8_t **m_ba,
+ size_t *ba_len)
+{
+ if (nybin_len < 8) {
+ return false;
+ }
+ *dv_len = prne_recmb_msb16(m_nybin[0], m_nybin[1]);
+ if (8 + *dv_len > nybin_len) {
+ return false;
+ }
+ *m_dv = m_nybin + 8;
+ *m_ba = m_nybin + 8 + prne_salign_next(*dv_len, PRNE_BIN_ALIGNMENT);
+ *ba_len = nybin_len - (*m_ba - m_nybin);
+
+ return true;
+}