tdehw: improved code for mount table.

Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
(cherry picked from commit 09835dceb7)
r14.0.x
Michele Calgaro 5 years ago
parent 7d87c23620
commit 0f7cda9d52
Signed by: MicheleC
GPG Key ID: 2A75B7CA8ADED5CF

@ -167,7 +167,10 @@ TDEHardwareDevices::TDEHardwareDevices() {
if ( file.open( IO_ReadOnly ) ) {
TQTextStream stream( &file );
while ( !stream.atEnd() ) {
m_mountTable.append(stream.readLine());
TQString line = stream.readLine();
if (!line.isEmpty()) {
m_mountTable[line] = true;
}
}
file.close();
}
@ -934,7 +937,7 @@ void TDEHardwareDevices::processModifiedMounts() {
// Detect what changed between the old mount table and the new one,
// and emit appropriate events
TQStringList deletedEntries = m_mountTable;
TQMap<TQString, bool> deletedEntries = m_mountTable;
// Read in the new mount table
m_mountTable.clear();
@ -942,31 +945,26 @@ void TDEHardwareDevices::processModifiedMounts() {
if ( file.open( IO_ReadOnly ) ) {
TQTextStream stream( &file );
while ( !stream.atEnd() ) {
m_mountTable.append(stream.readLine());
TQString line = stream.readLine();
if (!line.isEmpty()) {
m_mountTable[line] = true;
}
}
file.close();
}
TQStringList addedEntries = m_mountTable;
TQMap<TQString, bool> addedEntries = m_mountTable;
// Remove all entries that are identical in both tables
processModifiedMounts_removeagain:
for ( TQStringList::Iterator delit = deletedEntries.begin(); delit != deletedEntries.end(); ++delit ) {
for ( TQStringList::Iterator addit = addedEntries.begin(); addit != addedEntries.end(); ++addit ) {
if ((*delit) == (*addit)) {
deletedEntries.remove(delit);
addedEntries.remove(addit);
// Reset iterators to prevent bugs/crashes
// FIXME
// Is there any way to completely reset both loops without using goto?
goto processModifiedMounts_removeagain;
}
for ( TQMap<TQString, bool>::ConstIterator mtIt = m_mountTable.begin(); mtIt != m_mountTable.end(); ++mtIt ) {
if (deletedEntries.contains(mtIt.key())) {
deletedEntries.remove(mtIt.key());
addedEntries.remove(mtIt.key());
}
}
TQStringList::Iterator it;
TQMap<TQString, bool>::Iterator it;
for ( it = addedEntries.begin(); it != addedEntries.end(); ++it ) {
TQStringList mountInfo = TQStringList::split(" ", (*it), true);
TQStringList mountInfo = TQStringList::split(" ", it.key(), true);
// Try to find a device that matches the altered node
TDEGenericDevice* hwdevice = findByDeviceNode(*mountInfo.at(0));
if (hwdevice) {
@ -987,7 +985,7 @@ void TDEHardwareDevices::processModifiedMounts() {
}
}
for ( it = deletedEntries.begin(); it != deletedEntries.end(); ++it ) {
TQStringList mountInfo = TQStringList::split(" ", (*it), true);
TQStringList mountInfo = TQStringList::split(" ", it.key(), true);
// Try to find a device that matches the altered node
TDEGenericDevice* hwdevice = findByDeviceNode(*mountInfo.at(0));
if (hwdevice) {

@ -304,7 +304,7 @@ class TDECORE_EXPORT TDEHardwareDevices : public TQObject
TQSocketNotifier* m_devScanNotifier;
TQSocketNotifier* m_mountScanNotifier;
TQStringList m_mountTable;
TQMap<TQString, bool> m_mountTable;
TQStringList m_cpuInfo;
TDEDeviceIDMap* pci_id_map;

Loading…
Cancel
Save