aboutsummaryrefslogtreecommitdiff
path: root/vendor/microtar-0.1.0/src/microtar.h
diff options
context:
space:
mode:
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 @@
1/**
2 * Copyright (c) 2017 rxi
3 *
4 * This library is free software; you can redistribute it and/or modify it
5 * under the terms of the MIT license. See `microtar.c` for details.
6 */
7
8#ifndef MICROTAR_H
9#define MICROTAR_H
10
11#include <stdio.h>
12#include <stdlib.h>
13
14#define MTAR_VERSION "0.1.0"
15
16enum {
17 MTAR_ESUCCESS = 0,
18 MTAR_EFAILURE = -1,
19 MTAR_EOPENFAIL = -2,
20 MTAR_EREADFAIL = -3,
21 MTAR_EWRITEFAIL = -4,
22 MTAR_ESEEKFAIL = -5,
23 MTAR_EBADCHKSUM = -6,
24 MTAR_ENULLRECORD = -7,
25 MTAR_ENOTFOUND = -8
26};
27
28enum {
29 MTAR_TREG = '0',
30 MTAR_TLNK = '1',
31 MTAR_TSYM = '2',
32 MTAR_TCHR = '3',
33 MTAR_TBLK = '4',
34 MTAR_TDIR = '5',
35 MTAR_TFIFO = '6'
36};
37
38typedef struct {
39 unsigned mode;
40 unsigned owner;
41 unsigned size;
42 unsigned mtime;
43 unsigned type;
44 char name[100];
45 char linkname[100];
46} mtar_header_t;
47
48
49typedef struct mtar_t mtar_t;
50
51struct mtar_t {
52 int (*read)(mtar_t *tar, void *data, unsigned size);
53 int (*write)(mtar_t *tar, const void *data, unsigned size);
54 int (*seek)(mtar_t *tar, unsigned pos);
55 int (*close)(mtar_t *tar);
56 void *stream;
57 unsigned pos;
58 unsigned remaining_data;
59 unsigned last_header;
60};
61
62
63const char* mtar_strerror(int err);
64
65int mtar_open(mtar_t *tar, const char *filename, const char *mode);
66int mtar_close(mtar_t *tar);
67
68int mtar_seek(mtar_t *tar, unsigned pos);
69int mtar_rewind(mtar_t *tar);
70int mtar_next(mtar_t *tar);
71int mtar_find(mtar_t *tar, const char *name, mtar_header_t *h);
72int mtar_read_header(mtar_t *tar, mtar_header_t *h);
73int mtar_read_data(mtar_t *tar, void *ptr, unsigned size);
74
75int mtar_write_header(mtar_t *tar, const mtar_header_t *h);
76int mtar_write_file_header(mtar_t *tar, const char *name, unsigned size);
77int mtar_write_dir_header(mtar_t *tar, const char *name);
78int mtar_write_data(mtar_t *tar, const void *data, unsigned size);
79int mtar_finalize(mtar_t *tar);
80
81
82#endif