static ssize_t parse_str_urls_to_uri(const char *ctrl_url, const char *data_url,
struct lttng_uri **uris)
{
- int ret;
unsigned int equal = 1, idx = 0;
/* Add the "file://" size to the URL maximum size */
char url[PATH_MAX + 7];
* Check if first character is a '/' or else reject the URL.
*/
if (ctrl_url && ctrl_url[0] == '/') {
+ int ret;
+
ret = snprintf(url, sizeof(url), "file://%s", ctrl_url);
if (ret < 0) {
PERROR("snprintf file url");
/* It's possible the control URIs array contains more than one URI */
memcpy(tmp_uris, ctrl_uris, sizeof(struct lttng_uri) * size_ctrl);
++idx;
+ free(ctrl_uris);
}
if (data_uris) {
memcpy(&tmp_uris[idx], data_uris, sizeof(struct lttng_uri));
+ free(data_uris);
}
*uris = tmp_uris;
*/
static int set_session_daemon_path(void)
{
- int ret;
int in_tgroup = 0; /* In tracing group */
uid_t uid;
}
if (uid != 0) {
+ int ret;
+
if (in_tgroup) {
/* Tracing group */
ret = try_connect_sessiond(sessiond_sock_path);
*/
void lttng_destroy_handle(struct lttng_handle *handle)
{
- if (handle) {
- free(handle);
- }
+ free(handle);
}
/*
*/
int lttng_create_session(const char *name, const char *url)
{
+ int ret;
ssize_t size;
struct lttcomm_session_msg lsm;
struct lttng_uri *uris = NULL;
lsm.u.uri.size = size;
- return ask_sessiond_varlen(&lsm, uris, sizeof(struct lttng_uri) * size,
+ ret = ask_sessiond_varlen(&lsm, uris, sizeof(struct lttng_uri) * size,
NULL);
+
+ free(uris);
+ return ret;
}
/*
return ret;
}
- if (strlen(sessiond_sock_path) == 0) {
+ if (*sessiond_sock_path == '\0') {
/*
* No socket path set. Weird error which means the constructor was not
* called.
int lttng_set_consumer_url(struct lttng_handle *handle,
const char *control_url, const char *data_url)
{
+ int ret;
ssize_t size;
struct lttcomm_session_msg lsm;
struct lttng_uri *uris = NULL;
lsm.u.uri.size = size;
- return ask_sessiond_varlen(&lsm, uris, sizeof(struct lttng_uri) * size,
+ ret = ask_sessiond_varlen(&lsm, uris, sizeof(struct lttng_uri) * size,
NULL);
+
+ free(uris);
+ return ret;
}
/*
- * Enable consumer for a session and domain.
- *
- * Return 0 on success, else a negative value.
+ * [OBSELETE]
*/
int lttng_enable_consumer(struct lttng_handle *handle)
{
- struct lttcomm_session_msg lsm;
-
- if (handle == NULL) {
- return -LTTNG_ERR_INVALID;
- }
-
- lsm.cmd_type = LTTNG_ENABLE_CONSUMER;
-
- copy_string(lsm.session.name, handle->session_name,
- sizeof(lsm.session.name));
- copy_lttng_domain(&lsm.domain, &handle->domain);
-
- return ask_sessiond(&lsm, NULL);
+ return -ENOSYS;
}
/*
- * Disable consumer for a session and domain.
- *
- * Return 0 on success, else a negative value.
+ * [OBSELETE]
*/
int lttng_disable_consumer(struct lttng_handle *handle)
{
- struct lttcomm_session_msg lsm;
-
- if (handle == NULL) {
- return -LTTNG_ERR_INVALID;
- }
-
- lsm.cmd_type = LTTNG_DISABLE_CONSUMER;
-
- copy_string(lsm.session.name, handle->session_name,
- sizeof(lsm.session.name));
- copy_lttng_domain(&lsm.domain, &handle->domain);
-
- return ask_sessiond(&lsm, NULL);
+ return -ENOSYS;
}
/*
*/
static int set_health_socket_path(void)
{
- int ret;
int in_tgroup = 0; /* In tracing group */
uid_t uid;
const char *home;
}
if (uid != 0) {
+ int ret;
+
/*
* With GNU C < 2.1, snprintf returns -1 if the target buffer is too small;
* With GNU C >= 2.1, snprintf returns the required size (excluding closing null)
/* There should never be a data URL */
size = parse_str_urls_to_uri(url, NULL, &uris);
if (size < 0) {
- return -LTTNG_ERR_INVALID;
+ ret = -LTTNG_ERR_INVALID;
+ goto error;
}
lsm.u.uri.size = size;
datetime);
if (ret < 0) {
PERROR("snprintf uri subdir");
- return -LTTNG_ERR_FATAL;
+ ret = -LTTNG_ERR_FATAL;
+ goto error;
}
}
- return ask_sessiond_varlen(&lsm, uris, sizeof(struct lttng_uri) * size,
+ ret = ask_sessiond_varlen(&lsm, uris, sizeof(struct lttng_uri) * size,
NULL);
+
+error:
+ free(uris);
+ return ret;
}
/*