Update SingleApplication to latest upstream sources

This commit is contained in:
Laurent Trinques
2020-01-08 14:27:52 +01:00
parent 7ebc395f8b
commit 5e63ac316c
7 changed files with 138 additions and 26 deletions

View File

@@ -33,11 +33,8 @@
#include <cstddef>
#include <QtCore/QDir>
#include <QtCore/QProcess>
#include <QtCore/QByteArray>
#include <QtCore/QSemaphore>
#include <QtCore/QDataStream>
#include <QtCore/QStandardPaths>
#include <QtCore/QCryptographicHash>
#include <QtNetwork/QLocalServer>
#include <QtNetwork/QLocalSocket>
@@ -45,6 +42,12 @@
#include "singleapplication.h"
#include "singleapplication_p.h"
#ifdef Q_OS_UNIX
#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>
#endif
#ifdef Q_OS_WIN
#include <windows.h>
#include <lmcons.h>
@@ -55,6 +58,8 @@ SingleApplicationPrivate::SingleApplicationPrivate( SingleApplication *q_ptr )
{
server = nullptr;
socket = nullptr;
memory = nullptr;
instanceNumber = -1;
}
SingleApplicationPrivate::~SingleApplicationPrivate()
@@ -107,22 +112,20 @@ void SingleApplicationPrivate::genBlockServerName()
if( GetUserNameW( username, &usernameLength ) ) {
appData.addData( QString::fromWCharArray(username).toUtf8() );
} else {
appData.addData( QStandardPaths::standardLocations( QStandardPaths::HomeLocation ).join("").toUtf8() );
appData.addData( qgetenv("USERNAME") );
}
#endif
#ifdef Q_OS_UNIX
QProcess process;
process.start( "whoami" );
if( process.waitForFinished( 100 ) &&
process.exitCode() == QProcess::NormalExit) {
appData.addData( process.readLine() );
} else {
appData.addData(
QDir(
QStandardPaths::standardLocations( QStandardPaths::HomeLocation ).first()
).absolutePath().toUtf8()
);
QByteArray username;
uid_t uid = geteuid();
struct passwd *pw = getpwuid(uid);
if( pw ) {
username = pw->pw_name;
}
if( username.isEmpty() ) {
username = qgetenv("USER");
}
appData.addData(username);
#endif
}
@@ -385,8 +388,7 @@ void SingleApplicationPrivate::readInitMessageBody( QLocalSocket *sock )
}
if (sock->bytesAvailable() > 0) {
//This line crash
//Q_EMIT this->slotDataAvailable( sock, instanceId );
Q_EMIT this->slotDataAvailable( sock, instanceId );
}
}