From d4d361ed2f3ff99d56d069bb0aefe5cb48845327 Mon Sep 17 00:00:00 2001 From: Cedric Roux <cedric.roux@eurecom.fr> Date: Sun, 20 Mar 2016 21:30:07 +0100 Subject: [PATCH] error if -on/-off id/group is not found --- tracer/database.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/tracer/database.c b/tracer/database.c index 5039deff5a..59d8cbdc85 100644 --- a/tracer/database.c +++ b/tracer/database.c @@ -286,26 +286,29 @@ void list_groups(void *_d) for (i = 0; i < d->gsize; i++) printf("%s\n", d->g[i].name); } -static void onoff_id(database *d, char *name, int *a, int onoff) +static int onoff_id(database *d, char *name, int *a, int onoff) { id *i; i = bsearch(&(id){name:name}, d->i, d->isize, sizeof(id), id_cmp); - if (i == NULL) return; + if (i == NULL) return 0; a[i->id] = onoff; printf("turning %s %s\n", onoff ? "ON" : "OFF", name); + return 1; } -static void onoff_group(database *d, char *name, int *a, int onoff) +static int onoff_group(database *d, char *name, int *a, int onoff) { group *g; int i; g = bsearch(&(group){name:name}, d->g, d->gsize, sizeof(group), group_cmp); - if (g == NULL) return; + if (g == NULL) return 0; for (i = 0; i < g->size; i++) onoff_id(d, g->ids[i], a, onoff); + return 1; } void on_off(void *_d, char *item, int *a, int onoff) { + int done; database *d = _d; int i; if (item == NULL) { @@ -313,6 +316,10 @@ void on_off(void *_d, char *item, int *a, int onoff) printf("turning %s all traces\n", onoff ? "ON" : "OFF"); return; } - onoff_group(d, item, a, onoff); - onoff_id(d, item, a, onoff); + done = onoff_group(d, item, a, onoff); + done += onoff_id(d, item, a, onoff); + if (done == 0) { + printf("ERROR: ID/group '%s' not found in database\n", item); + exit(1); + } } -- GitLab