[liboobs] Fix SelfConfig, add convenience function
- From: Milan Bouchet-Valat <milanbv src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [liboobs] Fix SelfConfig, add convenience function
- Date: Fri, 22 Jan 2010 09:55:30 +0000 (UTC)
commit 3b51f5e4e11f4392764a0acb1ecb707eadcdb05b
Author: Milan Bouchet-Valat <nalimilan club fr>
Date: Sat Jan 16 18:33:35 2010 +0100
Fix SelfConfig, add convenience function
We need to get the UID on start to find the right user, and to send it to the backends. Else we were sending a wrong UID to the backends, leading to silent failure.
New oobs_self_config_is_user_self() convenience function that simply compares pointers, it's cleaner in the clients.
oobs/oobs-selfconfig.c | 40 +++++++++++++++++++++++++++++++++++++---
oobs/oobs-selfconfig.h | 2 ++
2 files changed, 39 insertions(+), 3 deletions(-)
---
diff --git a/oobs/oobs-selfconfig.c b/oobs/oobs-selfconfig.c
index d3b52ae..2b70620 100644
--- a/oobs/oobs-selfconfig.c
+++ b/oobs/oobs-selfconfig.c
@@ -21,6 +21,7 @@
#include <dbus/dbus.h>
#include <glib-object.h>
#include <string.h>
+#include <unistd.h>
#include "oobs-object.h"
#include "oobs-object-private.h"
@@ -77,7 +78,13 @@ oobs_self_config_class_init (OobsSelfConfigClass *class)
static void
oobs_self_config_init (OobsSelfConfig *config)
{
- config->_priv = OOBS_SELF_CONFIG_GET_PRIVATE (config);
+ OobsSelfConfigPrivate *priv;
+
+ priv = OOBS_SELF_CONFIG_GET_PRIVATE (config);
+
+ priv->uid = getuid ();
+
+ config->_priv = priv;
}
static void
@@ -173,7 +180,7 @@ oobs_self_config_commit (OobsObject *object)
message = _oobs_object_get_dbus_message (object);
dbus_message_iter_init_append (message, &iter);
- utils_append_uint (&iter, oobs_user_get_uid (priv->user));
+ utils_append_uint (&iter, priv->uid);
/* GECOS fields */
dbus_message_iter_open_container (&iter,
@@ -225,8 +232,35 @@ oobs_self_config_get_user (OobsSelfConfig *config)
g_return_val_if_fail (OOBS_IS_SELF_CONFIG (config), NULL);
- oobs_object_ensure_update (oobs_users_config_get ());
+ oobs_object_ensure_update (OOBS_OBJECT (config));
priv = config->_priv;
return priv->user;
}
+
+
+/**
+ * oobs_self_config_is_user_self:
+ * @config: An #OobsSelfConfig.
+ * @user: An #OobsUser.
+ *
+ * Check whether @user is the user represented by #OobsSelfConfig.
+ *
+ * Return Value: %TRUE if @user is self, %FALSE otherwise.
+ **/
+gboolean
+oobs_self_config_is_user_self (OobsSelfConfig *config,
+ OobsUser *user)
+{
+ OobsSelfConfigPrivate *priv;
+
+ g_return_val_if_fail (OOBS_IS_SELF_CONFIG (config), FALSE);
+ g_return_val_if_fail (OOBS_IS_USER (user), FALSE);
+
+ oobs_object_ensure_update (OOBS_OBJECT (config));
+ priv = config->_priv;
+
+ return (priv->user == user);
+}
+
+
diff --git a/oobs/oobs-selfconfig.h b/oobs/oobs-selfconfig.h
index 283fa77..d9a7509 100644
--- a/oobs/oobs-selfconfig.h
+++ b/oobs/oobs-selfconfig.h
@@ -59,6 +59,8 @@ GType oobs_self_config_get_type (void);
OobsObject* oobs_self_config_get (void);
OobsUser* oobs_self_config_get_user (OobsSelfConfig *config);
+gboolean oobs_self_config_is_user_self (OobsSelfConfig *config,
+ OobsUser *user);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]