Diffstat (limited to 'noncore/settings/aqpkg/ipkg.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/settings/aqpkg/ipkg.cpp | 139 |
1 files changed, 35 insertions, 104 deletions
diff --git a/noncore/settings/aqpkg/ipkg.cpp b/noncore/settings/aqpkg/ipkg.cpp index 3df569b..43eaaae 100644 --- a/noncore/settings/aqpkg/ipkg.cpp +++ b/noncore/settings/aqpkg/ipkg.cpp | |||
@@ -1,6 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the OPIE Project | 2 | This file is part of the OPIE Project |
3 | 3 | ||
4 | =. Copyright (c) 2002 Andy Qua <andy.qua@blueyonder.co.uk> | 4 | =. Copyright (c) 2002 Andy Qua <andy.qua@blueyonder.co.uk> |
5 | .=l. Dan Williams <drw@handhelds.org> | 5 | .=l. Dan Williams <drw@handhelds.org> |
6 | .>+-= | 6 | .>+-= |
@@ -111,7 +111,7 @@ void Ipkg :: runIpkg() | |||
111 | flags ^= MAKE_LINKS; | 111 | flags ^= MAKE_LINKS; |
112 | } | 112 | } |
113 | } | 113 | } |
114 | 114 | ||
115 | #ifdef X86 | 115 | #ifdef X86 |
116 | commands << "-f"; | 116 | commands << "-f"; |
117 | commands << IPKG_CONF; | 117 | commands << IPKG_CONF; |
@@ -127,7 +127,7 @@ void Ipkg :: runIpkg() | |||
127 | 127 | ||
128 | 128 | ||
129 | if ( package != "" ) | 129 | if ( package != "" ) |
130 | emit outputText( QString( "Dealing with package " ) + package ); | 130 | emit outputText( tr( "Dealing with package %1" ).arg( package) ); |
131 | 131 | ||
132 | qApp->processEvents(); | 132 | qApp->processEvents(); |
133 | 133 | ||
@@ -138,12 +138,12 @@ void Ipkg :: runIpkg() | |||
138 | createLinks = false; | 138 | createLinks = false; |
139 | if ( flags & MAKE_LINKS ) | 139 | if ( flags & MAKE_LINKS ) |
140 | { | 140 | { |
141 | emit outputText( QString( "Removing symbolic links...\n" ) ); | 141 | emit outputText( tr( "Removing symbolic links...\n" ) ); |
142 | linkPackage( Utils::getPackageNameFromIpkFilename( package ), destination, destDir ); | 142 | linkPackage( Utils::getPackageNameFromIpkFilename( package ), destination, destDir ); |
143 | emit outputText( QString( " " ) ); | 143 | emit outputText( QString( " " ) ); |
144 | } | 144 | } |
145 | } | 145 | } |
146 | 146 | ||
147 | // Execute command | 147 | // Execute command |
148 | dependantPackages = new QList<QString>; | 148 | dependantPackages = new QList<QString>; |
149 | dependantPackages->setAutoDelete( true ); | 149 | dependantPackages->setAutoDelete( true ); |
@@ -162,7 +162,7 @@ void Ipkg :: createSymLinks() | |||
162 | if ( flags & MAKE_LINKS ) | 162 | if ( flags & MAKE_LINKS ) |
163 | { | 163 | { |
164 | emit outputText( " " ); | 164 | emit outputText( " " ); |
165 | emit outputText( QString( "Creating symbolic links for " )+ package ); | 165 | emit outputText( tr( "Creating symbolic links for %1." ).arg( package) ); |
166 | 166 | ||
167 | linkPackage( Utils::getPackageNameFromIpkFilename( package ), destination, destDir ); | 167 | linkPackage( Utils::getPackageNameFromIpkFilename( package ), destination, destDir ); |
168 | 168 | ||
@@ -173,7 +173,7 @@ void Ipkg :: createSymLinks() | |||
173 | if ( *pkg == package ) | 173 | if ( *pkg == package ) |
174 | continue; | 174 | continue; |
175 | emit outputText( " " ); | 175 | emit outputText( " " ); |
176 | emit outputText( QString( "Creating symbolic links for " )+ (*pkg) ); | 176 | emit outputText( tr( "Creating symbolic links for %1" ).arg( *pkg ) ); |
177 | linkPackage( Utils::getPackageNameFromIpkFilename( *pkg ), destination, destDir ); | 177 | linkPackage( Utils::getPackageNameFromIpkFilename( *pkg ), destination, destDir ); |
178 | } | 178 | } |
179 | } | 179 | } |
@@ -181,7 +181,7 @@ void Ipkg :: createSymLinks() | |||
181 | 181 | ||
182 | delete dependantPackages; | 182 | delete dependantPackages; |
183 | 183 | ||
184 | emit outputText( "Finished" ); | 184 | emit outputText( tr("Finished") ); |
185 | emit outputText( "" ); | 185 | emit outputText( "" ); |
186 | } | 186 | } |
187 | 187 | ||
@@ -195,19 +195,19 @@ void Ipkg :: removeStatusEntry() | |||
195 | outStatusFile.append( ".tmp" ); | 195 | outStatusFile.append( ".tmp" ); |
196 | 196 | ||
197 | emit outputText( "" ); | 197 | emit outputText( "" ); |
198 | emit outputText( "Removing status entry..." ); | 198 | emit outputText( tr("Removing status entry...") ); |
199 | QString tempstr = "status file - "; | 199 | QString tempstr = tr("status file - "); |
200 | tempstr.append( statusFile ); | 200 | tempstr.append( statusFile ); |
201 | emit outputText( tempstr ); | 201 | emit outputText( tempstr ); |
202 | tempstr = "package - "; | 202 | tempstr = tr("package - "); |
203 | tempstr.append( package ); | 203 | tempstr.append( package ); |
204 | emit outputText( tempstr ); | 204 | emit outputText( tempstr ); |
205 | 205 | ||
206 | ifstream in( statusFile ); | 206 | ifstream in( statusFile ); |
207 | ofstream out( outStatusFile ); | 207 | ofstream out( outStatusFile ); |
208 | if ( !in.is_open() ) | 208 | if ( !in.is_open() ) |
209 | { | 209 | { |
210 | tempstr = "Couldn't open status file - "; | 210 | tempstr = tr("Couldn't open status file - "); |
211 | tempstr.append( statusFile ); | 211 | tempstr.append( statusFile ); |
212 | emit outputText( tempstr ); | 212 | emit outputText( tempstr ); |
213 | return; | 213 | return; |
@@ -215,7 +215,7 @@ void Ipkg :: removeStatusEntry() | |||
215 | 215 | ||
216 | if ( !out.is_open() ) | 216 | if ( !out.is_open() ) |
217 | { | 217 | { |
218 | tempstr = "Couldn't create tempory status file - "; | 218 | tempstr = tr("Couldn't create tempory status file - "); |
219 | tempstr.append( outStatusFile ); | 219 | tempstr.append( outStatusFile ); |
220 | emit outputText( tempstr ); | 220 | emit outputText( tempstr ); |
221 | return; | 221 | return; |
@@ -256,7 +256,7 @@ void Ipkg :: removeStatusEntry() | |||
256 | lines.push_back( QString( line ) ); | 256 | lines.push_back( QString( line ) ); |
257 | out << line << endl; | 257 | out << line << endl; |
258 | 258 | ||
259 | // Improve UI responsiveness | 259 | // Improve UI responsiveness |
260 | i++; | 260 | i++; |
261 | if ( ( i % 50 ) == 0 ) | 261 | if ( ( i % 50 ) == 0 ) |
262 | qApp->processEvents(); | 262 | qApp->processEvents(); |
@@ -267,13 +267,13 @@ void Ipkg :: removeStatusEntry() | |||
267 | for ( it = lines.begin() ; it != lines.end() ; ++it ) | 267 | for ( it = lines.begin() ; it != lines.end() ; ++it ) |
268 | { | 268 | { |
269 | out << (const char *)(*it) << endl; | 269 | out << (const char *)(*it) << endl; |
270 | 270 | ||
271 | // Improve UI responsiveness | 271 | // Improve UI responsiveness |
272 | i++; | 272 | i++; |
273 | if ( ( i % 50 ) == 0 ) | 273 | if ( ( i % 50 ) == 0 ) |
274 | qApp->processEvents(); | 274 | qApp->processEvents(); |
275 | } | 275 | } |
276 | 276 | ||
277 | in.close(); | 277 | in.close(); |
278 | out.close(); | 278 | out.close(); |
279 | 279 | ||
@@ -290,7 +290,7 @@ int Ipkg :: executeIpkgCommand( QStringList &cmd, const QString /*option*/ ) | |||
290 | delete proc; | 290 | delete proc; |
291 | proc = 0; | 291 | proc = 0; |
292 | } | 292 | } |
293 | 293 | ||
294 | // OK we're gonna use OProcess to run this thing | 294 | // OK we're gonna use OProcess to run this thing |
295 | proc = new OProcess(); | 295 | proc = new OProcess(); |
296 | aborted = false; | 296 | aborted = false; |
@@ -305,7 +305,7 @@ int Ipkg :: executeIpkgCommand( QStringList &cmd, const QString /*option*/ ) | |||
305 | 305 | ||
306 | connect(proc, SIGNAL(receivedStderr(OProcess *, char *, int)), | 306 | connect(proc, SIGNAL(receivedStderr(OProcess *, char *, int)), |
307 | this, SLOT(commandStderr(OProcess *, char *, int))); | 307 | this, SLOT(commandStderr(OProcess *, char *, int))); |
308 | 308 | ||
309 | for ( QStringList::Iterator it = cmd.begin(); it != cmd.end(); ++it ) | 309 | for ( QStringList::Iterator it = cmd.begin(); it != cmd.end(); ++it ) |
310 | { | 310 | { |
311 | *proc << (*it).latin1(); | 311 | *proc << (*it).latin1(); |
@@ -315,7 +315,7 @@ int Ipkg :: executeIpkgCommand( QStringList &cmd, const QString /*option*/ ) | |||
315 | finished = false; | 315 | finished = false; |
316 | if(!proc->start(OProcess::NotifyOnExit, OProcess::All)) | 316 | if(!proc->start(OProcess::NotifyOnExit, OProcess::All)) |
317 | { | 317 | { |
318 | emit outputText( QString( "Couldn't start ipkg process" ) ); | 318 | emit outputText( tr("Couldn't start ipkg process" ) ); |
319 | } | 319 | } |
320 | } | 320 | } |
321 | 321 | ||
@@ -346,7 +346,7 @@ void Ipkg::commandStdout(OProcess*, char *buffer, int buflen) | |||
346 | // Ipkg should send this to STDERR, but doesn't - so trap here | 346 | // Ipkg should send this to STDERR, but doesn't - so trap here |
347 | error = true; | 347 | error = true; |
348 | } | 348 | } |
349 | 349 | ||
350 | buffer[0] = '\0'; | 350 | buffer[0] = '\0'; |
351 | } | 351 | } |
352 | 352 | ||
@@ -368,7 +368,7 @@ void Ipkg::processFinished() | |||
368 | 368 | ||
369 | if ( !error && option == "remove" ) | 369 | if ( !error && option == "remove" ) |
370 | removeStatusEntry(); | 370 | removeStatusEntry(); |
371 | 371 | ||
372 | delete proc; | 372 | delete proc; |
373 | proc = 0; | 373 | proc = 0; |
374 | finished = true; | 374 | finished = true; |
@@ -386,77 +386,11 @@ void Ipkg :: abort() | |||
386 | } | 386 | } |
387 | } | 387 | } |
388 | 388 | ||
389 | /* | ||
390 | int Ipkg :: executeIpkgCommand( QString &cmd, const QString option ) | ||
391 | { | ||
392 | FILE *fp = NULL; | ||
393 | char line[130]; | ||
394 | QString lineStr, lineStrOld; | ||
395 | int ret = false; | ||
396 | |||
397 | fp = popen( (const char *) cmd, "r"); | ||
398 | if ( fp == NULL ) | ||
399 | { | ||
400 | QString text; | ||
401 | text.sprintf( "Couldn't execute %s! See stdout for error code", (const char *)cmd ); | ||
402 | emit outputText( text ); | ||
403 | } | ||
404 | else | ||
405 | { | ||
406 | while ( fgets( line, sizeof line, fp) != NULL ) | ||
407 | { | ||
408 | lineStr = line; | ||
409 | lineStr=lineStr.left( lineStr.length()-1 ); | ||
410 | |||
411 | if ( lineStr != lineStrOld ) | ||
412 | { | ||
413 | //See if we're finished | ||
414 | if ( option == "install" || option == "reinstall" ) | ||
415 | { | ||
416 | // Need to keep track of any dependant packages that get installed | ||
417 | // so that we can create links to them as necessary | ||
418 | if ( lineStr.startsWith( "Installing " ) ) | ||
419 | { | ||
420 | int start = lineStr.find( " " ) + 1; | ||
421 | int end = lineStr.find( " ", start ); | ||
422 | QString *package = new QString( lineStr.mid( start, end-start ) ); | ||
423 | dependantPackages->append( package ); | ||
424 | } | ||
425 | } | ||
426 | |||
427 | if ( option == "update" ) | ||
428 | { | ||
429 | if (lineStr.contains("Updated list")) | ||
430 | ret = true; | ||
431 | } | ||
432 | else if ( option == "download" ) | ||
433 | { | ||
434 | if (lineStr.contains("Downloaded")) | ||
435 | ret = true; | ||
436 | } | ||
437 | else | ||
438 | { | ||
439 | if (lineStr.contains("Done")) | ||
440 | ret = true; | ||
441 | } | ||
442 | |||
443 | emit outputText( lineStr ); | ||
444 | } | ||
445 | lineStrOld = lineStr; | ||
446 | qApp->processEvents(); | ||
447 | } | ||
448 | pclose(fp); | ||
449 | } | ||
450 | |||
451 | return ret; | ||
452 | } | ||
453 | */ | ||
454 | |||
455 | void Ipkg :: linkPackage( const QString &packFileName, const QString &dest, const QString &destDir ) | 389 | void Ipkg :: linkPackage( const QString &packFileName, const QString &dest, const QString &destDir ) |
456 | { | 390 | { |
457 | if ( dest == "root" || dest == "/" ) | 391 | if ( dest == "root" || dest == "/" ) |
458 | return; | 392 | return; |
459 | 393 | ||
460 | qApp->processEvents(); | 394 | qApp->processEvents(); |
461 | QStringList *fileList = getList( packFileName, destDir ); | 395 | QStringList *fileList = getList( packFileName, destDir ); |
462 | qApp->processEvents(); | 396 | qApp->processEvents(); |
@@ -476,14 +410,14 @@ QStringList* Ipkg :: getList( const QString &packageFilename, const QString &des | |||
476 | { | 410 | { |
477 | // Couldn't open from dest, try from / | 411 | // Couldn't open from dest, try from / |
478 | f.close(); | 412 | f.close(); |
479 | 413 | ||
480 | packageFileDir = "/usr/lib/ipkg/info/"; | 414 | packageFileDir = "/usr/lib/ipkg/info/"; |
481 | packageFileDir.append( packageFilename ); | 415 | packageFileDir.append( packageFilename ); |
482 | packageFileDir.append( ".list" ); | 416 | packageFileDir.append( ".list" ); |
483 | f.setName( packageFileDir ); | 417 | f.setName( packageFileDir ); |
484 | if ( ! f.open(IO_ReadOnly) ) | 418 | if ( ! f.open(IO_ReadOnly) ) |
485 | { | 419 | { |
486 | QString tempstr = "Could not open :"; | 420 | QString tempstr = tr("Could not open :"); |
487 | tempstr.append( packageFileDir ); | 421 | tempstr.append( packageFileDir ); |
488 | emit outputText( tempstr ); | 422 | emit outputText( tempstr ); |
489 | return (QStringList*)0; | 423 | return (QStringList*)0; |
@@ -528,12 +462,12 @@ void Ipkg :: processLinkDir( const QString &file, const QString &destDir, const | |||
528 | 462 | ||
529 | QString sourceFile = baseDir; | 463 | QString sourceFile = baseDir; |
530 | sourceFile.append( file ); | 464 | sourceFile.append( file ); |
531 | 465 | ||
532 | QString linkFile = destDir; | 466 | QString linkFile = destDir; |
533 | if ( file.startsWith( "/" ) && destDir.right( 1 ) == "/" ) | 467 | if ( file.startsWith( "/" ) && destDir.right( 1 ) == "/" ) |
534 | { | 468 | { |
535 | linkFile.append( file.mid( 1 ) ); | 469 | linkFile.append( file.mid( 1 ) ); |
536 | } | 470 | } |
537 | else | 471 | else |
538 | { | 472 | { |
539 | linkFile.append( file ); | 473 | linkFile.append( file ); |
@@ -548,7 +482,7 @@ void Ipkg :: processLinkDir( const QString &file, const QString &destDir, const | |||
548 | QFileInfo f( linkFile ); | 482 | QFileInfo f( linkFile ); |
549 | if ( !f.exists() ) | 483 | if ( !f.exists() ) |
550 | { | 484 | { |
551 | QString tempstr = "Creating directory "; | 485 | QString tempstr = tr("Creating directory "); |
552 | tempstr.append( linkFile ); | 486 | tempstr.append( linkFile ); |
553 | emit outputText( tempstr ); | 487 | emit outputText( tempstr ); |
554 | QDir d; | 488 | QDir d; |
@@ -556,15 +490,14 @@ void Ipkg :: processLinkDir( const QString &file, const QString &destDir, const | |||
556 | } | 490 | } |
557 | // else | 491 | // else |
558 | // emit outputText( QString( "Directory " ) + linkFile + " already exists" ); | 492 | // emit outputText( QString( "Directory " ) + linkFile + " already exists" ); |
559 | 493 | ||
560 | } | 494 | } |
561 | else | 495 | else |
562 | { | 496 | { |
563 | int rc = symlink( sourceFile, linkFile ); | 497 | int rc = symlink( sourceFile, linkFile ); |
564 | text = (rc == 0 ? "Linked " : "Failed to link "); | 498 | text = ( rc == 0 ? tr( "Linked %1 to %2" ) : tr( "Failed to link %1 to %2" ) ). |
565 | text.append( sourceFile ); | 499 | arg( sourceFile ). |
566 | text.append( " to " ); | 500 | arg( linkFile ); |
567 | text.append( linkFile ); | ||
568 | emit outputText( text ); | 501 | emit outputText( text ); |
569 | } | 502 | } |
570 | } | 503 | } |
@@ -578,8 +511,7 @@ void Ipkg :: processLinkDir( const QString &file, const QString &destDir, const | |||
578 | QFile f( linkFile ); | 511 | QFile f( linkFile ); |
579 | bool rc = f.remove(); | 512 | bool rc = f.remove(); |
580 | 513 | ||
581 | text = (rc ? "Removed " : "Failed to remove "); | 514 | text = ( rc ? tr( "Removed %1" ) : tr( "Failed to remove %1" ) ).arg( linkFile ); |
582 | text.append( linkFile ); | ||
583 | emit outputText( text ); | 515 | emit outputText( text ); |
584 | } | 516 | } |
585 | else if ( f.isDir() ) | 517 | else if ( f.isDir() ) |
@@ -588,8 +520,7 @@ void Ipkg :: processLinkDir( const QString &file, const QString &destDir, const | |||
588 | bool rc = d.rmdir( linkFile, true ); | 520 | bool rc = d.rmdir( linkFile, true ); |
589 | if ( rc ) | 521 | if ( rc ) |
590 | { | 522 | { |
591 | text = (rc ? "Removed " : "Failed to remove "); | 523 | text = ( rc ? tr( "Removed " ) : tr( "Failed to remove " ) ).arg( linkFile ); |
592 | text.append( linkFile ); | ||
593 | emit outputText( text ); | 524 | emit outputText( text ); |
594 | } | 525 | } |
595 | } | 526 | } |