Loglevel fixes
[lttng-tools.git] / src / lib / lttng-ctl / lttng-ctl.c
index c62dcfa1d4b335748f5c192fe8b712120a71decb..1d92facf05cf866ee757a0acc247b5f0225e8b0c 100644 (file)
@@ -227,35 +227,33 @@ static int set_session_daemon_path(void)
                in_tgroup = check_tracing_group(tracing_group);
        }
 
-       if (uid == 0) {
-               /* Root */
-               copy_string(sessiond_sock_path,
-                               DEFAULT_GLOBAL_CLIENT_UNIX_SOCK,
-                               sizeof(sessiond_sock_path));
-       } else if (in_tgroup) {
-               /* Tracing group */
-               copy_string(sessiond_sock_path,
-                               DEFAULT_GLOBAL_CLIENT_UNIX_SOCK,
+       if ((uid == 0) || in_tgroup) {
+               copy_string(sessiond_sock_path, DEFAULT_GLOBAL_CLIENT_UNIX_SOCK,
                                sizeof(sessiond_sock_path));
+       }
 
-               ret = try_connect_sessiond(sessiond_sock_path);
-               if (ret < 0) {
-                       /* Global session daemon not available */
-                       if (snprintf(sessiond_sock_path, sizeof(sessiond_sock_path),
-                                               DEFAULT_HOME_CLIENT_UNIX_SOCK,
-                                               getenv("HOME")) < 0) {
-                               return -ENOMEM;
+       if (uid != 0) {
+               if (in_tgroup) {
+                       /* Tracing group */
+                       ret = try_connect_sessiond(sessiond_sock_path);
+                       if (ret >= 0) {
+                               goto end;
                        }
+                       /* Global session daemon not available... */
                }
-       } else {
-               /* Not in tracing group and not root, default */
-               if (snprintf(sessiond_sock_path, PATH_MAX,
-                                       DEFAULT_HOME_CLIENT_UNIX_SOCK,
-                                       getenv("HOME")) < 0) {
+               /* ...or not in tracing group (and not root), default */
+
+               /*
+                * 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)
+                */
+               ret = snprintf(sessiond_sock_path, sizeof(sessiond_sock_path),
+                               DEFAULT_HOME_CLIENT_UNIX_SOCK, getenv("HOME"));
+               if ((ret < 0) || (ret >= sizeof(sessiond_sock_path))) {
                        return -ENOMEM;
                }
        }
-
+end:
        return 0;
 }
 
@@ -468,7 +466,10 @@ int lttng_stop_tracing(const char *session_name)
 }
 
 /*
- * Add context to event or/and channel.
+ * Add context to event and/or channel.
+ * If event_name is NULL, the context is applied to all events of the channel.
+ * If channel_name is NULL, a lookup of the event's channel is done.
+ * If both are NULL, the context is applied to all events of all channels.
  *
  * Returns the size of the returned payload data or a negative error code.
  */
This page took 0.025017 seconds and 4 git commands to generate.