bugfix/dry-run-tui-freeze #88

Merged
localhorst merged 4 commits from bugfix/dry-run-tui-freeze into master 2025-12-12 22:14:48 +01:00
3 changed files with 35 additions and 8 deletions
Showing only changes of commit 04a33335c8 - Show all commits

View File

@ -31,7 +31,7 @@
#endif #endif
// Logic // Logic
// #define DRYRUN // don't touch the drives #define DRYRUN // don't touch the drives
#define FROZEN_ALERT // show alert if drive is frozen #define FROZEN_ALERT // show alert if drive is frozen
#define ZERO_CHECK // check drive after shred if all bytes are zero, show alert if this fails #define ZERO_CHECK // check drive after shred if all bytes are zero, show alert if this fails

View File

@ -382,7 +382,13 @@ void reHDD::filterIgnoredDrives(list<Drive> *plistDrives)
list<Drive>::iterator it; list<Drive>::iterator it;
for (it = plistDrives->begin(); it != plistDrives->end(); ++it) for (it = plistDrives->begin(); it != plistDrives->end(); ++it)
{ {
if (it->getPath().find(systemDrivePath) != std::string::npos) // compare found system drive and current drive string driveName = it->getPath();
// Remove /dev/ prefix
if (driveName.find("/dev/") == 0)
{
driveName = driveName.substr(5); // Skip "/dev/"
}
if (systemDrivePath.find(driveName) != std::string::npos) // compare found system drive and current drive
{ {
// system drive found --> ignore this drive // system drive found --> ignore this drive
#ifdef LOG_LEVEL_HIGH #ifdef LOG_LEVEL_HIGH
@ -709,14 +715,23 @@ bool reHDD::getSystemDrive(string &systemDrive)
continue; continue;
} }
// Logger::logThis()->info(currentLine); // Extract drive name from line (removing tree characters)
if ((cLine[0U] != '|') && (cLine[0U] != '`')) if ((cLine[0U] != '|') && (cLine[0U] != '`'))
{ {
systemDrive = currentLine; systemDrive = currentLine;
systemDrive.erase(std::remove(systemDrive.begin(), systemDrive.end(), '\n'), systemDrive.end()); // remove newline
systemDrive.erase(std::remove(systemDrive.begin(), systemDrive.end(), ' '), systemDrive.end()); // remove spaces // Find the actual drive name (after tree characters like └─, ├─)
// Logger::logThis()->info("Drive found: " + systemDrive); size_t lastAlpha = 0;
for (size_t i = 0; i < systemDrive.length(); i++)
{
if (isalpha(systemDrive[i]))
{
lastAlpha = i;
break;
}
}
systemDrive = systemDrive.substr(lastAlpha);
} }
if (currentLine.ends_with(" /boot/efi\n"s)) if (currentLine.ends_with(" /boot/efi\n"s))
@ -739,5 +754,17 @@ bool reHDD::getSystemDrive(string &systemDrive)
} }
pclose(outputfileHwinfo); pclose(outputfileHwinfo);
// Remove mountpoint (everything after first space)
size_t spacePos = systemDrive.find(' ');
if (spacePos != std::string::npos)
{
systemDrive = systemDrive.substr(0, spacePos);
}
// Remove all unwanted characters
systemDrive.erase(std::remove(systemDrive.begin(), systemDrive.end(), '\n'), systemDrive.end());
systemDrive.erase(std::remove(systemDrive.begin(), systemDrive.end(), '/'), systemDrive.end());
systemDrive.erase(std::remove(systemDrive.begin(), systemDrive.end(), '\r'), systemDrive.end());
return systemDriveFound; return systemDriveFound;
} }

View File

@ -40,7 +40,7 @@ int Shred::shredDrive(Drive *drive, int *ipSignalFd)
drive->bWasShredStarted = true; // Mark drive as partly shredded drive->bWasShredStarted = true; // Mark drive as partly shredded
#ifdef DRYRUN #ifdef DRYRUN
for (int i = 0; i <= 500; i++) for (int i = 0; i <= 100; i++)
{ {
if (drive->state.load() != Drive::TaskState::SHRED_ACTIVE) if (drive->state.load() != Drive::TaskState::SHRED_ACTIVE)
{ {