zipios++  2.0.2
Zipios++ – a small C++ library that provides easy access to .zip files.
Todo List
Member dos2unixtime (dostime_t dostime)
Maximum for tm_mday depends on month/year.
Member zipios::anonymous_namespace{filecollection.cpp}::MatchFileName::operator() (FileEntry::pointer_t entry) const
We could transform that with lambda at some point.
Member zipios::anonymous_namespace{filecollection.cpp}::MatchName::operator() (FileEntry::pointer_t entry) const
We could transform that with lambda at some point.
Member zipios::buffer_t
Move to the zipios-config.hpp file so we can also use it in our public definitions?
Member zipios::CollectionCollection::addCollection (FileCollection const &collection)
At this time the function verifies that you are not trying to add a CollectionCollection to itself. However, this test is currently really weak. We need to check whether any collection in the input collection represents this collection.
Member zipios::DeflateOutputStreambuf::flushOutvec ()
We need to redesign the class to allow for STORED files to flow through without the need have this crap of bytes to skip...
Member zipios::FileEntry::CompressionLevel
These values are one to one mapped to zlib compression values. This is likely to change once we start offering other compression scheme for a number defined between 0 and 100 instead.
Member zipios::FileEntry::getCrc () const
Should we throw if m_has_crc_32 is false?
Member zipios::FilePath::check () const
Under MS-Windows, we need to use _wstat() to make it work in Unicode (i.e. UTF-8 to wchar_t then call _wstat()...) Also we want to use the 64 bit variant to make sure that we get a valid size. Any other reference to the stat() command should be replace by using a FilePath().
Member zipios::g_separator
It is "inadvertendly" also used as the separator between filename segments of the file system. We certainly want to support both "/" and "\\" to make sure MS-Windows is fully supported. The FilePath should take care of that work though.
Member zipios::GZIPOutputStreambuf::writeHeader ()
: We need to know of the last modification time instead of saving all zeros for MTIME values.
Member zipios::GZIPOutputStreambuf::writeInt (uint32_t i)
: add support for 64 bit files if it exists?
Class zipios::InflateInputStreambuf
Add support for bzip2, lzma compressions.
Member zipios::InflateInputStreambuf::m_outvec
Consider design?
Member zipios::InflateInputStreambuf::underflow () override

Add I/O error handling while inflating data from a file.

Look at the error returned from inflate here, if there is some way to report it to the InflateInputStreambuf user. Until I find out I'll just print a warning to stdout. This at least throws, we probably want to create a log mechanism that the end user can connect to with a callback.

Member zipios::InflateInputStreambuf::~InflateInputStreambuf ()
Write an error callback interface and call that instead of using std::cerr...
Member zipios::VirtualSeeker::vtellg (std::istream &is) const
We may want to get the size of the file and verify that the resulting position is valid. The m_end_offset does not really mean anything at this point that we could use to verify the position boundaries (since it is a positive size from the end of the file.)
Member zipios::ZipCentralDirectoryEntry::getHeaderSize () const override
Add support for 64 bit Zip. At this time this function returns an invalid size if the filename, extra field, or file comment sizes are more than allowed in an older version of the Zip format.
Member zipios::ZipCentralDirectoryEntry::read (std::istream &is) override
check whether this was a 64 bit header and make sure to read the 64 bit header too if so
Member zipios::ZipCentralDirectoryEntry::write (std::ostream &os) override

add support for 64 bit entries (zip64 is available, just need to add a 64 bit header...)

The external_file_attr supports the standard Unix permissions in the higher 16 bits defined as:

Member zipios::ZipEndOfCentralDirectory::write (std::ostream &os)
Add support for 64 bit Zip archive. This would allow for pretty much all the following conditions to be dropped out.
Member zipios::ZipFile::ZipFile (std::string const &filename, offset_t s_off=0, offset_t e_off=0)
Make sure the entry offset is properly defined by ZipCentralDirectoryEntry. Also the isEqual() is a quite advance test here!
Member zipios::ZipLocalEntry::read (std::istream &is) override
add support for zip64, some of those parameters may be 0xFFFFF...FFFF in which case the 64 bit header should be read
Member zipios::ZipOutputStreambuf::putNextEntry (FileEntry::pointer_t entry)
Rethink the design as we have to force a call to the correct write() function?
Member zipios::ZipOutputStreambuf::setEntryClosedState ()
Update put pointers to trigger overflow on write. Overflow should then return EOF while m_open_entry is false.
Member zipios::ZipOutputStreambuf::updateEntryHeaderInfo ()

Rethink the design as we have to force a call to the correct getHeaderSize() function?

Rethink the design as we have to force a call to the correct write() function?