static void database_handle_dir_exists (DBusConnection *conn, DBusMessage *message, GConfDatabase *db) { gboolean exists; gchar *dir; GError *gerror = NULL; DBusMessage *reply; if (!gconfd_dbus_get_message_args (conn, message, DBUS_TYPE_STRING, &dir, DBUS_TYPE_INVALID)) return; exists = gconf_database_dir_exists (db, dir, &gerror); if (gconfd_dbus_set_exception (conn, message, &gerror)) return; reply = dbus_message_new_method_return (message); dbus_message_append_args (reply, DBUS_TYPE_BOOLEAN, &exists, DBUS_TYPE_INVALID); dbus_connection_send (conn, reply, NULL); dbus_message_unref (reply); }
static void database_handle_set_schema (DBusConnection *conn, DBusMessage *message, GConfDatabase *db) { gchar *key; gchar *schema_key; GError *gerror = NULL; DBusMessage *reply; if (!gconfd_dbus_get_message_args (conn, message, DBUS_TYPE_STRING, &key, DBUS_TYPE_STRING, &schema_key, DBUS_TYPE_INVALID)) return; /* Empty schema key name means unset. */ if (schema_key[0] == '\0') schema_key = NULL; gconf_database_set_schema (db, key, schema_key, &gerror); if (gconfd_dbus_set_exception (conn, message, &gerror)) return; reply = dbus_message_new_method_return (message); dbus_connection_send (conn, reply, NULL); dbus_message_unref (reply); }
static void database_handle_recursive_unset (DBusConnection *conn, DBusMessage *message, GConfDatabase *db) { gchar *key; gchar *locale; GError *gerror = NULL; guint32 unset_flags; DBusMessage *reply; if (!gconfd_dbus_get_message_args (conn, message, DBUS_TYPE_STRING, &key, DBUS_TYPE_STRING, &locale, DBUS_TYPE_UINT32, &unset_flags, DBUS_TYPE_INVALID)) return; if (locale[0] == '\0') { locale = NULL; } gconf_database_recursive_unset (db, key, locale, unset_flags, &gerror); gconf_database_sync (db, NULL); if (gconfd_dbus_set_exception (conn, message, &gerror)) return; reply = dbus_message_new_method_return (message); dbus_connection_send (conn, reply, NULL); dbus_message_unref (reply); }
static void database_handle_set (DBusConnection *conn, DBusMessage *message, GConfDatabase *db) { gchar *key; GConfValue *value = NULL; GError *gerror = NULL; DBusMessage *reply; DBusMessageIter iter; dbus_message_iter_init (message, &iter); dbus_message_iter_get_basic (&iter, &key); dbus_message_iter_next (&iter); value = gconf_dbus_utils_get_value (&iter); gconf_database_set (db, key, value, &gerror); gconf_value_free (value); if (gconfd_dbus_set_exception (conn, message, &gerror)) return; reply = dbus_message_new_method_return (message); dbus_connection_send (conn, reply, NULL); dbus_message_unref (reply); }
static void server_real_handle_get_db (DBusConnection *connection, DBusMessage *message, GSList *addresses) { GConfDatabase *db; DBusMessage *reply; GError *gerror = NULL; const gchar *str; if (gconfd_dbus_check_in_shutdown (connection, message)) return; db = gconfd_obtain_database (addresses, &gerror); if (gconfd_dbus_set_exception (connection, message, &gerror)) return; reply = dbus_message_new_method_return (message); if (reply == NULL) g_error ("No memory"); str = gconf_database_dbus_get_path (db); dbus_message_append_args (reply, DBUS_TYPE_OBJECT_PATH, &str, DBUS_TYPE_INVALID); if (!dbus_connection_send (connection, reply, NULL)) g_error ("No memory"); dbus_message_unref (reply); }
static void database_handle_lookup_ext (DBusConnection *conn, DBusMessage *message, GConfDatabase *db) { GConfValue *value; gchar *schema_name = NULL; gboolean value_is_default; gboolean value_is_writable; DBusMessage *reply; gchar *key; gchar *locale; GConfLocaleList *locales; gboolean use_schema_default; GError *gerror = NULL; DBusMessageIter iter; if (!gconfd_dbus_get_message_args (conn, message, DBUS_TYPE_STRING, &key, DBUS_TYPE_STRING, &locale, DBUS_TYPE_BOOLEAN, &use_schema_default, DBUS_TYPE_INVALID)) return; locales = gconfd_locale_cache_lookup (locale); value = gconf_database_query_value (db, key, locales->list, use_schema_default, &schema_name, &value_is_default, &value_is_writable, &gerror); if (gconfd_dbus_set_exception (conn, message, &gerror)) goto fail; reply = dbus_message_new_method_return (message); dbus_message_iter_init_append (reply, &iter); if (value) gconf_dbus_utils_append_entry_values (&iter, key, value, value_is_default, value_is_writable, schema_name); dbus_connection_send (conn, reply, NULL); dbus_message_unref (reply); fail: g_free (schema_name); if (value) gconf_value_free (value); }
static void database_handle_get_all_dirs (DBusConnection *conn, DBusMessage *message, GConfDatabase *db) { GSList *dirs, *l; gchar *dir; GError *gerror = NULL; DBusMessage *reply; DBusMessageIter iter; DBusMessageIter array_iter; if (!gconfd_dbus_get_message_args (conn, message, DBUS_TYPE_STRING, &dir, DBUS_TYPE_INVALID)) return; dirs = gconf_database_all_dirs (db, dir, &gerror); if (gconfd_dbus_set_exception (conn, message, &gerror)) return; reply = dbus_message_new_method_return (message); dbus_message_iter_init_append (reply, &iter); dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, &array_iter); for (l = dirs; l; l = l->next) { gchar *str = (gchar *) l->data; dbus_message_iter_append_basic (&array_iter, DBUS_TYPE_STRING, &str); g_free (l->data); } dbus_message_iter_close_container (&iter, &array_iter); g_slist_free (dirs); dbus_connection_send (conn, reply, NULL); dbus_message_unref (reply); }
static void database_handle_suggest_sync (DBusConnection *conn, DBusMessage *message, GConfDatabase *db) { GError *gerror = NULL; DBusMessage *reply; gconf_database_sync (db, &gerror); if (gconfd_dbus_set_exception (conn, message, &gerror)) return; reply = dbus_message_new_method_return (message); dbus_connection_send (conn, reply, NULL); dbus_message_unref (reply); }
static void database_handle_get_all_entries (DBusConnection *conn, DBusMessage *message, GConfDatabase *db) { GSList *entries, *l; gchar *dir; gchar *locale; GError *gerror = NULL; GConfLocaleList* locales; DBusMessage *reply; DBusMessageIter iter; if (!gconfd_dbus_get_message_args (conn, message, DBUS_TYPE_STRING, &dir, DBUS_TYPE_STRING, &locale, DBUS_TYPE_INVALID)) return; locales = gconfd_locale_cache_lookup (locale); entries = gconf_database_all_entries (db, dir, locales->list, &gerror); if (gconfd_dbus_set_exception (conn, message, &gerror)) return; reply = dbus_message_new_method_return (message); dbus_message_iter_init_append (reply, &iter); gconf_dbus_utils_append_entries (&iter, entries); for (l = entries; l; l = l->next) { GConfEntry *entry = l->data; gconf_entry_free (entry); } dbus_connection_send (conn, reply, NULL); dbus_message_unref (reply); g_slist_free (entries); }
static void database_handle_lookup_default (DBusConnection *conn, DBusMessage *message, GConfDatabase *db) { GConfValue *value; DBusMessage *reply; gchar *key; gchar *locale; GConfLocaleList *locales; GError *gerror = NULL; DBusMessageIter iter; if (!gconfd_dbus_get_message_args (conn, message, DBUS_TYPE_STRING, &key, DBUS_TYPE_STRING, &locale, DBUS_TYPE_INVALID)) return; locales = gconfd_locale_cache_lookup (locale); value = gconf_database_query_default_value (db, key, locales->list, NULL, &gerror); if (gconfd_dbus_set_exception (conn, message, &gerror)) goto fail; reply = dbus_message_new_method_return (message); dbus_message_iter_init_append (reply, &iter); if (value) gconf_dbus_utils_append_value (&iter, value); dbus_connection_send (conn, reply, NULL); dbus_message_unref (reply); fail: if (value) gconf_value_free (value); }