aboutsummaryrefslogtreecommitdiffstats
path: root/UsersTable.c
diff options
context:
space:
mode:
authorAmit Pundir <amit.pundir@linaro.org>2012-04-17 15:05:59 +0530
committerAmit Pundir <amit.pundir@linaro.org>2012-04-17 15:05:59 +0530
commit96a11754a6950bfe50784c0877cb64b1ed7d2b18 (patch)
treeb977131bbbb4c3bd8ade370aab2e4fc913440c04 /UsersTable.c
downloadandroid_external_htop-96a11754a6950bfe50784c0877cb64b1ed7d2b18.tar.gz
android_external_htop-96a11754a6950bfe50784c0877cb64b1ed7d2b18.tar.bz2
android_external_htop-96a11754a6950bfe50784c0877cb64b1ed7d2b18.zip
add original htop code
htop-0.9 downloaded from http://archive.ubuntu.com/ubuntu/pool/universe/h/htop/htop_0.9.orig.tar.gz Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Diffstat (limited to 'UsersTable.c')
-rw-r--r--UsersTable.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/UsersTable.c b/UsersTable.c
new file mode 100644
index 0000000..49a5159
--- /dev/null
+++ b/UsersTable.c
@@ -0,0 +1,52 @@
+/*
+htop - UsersTable.c
+(C) 2004-2010 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, unsigned 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 void UsersTable_foreach(UsersTable* this, Hashtable_PairFunction f, void* userData) {
+ Hashtable_foreach(this->users, f, userData);
+}