void ZipLocalFileHeader::setFileName(const std::string& fileName, bool isDirectory) { poco_assert (!fileName.empty()); Poco::Path aPath(fileName); if (isDirectory) { aPath.makeDirectory(); setCRC(0); setCompressedSize(0); setUncompressedSize(0); setCompressionMethod(ZipCommon::CM_STORE); setCompressionLevel(ZipCommon::CL_NORMAL); } else { aPath.makeFile(); } _fileName = aPath.toString(Poco::Path::PATH_UNIX); if (_fileName[0] == '/') _fileName = _fileName.substr(1); if (isDirectory) { poco_assert_dbg (_fileName[_fileName.size()-1] == '/'); } setFileNameLength(static_cast<Poco::UInt16>(_fileName.size())); }
void ZipLocalFileHeader::init( const Poco::Path& fName, ZipCommon::CompressionMethod cm, ZipCommon::CompressionLevel cl) { poco_assert (_fileName.empty()); setSearchCRCAndSizesAfterData(false); Poco::Path fileName(fName); fileName.setDevice(""); // clear device! setFileName(fileName.toString(Poco::Path::PATH_UNIX), fileName.isDirectory()); setRequiredVersion(2, 0); if (fileName.isFile()) { setCompressionMethod(cm); setCompressionLevel(cl); } else setCompressionMethod(ZipCommon::CM_STORE); }
void ZipLocalFileHeader::init( const Poco::Path& fName, ZipCommon::CompressionMethod cm, ZipCommon::CompressionLevel cl) { poco_assert (_fileName.empty()); setSearchCRCAndSizesAfterData(false); Poco::Path fileName(fName); fileName.setDevice(""); // clear device! setFileName(fileName.toString(Poco::Path::PATH_UNIX), fileName.isDirectory()); setRequiredVersion(2, 0); if (fileName.isFile()) { setCompressionMethod(cm); setCompressionLevel(cl); } else setCompressionMethod(ZipCommon::CM_STORE); _rawHeader[GENERAL_PURPOSE_POS+1] |= 0x08; // Set "language encoding flag" to indicate that filenames and paths are in UTF-8. }