author | erik <erik> | 2007-01-19 01:18:01 (UTC) |
---|---|---|
committer | erik <erik> | 2007-01-19 01:18:01 (UTC) |
commit | 32343107b30904806d02672955c57ed53d39fe79 (patch) (side-by-side diff) | |
tree | 9114a0ea170e3adc807a2445b49360f1bfde9626 /core/launcher | |
parent | ac0ce844e90a64247c0adb210e0a23021b011d57 (diff) | |
download | opie-32343107b30904806d02672955c57ed53d39fe79.zip opie-32343107b30904806d02672955c57ed53d39fe79.tar.gz opie-32343107b30904806d02672955c57ed53d39fe79.tar.bz2 |
Every file in this commit has a change to check the return value of a call.
-rw-r--r-- | core/launcher/qprocess_unix.cpp | 6 | ||||
-rw-r--r-- | core/launcher/server.cpp | 19 |
2 files changed, 19 insertions, 6 deletions
diff --git a/core/launcher/qprocess_unix.cpp b/core/launcher/qprocess_unix.cpp index 97c0460..3125bcc 100644 --- a/core/launcher/qprocess_unix.cpp +++ b/core/launcher/qprocess_unix.cpp @@ -292,49 +292,53 @@ void QProcessManager::remove( QProc *p ) odebug << "QProcessManager: remove process (procList.count(): " << procList->count() << ")" << oendl; #endif cleanup(); } void QProcessManager::cleanup() { if ( procList->count() == 0 ) { QTimer::singleShot( 0, this, SLOT(removeMe()) ); } } void QProcessManager::removeMe() { if ( procList->count() == 0 ) { qprocess_cleanup_procmanager.remove( &QProcessPrivate::procManager ); QProcessPrivate::procManager = 0; delete this; } } void QProcessManager::sigchldHnd( int fd ) { char tmp; - ::read( fd, &tmp, sizeof(tmp) ); + if (::read( fd, &tmp, sizeof(tmp) ) < 0) +#if defined(QT_QPROCESS_DEBUG) + odebug << "QProcessManager::sigchldHnd() failed dummy read of file descriptor" << oendl; +#endif + ; #if defined(QT_QPROCESS_DEBUG) odebug << "QProcessManager::sigchldHnd()" << oendl; #endif QProc *proc; QProcess *process; bool removeProc; proc = procList->first(); while ( proc != 0 ) { removeProc = FALSE; process = proc->process; QProcess *process_exit_notify=0; if ( process != 0 ) { if ( !process->isRunning() ) { #if defined(QT_QPROCESS_DEBUG) odebug << "QProcessManager::sigchldHnd() (PID: " << proc->pid << "): process exited (QProcess available)" << oendl; #endif // read pending data int nbytes = 0; if ( ::ioctl(proc->socketStdout, FIONREAD, (char*)&nbytes)==0 && nbytes>0 ) { #if defined(QT_QPROCESS_DEBUG) odebug << "QProcessManager::sigchldHnd() (PID: " << proc->pid << "): reading " << nbytes << " bytes of pending data on stdout" << oendl; #endif process->socketRead( proc->socketStdout ); } diff --git a/core/launcher/server.cpp b/core/launcher/server.cpp index 921b790..c45265a 100644 --- a/core/launcher/server.cpp +++ b/core/launcher/server.cpp @@ -346,58 +346,66 @@ void Server::systemMsg(const QCString &msg, const QByteArray &data) QString link; stream >> link; odebug << "desktop.cpp systemMsg -> linkchanged( " << link << " )" << oendl; docList->linkChanged(link); } else if (msg =="reforceDocuments()") { docList->reforceDocuments(); } else if ( msg == "serviceChanged(QString)" ) { MimeType::updateApplications(); } else if ( msg == "mkdir(QString)" ) { QString dir; stream >> dir; if ( !dir.isEmpty() ) mkdir( dir ); } else if ( msg == "rdiffGenSig(QString,QString)" ) { QString baseFile, sigFile; stream >> baseFile >> sigFile; QRsync::generateSignature( baseFile, sigFile ); } else if ( msg == "rdiffGenDiff(QString,QString,QString)" ) { QString baseFile, sigFile, deltaFile; stream >> baseFile >> sigFile >> deltaFile; QRsync::generateDiff( baseFile, sigFile, deltaFile ); } else if ( msg == "rdiffApplyPatch(QString,QString)" ) { QString baseFile, deltaFile; stream >> baseFile >> deltaFile; + bool fileWasCreated = false; if ( !QFile::exists( baseFile ) ) { QFile f( baseFile ); - f.open( IO_WriteOnly ); + fileWasCreated = f.open( IO_WriteOnly ); f.close(); } - QRsync::applyDiff( baseFile, deltaFile ); + if ( fileWasCreated ) { + QRsync::applyDiff( baseFile, deltaFile ); #ifndef QT_NO_COP - QCopEnvelope e( "QPE/Desktop", "patchApplied(QString)" ); - e << baseFile; + QCopEnvelope e( "QPE/Desktop", "patchApplied(QString)" ); + e << baseFile; #endif + } else { +#ifndef QT_NO_COP + QCopEnvelope e( "QPE/Desktop", "patchUnapplied(QString)" ); + e << baseFile; +#endif + } } else if ( msg == "rdiffCleanup()" ) { mkdir( "/tmp/rdiff" ); QDir dir; dir.setPath( "/tmp/rdiff" ); QStringList entries = dir.entryList(); for ( QStringList::Iterator it = entries.begin(); it != entries.end(); ++it ) dir.remove( *it ); } else if ( msg == "sendHandshakeInfo()" ) { QString home = getenv( "HOME" ); #ifndef QT_NO_COP QCopEnvelope e( "QPE/Desktop", "handshakeInfo(QString,bool)" ); e << home; int locked = (int) ServerApplication::screenLocked(); e << locked; #endif } else if ( msg == "sendVersionInfo()" ) { /* * @&$*! Qtopiadesktop relies on the major number * to start with 1. (or 2 as the case of version 2.1 will be) * we need to fake 1.7 to be able * to sync with Qtopiadesktop 1.7. * We'll send it Opie's version in the platform string for now, * until such time when QD gets rewritten correctly. */ @@ -977,30 +985,31 @@ void Server::finishedQueuedRequests() // Get rid of the dialog if ( syncDialog ) { delete syncDialog; syncDialog = 0; } #warning FIXME support TempScreenSaverMode #if 0 QPEApplication::setTempScreenSaverMode(QPEApplication::Enable); #endif } else { qrr->readyToDelete = TRUE; QTimer::singleShot( 0, this, SLOT(finishedQueuedRequests()) ); } } void Server::startSoundServer() { if ( !process ) { process = new Opie::Core::OProcess( this ); connect(process, SIGNAL(processExited(Opie::Core::OProcess*)), SLOT(soundServerExited())); } process->clearArguments(); *process << QPEApplication::qpeDir() + "bin/qss"; - process->start(); + if (!process->start()) + owarn << "Sound server process did not start" << oendl; } void Server::soundServerExited() { QTimer::singleShot(5000, this, SLOT(startSoundServer())); } |