diff options
Diffstat (limited to 'vendor/microtar-0.1.0/src/microtar.h')
| -rw-r--r-- | vendor/microtar-0.1.0/src/microtar.h | 82 |
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 | |||
| 16 | enum { | ||
| 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 | |||
| 28 | enum { | ||
| 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 | |||
| 38 | typedef 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 | |||
| 49 | typedef struct mtar_t mtar_t; | ||
| 50 | |||
| 51 | struct 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 | |||
| 63 | const char* mtar_strerror(int err); | ||
| 64 | |||
| 65 | int mtar_open(mtar_t *tar, const char *filename, const char *mode); | ||
| 66 | int mtar_close(mtar_t *tar); | ||
| 67 | |||
| 68 | int mtar_seek(mtar_t *tar, unsigned pos); | ||
| 69 | int mtar_rewind(mtar_t *tar); | ||
| 70 | int mtar_next(mtar_t *tar); | ||
| 71 | int mtar_find(mtar_t *tar, const char *name, mtar_header_t *h); | ||
| 72 | int mtar_read_header(mtar_t *tar, mtar_header_t *h); | ||
| 73 | int mtar_read_data(mtar_t *tar, void *ptr, unsigned size); | ||
| 74 | |||
| 75 | int mtar_write_header(mtar_t *tar, const mtar_header_t *h); | ||
| 76 | int mtar_write_file_header(mtar_t *tar, const char *name, unsigned size); | ||
| 77 | int mtar_write_dir_header(mtar_t *tar, const char *name); | ||
| 78 | int mtar_write_data(mtar_t *tar, const void *data, unsigned size); | ||
| 79 | int mtar_finalize(mtar_t *tar); | ||
| 80 | |||
| 81 | |||
| 82 | #endif | ||
