bugfix/ai-static-analysis #82

Open
localhorst wants to merge 15 commits from bugfix/ai-static-analysis into master
2 changed files with 105 additions and 103 deletions
Showing only changes of commit 46e8dae697 - Show all commits

View File

@ -135,6 +135,10 @@ void reHDD::ThreadUserInput()
{ {
while (true) while (true)
{ {
Drive *tmpSelectedDrive = getSelectedDrive();
if (tmpSelectedDrive != nullptr)
{
// cout << TUI::readUserInput() << endl; // cout << TUI::readUserInput() << endl;
switch (TUI::readUserInput()) switch (TUI::readUserInput())
{ {
@ -159,11 +163,11 @@ void reHDD::ThreadUserInput()
case TUI::UserInput::Delete: case TUI::UserInput::Delete:
// cout << "Delete" << endl; // cout << "Delete" << endl;
if (getSelectedDrive() != nullptr) if (tmpSelectedDrive != nullptr)
{ {
if (getSelectedDrive()->state == Drive::NONE) if (tmpSelectedDrive->state == Drive::NONE)
{ {
getSelectedDrive()->state = Drive::DELETE_SELECTED; tmpSelectedDrive->state = Drive::DELETE_SELECTED;
} }
} }
@ -171,15 +175,10 @@ void reHDD::ThreadUserInput()
break; break;
case TUI::UserInput::Shred: case TUI::UserInput::Shred:
// cout << "Shred" << endl; // cout << "Shred" << endl;
if (tmpSelectedDrive->state == Drive::NONE)
if (getSelectedDrive() != nullptr)
{ {
if (getSelectedDrive()->state == Drive::NONE) tmpSelectedDrive->state = Drive::SHRED_SELECTED;
{
getSelectedDrive()->state = Drive::SHRED_SELECTED;
} }
}
ui->updateTUI(&listDrives, u8SelectedEntry); ui->updateTUI(&listDrives, u8SelectedEntry);
break; break;
case TUI::UserInput::ShredAll: case TUI::UserInput::ShredAll:
@ -209,6 +208,7 @@ void reHDD::ThreadUserInput()
} }
} }
} }
}
void reHDD::ThreadShred(Drive *const pDrive) void reHDD::ThreadShred(Drive *const pDrive)
{ {
@ -224,13 +224,14 @@ void reHDD::ThreadShred(Drive *const pDrive)
void reHDD::ThreadDelete() void reHDD::ThreadDelete()
{ {
if (getSelectedDrive() != nullptr) Drive *tmpSelectedDrive = getSelectedDrive();
if (tmpSelectedDrive != nullptr)
{ {
getSelectedDrive()->setActionStartTimestamp(); // save timestamp at start of deleting tmpSelectedDrive->setActionStartTimestamp(); // save timestamp at start of deleting
Delete::deleteDrive(getSelectedDrive()); // blocking, no thread Delete::deleteDrive(tmpSelectedDrive); // blocking, no thread
getSelectedDrive()->state = Drive::TaskState::NONE; // delete finished tmpSelectedDrive->state = Drive::TaskState::NONE; // delete finished
getSelectedDrive()->bWasDeleted = true; tmpSelectedDrive->bWasDeleted = true;
Logger::logThis()->info("Finished delete for: " + getSelectedDrive()->getModelName() + "-" + getSelectedDrive()->getSerial()); Logger::logThis()->info("Finished delete for: " + tmpSelectedDrive->getModelName() + "-" + tmpSelectedDrive->getSerial());
ui->updateTUI(&listDrives, u8SelectedEntry); ui->updateTUI(&listDrives, u8SelectedEntry);
} }
} }
@ -313,7 +314,6 @@ void reHDD::searchDrives(std::list<Drive> *plistDrives)
if (!fp) if (!fp)
{ {
Logger::logThis()->error("Unable to execute lsblk to scan drives"); Logger::logThis()->error("Unable to execute lsblk to scan drives");
pclose(fp);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
@ -620,22 +620,21 @@ void reHDD::handleArrowKey(TUI::UserInput userInput)
void reHDD::handleEnter() void reHDD::handleEnter()
{ {
Drive *tmpSelectedDrive = getSelectedDrive();
if (getSelectedDrive() != nullptr) if (tmpSelectedDrive != nullptr)
{ {
if (getSelectedDrive()->state == Drive::TaskState::SHRED_SELECTED) if (tmpSelectedDrive->state == Drive::TaskState::SHRED_SELECTED)
{ {
Logger::logThis()->info("Started shred/check for: " + getSelectedDrive()->getModelName() + "-" + getSelectedDrive()->getSerial()); Logger::logThis()->info("Started shred/check for: " + tmpSelectedDrive->getModelName() + "-" + tmpSelectedDrive->getSerial());
getSelectedDrive()->state = Drive::TaskState::SHRED_ACTIVE; tmpSelectedDrive->state = Drive::TaskState::SHRED_ACTIVE;
// task for drive is running --> don't show more task options // task for drive is running --> don't show more task option
Drive *pTmpDrive = getSelectedDrive(); thread(ThreadShred, tmpSelectedDrive).detach();
thread(ThreadShred, pTmpDrive).detach();
} }
if (getSelectedDrive()->state == Drive::TaskState::DELETE_SELECTED) if (tmpSelectedDrive->state == Drive::TaskState::DELETE_SELECTED)
{ {
Logger::logThis()->info("Started delete for: " + getSelectedDrive()->getModelName() + "-" + getSelectedDrive()->getSerial()); Logger::logThis()->info("Started delete for: " + tmpSelectedDrive->getModelName() + "-" + tmpSelectedDrive->getSerial());
getSelectedDrive()->state = Drive::TaskState::DELETE_ACTIVE; tmpSelectedDrive->state = Drive::TaskState::DELETE_ACTIVE;
// task for drive is running --> don't show more task options // task for drive is running --> don't show more task options
thread(ThreadDelete).detach(); thread(ThreadDelete).detach();
} }
@ -644,17 +643,18 @@ void reHDD::handleEnter()
void reHDD::handleESC() void reHDD::handleESC()
{ {
if (getSelectedDrive() != nullptr) Drive *tmpSelectedDrive = getSelectedDrive();
if (tmpSelectedDrive != nullptr)
{ {
if (getSelectedDrive()->state == Drive::TaskState::SHRED_SELECTED) if (tmpSelectedDrive->state == Drive::TaskState::SHRED_SELECTED)
{ {
getSelectedDrive()->state = Drive::TaskState::NONE; tmpSelectedDrive->state = Drive::TaskState::NONE;
// task for drive is selected --> remove selection // task for drive is selected --> remove selection
} }
if (getSelectedDrive()->state == Drive::TaskState::DELETE_SELECTED) if (tmpSelectedDrive->state == Drive::TaskState::DELETE_SELECTED)
{ {
getSelectedDrive()->state = Drive::TaskState::NONE; tmpSelectedDrive->state = Drive::TaskState::NONE;
// task for drive is selected --> remove selection // task for drive is selected --> remove selection
} }
} }
@ -662,12 +662,13 @@ void reHDD::handleESC()
void reHDD::handleAbort() void reHDD::handleAbort()
{ {
if (getSelectedDrive() != nullptr) Drive *tmpSelectedDrive = getSelectedDrive();
if (tmpSelectedDrive != nullptr)
{ {
if (getSelectedDrive()->state == Drive::SHRED_ACTIVE || getSelectedDrive()->state == Drive::DELETE_ACTIVE) if (tmpSelectedDrive->state == Drive::SHRED_ACTIVE || tmpSelectedDrive->state == Drive::DELETE_ACTIVE)
{ {
getSelectedDrive()->state = Drive::NONE; tmpSelectedDrive->state = Drive::NONE;
Logger::logThis()->info("Abort-Shred-Signal for: " + getSelectedDrive()->getModelName() + "-" + getSelectedDrive()->getSerial()); Logger::logThis()->info("Abort-Shred-Signal for: " + tmpSelectedDrive->getModelName() + "-" + tmpSelectedDrive->getSerial());
// task for drive is running --> remove selection // task for drive is running --> remove selection
} }
} }