createrepo_c library
C library for metadata manipulation
src/compression_wrapper.h
00001 /* createrepo_c - Library of routines for manipulation with repodata
00002  * Copyright (C) 2012  Tomas Mlcoch
00003  *
00004  * This program is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU General Public License
00006  * as published by the Free Software Foundation; either version 2
00007  * of the License, or (at your option) any later version.
00008  *
00009  * This program is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  * GNU General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU General Public License
00015  * along with this program; if not, write to the Free Software
00016  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
00017  * USA.
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 
00033 typedef enum {
00034     CR_CW_AUTO_DETECT_COMPRESSION,    
00035     CR_CW_UNKNOWN_COMPRESSION,        
00036     CR_CW_NO_COMPRESSION,             
00037     CR_CW_GZ_COMPRESSION,             
00038     CR_CW_BZ2_COMPRESSION,            
00039     CR_CW_XZ_COMPRESSION,             
00040 } cr_CompressionType;
00041 
00045 typedef enum {
00046     CR_CW_MODE_READ,               
00047     CR_CW_MODE_WRITE               
00048 } cr_OpenMode;
00049 
00050 
00054 typedef struct {
00055     cr_CompressionType type;    
00056     void *FILE;                 
00057     cr_OpenMode mode;           
00058 } CR_FILE;
00059 
00061 #define CR_CW_OK   0       
00062 #define CR_CW_ERR -1       
00071 const char *cr_compression_suffix(cr_CompressionType comtype);
00072 
00078 cr_CompressionType cr_detect_compression(const char* filename);
00079 
00087 CR_FILE *cr_open(const char *filename,
00088                  cr_OpenMode mode,
00089                  cr_CompressionType comtype);
00090 
00098 int cr_read(CR_FILE *cr_file, void *buffer, unsigned int len);
00099 
00108 int cr_write(CR_FILE *cr_file, const void *buffer, unsigned int len);
00109 
00116 int cr_puts(CR_FILE *cr_file, const char *str);
00117 
00125 int cr_printf(CR_FILE *cr_file, const char *format, ...);
00126 
00132 int cr_close(CR_FILE *cr_file);
00133 
00134 #ifdef __cplusplus
00135 }
00136 #endif
00137 
00138 #endif /* __C_CREATEREPOLIB_COMPRESSION_WRAPPER_H__ */