author | josef <josef> | 2002-10-20 19:22:38 (UTC) |
---|---|---|
committer | josef <josef> | 2002-10-20 19:22:38 (UTC) |
commit | d5433091ba9741f0fae104d038b906e353065e2d (patch) (side-by-side diff) | |
tree | 70def8957a6b38f8b6cfb45fa352b5a77f2298a1 | |
parent | 557c615b4b07adb798283981f3769dd817a80bf1 (diff) | |
download | opie-d5433091ba9741f0fae104d038b906e353065e2d.zip opie-d5433091ba9741f0fae104d038b906e353065e2d.tar.gz opie-d5433091ba9741f0fae104d038b906e353065e2d.tar.bz2 |
Some fixes for receiving files via {x,y,z}modem:
- let transfer dialog reset progress bar when finished
- typo: s/Sent/Received in received confirmation dialog
- specify filename for xmodem (the man page is not very clear about this, but
it doesn't work without filename!)
- add --overwrite
Here's the big problem:
For user security, I'd rather use --rename than --overwrite (or make it
configurable).
But:
* --rename is not supported at all by rx/rz/...
* --overwrite is not supported by ymodem
* --overwrite is always used by xmodem even if not used
I want to kick the authors of rz now...
Anybody knows a solution?
-rw-r--r-- | noncore/apps/opie-console/filereceive.cpp | 7 | ||||
-rw-r--r-- | noncore/apps/opie-console/transferdialog.cpp | 7 |
2 files changed, 12 insertions, 2 deletions
diff --git a/noncore/apps/opie-console/filereceive.cpp b/noncore/apps/opie-console/filereceive.cpp index e517862..e387273 100644 --- a/noncore/apps/opie-console/filereceive.cpp +++ b/noncore/apps/opie-console/filereceive.cpp @@ -32,49 +32,54 @@ void FileReceive::receive( const QString& dir ) { m_info[0] = m_info[1] = 0; m_pid = fork(); switch( m_pid ) { case -1: //emit error slotExec(); break; /* child */ case 0: { setupChild(); char* typus = NULL; switch(m_type ) { case SZ: break; case SX: typus = "-X"; break; case SY: typus = "--ymodem"; break; } /* we should never return from here */ - execlp("rz", "rz", typus, NULL ); + if( m_type == SX ) + // FIXME: file name should be configurable - currently we ensure it + // doesn't get overwritten by -E (--rename) + execlp("rz", "rz", typus, "--overwrite", QObject::tr("SynchronizedFile").latin1(), NULL ); + else + execlp("rz", "rz", typus, "--overwrite", NULL ); char resultByte = 1; if (m_info[1] ) ::write(m_info[1], &resultByte, 1 ); _exit( -1 ); break; } default: { if ( m_info[1] ) close( m_info[1] ); if ( m_info[0] ) for (;;) { char resultByte; int len; len = read(m_info[0], &resultByte, 1 ); /* len == 1 start up failed */ if ( len == 1 ) { emit error( StartError, tr("Could not start") ); return; } if ( len == -1 ) if ( (errno == ECHILD ) || (errno == EINTR ) ) continue; diff --git a/noncore/apps/opie-console/transferdialog.cpp b/noncore/apps/opie-console/transferdialog.cpp index ac5b1d0..f89723c 100644 --- a/noncore/apps/opie-console/transferdialog.cpp +++ b/noncore/apps/opie-console/transferdialog.cpp @@ -209,53 +209,58 @@ void TransferDialog::slotError(int error, const QString& message) break; case FileTransferLayer::Undefined: QMessageBox::critical(this, QObject::tr("Error"), QObject::tr("Undefined error occured.")); break; case FileTransferLayer::Incomplete: QMessageBox::critical(this, QObject::tr("Error"), QObject::tr("Incomplete transfer.")); break; case FileTransferLayer::Unknown: default: QMessageBox::critical(this, QObject::tr("Error"), QObject::tr("Unknown error occured.")); break; } m_autocleanup = 1; } void TransferDialog::slotSent() { + progressbar->setProgress(100); QMessageBox::information(this, QObject::tr("Sent"), QObject::tr("File has been sent.")); ok->setEnabled(true); + progressbar->setProgress(0); statusbar->setText(QObject::tr("Ready")); m_autocleanup = 1; } void TransferDialog::slotReceived(const QString& file) { - QMessageBox::information(this, QObject::tr("Sent"), QObject::tr("File has been received as %1.").arg(file)); + progressbar->setProgress(100); + QMessageBox::information(this, QObject::tr("Received"), QObject::tr("File has been received.")); + //QMessageBox::information(this, QObject::tr("Sent"), QObject::tr("File has been received as %1.").arg(file)); ok->setEnabled(true); + progressbar->setProgress(0); statusbar->setText(QObject::tr("Ready")); m_autocleanup = 1; } void TransferDialog::slotMode(int id) { if(id == id_send) { selector->setEnabled(true); filename->setEnabled(true); } else { selector->setEnabled(false); filename->setEnabled(false); } m_transfermode = id; } |