Я пытаюсь переименовать записи архива, используя библиотеку libarchive
. В частности, я использую функцию archive_entry_set_pathname
.Переименуйте непустой каталог в архив с помощью libarchive
Файлов и пустые каталоги правильно переименовали, но, к сожалению, это не работает, если каталог не пуст: вместо того, чтобы быть переименованы, новый пустого каталога с новым именем создаются как собрат целевого каталога, который имеет старое имя.
Соответствующий фрагмент кода:
...
while (archive_read_next_header(inputArchive, &entry) == ARCHIVE_OK) {
if (file == QFile::decodeName(archive_entry_pathname(entry))) {
// FIXME: not working with non-empty directories
archive_entry_set_pathname(entry, QFile::encodeName(newPath));
}
int header_response;
if ((header_response = archive_write_header(outputArchive, entry)) == ARCHIVE_OK) {
... // write the (new) outputArchive on disk
}
}
Что с непустых каталогов?