From 08467a88a67c1d8b8530694b27ca04fbba8dd8d8 Mon Sep 17 00:00:00 2001 From: Andreas Sandberg Date: Fri, 15 Feb 2013 17:40:10 -0500 Subject: dev: Use the correct return type for disk offsets Replace the use of off_t in the various DiskImage related classes with std::streampos. off_t is a signed 32 bit integer on most 32-bit systems, whereas std::streampos is normally a 64 bit integer on most modern systems. Furthermore, std::streampos is the type used by tellg() and seekg() in the standard library, so it should have been used in the first place. This patch makes it possible to use disk images larger than 2 GiB on 32 bit systems with a modern C++ standard library. --- src/dev/disk_image.cc | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'src/dev/disk_image.cc') diff --git a/src/dev/disk_image.cc b/src/dev/disk_image.cc index c9defb605..84027d9b4 100644 --- a/src/dev/disk_image.cc +++ b/src/dev/disk_image.cc @@ -86,7 +86,7 @@ RawDiskImage::close() stream.close(); } -off_t +std::streampos RawDiskImage::size() const { if (disk_size == 0) { @@ -99,8 +99,8 @@ RawDiskImage::size() const return disk_size / SectorSize; } -off_t -RawDiskImage::read(uint8_t *data, off_t offset) const +std::streampos +RawDiskImage::read(uint8_t *data, std::streampos offset) const { if (!initialized) panic("RawDiskImage not initialized"); @@ -120,8 +120,8 @@ RawDiskImage::read(uint8_t *data, off_t offset) const return stream.tellg() - pos; } -off_t -RawDiskImage::write(const uint8_t *data, off_t offset) +std::streampos +RawDiskImage::write(const uint8_t *data, std::streampos offset) { if (!initialized) panic("RawDiskImage not initialized"); @@ -357,12 +357,12 @@ CowDiskImage::writeback() } } -off_t +std::streampos CowDiskImage::size() const { return child->size(); } -off_t -CowDiskImage::read(uint8_t *data, off_t offset) const +std::streampos +CowDiskImage::read(uint8_t *data, std::streampos offset) const { if (!initialized) panic("CowDiskImage not initialized"); @@ -381,8 +381,8 @@ CowDiskImage::read(uint8_t *data, off_t offset) const } } -off_t -CowDiskImage::write(const uint8_t *data, off_t offset) +std::streampos +CowDiskImage::write(const uint8_t *data, std::streampos offset) { if (!initialized) panic("RawDiskImage not initialized"); -- cgit v1.2.3