diff options
author | José Bollo <jose.bollo@iot.bzh> | 2020-02-04 21:33:08 +0100 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2020-02-07 10:41:57 +0100 |
commit | 384f2e70fe4bc5bdfd9f35c4347351a985f23d14 (patch) | |
tree | 15361337e34260164a27ff72b1c8c53721398f88 | |
parent | 1685b6a3370f944e30c9ea9cc078d3fc4c243934 (diff) |
Fix bug on unknown commands
Unknow commands were leading to infinite loop.
This fixes.
Bug-AGL: SPEC-3166
Change-Id: If1529526c5779951b8e2e30d999f3fc037eae9d4
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
-rw-r--r-- | src/cynagora.c | 2 | ||||
-rw-r--r-- | src/main-cynagora-admin.c | 37 |
2 files changed, 19 insertions, 20 deletions
diff --git a/src/cynagora.c b/src/cynagora.c index 16d953f..609ab84 100644 --- a/src/cynagora.c +++ b/src/cynagora.c @@ -383,7 +383,7 @@ get_reply( * @param block * * @return the count of fields greater than 0 or a negative -errno value - * or -EAGAIN if nothing and block == 0 + * or -EAGAIN if nothing and block == false * or -EPIPE if broken link */ static diff --git a/src/main-cynagora-admin.c b/src/main-cynagora-admin.c index c6a9535..8f28db5 100644 --- a/src/main-cynagora-admin.c +++ b/src/main-cynagora-admin.c @@ -459,24 +459,23 @@ int do_list(int ac, char **av) if (rc == 0) { memset(&lr, 0, sizeof lr); last_status = rc = cynagora_get(cynagora, &key, listcb, &lr); - if (rc < 0) - fprintf(stderr, "error %s\n", strerror(-rc)); - else { - if (lr.count) { - it = lr.head = listresult_sort(lr.count, lr.head); - while(it) { - fprintf(stdout, "%-*s %-*s %-*s %-*s %-*s %-*s\n", - (int)lr.lengths[0], it->items[0], - (int)lr.lengths[1], it->items[1], - (int)lr.lengths[2], it->items[2], - (int)lr.lengths[3], it->items[3], - (int)lr.lengths[4], it->items[4], - (int)lr.lengths[5], it->items[5]); - it = it->next; - } + if (lr.count) { + it = lr.head = listresult_sort(lr.count, lr.head); + while(it) { + fprintf(stdout, "%-*s %-*s %-*s %-*s %-*s %-*s\n", + (int)lr.lengths[0], it->items[0], + (int)lr.lengths[1], it->items[1], + (int)lr.lengths[2], it->items[2], + (int)lr.lengths[3], it->items[3], + (int)lr.lengths[4], it->items[4], + (int)lr.lengths[5], it->items[5]); + it = it->next; } - fprintf(stdout, "%d entries found\n", lr.count); } + if (rc < 0) + fprintf(stderr, "error %d: %s\n", -rc, strerror(-rc)); + else + fprintf(stdout, "%d entries found\n", lr.count); /* free list */ while(lr.head) { it = lr.head; @@ -679,13 +678,13 @@ int do_any(int ac, char **av) } if (!strcmp(av[0], "quit")) - return 0; + exit(0); if (!strcmp(av[0], "help") || !strcmp(av[0], "?")) return do_help(ac, av); - fprintf(stderr, "unknown command %s\n", av[0]); - return 0; + fprintf(stderr, "unknown command %s (try help)\n", av[0]); + return 1; } void do_all(int ac, char **av, int quit) |