X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Flib%2Flttng-ctl%2Fsave.c;h=f8b9043b634fcf053644721d4770b57250a2377c;hp=f215468a295ab647227cc4f679d3bb6c97f93ff9;hb=62a7b8edf965b89d3ca57da120dcedfcf36dfe02;hpb=00c76ceaeb0074e47167be56c0920284e6a0360e diff --git a/src/lib/lttng-ctl/save.c b/src/lib/lttng-ctl/save.c index f215468a2..f8b9043b6 100644 --- a/src/lib/lttng-ctl/save.c +++ b/src/lib/lttng-ctl/save.c @@ -15,7 +15,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#define _GNU_SOURCE +#define _LGPL_SOURCE #include #include @@ -82,7 +82,7 @@ int lttng_save_session_attr_set_session_name( size_t len; len = strlen(session_name); - if (len >= NAME_MAX) { + if (len >= LTTNG_NAME_MAX) { ret = -LTTNG_ERR_INVALID; goto error; } @@ -99,26 +99,40 @@ int lttng_save_session_attr_set_output_url( struct lttng_save_session_attr *attr, const char *url) { int ret = 0; + size_t len; + ssize_t 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; }