Skip to content

Instantly share code, notes, and snippets.

@kode54
Created November 18, 2013 00:59
Show Gist options
  • Save kode54/7520685 to your computer and use it in GitHub Desktop.
Save kode54/7520685 to your computer and use it in GitHub Desktop.
This patch fixes several portability issues and most or all of the warnings in the CISO Compressed ISO9660 tool, version 1.01.
diff -ur ciso-1.0.0/ciso.c ciso-1.0.2/ciso.c
--- ciso-1.0.0/ciso.c 2006-11-03 12:53:29.000000000 -0800
+++ ciso-1.0.2/ciso.c 2013-11-17 16:07:47.000000000 -0800
@@ -22,6 +22,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <zlib.h> /* /usr(/local)/include/zlib.h */
#include <zconf.h>
@@ -31,10 +32,10 @@
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 @@
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 @@
****************************************************************************/
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 @@
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 @@
/* 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<<ciso.align);
@@ -237,8 +238,8 @@
****************************************************************************/
int comp_ciso(int level)
{
- unsigned long long file_size;
- unsigned long long write_pos;
+ uint64_t file_size;
+ uint64_t write_pos;
int total_sectors;
int index_size;
int block;
@@ -250,14 +251,14 @@
int align,align_b,align_m;
file_size = check_file_size(fin);
- if(file_size<0)
+ if(file_size==(uint64_t)-1LL)
{
printf("Can't get file size\n");
return 1;
}
/* 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);
crc_buf = malloc(index_size);
block_buf1 = malloc(ciso.block_size);
@@ -279,7 +280,7 @@
/* show info */
printf("Compress '%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("index align %d\n",1<<ciso.align);
printf("compress level %d\n",level);
@@ -306,7 +307,7 @@
percent_cnt = percent_period;
printf("compress %3d%% avarage rate %3d%%\r"
,block / percent_period
- ,block==0 ? 0 : 100*write_pos/(block*0x800));
+ ,block==0 ? 0 : (uint32_t)(100*write_pos/(block*0x800)));
}
if (deflateInit2(&z, level , Z_DEFLATED, -15,8,Z_DEFAULT_STRATEGY) != Z_OK)
@@ -401,7 +402,7 @@
int level;
int result;
- fprintf(stderr, "Compressed ISO9660 converter Ver.1.01 by BOOSTER\n");
+ fprintf(stderr, "Compressed ISO9660 converter Ver.1.02 by BOOSTER\n");
if (argc != 4)
{
diff -ur ciso-1.0.0/ciso.h ciso-1.0.2/ciso.h
--- ciso-1.0.0/ciso.h 2006-11-03 12:53:02.000000000 -0800
+++ ciso-1.0.2/ciso.h 2013-11-17 16:05:32.000000000 -0800
@@ -1,25 +1,26 @@
-/*
- This file is part of Ciso.
-
- Ciso is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- Ciso is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Foobar; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-
- Copyright 2005 BOOSTER
-*/
-
-
+/*
+ This file is part of Ciso.
+
+ Ciso is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Ciso is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Foobar; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+ Copyright 2005 BOOSTER
+*/
+
+#include <stdint.h>
+
#ifndef __CISO_H__
#define __CISO_H__
/*
@@ -27,23 +28,23 @@
*/
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 */
+ 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
- unsigned int index[0]; /* +18 : block[0] index */
- unsigned int index[1]; /* +1C : block[1] index */
+ uint32_t index[0]; /* +18 : block[0] index */
+ uint32_t index[1]; /* +1C : block[1] index */
:
:
- unsigned int index[last]; /* +?? : block[last] */
- unsigned int index[last+1]; /* +?? : end of last data point */
+ uint32_t index[last]; /* +?? : block[last] */
+ uint32_t index[last+1]; /* +?? : end of last data point */
// DATA BLOCK
- unsigned char data[]; /* +?? : compressed or plain sector data */
+ uint8_t data[]; /* +?? : compressed or plain sector data */
#endif
}CISO_H;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment