如何使用minizip库提取符号链接

时间:2015-05-26 09:41:13

标签: c zip unzip

有没有办法如何在OS X上通过minizip库正确提取符号链接?

通过

提取文件时
 status = mz_zip_reader_extract_to_file(&zip_archive, i, output_path, 0);

它是创建的文本文件而不是符号链接。

1 个答案:

答案 0 :(得分:1)

似乎minizip根本不处理符号链接。

我找到的唯一方法就是完全靠自己做。逻辑片段:

mz_zip_archive_file_stat file_stat;
mz_zip_reader_file_stat(&zip_archive, i, &file_stat);
mz_uint32 attrFs = file_stat.m_external_attr >> 16;
if ( S_ISLNK(attrFs) )
{
  //read text file with link destination
  mz_zip_reader_extract_to_mem(&zip_archive, i, (void*)buffer, file_stat.m_uncomp_size, 0) )
  ...
  //create symbolic link manually
  boost::filesystem::create_symlink(...);
}

在Windows系统的情况下,必须根据Unix等价物定义S_ISLNK,因为没有为Windows定义S_ISLNK