summaryrefslogtreecommitdiff
authorandyq <andyq>2002-11-22 16:10:58 (UTC)
committer andyq <andyq>2002-11-22 16:10:58 (UTC)
commit8366956992e07a9fc77b9e126bb429b32fd4ad9a (patch) (side-by-side diff)
treec116bdc96674e6722bcb6c4201f90fdbdfc9699a
parent671116dfa34eef557060487324c9176bdb7da38e (diff)
downloadopie-8366956992e07a9fc77b9e126bb429b32fd4ad9a.zip
opie-8366956992e07a9fc77b9e126bb429b32fd4ad9a.tar.gz
opie-8366956992e07a9fc77b9e126bb429b32fd4ad9a.tar.bz2
added verbose_wget flag (doesn't work properly yet) and
made status file updating quicker
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/aqpkg/ipkg.cpp19
-rw-r--r--noncore/settings/aqpkg/ipkg.h1
2 files changed, 17 insertions, 3 deletions
diff --git a/noncore/settings/aqpkg/ipkg.cpp b/noncore/settings/aqpkg/ipkg.cpp
index 8de3c48..dad34b0 100644
--- a/noncore/settings/aqpkg/ipkg.cpp
+++ b/noncore/settings/aqpkg/ipkg.cpp
@@ -8,24 +8,25 @@
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include <fstream>
#include <iostream>
+#include <vector>
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>
@@ -72,24 +73,26 @@ bool Ipkg :: runIpkg( )
if ( option != "update" && option != "download" )
{
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";
+ if ( flags & VERBOSE_WGET )
+ cmd += " -verbose_wget";
// 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;
}
}
@@ -180,41 +183,42 @@ void Ipkg :: removeStatusEntry()
if ( statusFile.right( 1 ) != "/" )
statusFile += "/";
statusFile += "usr/lib/ipkg/status";
QString outStatusFile = statusFile + ".tmp";
emit outputText( "" );
emit outputText( "Removing status entry..." );
emit outputText( QString( "status file - " )+ statusFile );
emit outputText( QString( "package - " )+ package );
ifstream in( statusFile );
ofstream out( outStatusFile );
- if ( !in.is_open() )
+ if ( !in.is_open() )
{
emit outputText( QString( "Couldn't open status file - " )+ statusFile );
return;
}
if ( !out.is_open() )
{
emit outputText( QString( "Couldn't create tempory status file - " )+ outStatusFile );
return;
}
char line[1001];
char k[21];
char v[1001];
QString key;
QString value;
+ vector<QString> lines;
do
{
in.getline( line, 1000 );
if ( in.eof() )
continue;
k[0] = '\0';
v[0] = '\0';
sscanf( line, "%[^:]: %[^\n]", k, v );
key = k;
value = v;
@@ -222,27 +226,36 @@ void Ipkg :: removeStatusEntry()
value = value.stripWhiteSpace();
if ( key == "Package" && value == package )
{
// Ignore all lines up to next empty
do
{
in.getline( line, 1000 );
if ( in.eof() || QString( line ).stripWhiteSpace() == "" )
continue;
} while ( !in.eof() && QString( line ).stripWhiteSpace() != "" );
}
- out << line << endl;
+ lines.push_back( QString( line ) );
+// out << line << endl;
} while ( !in.eof() );
+ // Write lines out
+ vector<QString>::iterator it;
+ for ( it = lines.begin() ; it != lines.end() ; ++it )
+ {
+ cout << "Writing " << (const char *)(*it) << endl;
+ out << (const char *)(*it) << endl;
+ }
+
in.close();
out.close();
// Remove old status file and put tmp stats file in its place
remove( statusFile );
rename( outStatusFile, statusFile );
}
int Ipkg :: executeIpkgCommand( QString &cmd, const QString option )
{
FILE *fp = NULL;
@@ -397,25 +410,25 @@ void Ipkg :: processLinkDir( const QString &file, const QString &destDir, const
// If this file is a directory (ends with a /) and it doesn't exist,
// we need to create it
if ( file.right(1) == "/" )
{
QFileInfo f( linkFile );
if ( !f.exists() )
{
emit outputText( QString( "Creating directory " ) + linkFile );
QDir d;
d.mkdir( linkFile, true );
}
else
- emit outputText( QString( "Directory " ) + linkFile + " exists" );
+ emit outputText( QString( "Directory " ) + linkFile + " already exists" );
}
else
{
int rc = symlink( sourceFile, linkFile );
text = (rc == 0 ? "Linked " : "Failed to link ");
text += sourceFile + " to " + linkFile;
emit outputText( text );
}
}
else
{
diff --git a/noncore/settings/aqpkg/ipkg.h b/noncore/settings/aqpkg/ipkg.h
index 55e9ff4..7099ca7 100644
--- a/noncore/settings/aqpkg/ipkg.h
+++ b/noncore/settings/aqpkg/ipkg.h
@@ -23,24 +23,25 @@
*@author Andy Qua
*/
#include <qobject.h>
#include <qstring.h>
#include <qlist.h>
#define FORCE_DEPENDS 0x0001
#define FORCE_REMOVE 0x0002
#define FORCE_REINSTALL 0x0004
#define FORCE_OVERWRITE 0x0008
#define MAKE_LINKS 0x0010
+#define VERBOSE_WGET 0x0020
class Ipkg : public QObject
{
Q_OBJECT
public:
Ipkg();
~Ipkg();
bool runIpkg( );
void setOption( const char *opt ) { option = opt; }
void setPackage( const char *pkg ) { package = pkg; }
void setDestination( const char *dest ) { destination = dest; }