-rw-r--r-- | core/opie-login/passworddialogimpl.cpp | 6 | ||||
-rw-r--r-- | noncore/settings/aqpkg/ipkg.cpp | 11 |
2 files changed, 14 insertions, 3 deletions
diff --git a/core/opie-login/passworddialogimpl.cpp b/core/opie-login/passworddialogimpl.cpp index d9132e2..3c1b474 100644 --- a/core/opie-login/passworddialogimpl.cpp +++ b/core/opie-login/passworddialogimpl.cpp @@ -135,65 +135,69 @@ void PasswordDialogImpl::writePassword() { * Check if both texts are the same */ if ( m_pass->text() != m_confirm->text() ) return error( tr("Passwords don't match"), tr("<qt>The two passwords don't match. Please try again.</qt>") ); /* * Now crypt the password so we can write it later */ char* password = ::crypt( m_pass->text().latin1(), crypt_make_salt() ); if ( !password ) return error( tr("Password not legal" ), tr("<qt>The entered password is not a valid password." "Please try entering a valid password.</qt>" ) ); /* rewind and rewrite the password file */ ::setpwent(); FILE* file = ::fopen( "/etc/passwd.new", "w" ); struct passwd* pass; while ( (pass = ::getpwent()) != 0l ) { /* no shadow password support */ if ( pass->pw_uid == 0 ) pass->pw_passwd = password; ::putpwent( pass, file ); } ::fclose( file ); ::endpwent(); - ::rename("/etc/passwd.new","/etc/passwd" ); + if (::rename("/etc/passwd.new","/etc/passwd" ) == -1) + return error( tr("Rename /etc/passwd failed"), + tr("<qt>Renaming /etc/passwd.new to /etc/passwd failed." + "Please check your /etc/passed file, your /etc directory " + "or your filesystem.</qt>") ); /* should be done now */ #ifdef OPIE_LOGIN_SHADOW_PW #error "Can't write Shadow Passwords fixme" #endif } /** * Raise an error. Delete input and set the focus after showing * the error to the user */ void PasswordDialogImpl::error( const QString& caption, const QString& text ) { m_isSet = false; QMessageBox::critical(this,caption, text, QMessageBox::Ok, QMessageBox::NoButton ); m_pass->setText(""); m_pass->setFocus(); m_confirm->setText(""); } void PasswordDialogImpl::slotToggleEcho( bool b ) { m_pass-> setEchoMode( b ? QLineEdit::Normal : QLineEdit::Password ); m_confirm->setEchoMode( b ? QLineEdit::Normal : QLineEdit::Password ); } ///////////////////////// /// static functions /// /** diff --git a/noncore/settings/aqpkg/ipkg.cpp b/noncore/settings/aqpkg/ipkg.cpp index dd9e78d..c5c6387 100644 --- a/noncore/settings/aqpkg/ipkg.cpp +++ b/noncore/settings/aqpkg/ipkg.cpp @@ -180,126 +180,133 @@ void Ipkg :: createSymLinks() void Ipkg :: removeStatusEntry() { QString statusFile = destDir; if ( statusFile.right( 1 ) != "/" ) statusFile.append( "/" ); statusFile.append( "usr/lib/ipkg/status" ); QString outStatusFile = statusFile; outStatusFile.append( ".tmp" ); emit outputText( "" ); emit outputText( tr("Removing status entry...") ); QString tempstr = tr("status file - "); tempstr.append( statusFile ); emit outputText( tempstr ); tempstr = tr("package - "); tempstr.append( package ); emit outputText( tempstr ); QFile readFile( statusFile ); QFile writeFile( outStatusFile ); if ( !readFile.open( IO_ReadOnly ) ) { tempstr = tr("Couldn't open status file - "); tempstr.append( statusFile ); emit outputText( tempstr ); return; } if ( !writeFile.open( IO_WriteOnly ) ) { - tempstr = tr("Couldn't create tempory status file - "); + tempstr = tr("Couldn't create temporary status file - "); tempstr.append( outStatusFile ); emit outputText( tempstr ); return; } int i = 0; QTextStream readStream( &readFile ); QTextStream writeStream( &writeFile ); QString line; char k[21]; char v[1001]; QString key; QString value; while ( !readStream.atEnd() ) { //read new line line = readStream.readLine(); if ( line.contains( ":", TRUE ) ) { //grep key and value from line k[0] = '\0'; v[0] = '\0'; sscanf( line, "%[^:]: %[^\n]", k, v ); key = k; value = v; key = key.stripWhiteSpace(); value = value.stripWhiteSpace(); } else { key = ""; value = ""; } if ( key == "Package" && value == package ) { //skip lines from the deleted package while ( ( !readStream.atEnd() ) && ( line.stripWhiteSpace() != "" ) ) { line = readStream.readLine(); } } else { //write other lines into the tempfile writeStream << line << "\n"; // Improve UI responsiveness i++; if ( ( i % 50 ) == 0 ) qApp->processEvents(); } } readFile.close(); writeFile.close(); // Remove old status file and put tmp stats file in its place remove( statusFile ); - rename( outStatusFile, statusFile ); + if (::rename( outStatusFile, statusFile ) == -1) + { + tempstr = tr("Couldn't rename temporary status file - "); + tempstr.append( outStatusFile ); + tempstr.append( tr("to status file - ") ); + tempstr.append( statusFile ); + emit outputText( tempstr ); + } } int Ipkg :: executeIpkgLinkCommand( QStringList *cmd ) { // If one is already running - should never be but just to be safe if ( proc ) { delete proc; proc = 0; } // OK we're gonna use OProcess to run this thing proc = new OProcess(); aborted = false; // Connect up our slots connect(proc, SIGNAL(processExited(Opie::Core::OProcess*)), this, SLOT( linkProcessFinished())); connect(proc, SIGNAL(receivedStdout(Opie::Core::OProcess*,char*,int)), this, SLOT(linkCommandStdout(Opie::Core::OProcess*,char*,int))); *proc << *cmd; if(!proc->start(OProcess::NotifyOnExit, OProcess::All)) { emit outputText( tr("Couldn't start ipkg-link process" ) ); } return 0; } void Ipkg::linkProcessFinished() |