--- xs/GConfClient.xs.orig 2006-10-11 20:31:55.000000000 +0200 +++ xs/GConfClient.xs 2010-03-07 18:55:19.000000000 +0100 @@ -162,6 +162,34 @@ C_ARGS: engine +GConfClient_noinc * +gconf_client_get_source (class, config_source, use_local_source) + const gchar *config_source; + gboolean use_local_source; + PREINIT: + GConfEngine* conf; + GConfClient_noinc* client; + GSList*addresses; + GError* err = NULL; + CODE: + addresses = gconf_persistent_name_get_address_list +(config_source); + if (use_local_source) + conf = gconf_engine_get_local_for_addresses (addresses, +&err); + else + conf = gconf_engine_get_for_addresses (addresses, &err); + gconf_address_list_free (addresses); + if (conf == NULL) { + if (err) + gperl_croak_gerror (NULL, err); + RETVAL = NULL; + } else { + RETVAL = gconf_client_get_for_engine(conf); + } + OUTPUT: + RETVAL + =for enum GConfClientPreloadType =cut