X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/Ventoy.git/blobdiff_plain/05a1b863a66bf72b26e5d87570c4e0e61b9736cd..261ddcef45ede2f9440342a5b3dd474e26df1679:/FUSEISO/vtoy_fuse_iso.c diff --git a/FUSEISO/vtoy_fuse_iso.c b/FUSEISO/vtoy_fuse_iso.c index 0350ea0..0178c8d 100644 --- a/FUSEISO/vtoy_fuse_iso.c +++ b/FUSEISO/vtoy_fuse_iso.c @@ -114,11 +114,12 @@ static int ventoy_iso_open(const char *path, struct fuse_file_info *file) return 0; } -static int ventoy_read_iso_sector(uint32_t sector, uint32_t num, void *buf) +static int ventoy_read_iso_sector(uint32_t sector, uint32_t num, char *buf) { uint32_t i = 0; uint32_t leftSec = 0; uint32_t readSec = 0; + off_t offset = 0; dmtable_entry *entry = NULL; for (i = 0; i < g_disk_entry_num && num > 0; i++) @@ -127,14 +128,15 @@ static int ventoy_read_iso_sector(uint32_t sector, uint32_t num, void *buf) if (sector >= entry->isoSector && sector < entry->isoSector + entry->sectorNum) { - lseek(g_disk_fd, (entry->diskSector + (sector - entry->isoSector)) * 512, SEEK_SET); + offset = (entry->diskSector + (sector - entry->isoSector)) * 512; leftSec = entry->sectorNum - (sector - entry->isoSector); readSec = (leftSec > num) ? num : leftSec; - read(g_disk_fd, buf, readSec * 512); + pread(g_disk_fd, buf, readSec * 512, offset); sector += readSec; + buf += readSec * 512; num -= readSec; } }