00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __C_CREATEREPOLIB_COMPRESSION_WRAPPER_H__
00021 #define __C_CREATEREPOLIB_COMPRESSION_WRAPPER_H__
00022
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026
00027 #include "checksum.h"
00028
00036 typedef enum {
00037 CR_CW_AUTO_DETECT_COMPRESSION,
00038 CR_CW_UNKNOWN_COMPRESSION,
00039 CR_CW_NO_COMPRESSION,
00040 CR_CW_GZ_COMPRESSION,
00041 CR_CW_BZ2_COMPRESSION,
00042 CR_CW_XZ_COMPRESSION,
00043 CR_CW_COMPRESSION_SENTINEL,
00044 } cr_CompressionType;
00045
00048 typedef enum {
00049 CR_CW_MODE_READ,
00050 CR_CW_MODE_WRITE,
00051 CR_CW_MODE_SENTINEL,
00052 } cr_OpenMode;
00053
00056 typedef struct {
00057 gint64 size;
00058 cr_ChecksumType checksum_type;
00059 char *checksum;
00060 } cr_ContentStat;
00061
00068 cr_ContentStat *cr_contentstat_new(cr_ChecksumType type, GError **err);
00069
00074 void cr_contentstat_free(cr_ContentStat *cstat, GError **err);
00075
00078 typedef struct {
00079 cr_CompressionType type;
00080 void *FILE;
00081 cr_OpenMode mode;
00082 cr_ContentStat *stat;
00083 cr_ChecksumCtx *checksum_ctx;
00084 } CR_FILE;
00085
00086 #define CR_CW_ERR -1
00092 const char *cr_compression_suffix(cr_CompressionType comtype);
00093
00099 cr_CompressionType cr_detect_compression(const char* filename, GError **err);
00100
00105 cr_CompressionType cr_compression_type(const char *name);
00106
00114 #define cr_open(FILENAME, MODE, COMTYPE, ERR) \
00115 cr_sopen(FILENAME, MODE, COMTYPE, NULL, ERR)
00116
00127 CR_FILE *cr_sopen(const char *filename,
00128 cr_OpenMode mode,
00129 cr_CompressionType comtype,
00130 cr_ContentStat *stat,
00131 GError **err);
00132
00140 int cr_read(CR_FILE *cr_file, void *buffer, unsigned int len, GError **err);
00141
00150 int cr_write(CR_FILE *cr_file,
00151 const void *buffer,
00152 unsigned int len,
00153 GError **err);
00154
00161 int cr_puts(CR_FILE *cr_file, const char *str, GError **err);
00162
00170 int cr_printf(GError **err, CR_FILE *cr_file, const char *format, ...);
00171
00177 int cr_close(CR_FILE *cr_file, GError **err);
00178
00181 #ifdef __cplusplus
00182 }
00183 #endif
00184
00185 #endif