First post, by hakonrk
- Rank
- Newbie
I have a valid (by which I mean that Linux and Windows fs drivers have no problem with it) ISO image whose directory entries are not being read because of this statement in drive_iso.cpp:
if (data[0] > sizeof(isoDirEntry)) return -1;
In my particular case, data[0] is 136 and sizeof(isoDirEntry) is 133, so DOSBox just gives up.
I have looked at Linux' iso_directory_record, and like DOSBox' version, it has 33 bytes before the directory entry name. Unlike DOSBox' version, Linux doesn't limit the file name array to 100 bytes, instead allowing whatever is specified in the name_len byte (i.e., up to 255 bytes for the file name, which is permitted with the Rock Ridge extension).
I have no idea why my ISO file has directory entries that exceed 133 bytes, as all filenames in the image conform to the 8+3 FAT standard, but for now, I have changed the ident[100] array to ident[256] in src/dos/drivers.h's isoDirEntry struct. Is there a reason for the (seemingly arbitrary) limit of 100 bytes?