libarchive with Xar - не может прочитать содержимое 2-го элемента и выше в архиве

Следующий фрагмент кода работает нормально для форматов, таких как 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);

0 ответов

Другие вопросы по тегам