diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 09:00:29 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 09:00:29 +0000 |
commit | 52e25213825024b8bb446eb26b03bedc9d5c2103 (patch) | |
tree | da70bf44b2423f6f8e9a070c063fed79d190b489 /UsersTable.c | |
parent | Initial commit. (diff) | |
download | htop-52e25213825024b8bb446eb26b03bedc9d5c2103.tar.xz htop-52e25213825024b8bb446eb26b03bedc9d5c2103.zip |
Adding upstream version 3.2.2.upstream/3.2.2upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'UsersTable.c')
-rw-r--r-- | UsersTable.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/UsersTable.c b/UsersTable.c new file mode 100644 index 0000000..6586a4b --- /dev/null +++ b/UsersTable.c @@ -0,0 +1,46 @@ +/* +htop - UsersTable.c +(C) 2004-2011 Hisham H. Muhammad +Released under the GNU GPLv2+, see the COPYING file +in the source distribution for its full text. +*/ + +#include "config.h" // IWYU pragma: keep + +#include "UsersTable.h" + +#include <pwd.h> +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> + +#include "XUtils.h" + + +UsersTable* UsersTable_new(void) { + UsersTable* this; + this = xMalloc(sizeof(UsersTable)); + this->users = Hashtable_new(10, true); + return this; +} + +void UsersTable_delete(UsersTable* this) { + Hashtable_delete(this->users); + free(this); +} + +char* UsersTable_getRef(UsersTable* this, unsigned int uid) { + char* name = Hashtable_get(this->users, uid); + if (name == NULL) { + const struct passwd* userData = getpwuid(uid); + if (userData != NULL) { + name = xStrdup(userData->pw_name); + Hashtable_put(this->users, uid, name); + } + } + return name; +} + +inline void UsersTable_foreach(UsersTable* this, Hashtable_PairFunction f, void* userData) { + Hashtable_foreach(this->users, f, userData); +} |