Fix missing 64-bit offset types in diskio-unix

Most of the types used in the diskio routines are explicitly 64-bit, but
there were two usages of off_t, which is a 32-bit value when compiled
in a 32-bit userspace.  This causes gpt-fdisk to be unable to correctly
write partitions on a drive larger than 4GiB when compiled in a 32-bit
userspace.  This change updates the two usages of off_t to off64_t,
which is explicitly 64-bit and allows the program to work as intended.
This commit is contained in:
Aaron Bamberger
2020-08-11 14:16:19 -05:00
parent cfd8d2138e
commit c03d1105dc

View File

@@ -307,7 +307,7 @@ int DiskIO::DiskSync(void) {
// Note that seeking beyond the end of the file is NOT detected as a failure!
int DiskIO::Seek(uint64_t sector) {
int retval = 1;
off_t seekTo, sought;
off64_t seekTo, sought;
// If disk isn't open, try to open it....
if (!isOpen) {
@@ -424,7 +424,7 @@ int DiskIO::Write(void* buffer, int numBytes) {
// return correct values for disk image files.
uint64_t DiskIO::DiskSize(int *err) {
uint64_t sectors = 0; // size in sectors
off_t bytes = 0; // size in bytes
off64_t bytes = 0; // size in bytes
struct stat64 st;
int platformFound = 0;
#ifdef __sun__