summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/aqpkg/aqpkg.pro2
-rw-r--r--noncore/settings/aqpkg/ipkg.cpp103
-rw-r--r--noncore/settings/aqpkg/utils.cpp9
3 files changed, 52 insertions, 62 deletions
diff --git a/noncore/settings/aqpkg/aqpkg.pro b/noncore/settings/aqpkg/aqpkg.pro
index 882cfd4..a24f036 100644
--- a/noncore/settings/aqpkg/aqpkg.pro
+++ b/noncore/settings/aqpkg/aqpkg.pro
@@ -13,28 +13,28 @@ HEADERS = global.h \
server.h \
letterpushbutton.h \
inputdlg.h \
categoryfilterimpl.h
SOURCES = mainwin.cpp \
datamgr.cpp \
mem.cpp \
settingsimpl.cpp \
ipkg.cpp \
main.cpp \
packagewin.cpp \
package.cpp \
installdlgimpl.cpp \
instoptionsimpl.cpp \
destination.cpp \
utils.cpp \
server.cpp \
letterpushbutton.cpp \
inputdlg.cpp \
version.cpp \
categoryfilterimpl.cpp
TARGET = aqpkg
INCLUDEPATH += $(OPIEDIR)/include
DEPENDPATH += $(OPIEDIR)/include
-LIBS += -lqpe -lopie -lstdc++
+LIBS += -lqpe -lopie
include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/settings/aqpkg/ipkg.cpp b/noncore/settings/aqpkg/ipkg.cpp
index 43eaaae..2a9c576 100644
--- a/noncore/settings/aqpkg/ipkg.cpp
+++ b/noncore/settings/aqpkg/ipkg.cpp
@@ -6,62 +6,55 @@
           .>+-=
 _;:,     .>    :=|. This file is free software; you can
.> <`_,   >  .   <= redistribute it and/or modify it under
:`=1 )Y*s>-.--   : the terms of the GNU General Public
.="- .-=="i,     .._ License as published by the Free Software
 - .   .-<_>     .<> Foundation; either version 2 of the License,
     ._= =}       : or (at your option) any later version.
    .%`+i>       _;_.
    .i_,=:_.      -<s. This file is distributed in the hope that
     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
    : ..    .:,     . . . without even the implied warranty of
    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General
..}^=.=       =       ; Public License for more details.
++=   -.     .`     .:
 :     =  ...= . :.=- You should have received a copy of the GNU
 -.   .:....=;==+<; General Public License along with this file;
  -_. . .   )=.  = see the file COPYING. If not, write to the
    --        :-=` Free Software Foundation, Inc.,
59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
-#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 <qfile.h>
#include <qtextstream.h>
#include <opie/oprocess.h>
#include "utils.h"
#include "ipkg.h"
#include "global.h"
Ipkg :: Ipkg()
{
proc = 0;
}
Ipkg :: ~Ipkg()
{
}
// Option is what we are going to do - install, upgrade, download, reinstall
// 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)
@@ -182,126 +175,124 @@ void Ipkg :: createSymLinks()
delete dependantPackages;
emit outputText( tr("Finished") );
emit outputText( "" );
}
void Ipkg :: removeStatusEntry()
{
QString statusFile = destDir;
if ( statusFile.right( 1 ) != "/" )
statusFile.append( "/" );
statusFile.append( "usr/lib/ipkg/status" );
QString outStatusFile = statusFile;
outStatusFile.append( ".tmp" );
emit outputText( "" );
emit outputText( tr("Removing status entry...") );
QString tempstr = tr("status file - ");
tempstr.append( statusFile );
emit outputText( tempstr );
tempstr = tr("package - ");
tempstr.append( package );
emit outputText( tempstr );
- ifstream in( statusFile );
- ofstream out( outStatusFile );
- if ( !in.is_open() )
+ QFile readFile( statusFile );
+ QFile writeFile( outStatusFile );
+
+ if ( !readFile.open( IO_ReadOnly ) )
{
tempstr = tr("Couldn't open status file - ");
tempstr.append( statusFile );
emit outputText( tempstr );
return;
}
- if ( !out.is_open() )
+ if ( !writeFile.open( IO_WriteOnly ) )
{
tempstr = tr("Couldn't create tempory status file - ");
tempstr.append( outStatusFile );
emit outputText( tempstr );
return;
}
- char line[1001];
+ int i = 0;
+
+ QTextStream readStream( &readFile );
+ QTextStream writeStream( &writeFile );
+ QString line;
+
char k[21];
char v[1001];
QString key;
QString value;
- vector<QString> lines;
- int i = 0;
- do
+
+ while ( !readStream.atEnd() )
{
- in.getline( line, 1000 );
- if ( in.eof() )
- continue;
-
- k[0] = '\0';
- v[0] = '\0';
-
- sscanf( line, "%[^:]: %[^\n]", k, v );
- key = k;
- value = v;
- key = key.stripWhiteSpace();
- value = value.stripWhiteSpace();
- if ( key == "Package" && value == package )
+ //read new line
+ line = readStream.readLine();
+
+ if ( line.contains( ":", TRUE ) )
{
- // 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() != "" );
+ //grep key and value from line
+ k[0] = '\0';
+ v[0] = '\0';
+ sscanf( line, "%[^:]: %[^\n]", k, v );
+ key = k;
+ value = v;
+ key = key.stripWhiteSpace();
+ value = value.stripWhiteSpace();
+ } else {
+ key = "";
+ value = "";
}
- lines.push_back( QString( line ) );
- out << line << endl;
-
- // Improve UI responsiveness
- i++;
- if ( ( i % 50 ) == 0 )
- qApp->processEvents();
- } while ( !in.eof() );
+ if ( key == "Package" && value == package )
+ {
+ //skip lines from the deleted package
+ while ( ( !readStream.atEnd() ) && ( line.stripWhiteSpace() != "" ) )
+ {
+ line = readStream.readLine();
+ }
+ } else {
- // Write lines out
- vector<QString>::iterator it;
- for ( it = lines.begin() ; it != lines.end() ; ++it )
- {
- out << (const char *)(*it) << endl;
+ //write other lines into the tempfile
+ writeStream << line << "\n";
- // Improve UI responsiveness
- i++;
- if ( ( i % 50 ) == 0 )
- qApp->processEvents();
+ // Improve UI responsiveness
+ i++;
+ if ( ( i % 50 ) == 0 )
+ qApp->processEvents();
+ }
}
- in.close();
- out.close();
+ readFile.close();
+ writeFile.close();
// Remove old status file and put tmp stats file in its place
remove( statusFile );
rename( outStatusFile, statusFile );
-}
+ }
int Ipkg :: executeIpkgCommand( QStringList &cmd, const QString /*option*/ )
{
// 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(OProcess *)),
this, SLOT( processFinished()));
connect(proc, SIGNAL(receivedStdout(OProcess *, char *, int)),
this, SLOT(commandStdout(OProcess *, char *, int)));
connect(proc, SIGNAL(receivedStderr(OProcess *, char *, int)),
this, SLOT(commandStderr(OProcess *, char *, int)));
diff --git a/noncore/settings/aqpkg/utils.cpp b/noncore/settings/aqpkg/utils.cpp
index 00607dd..be02b3a 100644
--- a/noncore/settings/aqpkg/utils.cpp
+++ b/noncore/settings/aqpkg/utils.cpp
@@ -1,85 +1,84 @@
/*
                This file is part of the OPIE Project
-
+
=. Copyright (c) 2002 Andy Qua <andy.qua@blueyonder.co.uk>
             .=l. Dan Williams <drw@handhelds.org>
           .>+-=
 _;:,     .>    :=|. This file is free software; you can
.> <`_,   >  .   <= redistribute it and/or modify it under
:`=1 )Y*s>-.--   : the terms of the GNU General Public
.="- .-=="i,     .._ License as published by the Free Software
 - .   .-<_>     .<> Foundation; either version 2 of the License,
     ._= =}       : or (at your option) any later version.
    .%`+i>       _;_.
    .i_,=:_.      -<s. This file is distributed in the hope that
     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
    : ..    .:,     . . . without even the implied warranty of
    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General
..}^=.=       =       ; Public License for more details.
++=   -.     .`     .:
 :     =  ...= . :.=- You should have received a copy of the GNU
 -.   .:....=;==+<; General Public License along with this file;
  -_. . .   )=.  = see the file COPYING. If not, write to the
    --        :-=` Free Software Foundation, Inc.,
59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
-#include <stdio.h>
#include <sys/vfs.h>
-
+
#include "utils.h"
#include "global.h"
Utils :: Utils()
{
}
Utils :: ~Utils()
{
}
QString Utils :: getPathfromIpkFilename( const QString &file )
{
int p = file.findRev( "/" );
QString path = "";
if ( p != -1 )
path = file.left( p );
return path;
-
+
}
QString Utils :: getFilenameFromIpkFilename( const QString &file )
{
int p = file.findRev( "/" );
QString name = file;
if ( p != -1 )
name = name.mid( p + 1 );
-
+
return name;
}
QString Utils :: getPackageNameFromIpkFilename( const QString &file )
{
int p = file.findRev( "/" );
QString name = file;
if ( p != -1 )
name = name.mid( p + 1 );
p = name.find( "_" );
QString packageName = name.mid( 0, p );
return packageName;
}
QString Utils :: getPackageVersionFromIpkFilename( const QString &file )
{
int p = file.findRev( "/" );
QString name = file;
if ( p != -1 )
name = name.mid( p + 1 );
p = name.find( "_" ) + 1;
int p2 = name.find( "_", p );
QString version = name.mid( p, p2 - p );