Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/amachronic/microtar.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAidan MacDonald <amachronic@protonmail.com>2021-11-06 17:20:56 +0300
committerAidan MacDonald <amachronic@protonmail.com>2021-11-06 17:21:09 +0300
commit750bde2dbd9cbc523119909e785ed43489982577 (patch)
treed21d1f7382d891a9434bce35ae3c5b2b9ae12fd6
parent79040be9c09c04df8b577286991ae58a98cfe9c3 (diff)
Add mtar_tell_data() to return offset in data
-rw-r--r--src/microtar.c12
-rw-r--r--src/microtar.h1
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);