diff --git a/include/shred.h b/include/shred.h index 1d9af23..635f265 100644 --- a/include/shred.h +++ b/include/shred.h @@ -47,7 +47,7 @@ private: inline double calcProgress(); int iRewindDrive(fileDescriptor file); - unsigned long getDriveSizeInBytes(fileDescriptor file); + long getDriveSizeInBytes(fileDescriptor file); unsigned int uiCalcChecksum(fileDescriptor file, Drive *drive, int *ipSignalFd); void cleanup(); }; diff --git a/src/shred.cpp b/src/shred.cpp index 8fd3fae..906e908 100644 --- a/src/shred.cpp +++ b/src/shred.cpp @@ -239,19 +239,25 @@ int Shred::iRewindDrive(fileDescriptor file) } } -unsigned long Shred::getDriveSizeInBytes(fileDescriptor file) +long Shred::getDriveSizeInBytes(fileDescriptor file) { - unsigned long ulDriveSizeTmp = lseek(file, 0L, SEEK_END); + long liDriveSizeTmp = lseek(file, 0L, SEEK_END); + + if (liDriveSizeTmp == -1) + { + perror("unable to get drive size"); + return 0L; + } if (0 != iRewindDrive(file)) { - ulDriveSizeTmp = 0U; + liDriveSizeTmp = 0L; } #ifdef DEMO_DRIVE_SIZE - ulDriveSizeTmp = DEMO_DRIVE_SIZE; + liDriveSizeTmp = DEMO_DRIVE_SIZE; #endif - return ulDriveSizeTmp; + return liDriveSizeTmp; } unsigned int Shred::uiCalcChecksum(fileDescriptor file, Drive *drive, int *ipSignalFd)