-rw-r--r-- | core/symlinker/main.cpp | 34 | ||||
-rw-r--r-- | core/symlinker/symlinker.pro | 2 |
2 files changed, 21 insertions, 15 deletions
diff --git a/core/symlinker/main.cpp b/core/symlinker/main.cpp index 6a04980..96e7f3c 100644 --- a/core/symlinker/main.cpp +++ b/core/symlinker/main.cpp @@ -1,110 +1,116 @@ + +/* OPIE */ +#include <opie2/odebug.h> + +/* QT */ #include <qapplication.h> #include <qfile.h> #include <qfileinfo.h> #include <qdir.h> #include <qtextstream.h> #include <qstringlist.h> +/* STD */ #include <stdlib.h> #include <unistd.h> //symlink() #include <sys/stat.h> // mkdir() #include <sys/vfs.h> #include <mntent.h> #include <errno.h> static const char *listDir = "/usr/lib/ipkg/externinfo/"; static void createSymlinks( const QString &location, const QString &package ) { QFile inFile( location + "/usr/lib/ipkg/info/" + package + ".list" ); mkdir( "/usr/lib/ipkg", 0777 ); mkdir( listDir, 0777 ); QFile outFile( listDir + package + ".list"); -// qDebug( "createSymlinks %s -> %s", inFile.name().ascii(), outFile.name().ascii() ); +// odebug << "createSymlinks " << inFile.name().ascii() << " -> " << outFile.name().ascii() << "" << oendl; if ( inFile.open(IO_ReadOnly) && outFile.open(IO_WriteOnly)) { QTextStream in(&inFile); QTextStream out(&outFile); QString s; while ( !in.eof() ) { // until end of file... s = in.readLine(); // line of text excluding '\n' -// qDebug( "Read: %s", s.ascii() ); +// odebug << "Read: " << s.ascii() << "" << oendl; if (s.find(location,0,true) >= 0){ -// qDebug( "Found!" ); +// odebug << "Found!" << oendl; s = s.replace(location,""); } -// qDebug( "Read after: %s", s.ascii() ); +// odebug << "Read after: " << s.ascii() << "" << oendl; // for s, do link/mkdir. if ( s.right(1) == "/" ) { -// qDebug("do mkdir for %s", s.ascii()); +// odebug << "do mkdir for " << s.ascii() << "" << oendl; mkdir( s.ascii(), 0777 ); //possible optimization: symlink directories //that don't exist already. -- Risky. } else { -// qDebug("do symlink for %s", s.ascii()); +// odebug << "do symlink for " << s.ascii() << "" << oendl; QFileInfo ffi( s ); //Don't try to symlink if a regular file exists already if ( !ffi.exists() || ffi.isSymLink() ) { if (symlink( (location+s).ascii(), s.ascii() ) != 0){ if (errno == ENOENT){ // perror("Symlink Failed! "); QString e=s.ascii(); e = e.replace(ffi.fileName(),""); -// qDebug("DirName : %s",e.ascii() ); +// odebug << "DirName : " << e.ascii() << "" << oendl; system ( QString("mkdir -p ")+e.ascii() ); if (symlink( (location+s).ascii(), s.ascii() ) != 0) - qDebug ("Big problem creating symlink and directory"); + odebug << "Big problem creating symlink and directory" << oendl; } } // qDebug ( "Created %s" ,s.ascii() ); out << s << "\n"; } else { - qDebug( "%s exists already, not symlinked", s.ascii() ); + odebug << "" << s.ascii() << " exists already, not symlinked" << oendl; } } } inFile.close(); outFile.close(); } } static void removeSymlinks( const QString &package ) { QFile inFile( listDir + package + ".list" ); if ( inFile.open(IO_ReadOnly) ) { QTextStream in(&inFile); QString s; while ( !in.eof() ) { // until end of file... s = in.readLine(); // line of text excluding '\n' -// qDebug("remove symlink %s", s.ascii()); +// odebug << "remove symlink " << s.ascii() << "" << oendl; QFileInfo ffi( s ); //Confirm that it's still a symlink. if ( ffi.isSymLink() ){ unlink( s.ascii() ); // qDebug ( "Removed %s", s.ascii() );} // else -// qDebug( "Not removed %s", s.ascii() ); +// odebug << "Not removed " << s.ascii() << "" << oendl; } } inFile.close(); inFile.remove(); } } /* Slightly hacky: we can't use StorageInfo, since we don't have a QApplication. We look for filesystems that have the directory @@ -122,33 +128,33 @@ static void updateSymlinks() struct mntent *me; FILE *mntfp = setmntent( "/etc/mtab", "r" ); if ( mntfp ) { while ( (me = getmntent( mntfp )) != 0 ) { QString root = me->mnt_dir; if ( root == "/" ) continue; QString info = root + "/usr/lib/ipkg/info"; QDir infoDir( info ); -// qDebug( "looking at %s", info.ascii() ); +// odebug << "looking at " << info.ascii() << "" << oendl; if ( infoDir.isReadable() ) { const QFileInfoList *packages = infoDir.entryInfoList( "*.list" ); // No tr QFileInfoListIterator it( *packages ); QFileInfo *fi; while (( fi = *it )) { ++it; if ( knownPackages.contains( fi->fileName() ) ) { -// qDebug( "found %s and we've seen it before", fi->fileName().latin1() ); +// odebug << "found " << fi->fileName() << " and we've seen it before" << oendl; knownPackages.remove( fi->fileName() ); } else { //it's a new one createSymlinks( root, fi->baseName() ); } } } } endmntent( mntfp ); } @@ -166,14 +172,14 @@ int main( int argc, char *argv[] ) { QApplication a( argc, argv, QApplication::Tty ); QString command = argc > 1 ? argv[1] : "update"; // No tr if ( command == "update" ) // No tr updateSymlinks(); else if ( command == "create" && argc > 3 ) // No tr createSymlinks( argv[2], argv[3] ); else if ( command == "remove" && argc > 2 ) // No tr removeSymlinks( argv[2] ); else - qWarning( "Argument error" ); + owarn << "Argument error" << oendl; } diff --git a/core/symlinker/symlinker.pro b/core/symlinker/symlinker.pro index f850d46..50ad785 100644 --- a/core/symlinker/symlinker.pro +++ b/core/symlinker/symlinker.pro @@ -1,15 +1,15 @@ TEMPLATE = app CONFIG += qt warn_on DESTDIR = $(OPIEDIR)/bin HEADERS = SOURCES = main.cpp INTERFACES = TARGET = opie-update-symlinks INCLUDEPATH += $(OPIEDIR)/include DEPENDPATH += $(OPIEDIR)/include . -LIBS += -lqpe +LIBS += -lqpe -lopiecore2 include ( $(OPIEDIR)/include.pro ) |