Compare commits

..

No commits in common. "6dbac5918bcc0a1aff3f39bcf974e8e4ae916e75" and "476588274f23987892436811c6e8d20399eda6ab" have entirely different histories.

2 changed files with 5 additions and 44 deletions

View File

@ -8,17 +8,14 @@ struct C.archive {}
struct C.archive_entry {}
// Create a new archive struct
fn C.archive_read_new() &C.archive
fn C.archive_read_support_filter_all(&C.archive)
fn C.archive_read_support_format_all(&C.archive)
fn C.archive_read_open_filename(&C.archive, &char, int) int
fn C.archive_read_next_header(&C.archive, &&C.archive_entry) int
fn C.archive_entry_pathname(&C.archive_entry) &char
fn C.archive_read_next_header(&C.archive, &C.archive_entry) int
fn C.archive_entry_pathname(C.archive_entry) &char
fn C.archive_read_data_skip(&C.archive)
fn C.archive_read_free(&C.archive) int
fn C.archive_read_data(&C.archive, voidptr, int)
fn C.archive_entry_size(&C.archive_entry) int
pub fn list_filenames() {
a := C.archive_read_new()
@ -30,44 +27,10 @@ pub fn list_filenames() {
r = C.archive_read_open_filename(a, c'test/homebank-5.5.1-1-x86_64.pkg.tar.zst', 10240)
for (C.archive_read_next_header(a, &entry) == C.ARCHIVE_OK) {
println(cstring_to_vstring(C.archive_entry_pathname(entry)))
for (C.archive_read_next_header(a, entry) == C.ARCHIVE_OK) {
println(C.archive_entry_pathname(entry))
C.archive_read_data_skip(a) // Note 2
}
r = C.archive_read_free(a) // Note 3
}
pub fn get_pkg_info(pkg_path string) ?string {
a := C.archive_read_new()
entry := &C.archive_entry{}
mut r := 0
C.archive_read_support_filter_all(a)
C.archive_read_support_format_all(a)
// TODO find out where does this 10240 come from
r = C.archive_read_open_filename(a, &char(pkg_path.str), 10240)
if r != C.ARCHIVE_OK {
return error('Failed to open package.')
}
// We iterate over every header in search of the .PKGINFO one
mut pkg_info := ''
for C.archive_read_next_header(a, &entry) == C.ARCHIVE_OK {
// TODO possibly avoid this cstring_to_vstring
if cstring_to_vstring(C.archive_entry_pathname(entry)) == '.PKGINFO' {
size := C.archive_entry_size(entry)
mut buf := []byte{len: size}
C.archive_read_data(a, voidptr(&buf), size)
break
}else{
C.archive_read_data_skip(a)
}
}
r = C.archive_read_free(a) // Note 3
return ''
}

View File

@ -95,9 +95,7 @@ fn main() {
logger.info("Created package directory '$repo.pkg_dir()'.")
}
archive.get_pkg_info('test/homebank-5.5.1-1-x86_64.pkg.tar.zst') or {
eprintln(err.msg)
}
archive.list_filenames()
web.run(&App{
logger: logger
api_key: key