summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2010-08-21 18:49:55 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2010-08-30 20:57:20 +0200
commitf50d2063cbcd4a5ebd474445f9d9395918d342a1 (patch)
tree0e98189adca049bd2ba9764cfb059599c6fd848c
parent417e2d45fed238ed3f71e6c771bb84dbfc02c790 (diff)
downloadbarebox-f50d2063cbcd4a5ebd474445f9d9395918d342a1.tar.gz
barebox-f50d2063cbcd4a5ebd474445f9d9395918d342a1.tar.xz
menu: use an initialized struct list as menu list
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--commands/menu.c3
-rw-r--r--common/menu.c19
2 files changed, 10 insertions, 12 deletions
diff --git a/commands/menu.c b/commands/menu.c
index 5efaa614d2..b874ccb464 100644
--- a/commands/menu.c
+++ b/commands/menu.c
@@ -278,6 +278,9 @@ static int do_menu_list(struct cmd_menu *cm)
struct menu* m = NULL;
struct menu* menus = menu_get_menus();
+ if (!menus)
+ return 0;
+
if (is_entry(cm)) {
if (cm->menu)
m = menu_get_by_name(cm->menu);
diff --git a/common/menu.c b/common/menu.c
index 3596e215fd..6e6637addf 100644
--- a/common/menu.c
+++ b/common/menu.c
@@ -30,11 +30,14 @@
#include <errno.h>
#include <readkey.h>
-static struct menu menus;
+static LIST_HEAD(menus);
struct menu* menu_get_menus(void)
{
- return &menus;
+ if (list_empty(&menus))
+ return NULL;
+
+ return list_entry(&menus, struct menu, list);
}
void menu_free(struct menu *m)
@@ -60,7 +63,7 @@ int menu_add(struct menu *m)
if (menu_get_by_name(m->name))
return -EEXIST;
- list_add_tail(&m->list, &menus.list);
+ list_add_tail(&m->list, &menus);
return 0;
}
@@ -112,7 +115,7 @@ struct menu* menu_get_by_name(char *name)
if (!name)
return NULL;
- list_for_each_entry(m, &menus.list, list) {
+ list_for_each_entry(m, &menus, list) {
if(strcmp(m->name, name) == 0)
return m;
}
@@ -291,11 +294,3 @@ void menu_action_show(struct menu *m, struct menu_entry *me)
menu_show(sm);
}
-
-static int menu_init(void)
-{
- INIT_LIST_HEAD(&menus.list);
-
- return 0;
-}
-postcore_initcall(menu_init);