以下代码适用于像TAR这样的格式,但是当我将它用于XAR时,它会成功读取第1个项目,但是从第2个项目开始,将检索文件名和大小,但 archive_read_data 失败(错误代码为25 - ENOTTY )。
struct archive *a;
struct archive_entry *entry;
a = archive_read_new();
archive_read_support_filter_all(a);
archive_read_support_format_xar(a);
if (archive_read_open_memory(a, data, length) != ARCHIVE_OK)
{
// Error handling
}
while (archive_read_next_header(a, &entry) == ARCHIVE_OK)
{
printf("%s\n",archive_entry_pathname(entry));
size_t total = archive_entry_size(entry);
char *buf = malloc(total);
ssize_t sizeRead = archive_read_data(a, buf, total);
if (sizeRead < 0) {
// Error handling
}
free(buf);
}
archive_read_free(a);