Diffstat (limited to 'noncore/settings/packagemanager/oipkg.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/settings/packagemanager/oipkg.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/noncore/settings/packagemanager/oipkg.cpp b/noncore/settings/packagemanager/oipkg.cpp index f2d7e39..e7e292e 100644 --- a/noncore/settings/packagemanager/oipkg.cpp +++ b/noncore/settings/packagemanager/oipkg.cpp | |||
@@ -354,24 +354,28 @@ OPackageList *OIpkg::installedPackages( const QString &destName, const QString & | |||
354 | if ( key == "Description" ) | 354 | if ( key == "Description" ) |
355 | { | 355 | { |
356 | line = t.readLine(); | 356 | line = t.readLine(); |
357 | while ( !line.isEmpty() && line.find( ':', 0 ) == -1 && !t.eof() ) | 357 | while ( !line.isEmpty() && line.find( ':', 0 ) == -1 && !t.eof() ) |
358 | line = t.readLine(); | 358 | line = t.readLine(); |
359 | } | 359 | } |
360 | else | 360 | else |
361 | line = t.readLine(); | 361 | line = t.readLine(); |
362 | } | 362 | } |
363 | 363 | ||
364 | f.close(); | 364 | f.close(); |
365 | 365 | ||
366 | // Make sure to add to list last entry | ||
367 | if ( !name.isNull() && status.contains( " installed" ) ) | ||
368 | pl->append( new OPackage( name, QString::null, version, QString::null, destName ) ); | ||
369 | |||
366 | return pl; | 370 | return pl; |
367 | } | 371 | } |
368 | 372 | ||
369 | OConfItem *OIpkg::findConfItem( OConfItem::Type type, const QString &name ) | 373 | OConfItem *OIpkg::findConfItem( OConfItem::Type type, const QString &name ) |
370 | { | 374 | { |
371 | // Find configuration item in list | 375 | // Find configuration item in list |
372 | OConfItemListIterator configIt( *m_confInfo ); | 376 | OConfItemListIterator configIt( *m_confInfo ); |
373 | OConfItem *config = 0l; | 377 | OConfItem *config = 0l; |
374 | for ( ; configIt.current(); ++configIt ) | 378 | for ( ; configIt.current(); ++configIt ) |
375 | { | 379 | { |
376 | config = configIt.current(); | 380 | config = configIt.current(); |
377 | if ( config->type() == type && config->name() == name ) | 381 | if ( config->type() == type && config->name() == name ) |
@@ -444,25 +448,25 @@ bool OIpkg::executeCommand( OPackage::Command command, const QStringList ¶me | |||
444 | { | 448 | { |
445 | ipkg_packages_install( &m_ipkgArgs, (*it) ); | 449 | ipkg_packages_install( &m_ipkgArgs, (*it) ); |
446 | } | 450 | } |
447 | if ( destination != "root" ) | 451 | if ( destination != "root" ) |
448 | linkPackageDir( destination ); | 452 | linkPackageDir( destination ); |
449 | }; | 453 | }; |
450 | break; | 454 | break; |
451 | case OPackage::Remove : { | 455 | case OPackage::Remove : { |
452 | connect( this, SIGNAL(signalIpkgMessage(const QString &)), receiver, slotOutput ); | 456 | connect( this, SIGNAL(signalIpkgMessage(const QString &)), receiver, slotOutput ); |
453 | 457 | ||
454 | // Get list of destinations for unlinking of packages not installed to root | 458 | // Get list of destinations for unlinking of packages not installed to root |
455 | OConfItemList *destList = destinations(); | 459 | OConfItemList *destList = destinations(); |
456 | 460 | ||
457 | for ( QStringList::ConstIterator it = parameters.begin(); it != parameters.end(); ++it ) | 461 | for ( QStringList::ConstIterator it = parameters.begin(); it != parameters.end(); ++it ) |
458 | { | 462 | { |
459 | unlinkPackage( (*it), destList ); | 463 | unlinkPackage( (*it), destList ); |
460 | ipkg_packages_remove( &m_ipkgArgs, (*it), true ); | 464 | ipkg_packages_remove( &m_ipkgArgs, (*it), true ); |
461 | } | 465 | } |
462 | 466 | ||
463 | delete destList; | 467 | delete destList; |
464 | }; | 468 | }; |
465 | break; | 469 | break; |
466 | case OPackage::Download : { | 470 | case OPackage::Download : { |
467 | connect( this, SIGNAL(signalIpkgMessage(const QString &)), receiver, slotOutput ); | 471 | connect( this, SIGNAL(signalIpkgMessage(const QString &)), receiver, slotOutput ); |
468 | for ( QStringList::ConstIterator it = parameters.begin(); it != parameters.end(); ++it ) | 472 | for ( QStringList::ConstIterator it = parameters.begin(); it != parameters.end(); ++it ) |
@@ -636,25 +640,25 @@ const QString &OIpkg::rootPath() | |||
636 | : m_rootPath = '/'; | 640 | : m_rootPath = '/'; |
637 | if ( m_rootPath.right( 1 ) == '/' ) | 641 | if ( m_rootPath.right( 1 ) == '/' ) |
638 | m_rootPath.truncate( m_rootPath.length() - 1 ); | 642 | m_rootPath.truncate( m_rootPath.length() - 1 ); |
639 | } | 643 | } |
640 | return m_rootPath; | 644 | return m_rootPath; |
641 | } | 645 | } |
642 | 646 | ||
643 | void OIpkg::linkPackageDir( const QString &dest ) | 647 | void OIpkg::linkPackageDir( const QString &dest ) |
644 | { | 648 | { |
645 | if ( !dest.isNull() ) | 649 | if ( !dest.isNull() ) |
646 | { | 650 | { |
647 | OConfItem *destConfItem = findConfItem( OConfItem::Destination, dest ); | 651 | OConfItem *destConfItem = findConfItem( OConfItem::Destination, dest ); |
648 | 652 | ||
649 | emit signalIpkgMessage( tr( "Linking packages installed in: %1" ).arg( dest ) ); | 653 | emit signalIpkgMessage( tr( "Linking packages installed in: %1" ).arg( dest ) ); |
650 | 654 | ||
651 | // Set package destination directory | 655 | // Set package destination directory |
652 | QString destDir = destConfItem->value(); | 656 | QString destDir = destConfItem->value(); |
653 | QString destInfoDir = destDir; | 657 | QString destInfoDir = destDir; |
654 | if ( destInfoDir.right( 1 ) != '/' ) | 658 | if ( destInfoDir.right( 1 ) != '/' ) |
655 | destInfoDir.append( '/' ); | 659 | destInfoDir.append( '/' ); |
656 | destInfoDir.append( IPKG_INFO_PATH ); | 660 | destInfoDir.append( IPKG_INFO_PATH ); |
657 | 661 | ||
658 | // Get list of installed packages in destination | 662 | // Get list of installed packages in destination |
659 | QDir packageDir( destInfoDir ); | 663 | QDir packageDir( destInfoDir ); |
660 | QStringList packageFiles; | 664 | QStringList packageFiles; |
@@ -680,25 +684,25 @@ void OIpkg::linkPackageDir( const QString &dest ) | |||
680 | QString linkFile; | 684 | QString linkFile; |
681 | while ( !t.eof() ) | 685 | while ( !t.eof() ) |
682 | { | 686 | { |
683 | // Get the name of the file to link and build the sym link filename | 687 | // Get the name of the file to link and build the sym link filename |
684 | linkFile = t.readLine(); | 688 | linkFile = t.readLine(); |
685 | QString linkDest( linkFile.right( linkFile.length() - destDir.length() ) ); | 689 | QString linkDest( linkFile.right( linkFile.length() - destDir.length() ) ); |
686 | linkDest.prepend( rootPath() ); | 690 | linkDest.prepend( rootPath() ); |
687 | 691 | ||
688 | // If file installed file is actually symbolic link, use actual file for linking | 692 | // If file installed file is actually symbolic link, use actual file for linking |
689 | QFileInfo fileInfo( linkFile ); | 693 | QFileInfo fileInfo( linkFile ); |
690 | if ( fileInfo.isSymLink() && !fileInfo.readLink().isEmpty() ) | 694 | if ( fileInfo.isSymLink() && !fileInfo.readLink().isEmpty() ) |
691 | linkFile = fileInfo.readLink(); | 695 | linkFile = fileInfo.readLink(); |
692 | 696 | ||
693 | // See if directory exists in 'root', if not, create | 697 | // See if directory exists in 'root', if not, create |
694 | fileInfo.setFile( linkDest ); | 698 | fileInfo.setFile( linkDest ); |
695 | QString linkDestDirName = fileInfo.dirPath( true ); | 699 | QString linkDestDirName = fileInfo.dirPath( true ); |
696 | QDir linkDestDir( linkDestDirName ); | 700 | QDir linkDestDir( linkDestDirName ); |
697 | if ( !linkDestDir.exists() ) | 701 | if ( !linkDestDir.exists() ) |
698 | { | 702 | { |
699 | linkDestDir.mkdir( linkDestDirName ); | 703 | linkDestDir.mkdir( linkDestDirName ); |
700 | } | 704 | } |
701 | else | 705 | else |
702 | { | 706 | { |
703 | // Remove any previous link to make sure we will be pointing to the current version | 707 | // Remove any previous link to make sure we will be pointing to the current version |
704 | if ( QFile::exists( linkDest ) ) | 708 | if ( QFile::exists( linkDest ) ) |
@@ -724,25 +728,25 @@ void OIpkg::unlinkPackage( const QString &package, OConfItemList *destList ) | |||
724 | { | 728 | { |
725 | // Find destination package is installed in | 729 | // Find destination package is installed in |
726 | if ( destList ) | 730 | if ( destList ) |
727 | { | 731 | { |
728 | OConfItemListIterator it( *destList ); | 732 | OConfItemListIterator it( *destList ); |
729 | for ( ; it.current(); ++it ) | 733 | for ( ; it.current(); ++it ) |
730 | { | 734 | { |
731 | OConfItem *dest = it.current(); | 735 | OConfItem *dest = it.current(); |
732 | QString destInfoFileName = QString( "%1/%2/%3.list" ).arg( dest->value() ) | 736 | QString destInfoFileName = QString( "%1/%2/%3.list" ).arg( dest->value() ) |
733 | .arg( IPKG_INFO_PATH ) | 737 | .arg( IPKG_INFO_PATH ) |
734 | .arg( package ); | 738 | .arg( package ); |
735 | //emit signalIpkgMessage( QString( "Looking for '%1'" ).arg ( destInfoFileName ) ); | 739 | //emit signalIpkgMessage( QString( "Looking for '%1'" ).arg ( destInfoFileName ) ); |
736 | 740 | ||
737 | // If found and destination is not 'root', remove symbolic links | 741 | // If found and destination is not 'root', remove symbolic links |
738 | if ( QFile::exists( destInfoFileName ) && dest->name() != "root" ) | 742 | if ( QFile::exists( destInfoFileName ) && dest->name() != "root" ) |
739 | { | 743 | { |
740 | QFile destInfoFile( destInfoFileName ); | 744 | QFile destInfoFile( destInfoFileName ); |
741 | if ( destInfoFile.open( IO_ReadOnly ) ) | 745 | if ( destInfoFile.open( IO_ReadOnly ) ) |
742 | { | 746 | { |
743 | QTextStream t( &destInfoFile ); | 747 | QTextStream t( &destInfoFile ); |
744 | QString linkFile; | 748 | QString linkFile; |
745 | while ( !t.eof() ) | 749 | while ( !t.eof() ) |
746 | { | 750 | { |
747 | // Get the name of the file to link and build the sym link filename | 751 | // Get the name of the file to link and build the sym link filename |
748 | linkFile = t.readLine(); | 752 | linkFile = t.readLine(); |