-rw-r--r-- | noncore/settings/aqpkg/ipkg.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/noncore/settings/aqpkg/ipkg.cpp b/noncore/settings/aqpkg/ipkg.cpp index 17efda9..dd9e78d 100644 --- a/noncore/settings/aqpkg/ipkg.cpp +++ b/noncore/settings/aqpkg/ipkg.cpp @@ -269,64 +269,66 @@ void Ipkg :: removeStatusEntry() writeFile.close(); // Remove old status file and put tmp stats file in its place remove( statusFile ); rename( outStatusFile, statusFile ); } int Ipkg :: executeIpkgLinkCommand( QStringList *cmd ) { // If one is already running - should never be but just to be safe if ( proc ) { delete proc; proc = 0; } // OK we're gonna use OProcess to run this thing proc = new OProcess(); aborted = false; // Connect up our slots connect(proc, SIGNAL(processExited(Opie::Core::OProcess*)), this, SLOT( linkProcessFinished())); connect(proc, SIGNAL(receivedStdout(Opie::Core::OProcess*,char*,int)), this, SLOT(linkCommandStdout(Opie::Core::OProcess*,char*,int))); *proc << *cmd; if(!proc->start(OProcess::NotifyOnExit, OProcess::All)) { emit outputText( tr("Couldn't start ipkg-link process" ) ); } + + return 0; } void Ipkg::linkProcessFinished() { // Report that the link process succeeded/failed if ( error ) emit outputText( tr("Symbolic linking failed!\n") ); else emit outputText( tr("Symbolic linking succeeded.\n") ); delete proc; proc = 0; finished = true; } void Ipkg::linkCommandStdout(OProcess*, char *buffer, int buflen) { QString lineStr = buffer; if ( lineStr[buflen-1] == '\n' ) buflen --; lineStr = lineStr.left( buflen ); emit outputText( lineStr ); if ( lineStr.find( " not found." ) != -1 ) { // Capture ipkg-link errors error = true; } buffer[0] = '\0'; } @@ -337,64 +339,66 @@ int Ipkg :: executeIpkgCommand( QStringList &cmd, const QString /*option*/ ) if ( proc ) { delete proc; proc = 0; } // OK we're gonna use OProcess to run this thing proc = new OProcess(); aborted = false; // Connect up our slots connect(proc, SIGNAL(processExited(Opie::Core::OProcess*)), this, SLOT( processFinished())); connect(proc, SIGNAL(receivedStdout(Opie::Core::OProcess*,char*,int)), this, SLOT(commandStdout(Opie::Core::OProcess*,char*,int))); connect(proc, SIGNAL(receivedStderr(Opie::Core::OProcess*,char*,int)), this, SLOT(commandStderr(Opie::Core::OProcess*,char*,int))); for ( QStringList::Iterator it = cmd.begin(); it != cmd.end(); ++it ) { *proc << (*it).latin1(); } // Start the process going finished = false; if(!proc->start(OProcess::NotifyOnExit, OProcess::All)) { emit outputText( tr("Couldn't start ipkg process" ) ); } + + return 0; } void Ipkg::commandStdout(OProcess*, char *buffer, int buflen) { QString lineStr = buffer; if ( lineStr[buflen-1] == '\n' ) buflen --; lineStr = lineStr.left( buflen ); emit outputText( lineStr ); // check if we are installing dependant packages if ( option == "install" || option == "reinstall" ) { // Need to keep track of any dependant packages that get installed // so that we can create links to them as necessary if ( lineStr.startsWith( "Installing " ) ) { int start = lineStr.find( " " ) + 1; int end = lineStr.find( " ", start ); QString *package = new QString( lineStr.mid( start, end-start ) ); dependantPackages->append( package ); } } else if ( option == "remove" && !( flags & FORCE_DEPENDS ) && lineStr.find( "is depended upon by packages:" ) != -1 ) { // Ipkg should send this to STDERR, but doesn't - so trap here error = true; } buffer[0] = '\0'; } @@ -408,64 +412,65 @@ void Ipkg::commandStderr(OProcess*, char *buffer, int buflen) emit outputText( lineStr ); buffer[0] = '\0'; error = true; } void Ipkg::processFinished() { // Finally, if we are removing a package, remove its entry from the <destdir>/usr/lib/ipkg/status file // to workaround an ipkg bug which stops reinstall to a different location if ( !error && option == "remove" ) removeStatusEntry(); delete proc; proc = 0; finished = true; emit ipkgFinished(); } void Ipkg :: abort() { if ( proc ) { proc->kill(); aborted = true; } } void Ipkg :: linkPackage( const QString &packFileName, const QString &dest, const QString &destDir ) { + Q_CONST_UNUSED( destDir ) if ( dest == "root" || dest == "/" ) return; if( option == "remove" || option == "reinstall" || option == "upgrade" ) { QStringList commands; if ( runtimeDir != "" ) { commands << "cd "; commands << runtimeDir; commands << ";"; } commands << "ipkg-link" << "remove" << packFileName; executeIpkgLinkCommand( &commands ); } if( option == "install" || option == "reinstall" || option == "upgrade" ) { QStringList commands; if ( runtimeDir != "" ) { commands << "cd "; commands << runtimeDir; commands << ";"; } commands << "ipkg-link" << "add" << packFileName; executeIpkgLinkCommand( &commands ); } /* qApp->processEvents(); QStringList *fileList = getList( packFileName, destDir ); |