X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fubus.git;a=blobdiff_plain;f=cli.c;h=6084a719aee310f1c5906f8e503c163b09605e25;hp=2d30fc527712b8c99a96db737ae5724ee98dbc9f;hb=2429653f908a9934b32c11d69e7adfc0d1a5ca67;hpb=5e78a8012819ef92a8e60523ced9207d8a6b016f diff --git a/cli.c b/cli.c index 2d30fc5..6084a71 100644 --- a/cli.c +++ b/cli.c @@ -62,12 +62,8 @@ static void receive_event(struct ubus_context *ctx, struct ubus_event_handler *e { char *str; - if (msg) - str = blobmsg_format_json(msg, true); - else - str = ""; - - fprintf(stderr, "\"%s\":{ %s }\n", type, str); + str = blobmsg_format_json(msg, true); + printf("\"%s\": %s\n", type, str); free(str); } @@ -105,6 +101,17 @@ static int ubus_cli_listen(struct ubus_context *ctx, int argc, char **argv) return 0; } +static int ubus_cli_send(struct ubus_context *ctx, int argc, char **argv) +{ + blob_buf_init(&b, 0); + if (argc == 2 && !blobmsg_add_json_from_string(&b, argv[1])) { + fprintf(stderr, "Failed to parse message data\n"); + return UBUS_STATUS_INVALID_ARGUMENT; + } + + return ubus_send_event(ctx, argv[0], b.head); +} + static int usage(const char *prog) { fprintf(stderr, @@ -116,6 +123,7 @@ static int usage(const char *prog) " - list [] List objects\n" " - call [] Call an object method\n" " - listen [...] Listen for events\n" + " - send [] Send an event\n" "\n", prog); return 1; } @@ -180,6 +188,10 @@ int main(int argc, char **argv) ret = ubus_invoke(ctx, id, argv[1], b.head, receive_data, NULL); } else if (!strcmp(cmd, "listen")) { ret = ubus_cli_listen(ctx, argc, argv); + } else if (!strcmp(cmd, "send")) { + if (argc < 1 || argc > 2) + return usage(progname); + ret = ubus_cli_send(ctx, argc, argv); } else { return usage(progname); }