libarchive を使ってみた。
ここのやつ src/lib/libarchive/。
README から対応アーカイブ形式を引用してみる。
- gzip compression
- bzip2 compression
- compress/LZW compression
- GNU tar format (including GNU long filenames, long link names, and sparse files)
- Solaris 9 extended tar format (including ACLs)
- Old V7 tar archives
- POSIX ustar
- POSIX pax interchange format
- POSIX octet-oriented cpio
- SVR4 ASCII cpio
- Binary cpio (big-endian or little-endian)
先月あたりに pkzip にも対応したので、実用としては十分。 アーカイブ形式をライブラリが自動認識するので展開コードに専念できる。なかなかよい。
Makefile が FreeBSD 専用になっているので、FreeBSD 以外でビルドするには、
$ make distfile
で一旦 configure を作成すべし。
簡単展開ルーチンの例。 これだけで上記アーカイブ形式を展開することができる。
いろいろ使い道がありそう。
追記: 公式ページがあるらしい。http://people.freebsd.org/~kientzle/libarchive/