-rw-r--r-- | core/symlinker/main.cpp | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/core/symlinker/main.cpp b/core/symlinker/main.cpp index 73d5166..6a04980 100644 --- a/core/symlinker/main.cpp +++ b/core/symlinker/main.cpp @@ -13,2 +13,3 @@ #include <mntent.h> +#include <errno.h> @@ -18,2 +19,3 @@ static void createSymlinks( const QString &location, const QString &package ) { + QFile inFile( location + "/usr/lib/ipkg/info/" + package + ".list" ); @@ -36,2 +38,8 @@ static void createSymlinks( const QString &location, const QString &package ) //qDebug( "Read: %s", s.ascii() ); + if (s.find(location,0,true) >= 0){ +// qDebug( "Found!" ); + s = s.replace(location,""); + } +// qDebug( "Read after: %s", s.ascii() ); + // for s, do link/mkdir. @@ -47,8 +55,18 @@ static void createSymlinks( const QString &location, const QString &package ) if ( !ffi.exists() || ffi.isSymLink() ) { - symlink( (location+s).ascii(), s.ascii() ); + 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() ); + system ( QString("mkdir -p ")+e.ascii() ); + if (symlink( (location+s).ascii(), s.ascii() ) != 0) + qDebug ("Big problem creating symlink and directory"); + } + } // qDebug ( "Created %s" ,s.ascii() ); out << s << "\n"; - } //else { - // qDebug( "%s exists already, not symlinked", s.ascii() ); -// } + } else { + qDebug( "%s exists already, not symlinked", s.ascii() ); + } } @@ -75,5 +93,5 @@ static void removeSymlinks( const QString &package ) //Confirm that it's still a symlink. - if ( ffi.isSymLink() ) + if ( ffi.isSymLink() ){ unlink( s.ascii() ); -// qDebug ( "Removed %s", s.ascii() ); +// qDebug ( "Removed %s", s.ascii() );} // else @@ -81,2 +99,3 @@ static void removeSymlinks( const QString &package ) } + } inFile.close(); |