From 24952bba05eb93f610ab1d9a2f06653c4853ab9b Mon Sep 17 00:00:00 2001 From: ArsenArsen Date: Wed, 20 Dec 2017 11:42:11 +0100 Subject: [PATCH] Add a getCurrentUser function for further reference --- src/platformspecifics/mac/macbackend.cpp | 14 ++++++++++++++ src/platformspecifics/mac/macbackend.hpp | 2 ++ src/platformspecifics/u32/u32backend.cpp | 10 ++++++++++ src/platformspecifics/u32/u32backend.hpp | 2 ++ src/platformspecifics/x11/x11backend.cpp | 14 +++++++++++++- src/platformspecifics/x11/x11backend.hpp | 2 ++ 6 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/platformspecifics/mac/macbackend.cpp b/src/platformspecifics/mac/macbackend.cpp index f0d1b1b..61ad6cd 100644 --- a/src/platformspecifics/mac/macbackend.cpp +++ b/src/platformspecifics/mac/macbackend.cpp @@ -1,6 +1,7 @@ #include "macbackend.hpp" #include +#include std::tuple PlatformBackend::getCursor() { #warning "TODO: Mac backend" @@ -17,3 +18,16 @@ pid_t PlatformBackend::pid() { bool PlatformBackend::filenameValid(QString name) { return !name.contains('/'); } + +QString PlatformBackend::getCurrentUser() { + auto pwent = getpwent(); + if(!pwent) { + if (qEnvironmentVariableIsSet("USER")) + return QString::fromLocal8Bit(qgetenv("USER")); + else return QString(); + } + QString ret = QString::fromLocal8Bit(pwent->pw_name); + endpwent(); + return ret; +} + diff --git a/src/platformspecifics/mac/macbackend.hpp b/src/platformspecifics/mac/macbackend.hpp index a987d3f..c26dd0c 100644 --- a/src/platformspecifics/mac/macbackend.hpp +++ b/src/platformspecifics/mac/macbackend.hpp @@ -4,6 +4,7 @@ #include #define PLATFORM_CAPABILITY_PID +#define PLATFORM_CAPABILITY_CURRENT_USER class PlatformBackend { public: @@ -14,6 +15,7 @@ public: return inst; } bool filenameValid(QString name); + QString getCurrentUser(); }; #endif // MACBACKEND_HPP diff --git a/src/platformspecifics/u32/u32backend.cpp b/src/platformspecifics/u32/u32backend.cpp index 90150d7..8286061 100644 --- a/src/platformspecifics/u32/u32backend.cpp +++ b/src/platformspecifics/u32/u32backend.cpp @@ -1,5 +1,6 @@ #include "u32backend.hpp" +#include #include #include #include @@ -43,3 +44,12 @@ bool PlatformBackend::filenameValid(QString name) { if (periods == name.length()) return false; return !illegalNames.contains(name); } + +QString PlatformBackend::getCurrentUser() { + char username[UNLEN + 1]; + DWORD username_len = UNLEN + 1; + GetUserName(username, &username_len); + QString userName = QString::fromLocal8Bit(username, username_len); + delete[] username; + return userName; +} diff --git a/src/platformspecifics/u32/u32backend.hpp b/src/platformspecifics/u32/u32backend.hpp index 6cff62e..e1acaec 100644 --- a/src/platformspecifics/u32/u32backend.hpp +++ b/src/platformspecifics/u32/u32backend.hpp @@ -7,6 +7,7 @@ #define PLATFORM_CAPABILITY_PID #define PLATFORM_CAPABILITY_ACTIVEWINDOW #define PLATFORM_CAPABILITY_CURSOR +#define PLATFORM_CAPABILITY_CURRENT_USER class PlatformBackend { public: @@ -18,6 +19,7 @@ public: } WId getActiveWID(); bool filenameValid(QString name); + QString getCurrentUser(); }; #endif // U32BACKEND_HPP diff --git a/src/platformspecifics/x11/x11backend.cpp b/src/platformspecifics/x11/x11backend.cpp index fe4fc94..ea0e2c4 100644 --- a/src/platformspecifics/x11/x11backend.cpp +++ b/src/platformspecifics/x11/x11backend.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -28,7 +29,6 @@ pid_t PlatformBackend::pid() { return getpid(); } - WId PlatformBackend::getActiveWID() { xcb_connection_t *connection = QX11Info::connection(); xcb_get_input_focus_reply_t *focusReply; @@ -58,3 +58,15 @@ WId PlatformBackend::getActiveWID() { bool PlatformBackend::filenameValid(QString name) { return !name.contains('/'); } + +QString PlatformBackend::getCurrentUser() { + auto pwent = getpwent(); + if(!pwent) { + if (qEnvironmentVariableIsSet("USER")) + return QString::fromLocal8Bit(qgetenv("USER")); + else return QString(); + } + QString ret = QString::fromLocal8Bit(pwent->pw_name); + endpwent(); + return ret; +} diff --git a/src/platformspecifics/x11/x11backend.hpp b/src/platformspecifics/x11/x11backend.hpp index 63e8d2b..71cbeec 100644 --- a/src/platformspecifics/x11/x11backend.hpp +++ b/src/platformspecifics/x11/x11backend.hpp @@ -6,6 +6,7 @@ #define PLATFORM_CAPABILITY_PID #define PLATFORM_CAPABILITY_ACTIVEWINDOW #define PLATFORM_CAPABILITY_CURSOR +#define PLATFORM_CAPABILITY_CURRENT_USER class PlatformBackend { public: @@ -17,6 +18,7 @@ public: } WId getActiveWID(); bool filenameValid(QString name); + QString getCurrentUser(); }; #endif // X11BACKEND_HPP