summaryrefslogtreecommitdiff
authorandyq <andyq>2002-10-16 18:54:05 (UTC)
committer andyq <andyq>2002-10-16 18:54:05 (UTC)
commit63d3299669d5147e16c56b016b0ee3cca2127a75 (patch) (side-by-side diff)
tree7663e1822b6898791ae97a18b0355cf84bda4d36
parent3cb6b6fab8d06b1be8f8c39560db9d3d88ce3921 (diff)
downloadopie-63d3299669d5147e16c56b016b0ee3cca2127a75.zip
opie-63d3299669d5147e16c56b016b0ee3cca2127a75.tar.gz
opie-63d3299669d5147e16c56b016b0ee3cca2127a75.tar.bz2
Added ability to upgrade all packages
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/aqpkg/ipkg.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/noncore/settings/aqpkg/ipkg.cpp b/noncore/settings/aqpkg/ipkg.cpp
index d5157eb..f8513e4 100644
--- a/noncore/settings/aqpkg/ipkg.cpp
+++ b/noncore/settings/aqpkg/ipkg.cpp
@@ -20,149 +20,153 @@ using namespace std;
#include <stdio.h>
#include <unistd.h>
#ifdef QWS
#include <qpe/qpeapplication.h>
#else
#include <qapplication.h>
#endif
#include <qdir.h>
#include <qtextstream.h>
#include "utils.h"
#include "ipkg.h"
#include "global.h"
Ipkg :: Ipkg()
{
}
Ipkg :: ~Ipkg()
{
}
// Option is what we are going to do - install, upgrade, download
// package is the package name to install - either a fully qualified path and ipk
// file (if stored locally) or just the name of the package (for a network package)
// packageName is the package name - (for a network package this will be the same as
// package parameter)
// dest is the destination alias (from ipk.conf)
// destDir is the dir that the destination alias points to (used to link to root)
// flags is the ipkg options flags
// dir is the directory to run ipkg in (defaults to "")
bool Ipkg :: runIpkg( )
{
bool ret = false;
QDir::setCurrent( "/tmp" );
QString cmd = "";
if ( runtimeDir != "" )
{
cmd += "cd ";
cmd += runtimeDir;
cmd += " ; ";
}
cmd += "ipkg";
- if ( option != "update" && option != "download" )
+ if ( option != "update" && option != "download" && option != "upgrade" )
{
cmd += " -dest "+ destination;
cmd += " -force-defaults";
if ( flags & FORCE_DEPENDS )
cmd += " -force-depends";
if ( flags & FORCE_REINSTALL )
cmd += " -force-reinstall";
if ( flags & FORCE_REMOVE )
cmd += " -force-removal-of-essential-packages";
if ( flags & FORCE_OVERWRITE )
cmd += " -force-overwrite";
// Handle make links
// Rules - If make links is switched on, create links to root
// if destDir is NOT /
if ( flags & MAKE_LINKS )
{
// If destDir == / turn off make links as package is being insalled
// to root already.
if ( destDir == "/" )
flags ^= MAKE_LINKS;
}
}
#ifdef X86
cmd += " -f ";
cmd += IPKG_CONF;
#endif
- cmd += " " + option + " " + package + " 2>&1";
+ cmd += " " + option;
+ if ( option != "upgrade" )
+ cmd += " " + package;
+ cmd += " 2>&1";
qApp->processEvents();
// If we are removing packages and make links option is selected
// create the links
if ( option == "remove" )
{
createLinks = false;
if ( flags & MAKE_LINKS )
{
emit outputText( QString( "Removing symbolic links...\n" ) );
linkPackage( Utils::getPackageNameFromIpkFilename( package ), destination, destDir );
}
}
emit outputText( cmd );
// Execute command
dependantPackages = new QList<QString>;
dependantPackages->setAutoDelete( true );
+
ret = executeIpkgCommand( cmd, option );
if ( option == "install" )
{
// If we are not removing packages and make links option is selected
// create the links
createLinks = true;
if ( flags & MAKE_LINKS )
{
emit outputText( " " );
emit outputText( QString( "Creating symbolic links for " )+ package );
linkPackage( Utils::getPackageNameFromIpkFilename( package ), destination, destDir );
// link dependant packages that were installed with this release
QString *pkg;
for ( pkg = dependantPackages->first(); pkg != 0; pkg = dependantPackages->next() )
{
emit outputText( " " );
emit outputText( QString( "Creating symbolic links for " )+ (*pkg) );
linkPackage( Utils::getPackageNameFromIpkFilename( *pkg ), destination, destDir );
}
}
}
delete dependantPackages;
emit outputText( QString( "Finished - status=" ) + (ret ? "success" : "failure") );
return ret;
}
int Ipkg :: executeIpkgCommand( QString &cmd, const QString option )
{
FILE *fp = NULL;
char line[130];
QString lineStr, lineStrOld;
int ret = false;
fp = popen( (const char *) cmd, "r");
if ( fp == NULL )
{
cout << "Couldn't execute " << cmd << "! err = " << fp << endl;
QString text;
text.sprintf( "Couldn't execute %s! See stdout for error code", (const char *)cmd );
emit outputText( text );
}
else