X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng%2Fcommands%2Fset_session.c;fp=src%2Fbin%2Flttng%2Fcommands%2Fset_session.c;h=423421deb2bdba337a2e20cae03951bc16cda605;hb=88fd7d62599f1e64a2cd5175ec0d832fc8de2bf9;hp=4238016e40867c897299678d41097e2e497b33c6;hpb=5b365375b92e517b7e41069799679b7835efd7ef;p=lttng-tools.git diff --git a/src/bin/lttng/commands/set_session.c b/src/bin/lttng/commands/set_session.c index 4238016e4..423421deb 100644 --- a/src/bin/lttng/commands/set_session.c +++ b/src/bin/lttng/commands/set_session.c @@ -59,11 +59,34 @@ static void usage(FILE *ofp) static int set_session(void) { int ret = CMD_SUCCESS; + int count, i; + unsigned int session_found = 0; + struct lttng_session *sessions; if (opt_session_name && strlen(opt_session_name) > NAME_MAX) { ERR("Session name too long. Length must be lower or equal to %d", NAME_MAX); ret = CMD_ERROR; + goto end; + } + + count = lttng_list_sessions(&sessions); + if (count < 0) { + ret = CMD_ERROR; + ERR("%s", lttng_strerror(count)); + goto end; + } + + for (i = 0; i < count; i++) { + if (strncmp(sessions[i].name, opt_session_name, NAME_MAX) == 0) { + session_found = 1; + break; + } + } + + if (!session_found) { + ERR("Session '%s' not found", opt_session_name); + ret = CMD_ERROR; goto error; } @@ -78,6 +101,8 @@ static int set_session(void) ret = CMD_SUCCESS; error: + free(sessions); +end: return ret; }