author | ar <ar> | 2003-12-10 21:29:36 (UTC) |
---|---|---|
committer | ar <ar> | 2003-12-10 21:29:36 (UTC) |
commit | 6dffa571b5bfdd3e353fdabb555a805c2999ef0f (patch) (side-by-side diff) | |
tree | b57902c4087e3a0035d07f8aa75c9d541b51307b | |
parent | f8254fecc4f76de574ebca05d4a6c91e543ff58c (diff) | |
download | opie-6dffa571b5bfdd3e353fdabb555a805c2999ef0f.zip opie-6dffa571b5bfdd3e353fdabb555a805c2999ef0f.tar.gz opie-6dffa571b5bfdd3e353fdabb555a805c2999ef0f.tar.bz2 |
remove STL dependencies
-rw-r--r-- | noncore/settings/aqpkg/aqpkg.pro | 2 | ||||
-rw-r--r-- | noncore/settings/aqpkg/ipkg.cpp | 103 | ||||
-rw-r--r-- | noncore/settings/aqpkg/utils.cpp | 9 |
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 @@ -1,40 +1,40 @@ CONFIG = qt warn_on release quick-app HEADERS = global.h \ mainwin.h \ datamgr.h \ settingsimpl.h \ ipkg.h \ packagewin.h \ package.h \ installdlgimpl.h \ instoptionsimpl.h \ destination.h \ utils.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 @@ -1,91 +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 <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) // flags is the ipkg options flags // dir is the directory to run ipkg in (defaults to "") void Ipkg :: runIpkg() { error = false; QStringList commands; QDir::setCurrent( "/tmp" ); if ( runtimeDir != "" ) { commands << "cd "; commands << runtimeDir; commands << ";"; } commands << "ipkg" << "-V" << QString::number( infoLevel ) << "-force-defaults"; // only set the destination for an install operation if ( option == "install" ) commands << "-dest" << destination; if ( option != "update" && option != "download" ) { @@ -158,174 +151,172 @@ void Ipkg :: createSymLinks() { // 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( tr( "Creating symbolic links for %1." ).arg( 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() ) { if ( *pkg == package ) continue; emit outputText( " " ); emit outputText( tr( "Creating symbolic links for %1" ).arg( *pkg ) ); linkPackage( Utils::getPackageNameFromIpkFilename( *pkg ), destination, destDir ); } } } 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))); 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" ) ); } } 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" ) 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,105 +1,104 @@ /* 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 ); return version; } bool Utils :: getStorageSpace( const char *path, long *blockSize, long *totalBlocks, long *availBlocks ) { bool ret = false; struct statfs fs; if ( !statfs( path, &fs ) ) { *blockSize = fs.f_bsize; *totalBlocks = fs.f_blocks; *availBlocks = fs.f_bavail; ret = true; } return ret; } |