only add the nandupgrade method when /sbin/upgraded exists
authorJohn Crispin <blogic@openwrt.org>
Wed, 11 Jun 2014 01:37:08 +0000 (02:37 +0100)
committerJohn Crispin <blogic@openwrt.org>
Wed, 11 Jun 2014 01:37:08 +0000 (02:37 +0100)
Signed-off-by: John Crispin <blogic@openwrt.org>
system.c

index 2110035fee6f5b8744dfa7c866e1f6390a666904..29ca656aeb12daa407014879b99dbefbb093c884 100644 (file)
--- a/system.c
+++ b/system.c
@@ -342,6 +342,8 @@ static const struct ubus_method system_methods[] = {
        UBUS_METHOD_NOARG("upgrade", system_upgrade),
        UBUS_METHOD("watchdog", watchdog_set, watchdog_policy),
        UBUS_METHOD("signal", proc_signal, signal_policy),
+
+       /* must remain at the end as it ia not always loaded */
        UBUS_METHOD("nandupgrade", nand_set, nand_policy),
 };
 
@@ -371,8 +373,12 @@ procd_bcast_event(char *event, struct blob_attr *msg)
 
 void ubus_init_system(struct ubus_context *ctx)
 {
+       struct stat s;
        int ret;
 
+       if (stat("/sbin/upgraded", &s))
+               system_object.n_methods -= 1;
+
        _ctx = ctx;
        ret = ubus_add_object(ctx, &system_object);
        if (ret)