1//
2// SkipCallback.cpp
3//
4// Library: Zip
5// Package: Zip
6// Module: SkipCallback
7//
8// Copyright (c) 2007, Applied Informatics Software Engineering GmbH.
9// and Contributors.
10//
11// SPDX-License-Identifier: BSL-1.0
12//
13
14
15#include "Poco/Zip/SkipCallback.h"
16#include "Poco/Zip/ZipLocalFileHeader.h"
17#include "Poco/Zip/ZipUtil.h"
18#include "Poco/Exception.h"
19
20
21namespace Poco {
22namespace Zip {
23
24
25SkipCallback::SkipCallback()
26{
27}
28
29
30SkipCallback::~SkipCallback()
31{
32}
33
34
35bool SkipCallback::handleZipEntry(std::istream& zipStream, const ZipLocalFileHeader& hdr)
36{
37 if (!hdr.searchCRCAndSizesAfterData())
38 zipStream.seekg(hdr.getCompressedSize(), std::ios_base::cur);
39 else
40 ZipUtil::syncDataDescriptor(zipStream, hdr.needsZip64());
41 if (!zipStream.good()) throw Poco::IOException("Failed to seek on input stream");
42 return true;
43}
44
45
46} } // namespace Poco::Zip
47