summaryrefslogtreecommitdiff
path: root/vendor/microtar-0.1.0/src/microtar.h
diff options
context:
space:
mode:
authorMitja Felicijan <mitja.felicijan@gmail.com>2025-08-06 05:09:07 +0200
committerMitja Felicijan <mitja.felicijan@gmail.com>2025-08-06 05:09:07 +0200
commit2914af44b185e860bb04d3bb062a4cd928b0bab7 (patch)
tree35c8e6847c32f382436e42578ea2b6a8555fa56d /vendor/microtar-0.1.0/src/microtar.h
parent563dd7ffe8d71c2ba1725c505fecd09441c8b71d (diff)
downloadbidi-2914af44b185e860bb04d3bb062a4cd928b0bab7.tar.gz
Added microtar library
Diffstat (limited to 'vendor/microtar-0.1.0/src/microtar.h')
-rw-r--r--vendor/microtar-0.1.0/src/microtar.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/vendor/microtar-0.1.0/src/microtar.h b/vendor/microtar-0.1.0/src/microtar.h
new file mode 100644
index 0000000..8a047e3
--- /dev/null
+++ b/vendor/microtar-0.1.0/src/microtar.h
@@ -0,0 +1,82 @@
+/**
+ * Copyright (c) 2017 rxi
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the MIT license. See `microtar.c` for details.
+ */
+
+#ifndef MICROTAR_H
+#define MICROTAR_H
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define MTAR_VERSION "0.1.0"
+
+enum {
+ MTAR_ESUCCESS = 0,
+ MTAR_EFAILURE = -1,
+ MTAR_EOPENFAIL = -2,
+ MTAR_EREADFAIL = -3,
+ MTAR_EWRITEFAIL = -4,
+ MTAR_ESEEKFAIL = -5,
+ MTAR_EBADCHKSUM = -6,
+ MTAR_ENULLRECORD = -7,
+ MTAR_ENOTFOUND = -8
+};
+
+enum {
+ MTAR_TREG = '0',
+ MTAR_TLNK = '1',
+ MTAR_TSYM = '2',
+ MTAR_TCHR = '3',
+ MTAR_TBLK = '4',
+ MTAR_TDIR = '5',
+ MTAR_TFIFO = '6'
+};
+
+typedef struct {
+ unsigned mode;
+ unsigned owner;
+ unsigned size;
+ unsigned mtime;
+ unsigned type;
+ char name[100];
+ char linkname[100];
+} mtar_header_t;
+
+
+typedef struct mtar_t mtar_t;
+
+struct mtar_t {
+ int (*read)(mtar_t *tar, void *data, unsigned size);
+ int (*write)(mtar_t *tar, const void *data, unsigned size);
+ int (*seek)(mtar_t *tar, unsigned pos);
+ int (*close)(mtar_t *tar);
+ void *stream;
+ unsigned pos;
+ unsigned remaining_data;
+ unsigned last_header;
+};
+
+
+const char* mtar_strerror(int err);
+
+int mtar_open(mtar_t *tar, const char *filename, const char *mode);
+int mtar_close(mtar_t *tar);
+
+int mtar_seek(mtar_t *tar, unsigned pos);
+int mtar_rewind(mtar_t *tar);
+int mtar_next(mtar_t *tar);
+int mtar_find(mtar_t *tar, const char *name, mtar_header_t *h);
+int mtar_read_header(mtar_t *tar, mtar_header_t *h);
+int mtar_read_data(mtar_t *tar, void *ptr, unsigned size);
+
+int mtar_write_header(mtar_t *tar, const mtar_header_t *h);
+int mtar_write_file_header(mtar_t *tar, const char *name, unsigned size);
+int mtar_write_dir_header(mtar_t *tar, const char *name);
+int mtar_write_data(mtar_t *tar, const void *data, unsigned size);
+int mtar_finalize(mtar_t *tar);
+
+
+#endif