[partition] Strip extra file after the at sign

- os-proper may return an extra file after the device:
  /dev/sda1:Ubuntu 19.10 (19.10):Ubuntu:linux
  /dev/sdb1@/EFI/Microsoft/Boot/bootmgfw.efi:Windows Boot Manager:Windows:efi
main
Gaël PORTAY 5 years ago
parent 9486ee6fbf
commit 2b1e516ec1

@ -41,6 +41,7 @@ struct OsproberEntry
{ {
QString prettyName; QString prettyName;
QString path; QString path;
QString file;
QString uuid; QString uuid;
bool canBeResized; bool canBeResized;
QStringList line; QStringList line;

@ -393,17 +393,25 @@ runOsprober( DeviceModel* dm )
prettyName = lineColumns.value( 2 ).simplified(); prettyName = lineColumns.value( 2 ).simplified();
} }
QString path = lineColumns.value( 0 ).simplified(); QString file, path = lineColumns.value( 0 ).simplified();
if ( !path.startsWith( "/dev/" ) ) //basic sanity check if ( !path.startsWith( "/dev/" ) ) //basic sanity check
{ {
continue; continue;
} }
// strip extra file after device: /dev/name@/path/to/file
int index = path.indexOf( '@' );
if ( index != -1 )
{
file = path.right( path.length() - index - 1 );
path = path.left( index );
}
FstabEntryList fstabEntries = lookForFstabEntries( path ); FstabEntryList fstabEntries = lookForFstabEntries( path );
QString homePath = findPartitionPathForMountPoint( fstabEntries, "/home" ); QString homePath = findPartitionPathForMountPoint( fstabEntries, "/home" );
osproberEntries.append( osproberEntries.append(
{ prettyName, path, QString(), canBeResized( dm, path ), lineColumns, fstabEntries, homePath } ); { prettyName, path, file, QString(), canBeResized( dm, path ), lineColumns, fstabEntries, homePath } );
osproberCleanLines.append( line ); osproberCleanLines.append( line );
} }
} }

@ -177,7 +177,7 @@ ReplaceWidget::onPartitionSelected()
QString fsNameForUser = userVisibleFS( partition->fileSystem() ); QString fsNameForUser = userVisibleFS( partition->fileSystem() );
QString prettyName = tr( "Data partition (%1)" ).arg( fsNameForUser ); QString prettyName = tr( "Data partition (%1)" ).arg( fsNameForUser );
for ( const QString& line : osproberLines ) for ( const auto& line : osproberLines )
{ {
QStringList lineColumns = line.split( ':' ); QStringList lineColumns = line.split( ':' );

Loading…
Cancel
Save