From 45c873325ec4ef2c2507906ef0b294a56d2931a1 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sun, 6 Feb 2011 16:48:58 +0100 Subject: [PATCH] cli: display proper types for the method signatures --- cli.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/cli.c b/cli.c index 0af5b64..1a49495 100644 --- a/cli.c +++ b/cli.c @@ -3,6 +3,28 @@ static struct blob_buf b; +static const char *attr_types[] = { + [BLOBMSG_TYPE_INT32] = "\"Integer\"", + [BLOBMSG_TYPE_STRING] = "\"String\"", +}; + +static const char *format_type(void *priv, struct blob_attr *attr) +{ + const char *type = NULL; + int typeid; + + if (blob_id(attr) != BLOBMSG_TYPE_INT32) + return NULL; + + typeid = blobmsg_get_u32(attr); + if (typeid < ARRAY_SIZE(attr_types)) + type = attr_types[typeid]; + if (!type) + type = "\"(unknown)\""; + + return type; +} + static void receive_lookup(struct ubus_context *ctx, struct ubus_object_data *obj, void *priv) { struct blob_attr *cur; @@ -15,7 +37,7 @@ static void receive_lookup(struct ubus_context *ctx, struct ubus_object_data *ob return; blob_for_each_attr(cur, obj->signature, rem) { - s = blobmsg_format_json(cur, false); + s = blobmsg_format_json_with_cb(cur, false, format_type, NULL); fprintf(stderr, "\t%s\n", s); free(s); }