Это не то, что написано. archive_read_support_filter_all()
просто «Включает все доступные фильтры декомпрессии».
Кроме того, есть замечание с указанием c фильтров, в котором говорится:
Эти функции могут вернуться к внешние программы, если соответствующая библиотека не была доступна во время сборки.
Итак, _all - это просто надмножество всех других (определенных c) фильтров.
Q. Но libarchive (https://github.com/libarchive/libarchive/wiki/Examples) сам извлекает данные из различных форматов, и эта функция является частью libarchive
Ну, это зависит от того, как он был построен. Если бы подходящие библиотеки были рядом, чтобы скомпилировать поддержку, скажем, zip
архивов в библиотеку, тогда да. В противном случае применяется приведенный выше комментарий: libarchive "может использовать внешние программы"
Q. В чем разница между
archive_read_support_format_all()
archive_read_support_filter_all()
Архив имеет специальный формат c (cpio, tar, zip и т. Д. c). Кроме того, его можно фильтровать (gzip, bzip2, lzop, xz et c).
В некоторых архивах фильтры всегда одни и те же, но другие можно смешивать и сопоставлять (отсюда и популярные традиционные расширения, такие как. tgz для .tar.gzip и .tbz2 для .tar.bz2).
Если вы хотите включить tar только с bzip2, используйте:
archive_read_support_format_tar(ar);
archive_read_support_filter_bzip2(ar);
Если вы хотите все возможное сжатие / другой фильтр кодирования, если это tar:
archive_read_support_format_tar(ar);
archive_read_support_filter_all(ar);
Если вам нужны архивы cpio, ar, tar, но только если они не сжаты:
archive_read_support_format_ar(ar);
archive_read_support_format_cpio(ar);
archive_read_support_format_tar(ar);