Repaired opening of encrypted RAR files (closes bug 181)

Thanks to jm82an4zn1@sxipper.net for the patch!


git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeutils@1119969 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
v3.5.13-sru
tpearson 14 years ago
parent 035fa88dbc
commit 4facf42fee

@ -100,6 +100,31 @@ void Arch::verifyUncompressUtilityIsAvailable( const QString &utility )
void Arch::slotOpenExited( KProcess* _kp )
{
bool success = ( _kp->normalExit() && ( _kp->exitStatus() == 0 ) );
if( !success )
{
if ( passwordRequired() )
{
QString msg;
if ( !m_password.isEmpty() )
msg = i18n("The password was incorrect. ");
if (KPasswordDialog::getPassword( m_password, msg+i18n("You must enter a password to open the file:") ) == KPasswordDialog::Accepted )
{
delete _kp;
_kp = m_currentProcess = 0;
clearShellOutput();
open(); // try to open the file again with a password
return;
}
m_password = "";
emit sigOpen( this, false, QString::null, 0 );
delete _kp;
_kp = m_currentProcess = 0;
return;
}
}
int exitStatus = 100; // arbitrary bad exit status
if ( _kp->normalExit() )

@ -128,7 +128,14 @@ void RarArch::open()
m_finished = false;
KProcess *kp = m_currentProcess = new KProcess;
*kp << m_unarchiver_program << "v" << "-c-" << m_filename;
*kp << m_unarchiver_program << "v" << "-c-";
if ( !m_password.isEmpty() )
*kp << "-p" + m_password;
else
*kp << "-p-";
*kp << m_filename;
connect( kp, SIGNAL( receivedStdout(KProcess*, char*, int) ),
SLOT( slotReceivedTOC(KProcess*, char*, int) ) );

Loading…
Cancel
Save