[libcalamares] Fix file reading

- atEnd() doesn't behave as expected
- drop the textstream, not needed
- rename variables to be more descriptive
This commit is contained in:
Adriaan de Groot 2022-03-01 16:10:19 +01:00
parent 53c4bbe4e0
commit 2f782f18c4

View File

@ -128,26 +128,32 @@ QList< MtabInfo >
MtabInfo::fromMtabFilteredByPrefix( const QString& mountPrefix, const QString& mtabPath ) MtabInfo::fromMtabFilteredByPrefix( const QString& mountPrefix, const QString& mtabPath )
{ {
QFile f( mtabPath.isEmpty() ? "/etc/mtab" : mtabPath ); QFile f( mtabPath.isEmpty() ? "/etc/mtab" : mtabPath );
if ( !f.open( QIODevice::ReadOnly ) ) if ( !f.open( QIODevice::ReadOnly | QIODevice::Text ) )
{ {
return {}; return {};
} }
QTextStream in( &f );
QList< MtabInfo > l; QList< MtabInfo > l;
while ( !f.atEnd() ) // After opening, atEnd() is already true (!?) so try reading at least once
do
{ {
QStringList line = in.readLine().split( ' ', SplitSkipEmptyParts ); QString line = f.readLine();
if ( line.length() == 3 && !line[ 0 ].startsWith( '#' ) ) if ( line.isEmpty() || line.startsWith( '#' ) )
{
continue;
}
QStringList parts = line.split( ' ', SplitSkipEmptyParts );
if ( parts.length() == 3 && !parts[ 0 ].startsWith( '#' ) )
{ {
// Lines have format: <device> <mountpoint> <options>, so check // Lines have format: <device> <mountpoint> <options>, so check
// the mountpoint field. Everything starts with an empty string. // the mountpoint field. Everything starts with an empty string.
if ( line[ 1 ].startsWith( mountPrefix ) ) if ( parts[ 1 ].startsWith( mountPrefix ) )
{ {
l.append( { line[ 0 ], line[ 1 ] } ); l.append( { parts[ 0 ], parts[ 1 ] } );
} }
} }
} } while ( !f.atEnd() );
return l; return l;
} }