| 1 |
// |
|---|
| 2 |
// libarchive modules for D |
|---|
| 3 |
// Written by Anders Bergh <anders1@gmail.com> |
|---|
| 4 |
// Released into the public domain |
|---|
| 5 |
// |
|---|
| 6 |
|
|---|
| 7 |
module libarchive.libarchive; |
|---|
| 8 |
|
|---|
| 9 |
import libarchive.entry; |
|---|
| 10 |
import libarchive.types; |
|---|
| 11 |
|
|---|
| 12 |
// For rebuild (and DSSS) |
|---|
| 13 |
version (build) |
|---|
| 14 |
{ |
|---|
| 15 |
version (Posix) |
|---|
| 16 |
pragma(link, "archive"); |
|---|
| 17 |
version (Windows) |
|---|
| 18 |
pragma(link, "archive2"); |
|---|
| 19 |
} |
|---|
| 20 |
|
|---|
| 21 |
extern (C): |
|---|
| 22 |
|
|---|
| 23 |
const char[] ARCHIVE_LIBRARY_VERSION = "libarchive 2.3.3"; |
|---|
| 24 |
char* archive_version(); |
|---|
| 25 |
|
|---|
| 26 |
const int ARCHIVE_VERSION_STAMP = 2003003; |
|---|
| 27 |
int archive_version_stamp(); |
|---|
| 28 |
|
|---|
| 29 |
const int ARCHIVE_API_VERSION = (ARCHIVE_VERSION_STAMP / 1000000); |
|---|
| 30 |
int archive_api_version(); |
|---|
| 31 |
|
|---|
| 32 |
const int ARCHIVE_API_FEATURE = ((ARCHIVE_VERSION_STAMP / 1000) % 1000); |
|---|
| 33 |
int archive_api_feature(); |
|---|
| 34 |
|
|---|
| 35 |
const int ARCHIVE_BYTES_PER_RECORD = 512; |
|---|
| 36 |
const int ARCHIVE_DEFAULT_BYTES_PER_BLOCK = 10240; |
|---|
| 37 |
|
|---|
| 38 |
struct archive; |
|---|
| 39 |
|
|---|
| 40 |
const int ARCHIVE_EOF = 1; |
|---|
| 41 |
const int ARCHIVE_OK = 0; |
|---|
| 42 |
const int ARCHIVE_RETRY = -10; |
|---|
| 43 |
const int ARCHIVE_WARN = -20; |
|---|
| 44 |
const int ARCHIVE_FAILED = -25; |
|---|
| 45 |
const int ARCHIVE_FATAL = -30; |
|---|
| 46 |
|
|---|
| 47 |
alias ssize_t function(archive*, void* _client_data, void** _buffer) archive_read_callback; |
|---|
| 48 |
static if (ARCHIVE_API_VERSION < 2) |
|---|
| 49 |
alias ssize_t function(archive*, void* _client_data, size_t request) archive_skip_callback; |
|---|
| 50 |
else |
|---|
| 51 |
alias ssize_t function(archive*, void* _client_data, off_t request) archive_skip_callback; |
|---|
| 52 |
alias ssize_t function(archive*, void* _client_data, void* _buffer, size_t _length) archive_write_callback; |
|---|
| 53 |
alias int function(archive*, void* _client_data) archive_open_callback; |
|---|
| 54 |
alias int function(archive*, void* _client_data) archive_close_callback; |
|---|
| 55 |
|
|---|
| 56 |
const int ARCHIVE_COMPRESSION_NONE = 0; |
|---|
| 57 |
const int ARCHIVE_COMPRESSION_GZIP = 1; |
|---|
| 58 |
const int ARCHIVE_COMPRESSION_BZIP2 = 2; |
|---|
| 59 |
const int ARCHIVE_COMPRESSION_COMPRESS = 3; |
|---|
| 60 |
const int ARCHIVE_COMPRESSION_PROGRAM = 4; |
|---|
| 61 |
|
|---|
| 62 |
const int ARCHIVE_FORMAT_BASE_MASK = 0xff0000; |
|---|
| 63 |
const int ARCHIVE_FORMAT_CPIO = 0x10000; |
|---|
| 64 |
const int ARCHIVE_FORMAT_CPIO_POSIX = (ARCHIVE_FORMAT_CPIO | 1); |
|---|
| 65 |
const int ARCHIVE_FORMAT_CPIO_BIN_LE = (ARCHIVE_FORMAT_CPIO | 2); |
|---|
| 66 |
const int ARCHIVE_FORMAT_CPIO_BIN_BE = (ARCHIVE_FORMAT_CPIO | 3); |
|---|
| 67 |
const int ARCHIVE_FORMAT_CPIO_SVR4_NOCRC = (ARCHIVE_FORMAT_CPIO | 4); |
|---|
| 68 |
const int ARCHIVE_FORMAT_CPIO_SVR4_CRC = (ARCHIVE_FORMAT_CPIO | 5); |
|---|
| 69 |
const int ARCHIVE_FORMAT_SHAR = 0x20000; |
|---|
| 70 |
const int ARCHIVE_FORMAT_SHAR_BASE = (ARCHIVE_FORMAT_SHAR | 1); |
|---|
| 71 |
const int ARCHIVE_FORMAT_SHAR_DUMP = (ARCHIVE_FORMAT_SHAR | 2); |
|---|
| 72 |
const int ARCHIVE_FORMAT_TAR = 0x30000; |
|---|
| 73 |
const int ARCHIVE_FORMAT_TAR_USTAR = (ARCHIVE_FORMAT_TAR | 1); |
|---|
| 74 |
const int ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE = (ARCHIVE_FORMAT_TAR | 2); |
|---|
| 75 |
const int ARCHIVE_FORMAT_TAR_PAX_RESTRICTED = (ARCHIVE_FORMAT_TAR | 3); |
|---|
| 76 |
const int ARCHIVE_FORMAT_TAR_GNUTAR = (ARCHIVE_FORMAT_TAR | 4); |
|---|
| 77 |
const int ARCHIVE_FORMAT_ISO9660 = 0x40000; |
|---|
| 78 |
const int ARCHIVE_FORMAT_ISO9660_ROCKRIDGE = (ARCHIVE_FORMAT_ISO9660 | 1); |
|---|
| 79 |
const int ARCHIVE_FORMAT_ZIP = 0x50000; |
|---|
| 80 |
const int ARCHIVE_FORMAT_EMPTY = 0x60000; |
|---|
| 81 |
const int ARCHIVE_FORMAT_AR = 0x70000; |
|---|
| 82 |
const int ARCHIVE_FORMAT_AR_GNU = (ARCHIVE_FORMAT_AR | 1); |
|---|
| 83 |
const int ARCHIVE_FORMAT_AR_BSD = (ARCHIVE_FORMAT_AR | 2); |
|---|
| 84 |
const int ARCHIVE_FORMAT_MTREE = 0x80000; |
|---|
| 85 |
const int ARCHIVE_FORMAT_MTREE_V1 = (ARCHIVE_FORMAT_MTREE | 1); |
|---|
| 86 |
const int ARCHIVE_FORMAT_MTREE_V2 = (ARCHIVE_FORMAT_MTREE | 2); |
|---|
| 87 |
|
|---|
| 88 |
archive* archive_read_new(); |
|---|
| 89 |
|
|---|
| 90 |
int archive_read_support_compression_all(archive*); |
|---|
| 91 |
int archive_read_support_compression_bzip2(archive*); |
|---|
| 92 |
int archive_read_support_compression_compress(archive*); |
|---|
| 93 |
int archive_read_support_compression_gzip(archive*); |
|---|
| 94 |
int archive_read_support_compression_none(archive*); |
|---|
| 95 |
int archive_read_support_compression_program(archive*, char* command); |
|---|
| 96 |
|
|---|
| 97 |
int archive_read_support_format_all(archive*); |
|---|
| 98 |
int archive_read_support_format_ar(archive*); |
|---|
| 99 |
int archive_read_support_format_cpio(archive*); |
|---|
| 100 |
int archive_read_support_format_empty(archive*); |
|---|
| 101 |
int archive_read_support_format_gnutar(archive*); |
|---|
| 102 |
int archive_read_support_format_iso9660(archive*); |
|---|
| 103 |
int archive_read_support_format_mtree(archive*); |
|---|
| 104 |
int archive_read_support_format_tar(archive*); |
|---|
| 105 |
int archive_read_support_format_zip(archive*); |
|---|
| 106 |
|
|---|
| 107 |
int archive_read_open(archive*, void* _client_data, archive_open_callback, archive_read_callback, archive_close_callback); |
|---|
| 108 |
int archive_read_open2(archive*, void* _client_data, archive_open_callback, archive_read_callback, archive_skip_callback, archive_close_callback); |
|---|
| 109 |
|
|---|
| 110 |
int archive_read_open_filename(archive*, char* _filename, size_t _block_size); |
|---|
| 111 |
int archive_read_open_file(archive*, char* _filename, size_t _block_size); |
|---|
| 112 |
int archive_read_open_memory(archive*, void* buff, size_t size); |
|---|
| 113 |
int archive_read_open_memory2(archive* a, void* buff, size_t size, size_t read_size); |
|---|
| 114 |
int archive_read_open_fd(archive*, int _fd, size_t _block_size); |
|---|
| 115 |
int archive_read_open_FILE(archive*, void* /*FILE**/ _file); |
|---|
| 116 |
int archive_read_next_header(archive*, archive_entry**); |
|---|
| 117 |
int64_t archive_read_header_position(archive*); |
|---|
| 118 |
ssize_t archive_read_data(archive*, void*, size_t); |
|---|
| 119 |
int archive_read_data_block(archive* a, void** buff, size_t* size, off_t* offset); |
|---|
| 120 |
|
|---|
| 121 |
int archive_read_data_skip(archive*); |
|---|
| 122 |
int archive_read_data_into_buffer(archive*, void* buffer, ssize_t len); |
|---|
| 123 |
int archive_read_data_into_fd(archive*, int fd); |
|---|
| 124 |
|
|---|
| 125 |
const int ARCHIVE_EXTRACT_OWNER = 1; |
|---|
| 126 |
const int ARCHIVE_EXTRACT_PERM = 2; |
|---|
| 127 |
const int ARCHIVE_EXTRACT_TIME = 4; |
|---|
| 128 |
const int ARCHIVE_EXTRACT_NO_OVERWRITE = 8; |
|---|
| 129 |
const int ARCHIVE_EXTRACT_UNLINK = 16; |
|---|
| 130 |
const int ARCHIVE_EXTRACT_ACL = 32; |
|---|
| 131 |
const int ARCHIVE_EXTRACT_FFLAGS = 64; |
|---|
| 132 |
const int ARCHIVE_EXTRACT_XATTR = 128; |
|---|
| 133 |
const int ARCHIVE_EXTRACT_SECURE_SYMLINKS = 256; |
|---|
| 134 |
const int ARCHIVE_EXTRACT_SECURE_NODOTDOT = 512; |
|---|
| 135 |
const int ARCHIVE_EXTRACT_NO_AUTODIR = 1024; |
|---|
| 136 |
const int ARCHIVE_EXTRACT_NO_OVERWRITE_NEWER = 2048; |
|---|
| 137 |
|
|---|
| 138 |
int archive_read_extract(archive*, archive_entry*, int flags); |
|---|
| 139 |
void archive_read_extract_set_progress_callback(archive*, void function(void*), void* _user_data); |
|---|
| 140 |
|
|---|
| 141 |
void archive_read_extract_set_skip_file(archive*, dev_t, ino_t); |
|---|
| 142 |
|
|---|
| 143 |
int archive_read_close(archive*); |
|---|
| 144 |
|
|---|
| 145 |
static if (ARCHIVE_API_VERSION > 1) |
|---|
| 146 |
int archive_read_finish(archive*); |
|---|
| 147 |
else |
|---|
| 148 |
void archive_read_finish(archive*); |
|---|
| 149 |
|
|---|
| 150 |
archive* archive_write_new(); |
|---|
| 151 |
int archive_write_set_bytes_per_block(archive*, int bytes_per_block); |
|---|
| 152 |
int archive_write_get_bytes_per_block(archive*); |
|---|
| 153 |
int archive_write_set_bytes_in_last_block(archive*, int bytes_in_last_block); |
|---|
| 154 |
int archive_write_get_bytes_in_last_block(archive*); |
|---|
| 155 |
|
|---|
| 156 |
int archive_write_set_skip_file(archive*, dev_t, ino_t); |
|---|
| 157 |
|
|---|
| 158 |
int archive_write_set_compression_bzip2(archive*); |
|---|
| 159 |
int archive_write_set_compression_gzip(archive*); |
|---|
| 160 |
int archive_write_set_compression_none(archive*); |
|---|
| 161 |
int archive_write_set_compression_program(archive*, char* cmd); |
|---|
| 162 |
int archive_write_set_format(archive*, int format_code); |
|---|
| 163 |
int archive_write_set_format_by_name(archive*, char* name); |
|---|
| 164 |
int archive_write_set_format_ar_bsd(archive*); |
|---|
| 165 |
int archive_write_set_format_ar_svr4(archive*); |
|---|
| 166 |
int archive_write_set_format_cpio(archive*); |
|---|
| 167 |
int archive_write_set_format_cpio_newc(archive*); |
|---|
| 168 |
int archive_write_set_format_pax(archive*); |
|---|
| 169 |
int archive_write_set_format_pax_restricted(archive*); |
|---|
| 170 |
int archive_write_set_format_shar(archive*); |
|---|
| 171 |
int archive_write_set_format_shar_dump(archive*); |
|---|
| 172 |
int archive_write_set_format_ustar(archive*); |
|---|
| 173 |
int archive_write_open(archive*, void*, archive_open_callback, archive_write_callback, archive_close_callback); |
|---|
| 174 |
int archive_write_open_fd(archive*, int _fd); |
|---|
| 175 |
int archive_write_open_filename(archive*, char* _file); |
|---|
| 176 |
int archive_write_open_file(archive*, char* _file); |
|---|
| 177 |
int archive_write_open_FILE(archive*, void* /*FILE**/); |
|---|
| 178 |
int archive_write_open_memory(archive*, void* _buffer, size_t _buffSize, size_t* _used); |
|---|
| 179 |
|
|---|
| 180 |
int archive_write_header(archive*, archive_entry*); |
|---|
| 181 |
static if (ARCHIVE_API_VERSION > 1) |
|---|
| 182 |
ssize_t archive_write_data(archive*, void*, size_t); |
|---|
| 183 |
else |
|---|
| 184 |
int archive_write_data(archive*, void*, size_t); |
|---|
| 185 |
ssize_t archive_write_data_block(archive*, void*, size_t, off_t); |
|---|
| 186 |
int archive_write_finish_entry(archive*); |
|---|
| 187 |
int archive_write_close(archive*); |
|---|
| 188 |
static if (ARCHIVE_API_VERSION > 1) |
|---|
| 189 |
int archive_write_finish(archive*); |
|---|
| 190 |
else |
|---|
| 191 |
void archive_write_finish(archive*); |
|---|
| 192 |
|
|---|
| 193 |
archive* archive_write_disk_new(); |
|---|
| 194 |
int archive_write_disk_set_skip_file(archive*, dev_t, ino_t); |
|---|
| 195 |
int archive_write_disk_set_options(archive*, int flags); |
|---|
| 196 |
|
|---|
| 197 |
int archive_write_disk_set_standard_lookup(archive*); |
|---|
| 198 |
|
|---|
| 199 |
int archive_write_disk_set_group_lookup(archive*, void* private_data, gid_t function(void*, char* gname, gid_t gid) loookup, void function(void*) cleanup); |
|---|
| 200 |
int archive_write_disk_set_user_lookup(archive*, void* private_data, uid_t function(void*, char* gname, uid_t gid) loookup, void function(void*) cleanup); |
|---|
| 201 |
|
|---|
| 202 |
int64_t archive_position_compressed(archive*); |
|---|
| 203 |
int64_t archive_position_uncompressed(archive*); |
|---|
| 204 |
|
|---|
| 205 |
char* archive_compression_name(archive*); |
|---|
| 206 |
int archive_compression(archive*); |
|---|
| 207 |
int archive_errno(archive*); |
|---|
| 208 |
char* archive_error_string(archive*); |
|---|
| 209 |
char* archive_format_name(archive*); |
|---|
| 210 |
int archive_format(archive*); |
|---|
| 211 |
void archive_clear_error(archive*); |
|---|
| 212 |
void archive_set_error(archive*, int _err, char *fmt, ...); |
|---|
| 213 |
void archive_copy_error(archive* dest, archive* src); |
|---|