summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/cli.c b/cli.c
index 3b67047..5d2cd4c 100644
--- a/cli.c
+++ b/cli.c
@@ -119,6 +119,23 @@ static void receive_event(struct ubus_context *ctx, struct ubus_event_handler *e
print_event(type, msg);
}
+static int ubus_cli_error(char *cmd, int argc, char **argv, int err)
+{
+ int i;
+
+ if (!simple_output && !isatty(fileno(stderr))) {
+ fprintf(stderr, "Command failed: ubus %s ", cmd);
+ for (i = 0; i < argc; i++) {
+ fprintf(stderr, "%s ", argv[i]);
+ }
+ fprintf(stderr, "(%s)\n", ubus_strerror(err));
+
+ return -err;
+ }
+
+ return err;
+}
+
static int ubus_cli_list(struct ubus_context *ctx, int argc, char **argv)
{
const char *path = NULL;
@@ -142,14 +159,18 @@ static int ubus_cli_call(struct ubus_context *ctx, int argc, char **argv)
blob_buf_init(&b, 0);
if (argc == 3 && !blobmsg_add_json_from_string(&b, argv[2])) {
- return UBUS_STATUS_PARSE_ERROR;
+ return ubus_cli_error("call", argc, argv, UBUS_STATUS_PARSE_ERROR);
}
ret = ubus_lookup_id(ctx, argv[0], &id);
if (ret)
return ret;
- return ubus_invoke(ctx, id, argv[1], b.head, receive_call_result_data, NULL, timeout * 1000);
+ ret = ubus_invoke(ctx, id, argv[1], b.head, receive_call_result_data, NULL, timeout * 1000);
+ if (ret)
+ return ubus_cli_error("call", argc, argv, ret);
+
+ return ret;
}
struct cli_listen_data {