mirror of
https://github.com/itay-grudev/SingleApplication.git
synced 2025-01-15 00:42:05 +08:00
The codec for string from qgetenv and pw->pw_name is not necessarily utf8. So use QString::fromLocal8Bit and QStrings.
This commit is contained in:
parent
4abe20afbf
commit
49c282a64c
@ -84,23 +84,24 @@ SingleApplicationPrivate::~SingleApplicationPrivate()
|
||||
delete memory;
|
||||
}
|
||||
|
||||
QByteArray SingleApplicationPrivate::getUsername(){
|
||||
QString SingleApplicationPrivate::getUsername()
|
||||
{
|
||||
#ifdef Q_OS_WIN
|
||||
wchar_t username[UNLEN + 1];
|
||||
// Specifies size of the buffer on input
|
||||
DWORD usernameLength = UNLEN + 1;
|
||||
if( GetUserNameW( username, &usernameLength ) )
|
||||
return QString::fromWCharArray( username ).toUtf8();
|
||||
return qgetenv( "USERNAME" );
|
||||
return QString::fromWCharArray( username );
|
||||
return qEnvironmentVariable( "USERNAME" );
|
||||
#endif
|
||||
#ifdef Q_OS_UNIX
|
||||
QByteArray username;
|
||||
QString username;
|
||||
uid_t uid = geteuid();
|
||||
struct passwd *pw = getpwuid( uid );
|
||||
if( pw )
|
||||
username = pw->pw_name;
|
||||
username = QString::fromLocal8Bit( pw->pw_name );
|
||||
if( username.isEmpty() )
|
||||
username = qgetenv( "USER" );
|
||||
username = qEnvironmentVariable( "USER" );
|
||||
return username;
|
||||
#endif
|
||||
}
|
||||
@ -127,7 +128,7 @@ void SingleApplicationPrivate::genBlockServerName()
|
||||
|
||||
// User level block requires a user specific data in the hash
|
||||
if( options & SingleApplication::Mode::User ) {
|
||||
appData.addData( getUsername() );
|
||||
appData.addData( getUsername().toUtf8() );
|
||||
}
|
||||
|
||||
// Replace the backslash in RFC 2045 Base64 [a-zA-Z0-9+/=] to comply with
|
||||
@ -175,7 +176,7 @@ void SingleApplicationPrivate::startPrimary()
|
||||
|
||||
inst->primary = true;
|
||||
inst->primaryPid = q->applicationPid();
|
||||
strncpy( inst->primaryUser, getUsername().data(), 127 );
|
||||
strncpy( inst->primaryUser, getUsername().toUtf8().data(), 127 );
|
||||
inst->primaryUser[127] = '\0';
|
||||
inst->checksum = blockChecksum();
|
||||
|
||||
|
@ -72,7 +72,7 @@ public:
|
||||
SingleApplicationPrivate( SingleApplication *q_ptr );
|
||||
~SingleApplicationPrivate();
|
||||
|
||||
QByteArray getUsername();
|
||||
QString getUsername();
|
||||
void genBlockServerName();
|
||||
void initializeMemoryBlock();
|
||||
void startPrimary();
|
||||
|
Loading…
Reference in New Issue
Block a user