1*79398b25SAndroid Build Coastguard Worker #ifndef GZIP_WRAPPER_H 2*79398b25SAndroid Build Coastguard Worker #define GZIP_WRAPPER_H 3*79398b25SAndroid Build Coastguard Worker /* 4*79398b25SAndroid Build Coastguard Worker * Squashfs 5*79398b25SAndroid Build Coastguard Worker * 6*79398b25SAndroid Build Coastguard Worker * Copyright (c) 2014 7*79398b25SAndroid Build Coastguard Worker * Phillip Lougher <[email protected]> 8*79398b25SAndroid Build Coastguard Worker * 9*79398b25SAndroid Build Coastguard Worker * This program is free software; you can redistribute it and/or 10*79398b25SAndroid Build Coastguard Worker * modify it under the terms of the GNU General Public License 11*79398b25SAndroid Build Coastguard Worker * as published by the Free Software Foundation; either version 2, 12*79398b25SAndroid Build Coastguard Worker * or (at your option) any later version. 13*79398b25SAndroid Build Coastguard Worker * 14*79398b25SAndroid Build Coastguard Worker * This program is distributed in the hope that it will be useful, 15*79398b25SAndroid Build Coastguard Worker * but WITHOUT ANY WARRANTY; without even the implied warranty of 16*79398b25SAndroid Build Coastguard Worker * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17*79398b25SAndroid Build Coastguard Worker * GNU General Public License for more details. 18*79398b25SAndroid Build Coastguard Worker * 19*79398b25SAndroid Build Coastguard Worker * You should have received a copy of the GNU General Public License 20*79398b25SAndroid Build Coastguard Worker * along with this program; if not, write to the Free Software 21*79398b25SAndroid Build Coastguard Worker * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 22*79398b25SAndroid Build Coastguard Worker * 23*79398b25SAndroid Build Coastguard Worker * gzip_wrapper.h 24*79398b25SAndroid Build Coastguard Worker * 25*79398b25SAndroid Build Coastguard Worker */ 26*79398b25SAndroid Build Coastguard Worker 27*79398b25SAndroid Build Coastguard Worker #ifndef linux 28*79398b25SAndroid Build Coastguard Worker #define __BYTE_ORDER BYTE_ORDER 29*79398b25SAndroid Build Coastguard Worker #define __BIG_ENDIAN BIG_ENDIAN 30*79398b25SAndroid Build Coastguard Worker #define __LITTLE_ENDIAN LITTLE_ENDIAN 31*79398b25SAndroid Build Coastguard Worker #else 32*79398b25SAndroid Build Coastguard Worker #include <endian.h> 33*79398b25SAndroid Build Coastguard Worker #endif 34*79398b25SAndroid Build Coastguard Worker 35*79398b25SAndroid Build Coastguard Worker #if __BYTE_ORDER == __BIG_ENDIAN 36*79398b25SAndroid Build Coastguard Worker extern unsigned int inswap_le16(unsigned short); 37*79398b25SAndroid Build Coastguard Worker extern unsigned int inswap_le32(unsigned int); 38*79398b25SAndroid Build Coastguard Worker 39*79398b25SAndroid Build Coastguard Worker #define SQUASHFS_INSWAP_COMP_OPTS(s) { \ 40*79398b25SAndroid Build Coastguard Worker (s)->compression_level = inswap_le32((s)->compression_level); \ 41*79398b25SAndroid Build Coastguard Worker (s)->window_size = inswap_le16((s)->window_size); \ 42*79398b25SAndroid Build Coastguard Worker (s)->strategy = inswap_le16((s)->strategy); \ 43*79398b25SAndroid Build Coastguard Worker } 44*79398b25SAndroid Build Coastguard Worker #else 45*79398b25SAndroid Build Coastguard Worker #define SQUASHFS_INSWAP_COMP_OPTS(s) 46*79398b25SAndroid Build Coastguard Worker #endif 47*79398b25SAndroid Build Coastguard Worker 48*79398b25SAndroid Build Coastguard Worker /* Default compression */ 49*79398b25SAndroid Build Coastguard Worker #define GZIP_DEFAULT_COMPRESSION_LEVEL 9 50*79398b25SAndroid Build Coastguard Worker #define GZIP_DEFAULT_WINDOW_SIZE 15 51*79398b25SAndroid Build Coastguard Worker 52*79398b25SAndroid Build Coastguard Worker struct gzip_comp_opts { 53*79398b25SAndroid Build Coastguard Worker int compression_level; 54*79398b25SAndroid Build Coastguard Worker short window_size; 55*79398b25SAndroid Build Coastguard Worker short strategy; 56*79398b25SAndroid Build Coastguard Worker }; 57*79398b25SAndroid Build Coastguard Worker 58*79398b25SAndroid Build Coastguard Worker struct strategy { 59*79398b25SAndroid Build Coastguard Worker char *name; 60*79398b25SAndroid Build Coastguard Worker int strategy; 61*79398b25SAndroid Build Coastguard Worker int selected; 62*79398b25SAndroid Build Coastguard Worker }; 63*79398b25SAndroid Build Coastguard Worker 64*79398b25SAndroid Build Coastguard Worker struct gzip_strategy { 65*79398b25SAndroid Build Coastguard Worker int strategy; 66*79398b25SAndroid Build Coastguard Worker int length; 67*79398b25SAndroid Build Coastguard Worker void *buffer; 68*79398b25SAndroid Build Coastguard Worker }; 69*79398b25SAndroid Build Coastguard Worker 70*79398b25SAndroid Build Coastguard Worker struct gzip_stream { 71*79398b25SAndroid Build Coastguard Worker z_stream stream; 72*79398b25SAndroid Build Coastguard Worker int strategies; 73*79398b25SAndroid Build Coastguard Worker struct gzip_strategy strategy[0]; 74*79398b25SAndroid Build Coastguard Worker }; 75*79398b25SAndroid Build Coastguard Worker #endif 76