}
enum {
- NAND_FOLDER,
+ NAND_PATH,
__NAND_MAX
};
static const struct blobmsg_policy nand_policy[__NAND_MAX] = {
- [NAND_FOLDER] = { .name = "folder", .type = BLOBMSG_TYPE_STRING },
+ [NAND_PATH] = { .name = "path", .type = BLOBMSG_TYPE_STRING },
};
static void
-procd_spawn_upgraded(char *folder)
+procd_spawn_upgraded(char *path)
{
char *wdt_fd = watchdog_fd();
char *argv[] = { "/tmp/upgraded", NULL, NULL};
- argv[1] = folder;
+ argv[1] = path;
DEBUG(2, "Exec to upgraded now\n");
if (wdt_fd) {
return UBUS_STATUS_INVALID_ARGUMENT;
blobmsg_parse(nand_policy, __NAND_MAX, tb, blob_data(msg), blob_len(msg));
- if (!tb[NAND_FOLDER])
+ if (!tb[NAND_PATH])
return UBUS_STATUS_INVALID_ARGUMENT;
- procd_spawn_upgraded(blobmsg_get_string(tb[NAND_FOLDER]));
+ procd_spawn_upgraded(blobmsg_get_string(tb[NAND_PATH]));
fprintf(stderr, "Yikees, something went wrong. no /sbin/upgraded ?\n");
return 0;
}
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),
};
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)