diff --git a/src/reHDD.cpp b/src/reHDD.cpp index 38fb6ee..f4a764e 100644 --- a/src/reHDD.cpp +++ b/src/reHDD.cpp @@ -322,29 +322,13 @@ void reHDD::searchDrives(list * plistDrives) */ void reHDD::filterIgnoredDrives(list * plistDrives) { - string sDelimiter = ":"; - string sIgnoredDrivePath; - string sIgnoredDriveUUID; - - list> vtlIgnoredDevices; //store drives from ingnore file - + list> vtlIgnoredDevices; //store drives from ingnore file ifstream input( "ignoreDrives.conf" ); //read ingnore file for(string sLine; getline( input, sLine );) { - if (string(sLine).find("/dev/sd") != string::npos) - { - size_t pos = 0; - string token; - while ((pos = sLine.find(sDelimiter)) != string::npos) - { - token = sLine.substr(0, pos); - sIgnoredDrivePath = token; - sLine.erase(0, pos + sDelimiter.length()); - sIgnoredDriveUUID = sLine; - } //end while - vtlIgnoredDevices.emplace_back(sIgnoredDrivePath, sIgnoredDriveUUID); //add found path and uuid from ignore file to vector - } + Logger::logThis()->info("read uuid: " + sLine); + vtlIgnoredDevices.emplace_back(sLine); //add found path and uuid from ignore file to vector } //loop through found entries in ingnore file for(auto row : vtlIgnoredDevices) @@ -353,48 +337,39 @@ void reHDD::filterIgnoredDrives(list * plistDrives) for (it = plistDrives->begin(); it != plistDrives->end(); ++it) { string sUUID; - if (!get<0>(row).compare(it->getPath())) //find same drive based on path + char * cLine = NULL; + size_t len = 0; + string sCMD = "blkid "; + sCMD.append(it->getPath()); + //cout << "cmd: " << sCMD << endl; + FILE* outputfileBlkid = popen(sCMD.c_str(), "r"); //get UUID from drive + if (outputfileBlkid == NULL) { - char * cLine = NULL; - size_t len = 0; - string sCMD = "blkid "; - sCMD.append(it->getPath()); - //cout << "cmd: " << sCMD << endl; - FILE* outputfileBlkid = popen(sCMD.c_str(), "r"); //get UUID from drive - if (outputfileBlkid == NULL) - { - exit(EXIT_FAILURE); - } + exit(EXIT_FAILURE); + } - while ((getline(&cLine, &len, outputfileBlkid)) != -1) //parse UUID from blkid + while ((getline(&cLine, &len, outputfileBlkid)) != -1) //parse UUID from blkid + { + if (string(cLine).find("PTUUID") != string::npos) { - if (string(cLine).find("PTUUID") != string::npos) - { - string sBlkidOut = string(cLine); - sBlkidOut.erase(0, 18); - sBlkidOut.erase(36, sBlkidOut.length() - 36); - sUUID = sBlkidOut; - //cout << "blkid uuid:" << sUUID << endl; - } + string sBlkidOut = string(cLine); + sBlkidOut.erase(0, 18); + sBlkidOut.erase(36, sBlkidOut.length() - 36); + sUUID = sBlkidOut; + //cout << "blkid uuid:" << sUUID << endl; } - pclose(outputfileBlkid); - //cout << "blkid uuid:" << sUUID << endl; + } + pclose(outputfileBlkid); + //cout << "blkid uuid:" << sUUID << endl; - if (get<1>(row).compare(sUUID)) //compare uuid from ignore file and uuid from drive - { - cout << "[ERROR] different uuid found than in ignore file:" << it->getPath() << endl; - Logger::logThis()->error("[ERROR] different uuid found than in ignore file: " + it->getPath() + " uuid from drive: " + sUUID); - exit(EXIT_FAILURE); // exit to prevent accidentally shred a system drive - } - else - { - // same uuid found than in ignore file --> ignore this drive + if (!get<0>(row).compare(sUUID)) //compare uuid from ignore file and uuid from drive + { + // same uuid found than in ignore file --> ignore this drive #ifdef LOG_LEVEL_HIGH - Logger::logThis()->info("same uuid found than in ignore file --> ignore this drive: " + it->getPath()); + Logger::logThis()->info("same uuid found than in ignore file --> ignore this drive: " + it->getPath()); #endif - it = plistDrives->erase(it); - it--; - } + it = plistDrives->erase(it); + it--; } } }