diff options
author | Aidan MacDonald <amachronic@protonmail.com> | 2021-11-06 17:20:56 +0300 |
---|---|---|
committer | Aidan MacDonald <amachronic@protonmail.com> | 2021-11-06 17:21:09 +0300 |
commit | 750bde2dbd9cbc523119909e785ed43489982577 (patch) | |
tree | d21d1f7382d891a9434bce35ae3c5b2b9ae12fd6 | |
parent | 79040be9c09c04df8b577286991ae58a98cfe9c3 (diff) |
Add mtar_tell_data() to return offset in data
-rw-r--r-- | src/microtar.c | 12 | ||||
-rw-r--r-- | src/microtar.h | 1 |
2 files changed, 13 insertions, 0 deletions
diff --git a/src/microtar.c b/src/microtar.c index da90d4d..ddd0c0c 100644 --- a/src/microtar.c +++ b/src/microtar.c @@ -471,6 +471,18 @@ int mtar_seek_data(mtar_t* tar, int offset, int whence) return tseek(tar, newpos); } +unsigned mtar_tell_data(mtar_t* tar) +{ +#ifndef MICROTAR_DISABLE_API_CHECKS + if(tar->access != MTAR_READ) + return MTAR_EACCESS; + if(!(tar->state & S_HEADER_VALID)) + return MTAR_EAPI; +#endif + + return tar->pos - data_beg_pos(tar); +} + int mtar_eof_data(mtar_t* tar) { /* API usage errors, but just claim EOF. */ diff --git a/src/microtar.h b/src/microtar.h index 12e43e0..5ccb6df 100644 --- a/src/microtar.h +++ b/src/microtar.h @@ -116,6 +116,7 @@ int mtar_find(mtar_t* tar, const char* name); int mtar_read_data(mtar_t* tar, void* ptr, unsigned size); int mtar_seek_data(mtar_t* tar, int offset, int whence); +unsigned mtar_tell_data(mtar_t* tar); int mtar_eof_data(mtar_t* tar); int mtar_write_header(mtar_t* tar, const mtar_header_t* h); |