Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Libarchive to extract to a specified folder?

Anybody can help show examples of using libarchive to extract ZIP files to a specified folder? It looks like the sample programs provided (untar.c, tarfilter.c and minitar) all extracts the archive to the current working directory. Is there a way to say "extract to this folder and below" to libarchive and not clobber the program's active folder?

One of the main drivers is that the extraction code will be run in a background thread, and thus changing the program working directory may create problems. Also this will be used in an iOS application (iPhone, iPad), which is picky on what folders that the application can write to.

Thanks in advance.

like image 325
adib Avatar asked Dec 21 '10 03:12

adib


1 Answers

You can rewrite each archive_entry's pathname before calling archive_read_extract. For example:

const char* path = archive_entry_pathname( entry );
char newPath[PATH_MAX + 1];
snprintf( newPath, PATH_MAX, "/SomeOtherDirectory/%s", path );
archive_entry_set_pathname( entry, newPath );
like image 187
Doug Richardson Avatar answered Oct 18 '22 21:10

Doug Richardson