mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-10-29 00:03:58 +01:00
Users: add new option --users-myself-only
This commit is contained in:
@@ -11,4 +11,4 @@ typedef struct FFUserResult
|
||||
uint64_t loginTime; // ms
|
||||
} FFUserResult;
|
||||
|
||||
const char* ffDetectUsers(FFlist* users);
|
||||
const char* ffDetectUsers(FFUsersOptions* options, FFlist* users);
|
||||
|
||||
@@ -15,15 +15,18 @@
|
||||
#include <arpa/inet.h>
|
||||
#endif
|
||||
|
||||
const char* ffDetectUsers(FFlist* users)
|
||||
const char* ffDetectUsers(FFUsersOptions* options, FFlist* users)
|
||||
{
|
||||
struct utmpx* n = NULL;
|
||||
setutxent();
|
||||
|
||||
next:
|
||||
while((n = getutxent()))
|
||||
while ((n = getutxent()))
|
||||
{
|
||||
if(n->ut_type != USER_PROCESS)
|
||||
if (n->ut_type != USER_PROCESS)
|
||||
continue;
|
||||
|
||||
if (options->myselfOnly && !ffStrbufEqualS(&instance.state.platform.userName, n->ut_user))
|
||||
continue;
|
||||
|
||||
FF_LIST_FOR_EACH(FFUserResult, user, *users)
|
||||
|
||||
@@ -10,23 +10,28 @@ static inline uint64_t to_ms(uint64_t ret)
|
||||
return ret / 10000ull;
|
||||
}
|
||||
|
||||
const char* ffDetectUsers(FFlist* users)
|
||||
const char* ffDetectUsers(FFUsersOptions* options, FFlist* users)
|
||||
{
|
||||
WTS_SESSION_INFO_1W* sessionInfo;
|
||||
DWORD sessionCount;
|
||||
DWORD level = 1;
|
||||
|
||||
if(!WTSEnumerateSessionsExW(WTS_CURRENT_SERVER_HANDLE, &level, 0, &sessionInfo, &sessionCount))
|
||||
if (!WTSEnumerateSessionsExW(WTS_CURRENT_SERVER_HANDLE, &level, 0, &sessionInfo, &sessionCount))
|
||||
return "WTSEnumerateSessionsW(WTS_CURRENT_SERVER_HANDLE) failed";
|
||||
|
||||
for (DWORD i = 0; i < sessionCount; i++)
|
||||
{
|
||||
WTS_SESSION_INFO_1W* session = &sessionInfo[i];
|
||||
if(session->State != WTSActive)
|
||||
if (session->State != WTSActive)
|
||||
continue;
|
||||
|
||||
FF_STRBUF_AUTO_DESTROY userName = ffStrbufCreateWS(session->pUserName);
|
||||
|
||||
if (options->myselfOnly && !ffStrbufEqual(&instance.state.platform.userName, &userName))
|
||||
continue;
|
||||
|
||||
FFUserResult* user = (FFUserResult*) ffListAdd(users);
|
||||
ffStrbufInitWS(&user->name, session->pUserName);
|
||||
ffStrbufInitMove(&user->name, &userName);
|
||||
ffStrbufInitWS(&user->hostName, session->pHostName);
|
||||
ffStrbufInitWS(&user->sessionName, session->pSessionName);
|
||||
ffStrbufInit(&user->clientIp);
|
||||
|
||||
Reference in New Issue
Block a user