summaryrefslogtreecommitdiff
path: root/noncore/settings
authorandyq <andyq>2002-10-16 23:08:08 (UTC)
committer andyq <andyq>2002-10-16 23:08:08 (UTC)
commit593fe744126a398e2714070137b6f19e398d2c9d (patch) (unidiff)
tree3cf11467787c4f8860bc8f5f87ceaab87ea8b2f4 /noncore/settings
parent196a3f566bdc5bd6188f2265e05adbdb519a6e09 (diff)
downloadopie-593fe744126a398e2714070137b6f19e398d2c9d.zip
opie-593fe744126a398e2714070137b6f19e398d2c9d.tar.gz
opie-593fe744126a398e2714070137b6f19e398d2c9d.tar.bz2
Fixed bug with linking files
Diffstat (limited to 'noncore/settings') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/aqpkg/ipkg.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/noncore/settings/aqpkg/ipkg.cpp b/noncore/settings/aqpkg/ipkg.cpp
index f8513e4..6d0edad 100644
--- a/noncore/settings/aqpkg/ipkg.cpp
+++ b/noncore/settings/aqpkg/ipkg.cpp
@@ -104,24 +104,25 @@ bool Ipkg :: runIpkg( )
104 104
105 qApp->processEvents(); 105 qApp->processEvents();
106 106
107 // If we are removing packages and make links option is selected 107 // If we are removing packages and make links option is selected
108 // create the links 108 // create the links
109 if ( option == "remove" ) 109 if ( option == "remove" )
110 { 110 {
111 createLinks = false; 111 createLinks = false;
112 if ( flags & MAKE_LINKS ) 112 if ( flags & MAKE_LINKS )
113 { 113 {
114 emit outputText( QString( "Removing symbolic links...\n" ) ); 114 emit outputText( QString( "Removing symbolic links...\n" ) );
115 linkPackage( Utils::getPackageNameFromIpkFilename( package ), destination, destDir ); 115 linkPackage( Utils::getPackageNameFromIpkFilename( package ), destination, destDir );
116 emit outputText( QString( " " ) );
116 } 117 }
117 } 118 }
118 119
119 emit outputText( cmd ); 120 emit outputText( cmd );
120 121
121 // Execute command 122 // Execute command
122 dependantPackages = new QList<QString>; 123 dependantPackages = new QList<QString>;
123 dependantPackages->setAutoDelete( true ); 124 dependantPackages->setAutoDelete( true );
124 125
125 ret = executeIpkgCommand( cmd, option ); 126 ret = executeIpkgCommand( cmd, option );
126 127
127 if ( option == "install" ) 128 if ( option == "install" )
@@ -131,24 +132,26 @@ bool Ipkg :: runIpkg( )
131 createLinks = true; 132 createLinks = true;
132 if ( flags & MAKE_LINKS ) 133 if ( flags & MAKE_LINKS )
133 { 134 {
134 emit outputText( " " ); 135 emit outputText( " " );
135 emit outputText( QString( "Creating symbolic links for " )+ package ); 136 emit outputText( QString( "Creating symbolic links for " )+ package );
136 137
137 linkPackage( Utils::getPackageNameFromIpkFilename( package ), destination, destDir ); 138 linkPackage( Utils::getPackageNameFromIpkFilename( package ), destination, destDir );
138 139
139 // link dependant packages that were installed with this release 140 // link dependant packages that were installed with this release
140 QString *pkg; 141 QString *pkg;
141 for ( pkg = dependantPackages->first(); pkg != 0; pkg = dependantPackages->next() ) 142 for ( pkg = dependantPackages->first(); pkg != 0; pkg = dependantPackages->next() )
142 { 143 {
144 if ( *pkg == package )
145 continue;
143 emit outputText( " " ); 146 emit outputText( " " );
144 emit outputText( QString( "Creating symbolic links for " )+ (*pkg) ); 147 emit outputText( QString( "Creating symbolic links for " )+ (*pkg) );
145 linkPackage( Utils::getPackageNameFromIpkFilename( *pkg ), destination, destDir ); 148 linkPackage( Utils::getPackageNameFromIpkFilename( *pkg ), destination, destDir );
146 } 149 }
147 } 150 }
148 } 151 }
149 152
150 delete dependantPackages; 153 delete dependantPackages;
151 154
152 emit outputText( QString( "Finished - status=" ) + (ret ? "success" : "failure") ); 155 emit outputText( QString( "Finished - status=" ) + (ret ? "success" : "failure") );
153 return ret; 156 return ret;
154} 157}
@@ -275,35 +278,44 @@ void Ipkg :: processFileList( const QStringList *fileList, const QString &destDi
275 if ( createLinks == true ) 278 if ( createLinks == true )
276 { 279 {
277 for ( uint i=0; i < fileList->count(); i++ ) 280 for ( uint i=0; i < fileList->count(); i++ )
278 { 281 {
279 processLinkDir( (*fileList)[i], baseDir, destDir ); 282 processLinkDir( (*fileList)[i], baseDir, destDir );
280 qApp->processEvents(); 283 qApp->processEvents();
281 } 284 }
282 } 285 }
283 else 286 else
284 { 287 {
285 for ( int i = fileList->count()-1; i >= 0 ; i-- ) 288 for ( int i = fileList->count()-1; i >= 0 ; i-- )
286 { 289 {
287 cout << "i = " << i << ", Dealing with " << (*fileList)[i] << endl;
288 processLinkDir( (*fileList)[i], baseDir, destDir ); 290 processLinkDir( (*fileList)[i], baseDir, destDir );
289 qApp->processEvents(); 291 qApp->processEvents();
290 } 292 }
291 } 293 }
292} 294}
293 295
294void Ipkg :: processLinkDir( const QString &file, const QString &destDir, const QString &baseDir ) 296void Ipkg :: processLinkDir( const QString &file, const QString &destDir, const QString &baseDir )
295{ 297{
298
296 QString sourceFile = baseDir + file; 299 QString sourceFile = baseDir + file;
297 QString linkFile = destDir + file; 300
301 QString linkFile = destDir;
302 if ( file.startsWith( "/" ) && destDir.right( 1 ) == "/" )
303 {
304 linkFile += file.mid( 1 );
305 }
306 else
307 {
308 linkFile += file;
309 }
298 QString text; 310 QString text;
299 if ( createLinks ) 311 if ( createLinks )
300 { 312 {
301 // If this file is a directory (ends with a /) and it doesn't exist, 313 // If this file is a directory (ends with a /) and it doesn't exist,
302 // we need to create it 314 // we need to create it
303 if ( file.right(1) == "/" ) 315 if ( file.right(1) == "/" )
304 { 316 {
305 QFileInfo f( linkFile ); 317 QFileInfo f( linkFile );
306 if ( !f.exists() ) 318 if ( !f.exists() )
307 { 319 {
308 emit outputText( QString( "Creating directory " ) + linkFile ); 320 emit outputText( QString( "Creating directory " ) + linkFile );
309 QDir d; 321 QDir d;