X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Flib%2Flttng-ctl%2Fsave.c;h=d136b2d98ab6b2f8ff06012160be05d14f78ac75;hp=f215468a295ab647227cc4f679d3bb6c97f93ff9;hb=b1a95f61f294264bd0f749e764d355f6ef843543;hpb=5a8f54da84e1df8beadfef3a9f866e35a3ea13dd diff --git a/src/lib/lttng-ctl/save.c b/src/lib/lttng-ctl/save.c index f215468a2..d136b2d98 100644 --- a/src/lib/lttng-ctl/save.c +++ b/src/lib/lttng-ctl/save.c @@ -99,26 +99,39 @@ int lttng_save_session_attr_set_output_url( struct lttng_save_session_attr *attr, const char *url) { int ret = 0; + size_t len, size; + struct lttng_uri *uris = NULL; if (!attr) { ret = -LTTNG_ERR_INVALID; goto error; } - if (url) { - size_t len; + if (!url) { + attr->configuration_url[0] = '\0'; + ret = 0; + goto end; + } - len = strlen(url); - if (len >= PATH_MAX) { - ret = -LTTNG_ERR_INVALID; - goto error; - } + len = strlen(url); + if (len >= PATH_MAX) { + ret = -LTTNG_ERR_INVALID; + goto error; + } - strncpy(attr->configuration_url, url, len); - } else { - attr->configuration_url[0] = '\0'; + size = uri_parse_str_urls(url, NULL, &uris); + if (size <= 0 || uris[0].dtype != LTTNG_DST_PATH) { + ret = -LTTNG_ERR_INVALID; + goto error; } + + /* Copy string plus the NULL terminated byte. */ + lttng_ctl_copy_string(attr->configuration_url, uris[0].dst.path, + sizeof(attr->configuration_url)); + +end: error: + free(uris); return ret; }