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
@@ -92,75 +92,78 @@ bool Ipkg :: runIpkg( )
92 92
93 } 93 }
94 94
95#ifdef X86 95#ifdef X86
96 cmd += " -f "; 96 cmd += " -f ";
97 cmd += IPKG_CONF; 97 cmd += IPKG_CONF;
98#endif 98#endif
99 99
100 cmd += " " + option; 100 cmd += " " + option;
101 if ( option != "upgrade" ) 101 if ( option != "upgrade" )
102 cmd += " " + package; 102 cmd += " " + package;
103 cmd += " 2>&1"; 103 cmd += " 2>&1";
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" )
128 { 129 {
129 // If we are not removing packages and make links option is selected 130 // If we are not removing packages and make links option is selected
130 // create the links 131 // create the links
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}
155 158
156 159
157int Ipkg :: executeIpkgCommand( QString &cmd, const QString option ) 160int Ipkg :: executeIpkgCommand( QString &cmd, const QString option )
158{ 161{
159 FILE *fp = NULL; 162 FILE *fp = NULL;
160 char line[130]; 163 char line[130];
161 QString lineStr, lineStrOld; 164 QString lineStr, lineStrOld;
162 int ret = false; 165 int ret = false;
163 166
164 fp = popen( (const char *) cmd, "r"); 167 fp = popen( (const char *) cmd, "r");
165 if ( fp == NULL ) 168 if ( fp == NULL )
166 { 169 {
@@ -263,59 +266,68 @@ QStringList* Ipkg :: getList( const QString &packageFilename, const QString &des
263 266
264 f.close(); 267 f.close();
265 return fileList; 268 return fileList;
266} 269}
267 270
268void Ipkg :: processFileList( const QStringList *fileList, const QString &destDir ) 271void Ipkg :: processFileList( const QStringList *fileList, const QString &destDir )
269{ 272{
270 if ( !fileList || fileList->isEmpty() ) 273 if ( !fileList || fileList->isEmpty() )
271 return; 274 return;
272 275
273 QString baseDir = ROOT; 276 QString baseDir = ROOT;
274 277
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;
310 d.mkdir( linkFile, true ); 322 d.mkdir( linkFile, true );
311 } 323 }
312 else 324 else
313 emit outputText( QString( "Directory " ) + linkFile + " exists" ); 325 emit outputText( QString( "Directory " ) + linkFile + " exists" );
314 326
315 } 327 }
316 else 328 else
317 { 329 {
318 int rc = symlink( sourceFile, linkFile ); 330 int rc = symlink( sourceFile, linkFile );
319 text = (rc == 0 ? "Linked " : "Failed to link "); 331 text = (rc == 0 ? "Linked " : "Failed to link ");
320 text += sourceFile + " to " + linkFile; 332 text += sourceFile + " to " + linkFile;
321 emit outputText( text ); 333 emit outputText( text );