summaryrefslogtreecommitdiffstats
path: root/UsersTable.c
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2006-03-04 18:16:49 +0000
committerHisham Muhammad <hisham@gobolinux.org>2006-03-04 18:16:49 +0000
commitd6231bab89d634da5564491196b7c478db038505 (patch)
treebfc0bf00b138763eb41132fd27a8f389a78bf3a4 /UsersTable.c
Initial import.
Diffstat (limited to 'UsersTable.c')
-rw-r--r--UsersTable.c56
1 files changed, 56 insertions, 0 deletions
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 <stdio.h>
+#include <strings.h>
+#include <pwd.h>
+#include <sys/types.h>
+
+#include "debug.h"
+#include <assert.h>
+
+/*{
+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);
+}

© 2014-2024 Faster IT GmbH | imprint | privacy policy