From d6231bab89d634da5564491196b7c478db038505 Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Sat, 4 Mar 2006 18:16:49 +0000 Subject: Initial import. --- UsersTable.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 UsersTable.c (limited to 'UsersTable.c') diff --git a/UsersTable.c b/UsersTable.c new file mode 100644 index 00000000..d3b84e9a --- /dev/null +++ b/UsersTable.c @@ -0,0 +1,56 @@ +/* +htop - UsersTable.c +(C) 2004,2005 Hisham H. Muhammad +Released under the GNU GPL, see the COPYING file +in the source distribution for its full text. +*/ + +#include "UsersTable.h" +#include "Hashtable.h" +#include "String.h" + +#include +#include +#include +#include + +#include "debug.h" +#include + +/*{ +typedef struct UsersTable_ { + Hashtable* users; +} UsersTable; +}*/ + +UsersTable* UsersTable_new() { + UsersTable* this; + this = malloc(sizeof(UsersTable)); + this->users = Hashtable_new(20, true); + return this; +} + +void UsersTable_delete(UsersTable* this) { + Hashtable_delete(this->users); + free(this); +} + +char* UsersTable_getRef(UsersTable* this, int uid) { + char* name = (char*) (Hashtable_get(this->users, uid)); + if (name == NULL) { + struct passwd* userData = getpwuid(uid); + if (userData != NULL) { + name = String_copy(userData->pw_name); + Hashtable_put(this->users, uid, name); + } + } + return name; +} + +inline int UsersTable_size(UsersTable* this) { + return (Hashtable_size(this->users)); +} + +inline void UsersTable_foreach(UsersTable* this, Hashtable_PairFunction f, void* userData) { + Hashtable_foreach(this->users, f, userData); +} -- cgit v1.2.3