Build fix: Missing message in LTTNG_DEPRECATED invocation
[lttng-tools.git] / src / common / credentials.c
index dc1bdd89f1182c984bbdf5ecbba4a8d51cddaf7d..fd8b4477bb9ad1b0861ab8a76a10bce35fed60ac 100644 (file)
@@ -5,19 +5,63 @@
  *
  */
 
-#include <assert.h>
 #include <stdbool.h>
 #include "credentials.h"
 
-bool lttng_credentials_is_equal(const struct lttng_credentials *a,
+uid_t lttng_credentials_get_uid(const struct lttng_credentials *creds)
+{
+       return LTTNG_OPTIONAL_GET(creds->uid);
+}
+
+gid_t lttng_credentials_get_gid(const struct lttng_credentials *creds)
+{
+       return LTTNG_OPTIONAL_GET(creds->gid);
+}
+
+bool lttng_credentials_is_equal_uid(const struct lttng_credentials *a,
                const struct lttng_credentials *b)
 {
-       assert(a);
-       assert(b);
+       LTTNG_ASSERT(a);
+       LTTNG_ASSERT(b);
 
-       if ((a->uid != b->uid) || (a->gid != b->gid)) {
+       /* XOR on the is_set value */
+       if (!!a->uid.is_set != !!b->uid.is_set) {
                return false;
        }
 
-       return true;
-};
+       if (!a->uid.is_set && !b->uid.is_set) {
+               return true;
+       }
+
+       /* Both a and b are set. */
+       return a->uid.value == b->uid.value;
+}
+
+bool lttng_credentials_is_equal_gid(const struct lttng_credentials *a,
+               const struct lttng_credentials *b)
+{
+       LTTNG_ASSERT(a);
+       LTTNG_ASSERT(b);
+
+       /* XOR on the is_set value */
+       if (!!a->gid.is_set != !!b->gid.is_set) {
+               return false;
+       }
+
+       if (!a->gid.is_set && !b->gid.is_set) {
+               return true;
+       }
+
+       /* Both a and b are set. */
+       return a->gid.value == b->gid.value;
+}
+
+bool lttng_credentials_is_equal(const struct lttng_credentials *a,
+               const struct lttng_credentials *b)
+{
+       LTTNG_ASSERT(a);
+       LTTNG_ASSERT(b);
+
+       return lttng_credentials_is_equal_uid(a, b) &&
+                       lttng_credentials_is_equal_gid(a, b);
+}
This page took 0.025057 seconds and 4 git commands to generate.