Diffstat (limited to 'library/qcopenvelope_qws.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | library/qcopenvelope_qws.cpp | 66 |
1 files changed, 20 insertions, 46 deletions
diff --git a/library/qcopenvelope_qws.cpp b/library/qcopenvelope_qws.cpp index 81bb0f5..0aac32b 100644 --- a/library/qcopenvelope_qws.cpp +++ b/library/qcopenvelope_qws.cpp @@ -104,4 +104,5 @@ QCopEnvelope::~QCopEnvelope() if ( qcopfile.open(IO_WriteOnly | IO_Append) ) { +#ifndef Q_OS_WIN32 if(flock(qcopfile.handle(), LOCK_EX)) { - /* some error occured */ + /* some error occurred */ qWarning(QString("Failed to obtain file lock on %1 (%2)") @@ -109,48 +110,21 @@ QCopEnvelope::~QCopEnvelope() } - /* file locked, but might be stale (e.g. program for whatever - reason did not start). I modified more than 1 minute ago, - truncate the file */ - struct stat buf; - time_t t; - if (!fstat(qcopfile.handle(), &buf) && (time(&t) != (time_t)-1) ) { - // success on fstat, lets compare times - if (buf.st_ctime + 60 < t) { - qWarning("stale file " + qcopfn + " found. Truncating"); - ftruncate(qcopfile.handle(), 0); - qcopfile.reset(); - } +#endif + { + QDataStream ds(&qcopfile); + ds << ch << msg << data; + qcopfile.flush(); +#ifndef Q_OS_WIN32 + flock(qcopfile.handle(), LOCK_UN); +#endif + qcopfile.close(); } - if ( !QCopChannel::isRegistered(ch) ) { - int fsize = qcopfile.size(); - { - QDataStream ds(&qcopfile); - ds << ch << msg << data; - flock(qcopfile.handle(), LOCK_UN); - qcopfile.close(); - } - - if (fsize == 0) { - QString cmd = ch.mid(pref); - Global::execute(cmd); - } - - char c; - for (int i=0; (c=msg[i]); i++) { - if ( c == ' ' ) { - // Return-value required - // ###### wait for it - break; - } else if ( c == '(' ) { - // No return value - break; - } - } - goto end; - } // endif isRegisterd - flock(qcopfile.handle(), LOCK_UN); - qcopfile.close(); - qcopfile.remove(); + QByteArray b; + QDataStream stream(b, IO_WriteOnly); + stream << QString(ch.mid(pref)); + QCopChannel::send("QPE/Server", "processQCop(QString)", b); + delete device(); + return; } else { - qWarning(QString("Failed to obtain file lock on %1") + qWarning(QString("Failed to open file %1") .arg(qcopfn)); @@ -162,3 +136,3 @@ QCopEnvelope::~QCopEnvelope() QString endpoint = ch.mid(9); - + ch = "QPE/SOAP"; @@ -167,4 +141,4 @@ QCopEnvelope::~QCopEnvelope() } + QCopChannel::send(ch,msg,data); -end: delete device(); |