blob: 3b8eb791a17ac92168129eaf5218ba2dc165aee9 [file] [log] [blame] [edit]
#ifndef HB_ZLIB_HH
#define HB_ZLIB_HH
#include "hb-blob.hh"
static inline bool
hb_blob_is_gzip (const char *data,
unsigned data_len)
{
return data_len >= 3 &&
(unsigned char) data[0] == 0x1Fu &&
(unsigned char) data[1] == 0x8Bu &&
(unsigned char) data[2] == 0x08u;
}
static inline bool
hb_gzip_get_uncompressed_size (const char *data,
unsigned data_len,
uint32_t *size)
{
if (data_len < 4)
return false;
const unsigned char *trailer = (const unsigned char *) data + data_len - 4;
if (size)
*size = (uint32_t) trailer[0] |
((uint32_t) trailer[1] << 8) |
((uint32_t) trailer[2] << 16) |
((uint32_t) trailer[3] << 24);
return true;
}
HB_INTERNAL hb_blob_t *
hb_blob_decompress_gzip (hb_blob_t *blob,
unsigned max_output_len);
#endif /* HB_ZLIB_HH */