From 87af861468a0a97247b60d1c05febcf34f88aa22 Mon Sep 17 00:00:00 2001 From: Juha Laukkanen Date: Sun, 19 Jan 2014 22:08:47 +0000 Subject: [PATCH] Added 1.02 (kode54's) portability modifications. --- ciso.c | 37 +++++++++++++------------- ciso.h | 82 ++++++++++++++++++++++++++++++---------------------------- 2 files changed, 61 insertions(+), 58 deletions(-) diff --git a/ciso.c b/ciso.c index 59d6256..9f75421 100644 --- a/ciso.c +++ b/ciso.c @@ -22,6 +22,7 @@ #include #include +#include #include /* /usr(/local)/include/zlib.h */ #include @@ -31,10 +32,10 @@ const char *fname_in,*fname_out; FILE *fin,*fout; z_stream z; -unsigned int *index_buf = NULL; -unsigned int *crc_buf = NULL; -unsigned char *block_buf1 = NULL; -unsigned char *block_buf2 = NULL; +uint32_t *index_buf = NULL; +uint32_t *crc_buf = NULL; +uint8_t *block_buf1 = NULL; +uint8_t *block_buf2 = NULL; /**************************************************************************** compress ISO to CSO @@ -43,9 +44,9 @@ unsigned char *block_buf2 = NULL; CISO_H ciso; int ciso_total_block; -unsigned long long check_file_size(FILE *fp) +uint64_t check_file_size(FILE *fp) { - unsigned long long pos; + uint64_t pos; if( fseek(fp,0,SEEK_END) < 0) return -1; @@ -80,9 +81,9 @@ unsigned long long check_file_size(FILE *fp) ****************************************************************************/ int decomp_ciso(void) { - unsigned long long file_size; - unsigned int index , index2; - unsigned long long read_pos , read_size; + uint64_t file_size; + uint32_t index , index2; + uint64_t read_pos , read_size; int total_sectors; int index_size; int block; @@ -117,7 +118,7 @@ int decomp_ciso(void) ciso_total_block = ciso.total_bytes / ciso.block_size; /* allocate index block */ - index_size = (ciso_total_block + 1 ) * sizeof(unsigned long); + index_size = (ciso_total_block + 1 ) * sizeof(uint32_t); index_buf = malloc(index_size); block_buf1 = malloc(ciso.block_size); block_buf2 = malloc(ciso.block_size*2); @@ -138,7 +139,7 @@ int decomp_ciso(void) /* show info */ printf("Decompress '%s' to '%s'\n",fname_in,fname_out); - printf("Total File Size %ld bytes\n",ciso.total_bytes); + printf("Total File Size %lld bytes\n",ciso.total_bytes); printf("block size %d bytes\n",ciso.block_size); printf("total blocks %d blocks\n",ciso_total_block); printf("index align %d\n",1< + +#ifndef __CISO_H__ +#define __CISO_H__ +/* + complessed ISO(9660) header format +*/ +typedef struct ciso_header +{ + uint8_t magic[4]; /* +00 : 'C','I','S','O' */ + uint32_t header_size; /* +04 : header size (==0x18) */ + uint64_t total_bytes; /* +08 : number of original data size */ + uint32_t block_size; /* +10 : number of compressed block size */ + uint8_t ver; /* +14 : version 01 */ + uint8_t align; /* +15 : align of index value */ + uint8_t rsv_06[2]; /* +16 : reserved */ +#if 0 +// INDEX BLOCK + uint32_t index[0]; /* +18 : block[0] index */ + uint32_t index[1]; /* +1C : block[1] index */ + : + : + uint32_t index[last]; /* +?? : block[last] */ + uint32_t index[last+1]; /* +?? : end of last data point */ +// DATA BLOCK + uint8_t data[]; /* +?? : compressed or plain sector data */ +#endif +}CISO_H; + +/* +note: + +file_pos_sector[n] = (index[n]&0x7fffffff) << CISO_H.align +file_size_sector[n] = ( (index[n+1]&0x7fffffff) << CISO_H.align) - file_pos_sector[n] + +if(index[n]&0x80000000) + // read 0x800 without compress +else + // read file_size_sector[n] bytes and decompress data +*/ + +#endif -#ifndef __CISO_H__ -#define __CISO_H__ -/* - complessed ISO(9660) header format -*/ -typedef struct ciso_header -{ - unsigned char magic[4]; /* +00 : 'C','I','S','O' */ - unsigned long header_size; /* +04 : header size (==0x18) */ - unsigned long long total_bytes; /* +08 : number of original data size */ - unsigned long block_size; /* +10 : number of compressed block size */ - unsigned char ver; /* +14 : version 01 */ - unsigned char align; /* +15 : align of index value */ - unsigned char rsv_06[2]; /* +16 : reserved */ -#if 0 -// INDEX BLOCK - unsigned int index[0]; /* +18 : block[0] index */ - unsigned int index[1]; /* +1C : block[1] index */ - : - : - unsigned int index[last]; /* +?? : block[last] */ - unsigned int index[last+1]; /* +?? : end of last data point */ -// DATA BLOCK - unsigned char data[]; /* +?? : compressed or plain sector data */ -#endif -}CISO_H; - -/* -note: - -file_pos_sector[n] = (index[n]&0x7fffffff) << CISO_H.align -file_size_sector[n] = ( (index[n+1]&0x7fffffff) << CISO_H.align) - file_pos_sector[n] - -if(index[n]&0x80000000) - // read 0x800 without compress -else - // read file_size_sector[n] bytes and decompress data -*/ - -#endif -- 2.39.5