zipios 2.3.4
Zipios -- a small C++ library providing easy access to .zip files.
Todo List
File zipios.cpp
Actually make this tool really useful (as a simple replacement to zip and unzip for example).
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 to 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 schemes 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 "inadvertently" 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. </dd> <dt> \_setscope zipios::GZIPOutputStreambuf Member \_internalref classzipios_1_1GZIPOutputStreambuf#a1e078b209f5c042d413902c56c2cc29e "zipios::GZIPOutputStreambuf::writeHeader" ()</dt><dd> \anchor _todo000008 We need to know of the last modification time instead of saving all zeros for MTIME values. <p> \anchor _todo000009 : I am thinking that the OS should be 3 under Unices. </dd> <dt> \_setscope zipios::GZIPOutputStreambuf Member \_internalref classzipios_1_1GZIPOutputStreambuf#aa9a50c08f2d997549733bba7d33ea82c "zipios::GZIPOutputStreambuf::writeInt" (uint32_t i)</dt><dd> \anchor _todo000010 : add support for 64 bit files if it exists? </dd> <dt> \_setscope zipios::InflateInputStreambuf Class \_internalref classzipios_1_1InflateInputStreambuf "zipios::InflateInputStreambuf" </dt><dd> \anchor _todo000011 Add support for bzip2, lzma compressions. </dd> <dt> \_setscope zipios::InflateInputStreambuf Member \_internalref classzipios_1_1InflateInputStreambuf#a617715c4df59f78225725a43c43838bc "zipios::InflateInputStreambuf::m_outvec" </dt><dd> \anchor _todo000015 Consider design? </dd> <dt> \_setscope zipios::InflateInputStreambuf Member \_internalref classzipios_1_1InflateInputStreambuf#a3de2e8d0e9199e904c619df9295929da "zipios::InflateInputStreambuf::underflow" () override</dt><dd> \anchor _todo000013 Add I/O error handling while inflating data from a file. <p> \anchor _todo000014 Look at the error returned from inflate here, if there is some way to report it to the InflateInputStreambuf user. For now we throw. We probably want to create a log mechanism that the end user can connect to with a callback. </dd> <dt> \_setscope zipios::InflateInputStreambuf Member \_internalref classzipios_1_1InflateInputStreambuf#a373bfd58877e267b5b8c171a56fddfd3 "zipios::InflateInputStreambuf::~InflateInputStreambuf" ()</dt><dd> \anchor _todo000012 Write an error callback interface and call that instead of using std::cerr... </dd> <dt> \_setscope zipios::VirtualSeeker Member \_internalref classzipios_1_1VirtualSeeker#a698a457fc02c02cbddd67ebfce3eed4d "zipios::VirtualSeeker::vtellg" (std::istream &is) const</dt><dd> \anchor _todo000016 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.) </dd> <dt> \_setscope zipios::ZipCentralDirectoryEntry Member \_internalref classzipios_1_1ZipCentralDirectoryEntry#a277005450417a7be5f488530f5aa0fc0 "zipios::ZipCentralDirectoryEntry::getHeaderSize" () const override</dt><dd> \anchor _todo000017 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. </dd> <dt> \_setscope zipios::ZipCentralDirectoryEntry Member \_internalref classzipios_1_1ZipCentralDirectoryEntry#ae2d7193457a1c1bae680127b4164f8bb "zipios::ZipCentralDirectoryEntry::read" (std::istream &is) override</dt><dd> \anchor _todo000018 check whether this was a 64 bit header and make sure to read the 64 bit header too if so </dd> <dt> \_setscope zipios::ZipCentralDirectoryEntry Member \_internalref classzipios_1_1ZipCentralDirectoryEntry#a64dc52fec1f6248f9698870bd7dfbdd3 "zipios::ZipCentralDirectoryEntry::write" (std::ostream &os) override</dt><dd> \anchor _todo000019 add support for 64 bit entries (zip64 is available, just need to add a 64 bit header...) <p> \anchor _todo000020 The external_file_attr supports the standard Unix permissions in the higher 16 bits defined as:</dd> <dt> \_setscope zipios::ZipEndOfCentralDirectory Member \_internalref classzipios_1_1ZipEndOfCentralDirectory#a7ef7db57e866664246d5290a1d95fda5 "zipios::ZipEndOfCentralDirectory::write" (std::ostream &os)</dt><dd> \anchor _todo000021 Add support for 64 bit Zip archive. This would allow for pretty much all the following conditions to be dropped out. </dd> <dt> \_setscope zipios::ZipFile Member \_internalref classzipios_1_1ZipFile#aa41e3ab7a381ce90d67c0c30d1ed0c51 "zipios::ZipFile::init" (std::istream &is)</dt><dd> \anchor _todo000022 Make sure the entry offset is properly defined by ZipCentralDirectoryEntry.</dd> <dt> \_setscope zipios::ZipLocalEntry Member \_internalref classzipios_1_1ZipLocalEntry#a62f0765554c0a6f5bf8296145e9b323d "zipios::ZipLocalEntry::read" (std::istream &is) override</dt><dd> \anchor _todo000025 add support for zip64, some of those parameters may be 0xFFFFF...FFFF in which case the 64 bit header should be read </dd> <dt> \_setscope zipios::ZipOutputStreambuf Member \_internalref classzipios_1_1ZipOutputStreambuf#a72dad1581a4d597f4290375c5dce9882 "zipios::ZipOutputStreambuf::putNextEntry" (FileEntry::pointer_t entry)</dt><dd> \anchor _todo000026 Rethink the design as we have to force a call to the correct write() function? </dd> <dt> \_setscope zipios::ZipOutputStreambuf Member \_internalref classzipios_1_1ZipOutputStreambuf#aede336a985583ed40a67e0f1111957c7 "zipios::ZipOutputStreambuf::setEntryClosedState" ()</dt><dd> \anchor _todo000027 Update put pointers to trigger overflow on write. Overflow should then return EOF while m_open_entry is false. </dd> <dt> \_setscope zipios::ZipOutputStreambuf Member \_internalref classzipios_1_1ZipOutputStreambuf#ac6eb56d009becc86d3aeaf89f1518a56 "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?