You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.2 KiB
56 lines
1.2 KiB
/* |
|
htop - UsersTable.c |
|
(C) 2004-2006 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); |
|
}
|
|
|