includes/dmg/compress.h (30 lines of code) (raw):
#ifndef DMG_COMPRESS_H
#define DMG_COMPRESS_H
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
#define COMPRESSOR_DEFAULT "bzip2"
#define COMPRESSION_LEVEL_DEFAULT (-1)
#define MIN_DECOMPRESS_BUFFER_SECTORS 0x208
// Return zero on success
typedef int (*CompressFunc)(unsigned char *inBuffer, size_t inSize,
unsigned char *outBuffer, size_t outBufSize, size_t *compSize,
int level);
typedef size_t (*DecompressBufferFunc)(size_t runSectors);
typedef struct {
CompressFunc compress;
DecompressBufferFunc decompressBuffer;
int level;
uint32_t block_type;
} Compressor;
void initDefaultCompressor(Compressor* comp);
// Return zero on success
int getCompressor(Compressor* comp, char *name);
const char *compressionNames();
// Return zero on success
int compressionBlockTypeSupported(uint32_t type);
// Return zero on success
int decompressRun(uint32_t type,
unsigned char* inBuffer, size_t inSize,
unsigned char* outBuffer, size_t expectedSize);
#ifdef __cplusplus
}
#endif
#endif