From 298192111df6bda119b7fbc055df88637e1776f4 Mon Sep 17 00:00:00 2001 From: localhorst Date: Sun, 7 Dec 2025 18:36:32 +0100 Subject: [PATCH] new states --- include/drive.h | 2 ++ src/shred.cpp | 11 ++++++----- src/tui.cpp | 3 ++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/include/drive.h b/include/drive.h index 1297e13..efe147a 100644 --- a/include/drive.h +++ b/include/drive.h @@ -20,6 +20,8 @@ public: SHRED_SELECTED, SHRED_ACTIVE, // shred iterations active CHECK_ACTIVE, // optional checking active + CHECK_SUCCESSFUL, + CHECK_FAILED, DELETE_SELECTED, DELETE_ACTIVE, FROZEN diff --git a/src/shred.cpp b/src/shred.cpp index 2255310..ca77762 100644 --- a/src/shred.cpp +++ b/src/shred.cpp @@ -36,7 +36,7 @@ int Shred::shredDrive(Drive *drive, int *ipSignalFd) ostringstream address; address << (void const *)&(*drive); Logger::logThis()->info("Shred-Task started - Drive: " + drive->getModelName() + "-" + drive->getSerial() + " @" + address.str()); - drive->bWasShredStarted = true; //Mark drive as partly shredded + drive->bWasShredStarted = true; // Mark drive as partly shredded #ifdef DRYRUN for (int i = 0; i <= 500; i++) @@ -93,7 +93,7 @@ int Shred::shredDrive(Drive *drive, int *ipSignalFd) this->ulDriveByteSize = getDriveSizeInBytes(driveFileDiscr); drive->sShredSpeed.chronoShredTimestamp = std::chrono::system_clock::now(); // set inital timestamp for speed metric - drive->sShredSpeed.ulSpeedMetricBytesWritten = 0U; // uses to calculate speed metric + drive->sShredSpeed.ulSpeedMetricBytesWritten = 0U; // uses to calculate speed metric #ifdef LOG_LEVEL_HIGH Logger::logThis()->info("Shred-Task: Bytes-Size of Drive: " + to_string(this->ulDriveByteSize) + " - Drive: " + drive->getSerial()); @@ -186,22 +186,23 @@ int Shred::shredDrive(Drive *drive, int *ipSignalFd) drive->state = Drive::CHECK_ACTIVE; Logger::logThis()->info("Check-Task started - Drive: " + drive->getModelName() + "-" + drive->getSerial() + " @" + address.str()); drive->u32DriveChecksumAfterShredding = uiCalcChecksum(driveFileDiscr, drive, ipSignalFd); -#ifdef LOG_LEVEL_HIGH + if (drive->u32DriveChecksumAfterShredding != 0) { + drive->state = Drive::CHECK_FAILED; Logger::logThis()->info("Shred-Task: Checksum not zero: " + to_string(drive->u32DriveChecksumAfterShredding) + " - Drive: " + drive->getSerial()); } else { + drive->state = Drive::CHECK_SUCCESSFUL; Logger::logThis()->info("Shred-Task: Checksum zero: " + to_string(drive->u32DriveChecksumAfterShredding) + " - Drive: " + drive->getSerial()); } #endif -#endif #endif cleanup(); - if ((drive->state == Drive::SHRED_ACTIVE) || (drive->state == Drive::CHECK_ACTIVE)) + if ((drive->state == Drive::SHRED_ACTIVE) || (drive->state == Drive::CHECK_SUCCESSFUL) || (drive->state == Drive::CHECK_FAILED)) { drive->state = Drive::NONE; drive->setTaskPercentage(0.0); diff --git a/src/tui.cpp b/src/tui.cpp index e011eb1..b1d77fb 100644 --- a/src/tui.cpp +++ b/src/tui.cpp @@ -145,6 +145,7 @@ void TUI::updateTUI(list *plistDrives, uint8_t u8SelectedEntry) case Drive::NONE: case Drive::SHRED_SELECTED: case Drive::DELETE_SELECTED: + case Drive::CHECK_SUCCESSFUL: if (it->bWasDeleted) { sState = "DELETED"; // mark drive as deleted previously @@ -165,7 +166,7 @@ void TUI::updateTUI(list *plistDrives, uint8_t u8SelectedEntry) } #ifdef ZERO_CHECK - if (bSelectedEntry && it->bWasChecked && (it->u32DriveChecksumAfterShredding != 0U)) + if (bSelectedEntry && it->bWasChecked && (it->state == Drive::CHECK_FAILED)) { dialog = createZeroChecksumWarning(70, 16, ((u16StdscrX) - (int)(u16StdscrX / 2) - 20), (int)(u16StdscrY / 2) - 8, it->getPath(), it->getModelFamily(), it->getModelName(), it->getSerial(), it->u32DriveChecksumAfterShredding); wrefresh(dialog);