summaryrefslogtreecommitdiff
path: root/core/symlinker/main.cpp
Unidiff
Diffstat (limited to 'core/symlinker/main.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/symlinker/main.cpp47
1 files changed, 33 insertions, 14 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 @@
13#include <mntent.h> 13#include <mntent.h>
14#include <errno.h>
14 15
@@ -18,2 +19,3 @@ static void createSymlinks( const QString &location, const QString &package )
18{ 19{
20
19 QFile inFile( location + "/usr/lib/ipkg/info/" + package + ".list" ); 21 QFile inFile( location + "/usr/lib/ipkg/info/" + package + ".list" );
@@ -24,3 +26,3 @@ static void createSymlinks( const QString &location, const QString &package )
24 26
25 //qDebug( "createSymlinks %s -> %s", inFile.name().ascii(), outFile.name().ascii() ); 27// qDebug( "createSymlinks %s -> %s", inFile.name().ascii(), outFile.name().ascii() );
26 28
@@ -35,6 +37,12 @@ static void createSymlinks( const QString &location, const QString &package )
35 s = in.readLine(); // line of text excluding '\n' 37 s = in.readLine(); // line of text excluding '\n'
36 //qDebug( "Read: %s", s.ascii() ); 38 // qDebug( "Read: %s", s.ascii() );
39 if (s.find(location,0,true) >= 0){
40 // qDebug( "Found!" );
41 s = s.replace(location,"");
42 }
43 // qDebug( "Read after: %s", s.ascii() );
44
37 // for s, do link/mkdir. 45 // for s, do link/mkdir.
38 if ( s.right(1) == "/" ) { 46 if ( s.right(1) == "/" ) {
39 //qDebug("do mkdir for %s", s.ascii()); 47 // qDebug("do mkdir for %s", s.ascii());
40 mkdir( s.ascii(), 0777 ); 48 mkdir( s.ascii(), 0777 );
@@ -43,3 +51,3 @@ static void createSymlinks( const QString &location, const QString &package )
43 } else { 51 } else {
44 //qDebug("do symlink for %s", s.ascii()); 52 // qDebug("do symlink for %s", s.ascii());
45 QFileInfo ffi( s ); 53 QFileInfo ffi( s );
@@ -47,8 +55,18 @@ static void createSymlinks( const QString &location, const QString &package )
47 if ( !ffi.exists() || ffi.isSymLink() ) { 55 if ( !ffi.exists() || ffi.isSymLink() ) {
48 symlink( (location+s).ascii(), s.ascii() ); 56 if (symlink( (location+s).ascii(), s.ascii() ) != 0){
57 if (errno == ENOENT){
58 // perror("Symlink Failed! ");
59 QString e=s.ascii();
60 e = e.replace(ffi.fileName(),"");
61 // qDebug("DirName : %s",e.ascii() );
62 system ( QString("mkdir -p ")+e.ascii() );
63 if (symlink( (location+s).ascii(), s.ascii() ) != 0)
64 qDebug ("Big problem creating symlink and directory");
65 }
66 }
49 // qDebug ( "Created %s" ,s.ascii() ); 67 // qDebug ( "Created %s" ,s.ascii() );
50 out << s << "\n"; 68 out << s << "\n";
51 } //else { 69 } else {
52 // qDebug( "%s exists already, not symlinked", s.ascii() ); 70 qDebug( "%s exists already, not symlinked", s.ascii() );
53 // } 71 }
54 } 72 }
@@ -72,10 +90,11 @@ static void removeSymlinks( const QString &package )
72 s = in.readLine(); // line of text excluding '\n' 90 s = in.readLine(); // line of text excluding '\n'
73 //qDebug("remove symlink %s", s.ascii()); 91 // qDebug("remove symlink %s", s.ascii());
74 QFileInfo ffi( s ); 92 QFileInfo ffi( s );
75 //Confirm that it's still a symlink. 93 //Confirm that it's still a symlink.
76 if ( ffi.isSymLink() ) 94 if ( ffi.isSymLink() ){
77 unlink( s.ascii() ); 95 unlink( s.ascii() );
78 // qDebug ( "Removed %s", s.ascii() ); 96 // qDebug ( "Removed %s", s.ascii() );}
79 // else 97 // else
80 // qDebug( "Not removed %s", s.ascii() ); 98 // qDebug( "Not removed %s", s.ascii() );
99 }
81 } 100 }
@@ -114,3 +133,3 @@ static void updateSymlinks()
114 QDir infoDir( info ); 133 QDir infoDir( info );
115 //qDebug( "looking at %s", info.ascii() ); 134 // qDebug( "looking at %s", info.ascii() );
116 if ( infoDir.isReadable() ) { 135 if ( infoDir.isReadable() ) {
@@ -122,3 +141,3 @@ static void updateSymlinks()
122 if ( knownPackages.contains( fi->fileName() ) ) { 141 if ( knownPackages.contains( fi->fileName() ) ) {
123 //qDebug( "found %s and we've seen it before", fi->fileName().latin1() ); 142 // qDebug( "found %s and we've seen it before", fi->fileName().latin1() );
124 knownPackages.remove( fi->fileName() ); 143 knownPackages.remove( fi->fileName() );