some comment corrections
[delutions.git] / isz2iso / isz.c
blob16c1978b17cc28b1775aa54688ce43d7ea91f9e6
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <memory.h>
4 #include <inttypes.h>
5 #include "isz.h"
7 char * progname;
9 void usage(void) {
10 printf("isz converter\n");
11 printf("usage:\n\t%s file.isz\n",progname);
12 exit(EXIT_FAILURE);
15 void print_isz_header(isz_header *header) {
16 printf("Header Size : %u\n",header->header_sz);
17 printf("Version : %u\n",header->version);
18 printf("Volume Serial : %u\n",header->vsn);
19 printf("Sector Size : %d\n", header->sector_sz);
20 printf("Total Sectors : %d\n",header->total_sectors);
21 printf("Calculated Size : %d Bytes\n", (header->sector_sz) * (header->total_sectors) );
23 printf("Password Flag : %d\n", header->has_password);
24 printf("Segment Size : %ld\n", header->segment_sz);
25 printf("Num Blocks/Chunks : %d\n", header->nblocks);
26 printf("Block/Chunk Size : %d\n", header->block_sz);
28 printf("Chunk Ptr len : %d\n", header->block_ptr_sz);
29 printf("Segment Number : %d\n", header->segment_num);
31 printf("Chunk Ptr Offset : %d\n", header->chunk_offset);
32 printf("Segment Offset : %d\n", header->segment_offset);
33 printf("Data Offset : %d\n", header->data_offset);
35 printf("Reserved : %d\n",header->reserved);
38 void pread( void * ptr, size_t size, size_t count, FILE * stream ) {
39 size_t s = fread(ptr,size,count,stream);
40 if (s < (size*count)) {
41 fprintf(stderr," read too little\n");
45 int main (int argc, char ** argv) {
46 progname = argv[0];
48 fprintf(stderr," isz struct sz: 0x%X, %u\n",
49 (unsigned int)sizeof(isz_header),(unsigned int)sizeof(isz_header));
51 if (argc < 2) {
52 usage();
55 isz_header * header = malloc(sizeof(isz_header));
56 if (header == NULL) {
57 fputs(" malloc error\n",stderr);
58 exit(EXIT_FAILURE);
61 FILE * isz = fopen(argv[1],"rb");
62 if (isz == NULL) {
63 fprintf(stderr," could not open %s\n",argv[1]);
64 exit(EXIT_FAILURE);
67 pread(header,1,sizeof(isz_header),isz);
69 if ( memcmp( header->signature, ISZ_MAGIC,
70 sizeof(ISZ_MAGIC)) ) {
71 fputs(" Invalid Magic.\n",stderr);
72 exit(EXIT_FAILURE);
75 if (header->header_sz != sizeof(isz_header) ) {
76 fprintf(stderr, " Failure: ISZ file header size incorrect (is %lu, should be %lu)\n"
77 " Possibly older isz version, unsupported\n",
78 (long unsigned int)(header->header_sz), sizeof(isz_header));
79 //exit(EXIT_FAILURE);
82 print_isz_header(header);
84 exit(EXIT_SUCCESS);