Add _dbus_credentials_to_string_append
authorColin Walters <walters@verbum.org>
Tue, 16 Mar 2010 13:00:23 +0000 (09:00 -0400)
committerColin Walters <walters@verbum.org>
Tue, 16 Mar 2010 19:57:27 +0000 (15:57 -0400)
Convert the credentials to a string; useful for logging.

dbus/dbus-credentials.c
dbus/dbus-credentials.h

index f06d5c0..889166b 100644 (file)
@@ -502,6 +502,49 @@ _dbus_credentials_same_user (DBusCredentials    *credentials,
       strcmp (credentials->windows_sid, other_credentials->windows_sid) == 0));
 }
 
+/**
+ * Convert the credentials in this object to a human-readable
+ * string format, and append to the given string.
+ *
+ * @param credentials the object
+ * @param string append to this string
+ * @returns #FALSE if no memory
+ */
+dbus_bool_t
+_dbus_credentials_to_string_append (DBusCredentials    *credentials,
+                                    DBusString         *string)
+{
+  dbus_bool_t join;
+
+  join = FALSE;
+  if (credentials->unix_uid != DBUS_UID_UNSET)
+    {
+      if (!_dbus_string_append_printf (string, "uid=%d", credentials->unix_uid))
+        goto oom;
+      join = TRUE;
+    }
+  if (credentials->unix_pid != DBUS_PID_UNSET)
+    {
+      if (!_dbus_string_append_printf (string, "%spid=%d", join ? " " : "", credentials->unix_pid))
+        goto oom;
+      join = TRUE;
+    }
+  else
+    join = FALSE;
+  if (credentials->windows_sid != NULL)
+    {
+      if (!_dbus_string_append_printf (string, "%ssid=%s", join ? " " : "", credentials->windows_sid))
+        goto oom;
+      join = TRUE;
+    }
+  else
+    join = FALSE;
+
+  return TRUE;
+oom:
+  return FALSE;
+}
+
 /** @} */
 
 /* tests in dbus-credentials-util.c */
index 25f31b7..ef6124f 100644 (file)
@@ -71,7 +71,8 @@ void             _dbus_credentials_clear                    (DBusCredentials
 DBusCredentials* _dbus_credentials_copy                     (DBusCredentials    *credentials);
 dbus_bool_t      _dbus_credentials_same_user                (DBusCredentials    *credentials,
                                                              DBusCredentials    *other_credentials);
-
+dbus_bool_t      _dbus_credentials_to_string_append         (DBusCredentials    *credentials,
+                                                             DBusString         *string);
 
 DBUS_END_DECLS