diff --git a/include/drive.h b/include/drive.h index ffae208..bafe7e5 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 71b166d..e825845 100644 --- a/src/shred.cpp +++ b/src/shred.cpp @@ -192,26 +192,30 @@ int Shred::shredDrive(Drive *drive, int *ipSignalFd) drive->state = Drive::TaskState::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::TaskState::CHECK_FAILED; Logger::logThis()->info("Shred-Task: Checksum not zero: " + to_string(drive->u32DriveChecksumAfterShredding) + " - Drive: " + drive->getSerial()); } else { + drive->state = Drive::TaskState::CHECK_SUCCESSFUL; Logger::logThis()->info("Shred-Task: Checksum zero: " + to_string(drive->u32DriveChecksumAfterShredding) + " - Drive: " + drive->getSerial()); } #endif -#endif #endif cleanup(); - if ((drive->state.load() == Drive::TaskState::SHRED_ACTIVE) || (drive->state.load() == Drive::TaskState::CHECK_ACTIVE)) + if ((drive->state.load() == Drive::TaskState::SHRED_ACTIVE) || (drive->state.load() == Drive::TaskState::CHECK_SUCCESSFUL) || (drive->state == Drive::TaskState::CHECK_FAILED)) { + if (drive->state != Drive::TaskState::CHECK_FAILED) + { + Printer::getPrinter()->print(drive); + } drive->state = Drive::TaskState::NONE; drive->setTaskPercentage(0.0); - Printer::getPrinter()->print(drive); Logger::logThis()->info("Finished shred/check for: " + drive->getModelName() + "-" + drive->getSerial()); } return 0; diff --git a/src/tui.cpp b/src/tui.cpp index c70469c..54d1474 100644 --- a/src/tui.cpp +++ b/src/tui.cpp @@ -154,6 +154,7 @@ void TUI::updateTUI(list *plistDrives, uint8_t u8SelectedEntry) case Drive::TaskState::NONE: case Drive::TaskState::SHRED_SELECTED: case Drive::TaskState::DELETE_SELECTED: + case Drive::TaskState::CHECK_SUCCESSFUL: { if (it->bWasDeleted) {