487 static_cast<void>(size);
499 static_cast<void>(crc);
557 throw InvalidStateException(
"level must be between COMPRESSION_LEVEL_DEFAULT and COMPRESSION_LEVEL_MAXIMUM inclusive");
563 throw InvalidStateException(
"directories cannot be marked with a compression level other than COMPRESSION_LEVEL_NONE (defaults will also work");
696 sout <<
" (directory)";
710 << compressed_size <<
" byte"
711 << (compressed_size == 1 ?
"" :
"s")
733 static_cast<void>(is);
734 throw IOException(
"FileEntry::read(): read not available with this type of FileEntry.");
751 static_cast<void>(os);
752 throw IOException(
"FileEntry::write(): write not available with this type of FileEntry.");
dosdatetime_t getDOSDateTime() const
Retrieve the DOSDateTime value as is.
std::time_t getUnixTimestamp() const
Retrieve the DOSDateTime as a Unix timestamp.
void setDOSDateTime(dosdatetime_t datetime)
Set the DOSDateTime value as is.
void setUnixTimestamp(std::time_t unix_timestamp)
Set the DOSDateTime value from a Unix timestamp.
A FileEntry represents an entry in a FileCollection.
std::vector< unsigned char > buffer_t
std::size_t m_uncompressed_size
StorageMethod m_compress_method
virtual std::string getFileName() const
Return the basename of this entry.
virtual std::size_t getSize() const
Retrieve the size of the file when uncompressed.
static CompressionLevel const COMPRESSION_LEVEL_MINIMUM
virtual void setComment(std::string const &comment)
Set the comment field for the FileEntry.
virtual std::size_t getCompressedSize() const
Retrieve the size of the file when compressed.
static CompressionLevel const COMPRESSION_LEVEL_MAXIMUM
virtual std::string getComment() const
Retrieve the comment of the file entry.
bool hasCrc() const
Check whether the CRC32 was defined.
virtual void setTime(DOSDateTime::dosdatetime_t time)
Set the FileEntry time using a DOS time.
virtual std::string getName() const
Return the filename of the entry.
virtual bool isValid() const
Check whether this entry is valid.
virtual void setSize(size_t size)
Sets the size field for the entry.
virtual void setUnixTime(std::time_t time)
Sets the time field in Unix time format for the entry.
virtual void setExtra(buffer_t const &extra)
Set the extra field buffer.
virtual void read(std::istream &is)
Read this FileEntry from the input stream.
int CompressionLevel
The compression level to be used to save an entry.
virtual void setLevel(CompressionLevel level)
Define the level of compression to use by this FileEntry.
virtual bool isDirectory() const
Check whether the filename represents a directory.
CompressionLevel m_compression_level
std::streampos m_entry_offset
static CompressionLevel const COMPRESSION_LEVEL_NONE
virtual void setCrc(crc32_t crc)
Save the CRC of the entry.
virtual StorageMethod getMethod() const
Return the method used to create this entry.
virtual CompressionLevel getLevel() const
Retrieve the compression level.
virtual std::string toString() const
Returns a human-readable string representation of the entry.
virtual crc32_t getCrc() const
Return the CRC of the entry.
virtual void setCompressedSize(size_t size)
Set the size when the file is compressed.
virtual buffer_t getExtra() const
Some extra data to be stored along the entry.
virtual DOSDateTime::dosdatetime_t getTime() const
Get the MS-DOS date/time of this entry.
std::streampos getEntryOffset() const
Get the offset of this entry in a Zip archive.
virtual std::time_t getUnixTime() const
Get the Unix date/time of this entry.
virtual bool isEqual(FileEntry const &file_entry) const
Compare two file entries for equality.
virtual void write(std::ostream &os)
Write this FileEntry to the output stream.
virtual void setMethod(StorageMethod method)
Sets the storage method field for the entry.
FileEntry(FilePath const &filename, std::string const &comment=std::string())
Initialize a FileEntry object.
virtual std::size_t getHeaderSize() const
Retrieve the size of the header.
virtual ~FileEntry()
Clean up a FileEntry object.
void setEntryOffset(std::streampos offset)
Defines the position of the entry in a Zip archive.
Handle a file path and name and its statistics.
An IOException is used to signal an I/O error.
Exception used when it is not possible to move forward.
Define the zipios::FileEntry class.
The zipios namespace includes the Zipios library definitions.
std::ostream & operator<<(std::ostream &os, FileCollection const &collection)
Write a FileCollection to the output stream.
StorageMethod
The types used with FileEntry::setMethod and FileEntry::getMethod.
std::ostringstream OutputStringStream
An output stream using strings.
Various functions used throughout the library.
Various exceptions used throughout the Zipios library, all based on zipios::Exception.