#include "list.h"
#include "user_list.h"
-static struct list_head user_list;
+INITIALIZED_LIST_HEAD(user_list);
/*
* Fill the list of users known to para_server.
* Populates a linked list of all users in \a user_list_file. Returns on
* success, calls exit() on errors.
*/
-static void populate_user_list(char *user_list_file)
+static void populate(char *user_list_file)
{
int ret = -E_USERLIST;
FILE *file_ptr = fopen(user_list_file, "r");
* If this function is called for the second time, the contents of the
* previous call are discarded, i.e. the user list is reloaded.
*/
-void init_user_list(char *user_list_file)
+void user_list_init(char *user_list_file)
{
struct user *u, *tmp;
- static int initialized;
- if (initialized) {
- list_for_each_entry_safe(u, tmp, &user_list, node) {
- list_del(&u->node);
- free(u->name);
- free_public_key(u->pubkey);
- free(u);
- }
- } else
- INIT_LIST_HEAD(&user_list);
- initialized = 1;
- populate_user_list(user_list_file);
+ list_for_each_entry_safe(u, tmp, &user_list, node) {
+ list_del(&u->node);
+ free(u->name);
+ free_public_key(u->pubkey);
+ free(u);
+ }
+ populate(user_list_file);
}
/**
* \return A pointer to the corresponding user struct if the user was found, \p
* NULL otherwise.
*/
-struct user *lookup_user(const char *name)
+const struct user *user_list_lookup(const char *name)
{
- struct user *u;
+ const struct user *u;
list_for_each_entry(u, &user_list, node) {
if (strcmp(u->name, name))
continue;