zipios 2.2.0
Zipios -- a small C++ library that provides 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...
Union zipios::dosdatetime_convert_t
The fields are endian specific, we need to find the correct #ifdef and swap the fields so it works on bigendian machines
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. </dd> <dt> \_setscope zipios::GZIPOutputStreambuf Member \_internalref classzipios_1_1GZIPOutputStreambuf#a1e078b209f5c042d413902c56c2cc29e "zipios::GZIPOutputStreambuf::writeHeader" ()</dt><dd> \anchor _todo000009 We need to know of the last modification time instead of saving all zeros for MTIME values. <p> \anchor _todo000010 : 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 _todo000011 : add support for 64 bit files if it exists? </dd> <dt> \_setscope zipios::InflateInputStreambuf Class \_internalref classzipios_1_1InflateInputStreambuf "zipios::InflateInputStreambuf" </dt><dd> \anchor _todo000012 Add support for bzip2, lzma compressions. </dd> <dt> \_setscope zipios::InflateInputStreambuf Member \_internalref classzipios_1_1InflateInputStreambuf#a617715c4df59f78225725a43c43838bc "zipios::InflateInputStreambuf::m_outvec" </dt><dd> \anchor _todo000016 Consider design? </dd> <dt> \_setscope zipios::InflateInputStreambuf Member \_internalref classzipios_1_1InflateInputStreambuf#a3de2e8d0e9199e904c619df9295929da "zipios::InflateInputStreambuf::underflow" () override</dt><dd> \anchor _todo000014 Add I/O error handling while inflating data from a file. <p> \anchor _todo000015 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. </dd> <dt> \_setscope zipios::InflateInputStreambuf Member \_internalref classzipios_1_1InflateInputStreambuf#a373bfd58877e267b5b8c171a56fddfd3 "zipios::InflateInputStreambuf::~InflateInputStreambuf" ()</dt><dd> \anchor _todo000013 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 _todo000017 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 _todo000018 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 _todo000019 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 _todo000020 add support for 64 bit entries (zip64 is available, just need to add a 64 bit header...) <p> \anchor _todo000021 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 _todo000022 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#a2b6b88e709b4a83ea2300e7fba54a4f8 "zipios::ZipFile::ZipFile" (std::string const &filename, offset_t s_off=0, offset_t e_off=0)</dt><dd> \anchor _todo000023 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 _todo000026 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 _todo000027 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 _todo000028 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?