Description: handle larger than 4GB isos
Author: Thomas Bittermann
Origin: vendor, http://koji.fedoraproject.org/koji/buildinfo?buildID=149397
Bug-Fedora: https://bugzilla.redhat.com/show_bug.cgi?id=440436
Forwarded: not-needed
Last-Update: 2024-09-16
--- fuseiso.orig/src/isofs.c
+++ fuseiso/src/isofs.c
@@ -178,7 +178,7 @@ int isofs_real_preinit( char* imagefile,
                         context.data_size = isonum_723(context.pd.logical_block_size);
                         
                         if(!context.block_size) {
-                            fprintf(stderr, "init: wrong block data size %d, using default 2048\n", context.data_size);
+                            fprintf(stderr, "init: wrong block data size %Lu, using default 2048\n", context.data_size);
                             context.data_size = 2048;
                         };
                         
@@ -324,7 +324,7 @@ void* isofs_real_init() {
     
     if(context.block_size != 2048) {
         // report unusual data block size
-        printf("Data block size: %d\n", context.block_size);
+        printf("Data block size: %Lu\n", context.block_size);
     };
     
     char buf[129];
@@ -479,7 +479,7 @@ static int isofs_read_raw_block(int bloc
     };
     size_t len = read(context.fd, buf, context.data_size);
     if(len != context.data_size) {
-        fprintf(stderr, "isofs_read_raw_block: can`t read full block, read only %d bytes from offset %d, %d required; errno %d, message %s\n", 
+        fprintf(stderr, "isofs_read_raw_block: can`t read full block, read only %d bytes from offset %d, %Lu required; errno %d, message %s\n", 
             len, (int) off, context.data_size, errno, strerror(errno));
         fprintf(stderr, "isofs_read_raw_block: huh? reading zeros beyond file end? someone want to save a penny?\n");
         memset(buf + len, 0, context.data_size - len);
--- fuseiso.orig/src/isofs.h
+++ fuseiso/src/isofs.h
@@ -38,9 +38,9 @@ typedef struct _isofs_context {
     struct iso_directory_record *root;
     int file_offset; // offset to begin of useful data (for .nrg files)
     int id_offset; // offset to CD001 inside file
-    size_t block_size; // raw block size
-    size_t block_offset; // offset from block start to data
-    size_t data_size; // data size inside block 
+    off_t block_size; // raw block size
+    off_t block_offset; // offset from block start to data
+    off_t data_size; // data size inside block 
     int susp; // parse susp entries
     int susp_skip; // skip bytes from susp SP entry
     int joliet_level; // joliet extension level (1, 2 or 3)
