25 #ifndef SRC_XRDZIP_XRDZIPEOCD_HH_
26 #define SRC_XRDZIP_XRDZIPEOCD_HH_
41 inline static const char*
Find(
const char *buffer, uint64_t size )
43 for( ssize_t offset = size -
eocdBaseSize; offset >= 0; --offset )
45 uint32_t signature = to<uint32_t>( buffer + offset );
46 if( signature ==
eocdSign )
return buffer + offset;
56 nbDisk = *
reinterpret_cast<const uint16_t*
>( buffer + 4 );
57 nbDiskCd = *
reinterpret_cast<const uint16_t*
>( buffer + 6 );
58 nbCdRecD = *
reinterpret_cast<const uint16_t*
>( buffer + 8 );
59 nbCdRec = *
reinterpret_cast<const uint16_t*
>( buffer + 10 );
60 cdSize = *
reinterpret_cast<const uint32_t*
>( buffer + 12 );
61 cdOffset = *
reinterpret_cast<const uint32_t*
>( buffer + 16 );
62 commentLength = *
reinterpret_cast<const uint16_t*
>( buffer + 20 );
72 EOCD( uint64_t cdoff, uint32_t cdcnt, uint32_t cdsize ):
116 std::copy(
comment.begin(),
comment.end(), std::back_inserter( buffer ) );
124 std::stringstream ss;
125 ss <<
"{nbDisk=" <<
nbDisk;
129 ss <<
";cdSize" <<
cdSize;
132 ss <<
";comment=" <<
comment <<
'}';
EOCD(uint64_t cdoff, uint32_t cdcnt, uint32_t cdsize)
Constructor from last LFH + CDFH.
Definition: XrdZipEOCD.hh:72
static const uint16_t eocdBaseSize
Definition: XrdZipEOCD.hh:151
static const uint32_t eocdSign
Definition: XrdZipEOCD.hh:150
uint16_t commentLength
Definition: XrdZipEOCD.hh:142
std::vector< char > buffer_t
Definition: XrdZipUtils.hh:54
uint16_t nbDiskCd
Definition: XrdZipEOCD.hh:137
uint16_t nbCdRec
Definition: XrdZipEOCD.hh:139
std::string ToString()
Convert the EOCD into a string for logging purposes.
Definition: XrdZipEOCD.hh:122
EOCD(const char *buffer)
Constructor from buffer.
Definition: XrdZipEOCD.hh:54
void Serialize(buffer_t &buffer)
Serialize the object into a buffer.
Definition: XrdZipEOCD.hh:105
static const uint16_t maxCommentLength
Definition: XrdZipEOCD.hh:152
static void copy_bytes(const INT value, buffer_t &buffer)
Definition: XrdZipUtils.hh:60
std::string comment
Definition: XrdZipEOCD.hh:143
uint32_t cdSize
Definition: XrdZipEOCD.hh:140
uint32_t cdOffset
Definition: XrdZipEOCD.hh:141
Definition: XrdZipUtils.hh:46
uint16_t nbCdRecD
Definition: XrdZipEOCD.hh:138
Definition: XrdZipEOCD.hh:39
uint16_t nbDisk
Definition: XrdZipEOCD.hh:136
uint16_t eocdSize
Definition: XrdZipEOCD.hh:144
static const char * Find(const char *buffer, uint64_t size)
Definition: XrdZipEOCD.hh:41
bool useZip64
Definition: XrdZipEOCD.hh:145