forked from vieter-v/vieter
				
			Split libarchive bindings into separate file
							parent
							
								
									3fc0a2f9a9
								
							
						
					
					
						commit
						944bc41275
					
				|  | @ -0,0 +1,52 @@ | ||||||
|  | // Bindings for the libarchive library | ||||||
|  | 
 | ||||||
|  | #flag -larchive | ||||||
|  | 
 | ||||||
|  | #include "archive.h" | ||||||
|  | 
 | ||||||
|  | struct C.archive {} | ||||||
|  | 
 | ||||||
|  | // Create a new archive struct | ||||||
|  | fn C.archive_read_new() &C.archive | ||||||
|  | 
 | ||||||
|  | // Configure the archive to work with zstd compression | ||||||
|  | fn C.archive_read_support_filter_zstd(&C.archive) | ||||||
|  | 
 | ||||||
|  | // Configure the archive to work with a tarball content | ||||||
|  | fn C.archive_read_support_format_tar(&C.archive) | ||||||
|  | 
 | ||||||
|  | // Open an archive for reading | ||||||
|  | fn C.archive_read_open_filename(&C.archive, &char, int) int | ||||||
|  | 
 | ||||||
|  | // Go to next entry header in archive | ||||||
|  | fn C.archive_read_next_header(&C.archive, &&C.archive_entry) int | ||||||
|  | 
 | ||||||
|  | // Skip reading the current entry | ||||||
|  | fn C.archive_read_data_skip(&C.archive) | ||||||
|  | 
 | ||||||
|  | // Free an archive | ||||||
|  | fn C.archive_read_free(&C.archive) int | ||||||
|  | 
 | ||||||
|  | // Read an archive entry's contents into a pointer | ||||||
|  | fn C.archive_read_data(&C.archive, voidptr, int) | ||||||
|  | 
 | ||||||
|  | #include "archive_entry.h" | ||||||
|  | 
 | ||||||
|  | struct C.archive_entry {} | ||||||
|  | 
 | ||||||
|  | // Create a new archive_entry struct | ||||||
|  | fn C.archive_entry_new() &C.archive_entry | ||||||
|  | 
 | ||||||
|  | // Get the filename of the given entry | ||||||
|  | fn C.archive_entry_pathname(&C.archive_entry) &char | ||||||
|  | 
 | ||||||
|  | // Get an entry's file size | ||||||
|  | // Note: this function actually returns an i64, but as this can't be used as an | ||||||
|  | // arugment to malloc, we'll just roll with it & assume an entry is never | ||||||
|  | // bigger than 4 gigs | ||||||
|  | fn C.archive_entry_size(&C.archive_entry) int | ||||||
|  | 
 | ||||||
|  | #include <string.h> | ||||||
|  | 
 | ||||||
|  | // Compare two C strings; 0 means they're equal | ||||||
|  | fn C.strcmp(&char, &char) int | ||||||
|  | @ -3,57 +3,6 @@ module package | ||||||
| import os | import os | ||||||
| import util | import util | ||||||
| 
 | 
 | ||||||
| #flag -larchive |  | ||||||
| 
 |  | ||||||
| #include "archive.h" |  | ||||||
| 
 |  | ||||||
| struct C.archive {} |  | ||||||
| 
 |  | ||||||
| // Create a new archive struct |  | ||||||
| fn C.archive_read_new() &C.archive |  | ||||||
| 
 |  | ||||||
| // Configure the archive to work with zstd compression |  | ||||||
| fn C.archive_read_support_filter_zstd(&C.archive) |  | ||||||
| 
 |  | ||||||
| // Configure the archive to work with a tarball content |  | ||||||
| fn C.archive_read_support_format_tar(&C.archive) |  | ||||||
| 
 |  | ||||||
| // Open an archive for reading |  | ||||||
| fn C.archive_read_open_filename(&C.archive, &char, int) int |  | ||||||
| 
 |  | ||||||
| // Go to next entry header in archive |  | ||||||
| fn C.archive_read_next_header(&C.archive, &&C.archive_entry) int |  | ||||||
| 
 |  | ||||||
| // Skip reading the current entry |  | ||||||
| fn C.archive_read_data_skip(&C.archive) |  | ||||||
| 
 |  | ||||||
| // Free an archive |  | ||||||
| fn C.archive_read_free(&C.archive) int |  | ||||||
| 
 |  | ||||||
| // Read an archive entry's contents into a pointer |  | ||||||
| fn C.archive_read_data(&C.archive, voidptr, int) |  | ||||||
| 
 |  | ||||||
| #include "archive_entry.h" |  | ||||||
| 
 |  | ||||||
| struct C.archive_entry {} |  | ||||||
| 
 |  | ||||||
| // Create a new archive_entry struct |  | ||||||
| fn C.archive_entry_new() &C.archive_entry |  | ||||||
| 
 |  | ||||||
| // Get the filename of the given entry |  | ||||||
| fn C.archive_entry_pathname(&C.archive_entry) &char |  | ||||||
| 
 |  | ||||||
| // Get an entry's file size |  | ||||||
| // Note: this function actually returns an i64, but as this can't be used as an |  | ||||||
| // arugment to malloc, we'll just roll with it & assume an entry is never |  | ||||||
| // bigger than 4 gigs |  | ||||||
| fn C.archive_entry_size(&C.archive_entry) int |  | ||||||
| 
 |  | ||||||
| #include <string.h> |  | ||||||
| 
 |  | ||||||
| // Compare two C strings; 0 means they're equal |  | ||||||
| fn C.strcmp(&char, &char) int |  | ||||||
| 
 |  | ||||||
| // Represents a read archive | // Represents a read archive | ||||||
| struct Pkg { | struct Pkg { | ||||||
| pub: | pub: | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue