summaryrefslogtreecommitdiff
path: root/noncore/settings/aqpkg/ipkg.cpp
Unidiff
Diffstat (limited to 'noncore/settings/aqpkg/ipkg.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/aqpkg/ipkg.cpp105
1 files changed, 18 insertions, 87 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
@@ -118,113 +118,113 @@ void Ipkg :: runIpkg()
118#endif 118#endif
119 119
120 120
121 if ( option == "reinstall" ) 121 if ( option == "reinstall" )
122 commands << "install"; 122 commands << "install";
123 else 123 else
124 commands << option; 124 commands << option;
125 if ( package != "" ) 125 if ( package != "" )
126 commands << package; 126 commands << package;
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
134 // If we are removing, reinstalling or upgrading packages and make links option is selected 134 // If we are removing, reinstalling or upgrading packages and make links option is selected
135 // create the links 135 // create the links
136 if ( option == "remove" || option == "reinstall" || option == "upgrade" ) 136 if ( option == "remove" || option == "reinstall" || option == "upgrade" )
137 { 137 {
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 );
150 150
151 executeIpkgCommand( commands, option ); 151 executeIpkgCommand( commands, option );
152 152
153} 153}
154 154
155void Ipkg :: createSymLinks() 155void Ipkg :: createSymLinks()
156{ 156{
157 if ( option == "install" || option == "reinstall" || option == "upgrade" ) 157 if ( option == "install" || option == "reinstall" || option == "upgrade" )
158 { 158 {
159 // If we are not removing packages and make links option is selected 159 // If we are not removing packages and make links option is selected
160 // create the links 160 // create the links
161 createLinks = true; 161 createLinks = true;
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
169 // link dependant packages that were installed with this release 169 // link dependant packages that were installed with this release
170 QString *pkg; 170 QString *pkg;
171 for ( pkg = dependantPackages->first(); pkg != 0; pkg = dependantPackages->next() ) 171 for ( pkg = dependantPackages->first(); pkg != 0; pkg = dependantPackages->next() )
172 { 172 {
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 }
180 } 180 }
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
188void Ipkg :: removeStatusEntry() 188void Ipkg :: removeStatusEntry()
189{ 189{
190 QString statusFile = destDir; 190 QString statusFile = destDir;
191 if ( statusFile.right( 1 ) != "/" ) 191 if ( statusFile.right( 1 ) != "/" )
192 statusFile.append( "/" ); 192 statusFile.append( "/" );
193 statusFile.append( "usr/lib/ipkg/status" ); 193 statusFile.append( "usr/lib/ipkg/status" );
194 QString outStatusFile = statusFile; 194 QString outStatusFile = statusFile;
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;
214 } 214 }
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;
222 } 222 }
223 223
224 char line[1001]; 224 char line[1001];
225 char k[21]; 225 char k[21];
226 char v[1001]; 226 char v[1001];
227 QString key; 227 QString key;
228 QString value; 228 QString value;
229 vector<QString> lines; 229 vector<QString> lines;
230 int i = 0; 230 int i = 0;
@@ -306,25 +306,25 @@ int Ipkg :: executeIpkgCommand( QStringList &cmd, const QString /*option*/ )
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();
312 } 312 }
313 313
314 // Start the process going 314 // Start the process going
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
322void Ipkg::commandStdout(OProcess*, char *buffer, int buflen) 322void Ipkg::commandStdout(OProcess*, char *buffer, int buflen)
323{ 323{
324 QString lineStr = buffer; 324 QString lineStr = buffer;
325 if ( lineStr[buflen-1] == '\n' ) 325 if ( lineStr[buflen-1] == '\n' )
326 buflen --; 326 buflen --;
327 lineStr = lineStr.left( buflen ); 327 lineStr = lineStr.left( buflen );
328 emit outputText( lineStr ); 328 emit outputText( lineStr );
329 329
330 // check if we are installing dependant packages 330 // check if we are installing dependant packages
@@ -377,90 +377,24 @@ void Ipkg::processFinished()
377} 377}
378 378
379 379
380void Ipkg :: abort() 380void Ipkg :: abort()
381{ 381{
382 if ( proc ) 382 if ( proc )
383 { 383 {
384 proc->kill(); 384 proc->kill();
385 aborted = true; 385 aborted = true;
386 } 386 }
387} 387}
388 388
389/*
390int 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
455void Ipkg :: linkPackage( const QString &packFileName, const QString &dest, const QString &destDir ) 389void 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();
463 processFileList( fileList, destDir ); 397 processFileList( fileList, destDir );
464 delete fileList; 398 delete fileList;
465} 399}
466 400
@@ -474,25 +408,25 @@ QStringList* Ipkg :: getList( const QString &packageFilename, const QString &des
474 408
475 if ( !f.open(IO_ReadOnly) ) 409 if ( !f.open(IO_ReadOnly) )
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;
490 } 424 }
491 } 425 }
492 QStringList *fileList = new QStringList(); 426 QStringList *fileList = new QStringList();
493 QTextStream t( &f ); 427 QTextStream t( &f );
494 while ( !t.eof() ) 428 while ( !t.eof() )
495 *fileList += t.readLine(); 429 *fileList += t.readLine();
496 430
497 f.close(); 431 f.close();
498 return fileList; 432 return fileList;
@@ -539,60 +473,57 @@ void Ipkg :: processLinkDir( const QString &file, const QString &destDir, const
539 linkFile.append( file ); 473 linkFile.append( file );
540 } 474 }
541 QString text; 475 QString text;
542 if ( createLinks ) 476 if ( createLinks )
543 { 477 {
544 // If this file is a directory (ends with a /) and it doesn't exist, 478 // If this file is a directory (ends with a /) and it doesn't exist,
545 // we need to create it 479 // we need to create it
546 if ( file.right(1) == "/" ) 480 if ( file.right(1) == "/" )
547 { 481 {
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;
555 d.mkdir( linkFile, true ); 489 d.mkdir( linkFile, true );
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 }
571 else 504 else
572 { 505 {
573 QFileInfo f( linkFile ); 506 QFileInfo f( linkFile );
574 if ( f.exists() ) 507 if ( f.exists() )
575 { 508 {
576 if ( f.isFile() ) 509 if ( f.isFile() )
577 { 510 {
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() )
586 { 518 {
587 QDir d; 519 QDir d;
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 }
596 } 527 }
597 } 528 }
598} 529}