diff options
Diffstat (limited to 'meta.c')
-rw-r--r-- | meta.c | 32 |
1 files changed, 32 insertions, 0 deletions
@@ -0,0 +1,32 @@ +/* See LICENSE file for copyright and license details. */ +#include "common.h" + + +int +libparsesfnt_parse_meta( + const char *data, size_t size, + struct libparsesfnt_meta *infop, + const struct libparsesfnt_tabdir_entry *tag) +{ + int ret; + ret = PARSE(LIBPARSESFNT_META__, tag->offset, 0, 0, 0, 1, tag); + if (!ret) { + if (infop->data_offset > size - tag->offset || + infop->num_data_maps > (size - tag->offset - infop->data_offset) / 12) { + errno = EBFONT; + return -1; + } + } + return ret; +} + + +int +libparsesfnt_parse_meta_entries( + const char *data, size_t size, + struct libparsesfnt_meta_entry *infop, + const struct libparsesfnt_tabdir_entry *tag, const struct libparsesfnt_meta *meta, + size_t first, size_t count) +{ + return PARSE(LIBPARSESFNT_META_ENTRY__, tag->offset, meta->data_offset, 0, first, count, NULL); +} |