diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2012-11-03 13:42:30 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2012-12-03 09:57:41 +0100 |
commit | d5af695a87df96d4cc6c404db8990a493970add0 (patch) | |
tree | 3b2a7b819b966f76cca8053ccfdeeafa476cdbc2 /common/bbu.c | |
parent | cf425e1615fcb0f352a96e742a14a1e6ceb97f31 (diff) | |
download | barebox-d5af695a87df96d4cc6c404db8990a493970add0.tar.gz barebox-d5af695a87df96d4cc6c404db8990a493970add0.tar.xz |
barebox update: fix finding default handler
It was not possible to register another handler when already
a default handler is registered. Fix this.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'common/bbu.c')
-rw-r--r-- | common/bbu.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/common/bbu.c b/common/bbu.c index 92f8d2b2f4..e31f645d9c 100644 --- a/common/bbu.c +++ b/common/bbu.c @@ -71,13 +71,13 @@ int bbu_confirm(struct bbu_data *data) return -EINTR; } -static struct bbu_handler *bbu_find_handler(const char *name, unsigned long flags) +static struct bbu_handler *bbu_find_handler(const char *name) { struct bbu_handler *handler; list_for_each_entry(handler, &bbu_image_handlers, list) { if (!name) { - if (flags & BBU_HANDLER_FLAG_DEFAULT) + if (handler->flags & BBU_HANDLER_FLAG_DEFAULT) return handler; continue; } @@ -97,10 +97,13 @@ int barebox_update(struct bbu_data *data) struct bbu_handler *handler; int ret; - handler = bbu_find_handler(data->handler_name, data->flags); + handler = bbu_find_handler(data->handler_name); if (!handler) return -ENODEV; + if (!data->handler_name) + data->handler_name = handler->name; + if (!data->devicefile) data->devicefile = handler->devicefile; @@ -137,11 +140,11 @@ void bbu_handlers_list(void) */ int bbu_register_handler(struct bbu_handler *handler) { - if (bbu_find_handler(handler->name, 0)) + if (bbu_find_handler(handler->name)) return -EBUSY; if (handler->flags & BBU_HANDLER_FLAG_DEFAULT && - bbu_find_handler(NULL, BBU_HANDLER_FLAG_DEFAULT)) + bbu_find_handler(NULL)) return -EBUSY; list_add_tail(&handler->list, &bbu_image_handlers); |