Diffstat (limited to 'noncore/apps/opie-console/filetransfer.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/apps/opie-console/filetransfer.cpp | 55 |
1 files changed, 25 insertions, 30 deletions
diff --git a/noncore/apps/opie-console/filetransfer.cpp b/noncore/apps/opie-console/filetransfer.cpp index 7fd9f37..97552fe 100644 --- a/noncore/apps/opie-console/filetransfer.cpp +++ b/noncore/apps/opie-console/filetransfer.cpp @@ -11,18 +11,5 @@ +#include "procctl.h" #include "filetransfer.h" -/** - * - * -class FileTransferControl { -public: - FileTransferControl(); - ~FileTransferControl(); - - -}; -*/ - -bool FileTransfer::terminate = false; -pid_t FileTransfer::m_pid; @@ -31,4 +18,5 @@ FileTransfer::FileTransfer( Type t, IOLayer* lay ) signal(SIGPIPE, SIG_IGN ); - signal( SIGCHLD, signal_handler ); + m_not = 0l; + m_proc = 0l; } @@ -102,6 +90,3 @@ void FileTransfer::sendFile( const QString& file ) { - terminate = false; - fd_set fds; - struct timeval timeout; - int sel; + @@ -111,2 +96,10 @@ void FileTransfer::sendFile( const QString& file ) { this, SLOT(slotRead() ) ); + if ( pipe(m_term) < 0 ) + m_term[0] = m_term[1] = 0; + + ProcCtl::self()->add(m_pid, m_term[1] ); + m_proc = new QSocketNotifier(m_term[0], QSocketNotifier::Read ); + connect(m_proc, SIGNAL(activated(int) ), + this, SLOT(slotExec() ) ); + } @@ -121,13 +114,2 @@ void FileTransfer::sendFile( const QFile& file ) { } -/* - * our signal handler to be replaced by - * a procctl thingie - */ -void FileTransfer::signal_handler(int ) { - qWarning("Terminated"); - int status; - signal( SIGCHLD, signal_handler ); - waitpid( m_pid, &status, WNOHANG ); - terminate = true; -} @@ -177,2 +159,3 @@ void FileTransfer::slotRead() { QString str( ar ); + qWarning(str.simplifyWhiteSpace() ); QStringList lis = QStringList::split(' ', str ); @@ -242 +225,13 @@ void FileTransfer::cancel() { } +void FileTransfer::slotExec() { + qWarning("exited!"); + char buf[2]; + ::read(m_term[0], buf, 1 ); + delete m_proc; + delete m_not; + close( m_term[0] ); + close( m_term[1] ); + close( m_comm[0] ); + close( m_comm[1] ); + emit sent(); +} |