root/trunk/libarchive-d/libarchive/libarchive.d

Revision 246, 8.9 kB (checked in by Anders, 4 years ago)

Add sqlite3 and libarchive bindings written by me. They are both hand-made, so typos may have went in but I think these should be of OK quality.

Line 
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);
Note: See TracBrowser for help on using the browser.