From 3cd932d08a02bf4f2b60f23214fd362b2deb962e Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 1 Jul 2011 12:18:07 -0400 Subject: [PATCH] Update to 3.1.3 --- .gitignore | 1 + ...s-mechanism-find-the-right-polkit-ac.patch | 47 - ...rse-than-useless-signal-handlers-for.patch | 97 -- GConf-2.18.0.1-reload.patch | 11 - GConf-gettext.patch | 360 ----- GConf-settings-migration.patch | 35 - GConf2-2.14.0-timeout.patch | 32 - GConf2.spec | 18 +- gconf-less-work.patch | 82 - gsettings-data-convert-realloc.patch | 22 - no-access-crash.patch | 49 - polkit1.patch | 1340 ----------------- sources | 2 +- 13 files changed, 10 insertions(+), 2086 deletions(-) delete mode 100644 0001-Make-the-defaults-mechanism-find-the-right-polkit-ac.patch delete mode 100644 0001-gconfd-Remove-worse-than-useless-signal-handlers-for.patch delete mode 100644 GConf-2.18.0.1-reload.patch delete mode 100644 GConf-gettext.patch delete mode 100644 GConf-settings-migration.patch delete mode 100644 GConf2-2.14.0-timeout.patch delete mode 100644 gconf-less-work.patch delete mode 100644 gsettings-data-convert-realloc.patch delete mode 100644 no-access-crash.patch delete mode 100644 polkit1.patch diff --git a/.gitignore b/.gitignore index fab05d7..e8c588d 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ GConf-2.31.7.tar.bz2 /GConf-2.32.2.tar.bz2 /GConf-2.32.3.tar.bz2 /GConf-2.32.4.tar.xz +/GConf-3.1.3.tar.xz diff --git a/0001-Make-the-defaults-mechanism-find-the-right-polkit-ac.patch b/0001-Make-the-defaults-mechanism-find-the-right-polkit-ac.patch deleted file mode 100644 index 9d2027d..0000000 --- a/0001-Make-the-defaults-mechanism-find-the-right-polkit-ac.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 67a2478f610be4beff34258a5a5b36243415b069 Mon Sep 17 00:00:00 2001 -From: Matthias Clasen -Date: Tue, 19 Jan 2010 20:36:03 -0500 -Subject: [PATCH] Make the defaults mechanism find the right polkit action - -Due to a thinko in the code, the mechanism was always using the -default privileges. ---- - defaults/gconf-defaults.c | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -diff --git a/defaults/gconf-defaults.c b/defaults/gconf-defaults.c -index 11a38ad..b84c632 100644 ---- a/defaults/gconf-defaults.c -+++ b/defaults/gconf-defaults.c -@@ -286,8 +286,8 @@ polkit_action_for_gconf_path (GConfDefaults *mechanism, - PolkitActionDescription *action_description; - const gchar *annotation; - -+ g_debug ("finding action for path '%s'", path); - prefix = g_strdup (path); -- - while (1) { - for (l = action_descriptions; l; l = l->next) { - action_description = l->data; -@@ -295,8 +295,8 @@ polkit_action_for_gconf_path (GConfDefaults *mechanism, - annotation = polkit_action_description_get_annotation (action_description, annotation_key); - if (g_strcmp0 (prefix, annotation) == 0) { - action = polkit_action_description_get_action_id (action_description); -- g_debug ("action for path '%s': '%s'\n", action, path); -- break; -+ g_debug ("action for prefix '%s': '%s'\n", prefix, action); -+ goto found; - } - } - -@@ -310,6 +310,7 @@ polkit_action_for_gconf_path (GConfDefaults *mechanism, - *p = 0; - } - -+ found: - g_free (prefix); - - return action; --- -1.6.6 - diff --git a/0001-gconfd-Remove-worse-than-useless-signal-handlers-for.patch b/0001-gconfd-Remove-worse-than-useless-signal-handlers-for.patch deleted file mode 100644 index 9112a7f..0000000 --- a/0001-gconfd-Remove-worse-than-useless-signal-handlers-for.patch +++ /dev/null @@ -1,97 +0,0 @@ -From 33c73a785c79ecef125a53af29581d09f9ab3733 Mon Sep 17 00:00:00 2001 -From: Colin Walters -Date: Mon, 1 Feb 2010 13:02:11 -0500 -Subject: [PATCH] [gconfd] Remove (worse than) useless signal handlers for SEGV, FPE, etc - -Modern operating systems like Fedora tend to include system-wide crash -handlers (like ABRT) which operate by processing unhandled crashes -(signals such as SIGSEGV). By catching SIGSEGV but actually doing -nothing with it, GConf is breaking these crash handlers. - -Delete all of the handlers for signals like SIGFPE, SIGSEGV which can't -be treated as recoverable. - -https://bugzilla.gnome.org/show_bug.cgi?id=608705 ---- - gconf/gconfd.c | 37 ------------------------------------- - 1 files changed, 0 insertions(+), 37 deletions(-) - -diff --git a/gconf/gconfd.c b/gconf/gconfd.c -index fe5d18a..38a8423 100644 ---- a/gconf/gconfd.c -+++ b/gconf/gconfd.c -@@ -119,8 +119,6 @@ static GConfDatabase* obtain_database (GSList *addresses, - static void drop_old_databases (void); - static gboolean no_databases_in_use (void); - --static void gconf_handle_segv (int signum); -- - /* - * Flag indicating that we are shutting down, so return errors - * on any attempted operation. We do this instead of unregistering with -@@ -431,22 +429,6 @@ signal_handler (int signo) - ++in_fatal; - - switch (signo) { -- /* Fast cleanup only */ -- case SIGSEGV: --#ifdef SIGBUS -- case SIGBUS: --#endif -- case SIGILL: -- enter_shutdown (); --#ifndef G_OS_WIN32 -- if (g_getenv ("DISPLAY")) -- gconf_handle_segv (signo); --#else -- gconf_handle_segv (signo); --#endif -- abort (); -- break; -- - case SIGFPE: - #ifdef SIGPIPE - case SIGPIPE: -@@ -844,28 +826,16 @@ main(int argc, char** argv) - act.sa_mask = empty_mask; - act.sa_flags = 0; - sigaction (SIGTERM, &act, NULL); -- sigaction (SIGILL, &act, NULL); -- sigaction (SIGBUS, &act, NULL); -- sigaction (SIGFPE, &act, NULL); - sigaction (SIGHUP, &act, NULL); -- sigaction (SIGSEGV, &act, NULL); -- sigaction (SIGABRT, &act, NULL); - sigaction (SIGUSR1, &act, NULL); - - act.sa_handler = SIG_IGN; - sigaction (SIGINT, &act, NULL); - #else - signal (SIGTERM, signal_handler); -- signal (SIGILL, signal_handler); --#ifdef SIGBUS -- signal (SIGBUS, signal_handler); --#endif -- signal (SIGFPE, signal_handler); - #ifdef SIGHUP - signal (SIGHUP, signal_handler); - #endif -- signal (SIGSEGV, signal_handler); -- signal (SIGABRT, signal_handler); - #ifdef SIGUSR1 - signal (SIGUSR1, signal_handler); - #endif -@@ -2710,10 +2680,3 @@ client_count (void) - return g_hash_table_size (client_table); - } - -- --static void --gconf_handle_segv (int signum) --{ -- return; --} -- --- -1.6.6 - diff --git a/GConf-2.18.0.1-reload.patch b/GConf-2.18.0.1-reload.patch deleted file mode 100644 index 871e4fe..0000000 --- a/GConf-2.18.0.1-reload.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- GConf-2.18.0.1/gconf/gconftool.c.reload 2007-03-02 17:10:13.000000000 -0500 -+++ GConf-2.18.0.1/gconf/gconftool.c 2007-03-13 02:21:29.000000000 -0400 -@@ -3780,6 +3780,8 @@ - ++args; - } - -+ g_spawn_command_line_sync ("/usr/bin/killall -q -TERM " GCONF_SERVERDIR "/" GCONFD, NULL, NULL, NULL, NULL); -+ - retval |= do_sync (conf); - return retval; - } diff --git a/GConf-gettext.patch b/GConf-gettext.patch deleted file mode 100644 index 638e8ae..0000000 --- a/GConf-gettext.patch +++ /dev/null @@ -1,360 +0,0 @@ -diff -up GConf-2.26.0/backends/markup-tree.c.gettext GConf-2.26.0/backends/markup-tree.c ---- GConf-2.26.0/backends/markup-tree.c.gettext 2009-04-26 23:33:05.258484987 -0400 -+++ GConf-2.26.0/backends/markup-tree.c 2009-04-26 23:34:25.026700526 -0400 -@@ -52,6 +52,7 @@ struct _MarkupEntry - char *schema_name; - char *mod_user; - GTime mod_time; -+ const char *gettext_domain; - }; - - static LocalSchemaInfo* local_schema_info_new (void); -@@ -1593,6 +1594,8 @@ markup_entry_set_value (MarkupEntry - gconf_schema_get_type (schema)); - gconf_schema_set_owner (current_schema, - gconf_schema_get_owner (schema)); -+ gconf_schema_set_gettext_domain (current_schema, -+ gconf_schema_get_gettext_domain (schema)); - } - - /* Update mod time */ -@@ -1805,6 +1808,8 @@ markup_entry_get_value (MarkupEntry *ent - else if (c_local_schema && c_local_schema->long_desc) - gconf_schema_set_long_desc (schema, c_local_schema->long_desc); - -+ gconf_schema_set_gettext_domain (schema, entry->gettext_domain); -+ - return retval; - } - } -@@ -2339,8 +2344,9 @@ parse_value_element (GMarkupParseContext - const char *ltype; - const char *list_type; - const char *owner; -+ - GConfValueType vtype; -- const char *dummy1, *dummy2, *dummy3, *dummy4; -+ const char *dummy1, *dummy2, *dummy3, *dummy4, *dummy5; - - #if 0 - g_assert (ELEMENT_IS ("entry") || -@@ -2377,6 +2383,7 @@ parse_value_element (GMarkupParseContext - "muser", &dummy2, - "mtime", &dummy3, - "schema", &dummy4, -+ "gettext_domain", &dummy5, - - NULL)) - return; -@@ -2683,6 +2690,7 @@ parse_entry_element (GMarkupParseContext - const char *mtime; - const char *schema; - const char *type; -+ const char *gettext_domain; - const char *dummy1, *dummy2, *dummy3, *dummy4; - const char *dummy5, *dummy6, *dummy7; - GConfValue *value; -@@ -2693,6 +2701,7 @@ parse_entry_element (GMarkupParseContext - mtime = NULL; - schema = NULL; - type = NULL; -+ gettext_domain = NULL; - - if (!locate_attributes (context, element_name, attribute_names, attribute_values, - error, -@@ -2701,6 +2710,7 @@ parse_entry_element (GMarkupParseContext - "mtime", &mtime, - "schema", &schema, - "type", &type, -+ "gettext_domain", &gettext_domain, - - /* These are allowed but we don't use them until - * parse_value_element -@@ -2768,6 +2778,9 @@ parse_entry_element (GMarkupParseContext - */ - if (schema) - entry->schema_name = g_strdup (schema); -+ -+ if (gettext_domain) -+ entry->gettext_domain = g_intern_string (gettext_domain); - } - else - { -@@ -3716,6 +3729,7 @@ write_value_element (GConfValue *value, - GConfSchema *schema; - GConfValueType stype; - const char *owner; -+ const char *gettext_domain; - - schema = gconf_value_get_schema (value); - -@@ -3741,6 +3755,23 @@ write_value_element (GConfValue *value, - - g_free (s); - } -+ -+ gettext_domain = gconf_schema_get_gettext_domain (schema); -+ -+ if (gettext_domain) -+ { -+ char *s; -+ -+ s = g_markup_escape_text (gettext_domain, -1); -+ -+ if (fprintf (f, " gettext_domain=\"%s\"", s) < 0) -+ { -+ g_free (s); -+ return FALSE; -+ } -+ -+ g_free (s); -+ } - - if (stype == GCONF_VALUE_LIST) - { -diff -up GConf-2.26.0/doc/gconf-1.0.dtd.gettext GConf-2.26.0/doc/gconf-1.0.dtd ---- GConf-2.26.0/doc/gconf-1.0.dtd.gettext 2009-04-26 23:33:17.240736103 -0400 -+++ GConf-2.26.0/doc/gconf-1.0.dtd 2009-04-26 23:34:25.027700384 -0400 -@@ -7,7 +7,7 @@ - -- -+ - - - -diff -up GConf-2.26.0/gconf/gconf-internals.c.gettext GConf-2.26.0/gconf/gconf-internals.c ---- GConf-2.26.0/gconf/gconf-internals.c.gettext 2009-04-26 23:34:10.994700035 -0400 -+++ GConf-2.26.0/gconf/gconf-internals.c 2009-04-26 23:34:53.767450191 -0400 -@@ -513,6 +513,7 @@ gconf_fill_corba_schema_from_gconf_schem - cs->short_desc = CORBA_string_dup (gconf_schema_get_short_desc (sc) ? gconf_schema_get_short_desc (sc) : ""); - cs->long_desc = CORBA_string_dup (gconf_schema_get_long_desc (sc) ? gconf_schema_get_long_desc (sc) : ""); - cs->owner = CORBA_string_dup (gconf_schema_get_owner (sc) ? gconf_schema_get_owner (sc) : ""); -+ cs->gettext_domain = CORBA_string_dup (gconf_schema_get_gettext_domain (sc) ? gconf_schema_get_gettext_domain (sc) : ""); - - { - gchar* encoded; -@@ -600,6 +601,14 @@ gconf_schema_from_corba_schema(const Con - gconf_schema_set_owner(sc, cs->owner); - } - -+ if (*cs->gettext_domain != '\0') -+ { -+ if (!g_utf8_validate (cs->gettext_domain, -1, NULL)) -+ gconf_log (GCL_ERR, _("Invalid UTF-8 in gettext domain for schema")); -+ else -+ gconf_schema_set_gettext_domain(sc, cs->gettext_domain); -+ } -+ - { - GConfValue* val; - -diff -up GConf-2.26.0/gconf/gconf-schema.c.gettext GConf-2.26.0/gconf/gconf-schema.c ---- GConf-2.26.0/gconf/gconf-schema.c.gettext 2009-04-26 23:33:26.787483545 -0400 -+++ GConf-2.26.0/gconf/gconf-schema.c 2009-04-26 23:35:54.240450142 -0400 -@@ -32,9 +32,10 @@ typedef struct { - GConfValueType car_type; /* Pair car type of the described entry */ - GConfValueType cdr_type; /* Pair cdr type of the described entry */ - gchar* locale; /* Schema locale */ -- gchar* owner; /* Name of creating application */ -+ const gchar* owner; /* Name of creating application */ - gchar* short_desc; /* 40 char or less description, no newlines */ - gchar* long_desc; /* could be a paragraph or so */ -+ const gchar* gettext_domain; /* description gettext domain */ - GConfValue* default_value; /* Default value of the key */ - } GConfRealSchema; - -@@ -63,7 +64,6 @@ gconf_schema_free (GConfSchema* sc) - g_free (real->locale); - g_free (real->short_desc); - g_free (real->long_desc); -- g_free (real->owner); - - if (real->default_value) - gconf_value_free (real->default_value); -@@ -91,7 +91,9 @@ gconf_schema_copy (const GConfSchema* sc - - dest->long_desc = g_strdup (real->long_desc); - -- dest->owner = g_strdup (real->owner); -+ dest->gettext_domain = real->gettext_domain; -+ -+ dest->owner = real->owner; - - dest->default_value = real->default_value ? gconf_value_copy (real->default_value) : NULL; - -@@ -136,6 +138,17 @@ gconf_schema_set_locale (GConfSchema* sc - REAL_SCHEMA (sc)->locale = NULL; - } - -+void -+gconf_schema_set_gettext_domain (GConfSchema* sc, const gchar* domain) -+{ -+ g_return_if_fail (domain == NULL || g_utf8_validate (domain, -1, NULL)); -+ -+ if (domain) -+ REAL_SCHEMA (sc)->gettext_domain = g_intern_string (domain); -+ else -+ REAL_SCHEMA (sc)->gettext_domain = NULL; -+} -+ - void - gconf_schema_set_short_desc (GConfSchema* sc, const gchar* desc) - { -@@ -169,11 +182,8 @@ gconf_schema_set_owner (GConfSchema* sc, - { - g_return_if_fail (owner == NULL || g_utf8_validate (owner, -1, NULL)); - -- if (REAL_SCHEMA (sc)->owner) -- g_free (REAL_SCHEMA (sc)->owner); -- - if (owner) -- REAL_SCHEMA (sc)->owner = g_strdup (owner); -+ REAL_SCHEMA (sc)->owner = g_intern_string (owner); - else - REAL_SCHEMA (sc)->owner = NULL; - } -@@ -228,6 +238,14 @@ gconf_schema_validate (const GConfSchema - return FALSE; - } - -+ if (real->gettext_domain && !g_utf8_validate (real->gettext_domain, -1, NULL)) -+ { -+ g_set_error (err, GCONF_ERROR, -+ GCONF_ERROR_FAILED, -+ _("Schema contains invalid UTF-8")); -+ return FALSE; -+ } -+ - if (real->owner && !g_utf8_validate (real->owner, -1, NULL)) - { - g_set_error (err, GCONF_ERROR, -@@ -299,11 +317,32 @@ gconf_schema_get_locale (const GConfSche - } - - const char* -+gconf_schema_get_gettext_domain (const GConfSchema *schema) -+{ -+ g_return_val_if_fail (schema != NULL, NULL); -+ -+ return REAL_SCHEMA (schema)->gettext_domain; -+} -+ -+static inline const char * -+schema_translate (const GConfSchema *schema, -+ const char *string) -+{ -+ if (REAL_SCHEMA (schema)->gettext_domain) -+ { -+ bind_textdomain_codeset (REAL_SCHEMA (schema)->gettext_domain, "UTF-8"); -+ return g_dgettext(REAL_SCHEMA (schema)->gettext_domain, string); -+ } -+ else -+ return string; -+} -+ -+const char* - gconf_schema_get_short_desc (const GConfSchema *schema) - { - g_return_val_if_fail (schema != NULL, NULL); - -- return REAL_SCHEMA (schema)->short_desc; -+ return schema_translate (schema, REAL_SCHEMA (schema)->short_desc); - } - - const char* -@@ -311,7 +350,7 @@ gconf_schema_get_long_desc (const GConfS - { - g_return_val_if_fail (schema != NULL, NULL); - -- return REAL_SCHEMA (schema)->long_desc; -+ return schema_translate (schema, REAL_SCHEMA (schema)->long_desc); - } - - const char* -diff -up GConf-2.26.0/gconf/gconf-schema.h.gettext GConf-2.26.0/gconf/gconf-schema.h ---- GConf-2.26.0/gconf/gconf-schema.h.gettext 2009-04-26 23:33:33.979744088 -0400 -+++ GConf-2.26.0/gconf/gconf-schema.h 2009-04-26 23:34:25.030737043 -0400 -@@ -48,6 +48,8 @@ void gconf_schema_set_cdr_type - GConfValueType type); - void gconf_schema_set_locale (GConfSchema *sc, - const gchar *locale); -+void gconf_schema_set_gettext_domain (GConfSchema *sc, -+ const gchar *domain); - void gconf_schema_set_short_desc (GConfSchema *sc, - const gchar *desc); - void gconf_schema_set_long_desc (GConfSchema *sc, -@@ -65,6 +67,7 @@ GConfValueType gconf_schema_get_list_typ - GConfValueType gconf_schema_get_car_type (const GConfSchema *schema); - GConfValueType gconf_schema_get_cdr_type (const GConfSchema *schema); - const char* gconf_schema_get_locale (const GConfSchema *schema); -+const char* gconf_schema_get_gettext_domain(const GConfSchema *schema); - const char* gconf_schema_get_short_desc (const GConfSchema *schema); - const char* gconf_schema_get_long_desc (const GConfSchema *schema); - const char* gconf_schema_get_owner (const GConfSchema *schema); -diff -up GConf-2.26.0/gconf/gconftool.c.gettext GConf-2.26.0/gconf/gconftool.c ---- GConf-2.26.0/gconf/gconftool.c.gettext 2009-04-26 23:33:41.907451190 -0400 -+++ GConf-2.26.0/gconf/gconftool.c 2009-04-26 23:34:25.034736752 -0400 -@@ -3295,6 +3295,7 @@ struct _SchemaInfo { - GConfValueType cdr_type; - GConfValue* global_default; - GHashTable* hash; -+ gchar* gettext_domain; - }; - - static int -@@ -3547,6 +3548,15 @@ extract_global_info(xmlNodePtr node, - else - g_printerr (_("WARNING: empty node")); - } -+ else if (strcmp((char *)iter->name, "gettext_domain") == 0) -+ { -+ tmp = (char *)xmlNodeGetContent(iter); -+ if (tmp) -+ { -+ info->gettext_domain = g_strdup(tmp); -+ xmlFree(tmp); -+ } -+ } - else - g_printerr (_("WARNING: node <%s> not understood below \n"), - iter->name); -@@ -3636,6 +3646,9 @@ process_locale_info(xmlNodePtr node, Sch - if (info->owner != NULL) - gconf_schema_set_owner(schema, info->owner); - -+ if (info->gettext_domain != NULL) -+ gconf_schema_set_gettext_domain(schema, info->gettext_domain); -+ - xmlFree(name); - - /* Locale-specific info */ -@@ -3765,6 +3778,7 @@ get_schema_from_xml(xmlNodePtr node, gch - info.apply_to = NULL; - info.owner = NULL; - info.global_default = NULL; -+ info.gettext_domain = NULL; - info.hash = g_hash_table_new(g_str_hash, g_str_equal); - - extract_global_info(node, &info); -@@ -3801,6 +3815,8 @@ get_schema_from_xml(xmlNodePtr node, gch - ; /* nothing */ - else if (strcmp((char *)iter->name, "applyto") == 0) - ; /* nothing */ -+ else if (strcmp((char *)iter->name, "gettext_domain") == 0) -+ ; /* nothing */ - else if (strcmp((char *)iter->name, "locale") == 0) - { - process_locale_info(iter, &info); -diff -up GConf-2.26.0/gconf/GConfX.idl.gettext GConf-2.26.0/gconf/GConfX.idl ---- GConf-2.26.0/gconf/GConfX.idl.gettext 2009-04-26 23:33:58.457483190 -0400 -+++ GConf-2.26.0/gconf/GConfX.idl 2009-04-26 23:34:53.764448732 -0400 -@@ -16,6 +16,7 @@ struct ConfigSchema { - string short_desc; - string long_desc; - string owner; -+ string gettext_domain; - // Work around lack of recursive data types - string encoded_default_value; - }; diff --git a/GConf-settings-migration.patch b/GConf-settings-migration.patch deleted file mode 100644 index 62b6144..0000000 --- a/GConf-settings-migration.patch +++ /dev/null @@ -1,35 +0,0 @@ -diff -up GConf-2.31.2/gsettings/gsettings-data-convert.desktop.settings-migration GConf-2.31.2/gsettings/gsettings-data-convert.desktop ---- GConf-2.31.2/gsettings/gsettings-data-convert.desktop.settings-migration 2010-05-21 19:19:16.420451458 -0400 -+++ GConf-2.31.2/gsettings/gsettings-data-convert.desktop 2010-05-21 19:32:33.095449226 -0400 -@@ -0,0 +1,9 @@ -+[Desktop Entry] -+Version=1.0 -+Name=GSettings Data Conversion -+Comment=Migrates user settings from GConf to dconf -+Exec=gsettings-data-convert -+Terminal=false -+Type=Application -+OnlyShowIn=GNOME; -+X-GNOME-Autostart-Phase=Initialization -diff -up GConf-2.31.2/gsettings/Makefile.am.settings-migration GConf-2.31.2/gsettings/Makefile.am ---- GConf-2.31.2/gsettings/Makefile.am.settings-migration 2010-04-20 19:47:00.000000000 -0400 -+++ GConf-2.31.2/gsettings/Makefile.am 2010-05-21 19:19:16.422449991 -0400 -@@ -35,6 +35,9 @@ gsettings_data_convert_LDADD = - $(GSETTINGS_LIBS) \ - $(NULL) - -+autostartdir = $(sysconfdir)/xdg/autostart -+autostart_DATA = gsettings-data-convert.desktop -+ - man_MANS = \ - gsettings-data-convert.1 \ - $(NULL) -@@ -42,7 +45,7 @@ man_MANS = \ - gsettings-data-convert.1 : gsettings-data-convert.xml - xsltproc -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $< - --EXTRA_DIST = gsettings-data-convert.xml gsettings-data-convert.1 -+EXTRA_DIST = gsettings-data-convert.xml gsettings-data-convert.1 gsettings-data-convert.desktop - - dist-hook-local: $(BUILT_EXTRA_DIST) - files='$(BUILT_EXTRA_DIST)'; \ diff --git a/GConf2-2.14.0-timeout.patch b/GConf2-2.14.0-timeout.patch deleted file mode 100644 index bdd9e93..0000000 --- a/GConf2-2.14.0-timeout.patch +++ /dev/null @@ -1,32 +0,0 @@ ---- GConf-2.14.0/gconf/gconfd.c.timeout 2006-09-18 12:19:24.000000000 -0400 -+++ GConf-2.14.0/gconf/gconfd.c 2006-09-18 12:21:30.000000000 -0400 -@@ -1151,18 +1151,20 @@ - static gboolean - no_databases_in_use (void) - { -- /* Only the default database still open, and -- * it has no listeners -- */ -+ GList *l; - -- if (db_list == NULL) -- return TRUE; -+ for (l = db_list; l; l = l->next) -+ { -+ GConfDatabase *db = l->data; - -- if (db_list->next == NULL && -- db_list->data == default_db) -- return gconf_listeners_count (default_db->listeners) == 0; -+ if (gconf_listeners_count (db->listeners) > 0) -+ return FALSE; - -- return FALSE; -+ if (db->sync_timeout || db->sync_idle) -+ return FALSE; -+ } -+ -+ return TRUE; - } - - void diff --git a/GConf2.spec b/GConf2.spec index 9c1103e..d6006f0 100644 --- a/GConf2.spec +++ b/GConf2.spec @@ -6,18 +6,17 @@ Summary: A process-transparent configuration system Name: GConf2 -Version: 2.32.4 +Version: 3.1.3 Release: 1%{?dist} License: LGPLv2+ Group: System Environment/Base #VCS: git:git://git.gnome.org/gconf -Source0: http://download.gnome.org/sources/GConf/2.32/GConf-%{version}.tar.xz +Source0: http://download.gnome.org/sources/GConf/3.1/GConf-%{version}.tar.xz Source1: macros.gconf2 URL: http://projects.gnome.org/gconf/ BuildRequires: libxml2-devel >= %{libxml2_version} BuildRequires: libxslt-devel -BuildRequires: ORBit2-devel >= %{orbit2_version} BuildRequires: glib2-devel >= %{glib2_version} BuildRequires: gtk3-devel >= 3.0.0 BuildRequires: gtk-doc >= 0.9 @@ -34,10 +33,6 @@ Requires: dbus Requires: /usr/bin/killall Conflicts: GConf2-dbus -Patch0: GConf-2.18.0.1-reload.patch -# http://bugzilla.gnome.org/show_bug.cgi?id=568845 -Patch1: GConf-gettext.patch - %description GConf is a process-transparent configuration database API used to store user preferences. It has pluggable backends and features to @@ -71,11 +66,9 @@ which require GTK+. %prep %setup -q -n GConf-%{version} -%patch0 -p1 -b .reload -%patch1 -p1 -b .gettext %build -%configure --disable-static --enable-defaults-service --with-gtk=3.0 +%configure --disable-static --enable-defaults-service --disable-orbit --with-gtk=3.0 # drop unneeded direct library deps with --as-needed # libtool doesn't make this easy, so we do it the hard way @@ -166,6 +159,11 @@ fi %doc %{_mandir}/man1/gsettings-schema-convert.1* %changelog +* Fri Jul 01 2011 Ray Strode 3.1.3-1 +- Update to 3.1.3 +- Remove orbit dependency +- drop unupstreamed patches judiciously + * Fri Jun 17 2011 Tomas Bzatek - 2.32.4-1 - Update to 2.32.4 diff --git a/gconf-less-work.patch b/gconf-less-work.patch deleted file mode 100644 index 3eaccca..0000000 --- a/gconf-less-work.patch +++ /dev/null @@ -1,82 +0,0 @@ -diff -up GConf-2.25.2/backends/markup-tree.c.less-work GConf-2.25.2/backends/markup-tree.c ---- GConf-2.25.2/backends/markup-tree.c.less-work 2009-02-16 19:15:19.000000000 -0500 -+++ GConf-2.25.2/backends/markup-tree.c 2009-03-03 23:14:07.741320798 -0500 -@@ -2167,51 +2167,40 @@ locate_attributes (GMarkupParseContext * - - retval = TRUE; - -- i = 0; -- while (attribute_names[i]) -+ for (i = 0; attribute_names[i]; i++) - { - int j; -- gboolean found; - -- found = FALSE; -- j = 0; -- while (j < n_attrs) -+ for (j = 0; j < n_attrs; j++) - { -+ /* already matched */ -+ if (attrs[j].name == NULL) -+ continue; -+ - if (strcmp (attrs[j].name, attribute_names[i]) == 0) - { - retloc = attrs[j].retloc; -+ attrs[j].name = NULL; - -- if (*retloc != NULL) -- { -- set_error (error, context, -- GCONF_ERROR_PARSE_ERROR, -- _("Attribute \"%s\" repeated twice on the same <%s> element"), -- attrs[j].name, element_name); -- retval = FALSE; -- goto out; -- } -+ /* if this fails we passed the same retloc twice */ -+ g_assert (*retloc == NULL); - - *retloc = attribute_values[i]; -- found = TRUE; -+ break; - } -- -- ++j; - } - -- if (!found) -+ if (j >= n_attrs) - { - set_error (error, context, - GCONF_ERROR_PARSE_ERROR, -- _("Attribute \"%s\" is invalid on <%s> element in this context"), -+ _("Attribute \"%s\" is invalid, or duplicated on <%s> element in this context"), - attribute_names[i], element_name); - retval = FALSE; -- goto out; -+ break; - } -- -- ++i; - } - -- out: - return retval; - } - -@@ -3494,10 +3483,9 @@ all_whitespace (const char *text, - - while (p != end) - { -- if (!g_ascii_isspace (*p)) -- return FALSE; -- -- p = g_utf8_next_char (p); -+ if (G_UNLIKELY (*p != ' ' && *p != '\t' && *p != '\n' && *p != '\r')) -+ return FALSE; -+ p++; - } - - return TRUE; diff --git a/gsettings-data-convert-realloc.patch b/gsettings-data-convert-realloc.patch deleted file mode 100644 index e704f6f..0000000 --- a/gsettings-data-convert-realloc.patch +++ /dev/null @@ -1,22 +0,0 @@ -commit 60e77f638c6bf3fcc147cfabde0384c31a5c797d -Author: Matthew Garrett -Date: Tue Jun 29 15:29:26 2010 -0400 - - Realloc the correct amount of memory - - Pointers are more than a byte long - make sure that we realloc enough space - to fit another one. - -diff --git a/gsettings/gsettings-data-convert.c b/gsettings/gsettings-data-convert.c -index d61c4be..ea9fe21 100644 ---- a/gsettings/gsettings-data-convert.c -+++ b/gsettings/gsettings-data-convert.c -@@ -449,7 +449,7 @@ main (int argc, char *argv[]) - - /* Add the the file to the converted list */ - len = g_strv_length (converted); -- converted = g_realloc (converted, len + 1); -+ converted = g_realloc (converted, (len + 2) * sizeof(gchar *)); - converted[len] = g_strdup (name); - converted[len + 1] = NULL; - } diff --git a/no-access-crash.patch b/no-access-crash.patch deleted file mode 100644 index 0206c34..0000000 --- a/no-access-crash.patch +++ /dev/null @@ -1,49 +0,0 @@ -diff -up GConf-2.28.0/gconf/gconf.c.no-access GConf-2.28.0/gconf/gconf.c ---- GConf-2.28.0/gconf/gconf.c.no-access 2009-12-14 14:05:28.356082892 -0500 -+++ GConf-2.28.0/gconf/gconf.c 2009-12-14 14:06:57.345056432 -0500 -@@ -511,6 +511,7 @@ gconf_engine_get_local (const gchar - { - GConfEngine* conf; - GConfSource* source; -+ GConfSources* sources; - - g_return_val_if_fail(address != NULL, NULL); - g_return_val_if_fail(err == NULL || *err == NULL, NULL); -@@ -519,10 +520,14 @@ gconf_engine_get_local (const gchar - - if (source == NULL) - return NULL; -- -+ -+ sources = gconf_sources_new_from_source(source); -+ if (sources == NULL) -+ return NULL; -+ - conf = gconf_engine_blank(FALSE); - -- conf->local_sources = gconf_sources_new_from_source(source); -+ conf->local_sources = sources; - - g_assert (gconf_engine_is_local (conf)); - -@@ -534,13 +539,19 @@ gconf_engine_get_local_for_addresses (GS - GError **err) - { - GConfEngine *conf; -+ GConfSources* sources; - - g_return_val_if_fail (addresses != NULL, NULL); - g_return_val_if_fail (err == NULL || *err == NULL, NULL); - -+ sources = gconf_sources_new_from_addresses (addresses, err); -+ -+ if (sources == NULL) -+ return NULL; -+ - conf = gconf_engine_blank (FALSE); - -- conf->local_sources = gconf_sources_new_from_addresses (addresses, err); -+ conf->local_sources = sources; - - g_assert (gconf_engine_is_local (conf)); - diff --git a/polkit1.patch b/polkit1.patch deleted file mode 100644 index 4df5efe..0000000 --- a/polkit1.patch +++ /dev/null @@ -1,1340 +0,0 @@ -diff -up GConf-2.26.2/configure.in.polkit1 GConf-2.26.2/configure.in ---- GConf-2.26.2/configure.in.polkit1 2009-05-14 11:18:34.000000000 -0400 -+++ GConf-2.26.2/configure.in 2009-06-12 13:00:27.978836073 -0400 -@@ -181,7 +181,7 @@ AC_ARG_ENABLE(defaults_service, - , enable_defaults_service=auto) - - if test "x$enable_defaults_service" != "xno" ; then -- PKG_CHECK_MODULES(DEFAULTS, glib-2.0 gobject-2.0 dbus-1 dbus-glib-1 polkit-dbus, HAVE_POLKIT=yes) -+ PKG_CHECK_MODULES(DEFAULTS, glib-2.0 gobject-2.0 dbus-1 dbus-glib-1 polkit-gobject-1, HAVE_POLKIT=yes) - if test "x$HAVE_POLKIT" = "xno"; then - if test "x$enable_defaults_service" = "xyes" ; then - AC_MSG_ERROR([[ -@@ -194,13 +194,6 @@ fi - - if test "x$enable_defaults_service" != "xno" ; then - AC_DEFINE(ENABLE_DEFAULTS_SERVICE, 1, [enable defaults DBus service]) -- -- AC_CHECK_PROG([POLKIT_POLICY_FILE_VALIDATE], -- [polkit-policy-file-validate], [polkit-policy-file-validate]) -- -- if test -z "$POLKIT_POLICY_FILE_VALIDATE"; then -- AC_MSG_ERROR([polkit-policy-file-validate not found]) -- fi - fi - - AM_CONDITIONAL(ENABLE_DEFAULTS_SERVICE, [test "x$enable_defaults_service" != "xno"]) -diff -up GConf-2.26.2/defaults/gconf-defaults.c.polkit1 GConf-2.26.2/defaults/gconf-defaults.c ---- GConf-2.26.2/defaults/gconf-defaults.c.polkit1 2009-05-14 11:13:40.000000000 -0400 -+++ GConf-2.26.2/defaults/gconf-defaults.c 2009-06-12 14:21:50.117398713 -0400 -@@ -1,6 +1,6 @@ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- - * -- * Copyright (C) 2008 Matthias Clasen -+ * Copyright (C) 2008, 2009 Matthias Clasen - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by -@@ -37,7 +37,6 @@ - #include - #include - --#include - #include - - #define GCONF_ENABLE_INTERNALS -@@ -56,10 +55,14 @@ do_exit (gpointer user_data) - } - - static guint timer_id = 0; -+gboolean disable_killtimer = FALSE; - - static void - stop_killtimer (void) - { -+ if (disable_killtimer) -+ return; -+ - if (timer_id > 0) { - g_source_remove (timer_id); - timer_id = 0; -@@ -69,15 +72,38 @@ stop_killtimer (void) - static void - start_killtimer (void) - { -- g_debug ("Setting killtimer to 30 seconds..."); -- timer_id = g_timeout_add_seconds (30, do_exit, NULL); -+ if (disable_killtimer) -+ return; -+ -+ if (timer_id == 0) { -+ g_debug ("Setting killtimer to 30 seconds..."); -+ timer_id = g_timeout_add_seconds (30, do_exit, NULL); -+ } -+} -+ -+static gint operations = 0; -+ -+static void -+start_operation (void) -+{ -+ if (operations == 0) -+ stop_killtimer (); -+ operations++; -+} -+ -+static void -+stop_operation (void) -+{ -+ if (operations == 1) -+ start_killtimer (); -+ operations --; - } - - struct GConfDefaultsPrivate - { - DBusGConnection *system_bus_connection; - DBusGProxy *system_bus_proxy; -- PolKitContext *pol_ctx; -+ PolkitAuthority *auth; - }; - - static void gconf_defaults_finalize (GObject *object); -@@ -105,7 +131,7 @@ GType - gconf_defaults_error_get_type (void) - { - static GType etype = 0; -- -+ - if (etype == 0) - { - static const GEnumValue values[] = -@@ -114,12 +140,12 @@ gconf_defaults_error_get_type (void) - ENUM_ENTRY (GCONF_DEFAULTS_ERROR_NOT_PRIVILEGED, "NotPrivileged"), - { 0, 0, 0 } - }; -- -+ - g_assert (GCONF_DEFAULTS_NUM_ERRORS == G_N_ELEMENTS (values) - 1); -- -+ - etype = g_enum_register_static ("GConfDefaultsError", values); - } -- -+ - return etype; - } - -@@ -191,56 +217,18 @@ gconf_defaults_finalize (GObject *object - - g_return_if_fail (mechanism->priv != NULL); - -+ g_object_unref (mechanism->priv->auth); - g_object_unref (mechanism->priv->system_bus_proxy); - - G_OBJECT_CLASS (gconf_defaults_parent_class)->finalize (object); - } - - static gboolean --pk_io_watch_have_data (GIOChannel *channel, GIOCondition condition, gpointer user_data) --{ -- int fd; -- PolKitContext *pk_context = user_data; -- fd = g_io_channel_unix_get_fd (channel); -- polkit_context_io_func (pk_context, fd); -- return TRUE; --} -- --static int --pk_io_add_watch (PolKitContext *pk_context, int fd) --{ -- guint id = 0; -- GIOChannel *channel; -- channel = g_io_channel_unix_new (fd); -- if (channel == NULL) -- goto out; -- id = g_io_add_watch (channel, G_IO_IN, pk_io_watch_have_data, pk_context); -- if (id == 0) { -- g_io_channel_unref (channel); -- goto out; -- } -- g_io_channel_unref (channel); --out: -- return id; --} -- --static void --pk_io_remove_watch (PolKitContext *pk_context, int watch_id) --{ -- g_source_remove (watch_id); --} -- --static gboolean - register_mechanism (GConfDefaults *mechanism) - { - GError *error = NULL; - -- mechanism->priv->pol_ctx = polkit_context_new (); -- polkit_context_set_io_watch_functions (mechanism->priv->pol_ctx, pk_io_add_watch, pk_io_remove_watch); -- if (!polkit_context_init (mechanism->priv->pol_ctx, NULL)) { -- g_critical ("cannot initialize libpolkit"); -- goto error; -- } -+ mechanism->priv->auth = polkit_authority_get (); - - error = NULL; - mechanism->priv->system_bus_connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error); -@@ -252,7 +240,7 @@ register_mechanism (GConfDefaults *mecha - goto error; - } - -- dbus_g_connection_register_g_object (mechanism->priv->system_bus_connection, "/", -+ dbus_g_connection_register_g_object (mechanism->priv->system_bus_connection, "/", - G_OBJECT (mechanism)); - - mechanism->priv->system_bus_proxy = dbus_g_proxy_new_for_name (mechanism->priv->system_bus_connection, -@@ -288,33 +276,37 @@ gconf_defaults_new (void) - - static const char * - polkit_action_for_gconf_path (GConfDefaults *mechanism, -+ GList *action_descriptions, - const char *annotation_key, - const char *path) - { -- PolKitPolicyCache *cache; -- PolKitPolicyFileEntry *entry; - char *prefix, *p; - const char *action; -+ GList *l; -+ PolkitActionDescription *action_description; -+ const gchar *annotation; - -- cache = polkit_context_get_policy_cache (mechanism->priv->pol_ctx); - prefix = g_strdup (path); - - while (1) { -- entry = polkit_policy_cache_get_entry_by_annotation (cache, -- annotation_key, -- prefix); -- if (entry) { -- action = polkit_policy_file_entry_get_id (entry); -- break; -+ for (l = action_descriptions; l; l = l->next) { -+ action_description = l->data; -+ -+ annotation = polkit_action_description_get_annotation (action_description, annotation_key); -+ if (g_strcmp0 (prefix, annotation) == 0) { -+ action = polkit_action_description_get_action_id (action_description); -+ g_debug ("action for path '%s': '%s'\n", action, path); -+ break; -+ } - } -- -+ - p = strrchr (prefix, '/'); - - if (p == NULL || p == prefix) { - action = NULL; - break; - } -- -+ - *p = 0; - } - -@@ -323,56 +315,160 @@ polkit_action_for_gconf_path (GConfDefau - return action; - } - --static gboolean --check_polkit_for_action (GConfDefaults *mechanism, -- DBusGMethodInvocation *context, -- const char *action) --{ -- const char *sender; -- GError *error; -- DBusError dbus_error; -- PolKitCaller *pk_caller; -- PolKitAction *pk_action; -- PolKitResult pk_result; -+static void -+throw_error (DBusGMethodInvocation *context, -+ gint error_code, -+ const gchar *format, -+ ...) -+{ -+ GError *error; -+ va_list args; -+ gchar *message; - -- error = NULL; -+ va_start (args, format); -+ message = g_strdup_vprintf (format, args); -+ va_end (args); -+ -+ error = g_error_new (GCONF_DEFAULTS_ERROR, -+ error_code, -+ "%s", message); -+ dbus_g_method_return_error (context, error); -+ g_error_free (error); -+ g_free (message); -+} -+ -+typedef void (*AuthObtainedCallback) (GConfDefaults *mechanism, -+ DBusGMethodInvocation *context, -+ gpointer user_data); -+ -+typedef struct -+{ -+ GConfDefaults *mechanism; -+ DBusGMethodInvocation *context; -+ gchar **actions; -+ gint id; -+ gint flags; -+ AuthObtainedCallback auth_obtained_callback; -+ GAsyncReadyCallback check_auth_callback; -+ gpointer user_data; -+ GDestroyNotify destroy; -+ PolkitSubject *subject; -+ gboolean challenge; -+} CheckAuthData; - -- /* Check that caller is privileged */ -- sender = dbus_g_method_get_sender (context); -- dbus_error_init (&dbus_error); -- pk_caller = polkit_caller_new_from_dbus_name ( -- dbus_g_connection_get_connection (mechanism->priv->system_bus_connection), -- sender, -- &dbus_error); -- if (pk_caller == NULL) { -- error = g_error_new (GCONF_DEFAULTS_ERROR, -- GCONF_DEFAULTS_ERROR_GENERAL, -- "Error getting information about caller: %s: %s", -- dbus_error.name, dbus_error.message); -- dbus_error_free (&dbus_error); -- dbus_g_method_return_error (context, error); -- g_error_free (error); -- return FALSE; -- } -+static void -+check_auth_data_free (CheckAuthData *data) -+{ -+ g_object_unref (data->mechanism); -+ g_strfreev (data->actions); -+ if (data->destroy) -+ data->destroy (data->user_data); -+ g_object_unref (data->subject); -+ g_free (data); -+} - -- pk_action = polkit_action_new (); -- polkit_action_set_action_id (pk_action, action); -- pk_result = polkit_context_is_caller_authorized (mechanism->priv->pol_ctx, pk_action, pk_caller, TRUE, NULL); -- polkit_caller_unref (pk_caller); -- -- if (pk_result != POLKIT_RESULT_YES) { -- dbus_error_init (&dbus_error); -- polkit_dbus_error_generate (pk_action, pk_result, &dbus_error); -- dbus_set_g_error (&error, &dbus_error); -- dbus_g_method_return_error (context, error); -- dbus_error_free (&dbus_error); -- g_error_free (error); -- polkit_action_unref (pk_action); -- return FALSE; -- } -+static void check_next_action (CheckAuthData *data); - -- polkit_action_unref (pk_action); -- return TRUE; -+static void -+check_authorization_callback (PolkitAuthority *authority, -+ GAsyncResult *res, -+ gpointer user_data) -+{ -+ CheckAuthData *data = user_data; -+ PolkitAuthorizationResult *result; -+ GError *error; -+ gboolean is_authorized; -+ -+ is_authorized = FALSE; -+ -+ error = NULL; -+ result = polkit_authority_check_authorization_finish (authority, -+ res, -+ &error); -+ if (error != NULL) { -+ g_debug ("error checking action '%s'\n", error->message); -+ throw_error (data->context, -+ GCONF_DEFAULTS_ERROR_NOT_PRIVILEGED, -+ "Not Authorized: %s", error->message); -+ g_error_free (error); -+ } -+ else { -+ if (polkit_authorization_result_get_is_authorized (result)) { -+ g_debug ("result for '%s': authorized\n", -+ data->actions[data->id]); -+ is_authorized = TRUE; -+ } -+ else if (polkit_authorization_result_get_is_challenge (result)) { -+ g_debug ("result for '%s': challenge\n", -+ data->actions[data->id]); -+ throw_error (data->context, -+ GCONF_DEFAULTS_ERROR_NOT_PRIVILEGED, -+ "Authorization is required"); -+ } -+ else { -+ g_debug ("result for '%s': not authorized\n", -+ data->actions[data->id]); -+ throw_error (data->context, -+ GCONF_DEFAULTS_ERROR_NOT_PRIVILEGED, -+ "Not Authorized"); -+ } -+ } -+ -+ if (is_authorized) { -+ data->id++; -+ if (data->actions[data->id] == NULL) -+ data->auth_obtained_callback (data->mechanism, -+ data->context, -+ data->user_data); -+ else { -+ check_next_action (data); -+ return; /* continue operation */ -+ } -+ } -+ -+ check_auth_data_free (data); -+ g_object_unref (result); -+ stop_operation (); -+} -+ -+static void -+check_next_action (CheckAuthData *data) -+{ -+ g_debug ("checking action '%s'\n", data->actions[data->id]); -+ polkit_authority_check_authorization (data->mechanism->priv->auth, -+ data->subject, -+ data->actions[data->id], -+ NULL, -+ data->flags, -+ NULL, -+ data->check_auth_callback, -+ data); -+} -+ -+static void -+check_polkit_for_actions (GConfDefaults *mechanism, -+ DBusGMethodInvocation *context, -+ gchar **actions, -+ AuthObtainedCallback auth_obtained_callback, -+ gpointer user_data, -+ GDestroyNotify destroy) -+{ -+ CheckAuthData *data; -+ -+ data = g_new0 (CheckAuthData, 1); -+ data->mechanism = g_object_ref (mechanism); -+ data->context = context; -+ data->actions = actions; -+ data->flags = POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION; -+ data->id = 0; -+ data->auth_obtained_callback = auth_obtained_callback; -+ data->check_auth_callback = (GAsyncReadyCallback)check_authorization_callback; -+ data->user_data = user_data; -+ data->destroy = destroy; -+ data->subject = polkit_system_bus_name_new (dbus_g_method_get_sender (context)); -+ data->challenge = FALSE; -+ -+ check_next_action (data); - } - - static char * -@@ -398,11 +494,11 @@ gconf_address_for_caller (GConfDefaults - dbus_error_free (&error); - return NULL; - } -- -+ - pwd = getpwuid (uid); - if (pwd == NULL) { -- g_set_error (gerror, -- 0, 0, -+ g_set_error (gerror, -+ 0, 0, - "Failed to get passwd information for uid %d", uid); - return NULL; - } -@@ -434,13 +530,13 @@ copy_tree (GConfClient *src, - GSList *list, *l; - GConfEntry *entry; - -- if (path_is_excluded (path, excludes)) -+ if (path_is_excluded (path, excludes)) - return; - - list = gconf_client_all_entries (src, path, NULL); - for (l = list; l; l = l->next) { - entry = l->data; -- if (!path_is_excluded (entry->key, excludes)) -+ if (!path_is_excluded (entry->key, excludes)) - gconf_change_set_set (changes, entry->key, entry->value); - } - g_slist_foreach (list, (GFunc)gconf_entry_free, NULL); -@@ -461,7 +557,7 @@ copy_entry (GConfClient *src, - { - GConfValue *value; - -- if (path_is_excluded (path, excludes)) -+ if (path_is_excluded (path, excludes)) - return; - - value = gconf_client_get (src, path, NULL); -@@ -471,69 +567,66 @@ copy_entry (GConfClient *src, - } - } - -+typedef void (*ChangeSetCallback) (GConfDefaults *mechanism, -+ GConfChangeSet *changes, -+ gpointer data); -+ -+typedef struct -+{ -+ GConfDefaults *mechanism; -+ DBusGMethodInvocation *context; -+ const char *dest_address; -+ char **actions; -+ char **includes; -+ char **excludes; -+ ChangeSetCallback changeset_callback; -+ gpointer user_data; -+ GDestroyNotify destroy; -+} CopyData; - - static void --do_copy (GConfDefaults *mechanism, -- gboolean mandatory, -- const char **includes, -- const char **excludes, -- DBusGMethodInvocation *context, -- GConfChangeSet **changeset_out) -+copy_data_free (gpointer user_data) - { -- char *address = NULL; -- GConfClient *source = NULL; -+ CopyData *data = user_data; -+ -+ g_object_unref (data->mechanism); -+ g_strfreev (data->includes); -+ g_strfreev (data->excludes); -+ g_strfreev (data->actions); -+ if (data->destroy) -+ data->destroy (data->user_data); -+ g_free (data); -+} -+ -+static void -+do_copy_authorized (GConfDefaults *mechanism, -+ DBusGMethodInvocation *context, -+ gpointer user_data) -+{ -+ CopyData *data = user_data; -+ GConfClient *source = NULL; - GConfClient *dest = NULL; - GConfChangeSet *changes = NULL; - GConfEngine *engine; -+ char *address = NULL; -+ gint i; - GError *error; -- GError *error2; -- const char *action; -- const char *annotation_key; -- const char *default_action; -- const char *dest_address; -- int i; -- -- if (changeset_out) -- *changeset_out = NULL; -- -- stop_killtimer (); -- -- /* check privileges for each include */ -- if (mandatory) { -- annotation_key = "org.gnome.gconf.defaults.set-mandatory.prefix"; -- default_action = "org.gnome.gconf.defaults.set-mandatory"; -- dest_address = "xml:merged:" SYSGCONFDIR "/gconf.xml.mandatory"; -- } -- else { -- annotation_key = "org.gnome.gconf.defaults.set-system.prefix"; -- default_action = "org.gnome.gconf.defaults.set-system"; -- dest_address = "xml:merged:" SYSGCONFDIR "/gconf.xml.system"; -- } -- -- for (i = 0; includes[i]; i++) { -- action = polkit_action_for_gconf_path (mechanism, annotation_key, includes[i]); -- if (action == NULL) -- action = default_action; -- -- if (!check_polkit_for_action (mechanism, context, action)) -- goto out; -- } - - error = NULL; -- engine = gconf_engine_get_local (dest_address, &error); -- if (error) -- goto cleanup; -+ engine = gconf_engine_get_local (data->dest_address, &error); -+ if (error) -+ goto cleanup; - - dest = gconf_client_get_for_engine (engine); - gconf_engine_unref (engine); - - /* find the address to from the caller id */ -- address = gconf_address_for_caller (mechanism, context, &error); -+ address = gconf_address_for_caller (data->mechanism, data->context, &error); - if (error) - goto cleanup; - - engine = gconf_engine_get_local (address, &error); -- if (error) -+ if (error) - goto cleanup; - - source = gconf_client_get_for_engine (engine); -@@ -542,45 +635,175 @@ do_copy (GConfDefaults *mechani - changes = gconf_change_set_new (); - - /* recursively copy each include, leaving out the excludes */ -- for (i = 0; includes[i]; i++) { -- if (gconf_client_dir_exists (source, includes[i], NULL)) -- copy_tree (source, includes[i], changes, excludes); -+ for (i = 0; data->includes[i]; i++) { -+ if (gconf_client_dir_exists (source, data->includes[i], NULL)) -+ copy_tree (source, data->includes[i], changes, (const char **)data->excludes); - else -- copy_entry (source, includes[i], changes, excludes); -+ copy_entry (source, data->includes[i], changes, (const char **)data->excludes); - } - - gconf_client_commit_change_set (dest, changes, FALSE, &error); - gconf_client_suggest_sync (dest, NULL); - -- if (changeset_out) { -- *changeset_out = changes; -- changes = NULL; -+ if (data->changeset_callback) { -+ data->changeset_callback (data->mechanism, changes, data->user_data); - } - - cleanup: - g_free (address); - if (changes) - gconf_change_set_unref (changes); -- if (dest) -+ if (dest) - g_object_unref (dest); - if (source) - g_object_unref (source); - - if (error) { -- g_print ("failed to set GConf values: %s\n", error->message); -- error2 = g_error_new_literal (GCONF_DEFAULTS_ERROR, -- GCONF_DEFAULTS_ERROR_GENERAL, -- error->message); -+ throw_error (data->context, -+ GCONF_DEFAULTS_ERROR_GENERAL, -+ "%s", error->message); - g_error_free (error); -- -- dbus_g_method_return_error (context, error2); -- g_error_free (error2); - } - else -- dbus_g_method_return (context); -+ dbus_g_method_return (data->context); -+} - --out: -- start_killtimer (); -+typedef void (*ActionsReadyCallback) (GConfDefaults *mechanism, -+ DBusGMethodInvocation *context, -+ gchar **actions, -+ AuthObtainedCallback auth_obtained_callback, -+ gpointer data, -+ GDestroyNotify destroy); -+ -+typedef struct -+{ -+ GConfDefaults *mechanism; -+ DBusGMethodInvocation *context; -+ char **includes; -+ const char *default_action; -+ const char *annotation_key; -+ ActionsReadyCallback actions_ready_callback; -+ AuthObtainedCallback auth_obtained_callback; -+ gpointer data; -+ GDestroyNotify destroy; -+} ActionData; -+ -+static void -+action_data_free (ActionData *data) -+{ -+ g_object_unref (data->mechanism); -+ g_strfreev (data->includes); -+ if (data->destroy) -+ data->destroy (data->data); -+ g_free (data); -+} -+ -+static void -+actions_ready_cb (GObject *source, -+ GAsyncResult *res, -+ gpointer user_data) -+{ -+ ActionData *data = user_data; -+ GList *action_descriptions; -+ GError *error = NULL; -+ int i; -+ GHashTable *obtained; -+ GHashTableIter iter; -+ const gchar *action; -+ gchar **actions; -+ gpointer key, value; -+ -+ action_descriptions = polkit_authority_enumerate_actions_finish (data->mechanism->priv->auth, res, &error); -+ -+ if (error) { -+ throw_error (data->context, -+ GCONF_DEFAULTS_ERROR_GENERAL, -+ "Failed to get action descriptions: %s", error->message); -+ g_error_free (error); -+ action_data_free (data); -+ stop_operation (); -+ return; -+ } -+ -+ obtained = g_hash_table_new (g_str_hash, g_str_equal); -+ -+ for (i = 0; data->includes[i]; i++) { -+ action = polkit_action_for_gconf_path (data->mechanism, action_descriptions, data->annotation_key, data->includes[i]); -+ if (action == NULL) { -+ g_debug ("using default action '%s' for path '%s'", -+ data->default_action, data->includes[i]); -+ action = data->default_action; -+ } -+ -+ g_hash_table_insert (obtained, (gpointer)action, (gpointer)action); -+ } -+ actions = g_new0 (char *, g_hash_table_size (obtained) + 1); -+ g_hash_table_iter_init (&iter, obtained); -+ i = 0; -+ while (g_hash_table_iter_next (&iter, &key, &value)) { -+ actions[i] = g_strdup ((char *)key); -+ i++; -+ } -+ g_hash_table_destroy (obtained); -+ g_list_foreach (action_descriptions, (GFunc)g_object_unref, NULL); -+ g_list_free (action_descriptions); -+ -+ data->actions_ready_callback (data->mechanism, data->context, actions, data->auth_obtained_callback, data->data, data->destroy); -+ -+ data->destroy = NULL; -+ action_data_free (data); -+} -+ -+static void -+do_copy (GConfDefaults *mechanism, -+ gboolean mandatory, -+ const gchar **includes, -+ const gchar **excludes, -+ DBusGMethodInvocation *context, -+ ChangeSetCallback changeset_callback, -+ gpointer user_data, -+ GDestroyNotify destroy) -+{ -+ CopyData *cdata; -+ ActionData *adata; -+ -+ start_operation (); -+ -+ cdata = g_new0 (CopyData, 1); -+ cdata->mechanism = g_object_ref (mechanism); -+ cdata->context = context; -+ cdata->includes = g_strdupv ((gchar **)includes); -+ cdata->excludes = g_strdupv ((gchar **)excludes); -+ cdata->actions = NULL; -+ cdata->changeset_callback = changeset_callback; -+ cdata->user_data = user_data; -+ cdata->destroy = destroy; -+ -+ adata = g_new0 (ActionData, 1); -+ adata->mechanism = g_object_ref (mechanism); -+ adata->context = context; -+ adata->includes = g_strdupv ((gchar **)includes); -+ adata->actions_ready_callback = check_polkit_for_actions; -+ adata->auth_obtained_callback = do_copy_authorized; -+ adata->data = cdata; -+ adata->destroy = copy_data_free; -+ -+ /* check privileges for each include */ -+ if (mandatory) { -+ adata->annotation_key = "org.gnome.gconf.defaults.set-mandatory.prefix"; -+ adata->default_action = "org.gnome.gconf.defaults.set-mandatory"; -+ cdata->dest_address = "xml:merged:" SYSGCONFDIR "/gconf.xml.mandatory"; -+ } -+ else { -+ adata->annotation_key = "org.gnome.gconf.defaults.set-system.prefix"; -+ adata->default_action = "org.gnome.gconf.defaults.set-system"; -+ cdata->dest_address = "xml:merged:" SYSGCONFDIR "/gconf.xml.system"; -+ } -+ -+ polkit_authority_enumerate_actions (mechanism->priv->auth, -+ NULL, -+ actions_ready_cb, -+ adata); - } - - static void -@@ -594,20 +817,13 @@ append_key (GConfChangeSet *cs, - g_ptr_array_add (keys, (gpointer) key); - } - --void --gconf_defaults_set_system (GConfDefaults *mechanism, -- const char **includes, -- const char **excludes, -- DBusGMethodInvocation *context) -+static void -+set_system_changes (GConfDefaults *mechanism, -+ GConfChangeSet *changes, -+ gpointer data) - { -- GConfChangeSet *changes = NULL; - GPtrArray *keys; - -- do_copy (mechanism, FALSE, includes, excludes, context, &changes); -- -- if (!changes) -- return; -- - keys = g_ptr_array_new (); - gconf_change_set_foreach (changes, append_key, keys); - g_ptr_array_add (keys, NULL); -@@ -615,7 +831,15 @@ gconf_defaults_set_system (GConfDefaults - g_signal_emit (mechanism, signals[SYSTEM_SET], 0, keys->pdata); - - g_ptr_array_free (keys, TRUE); -- gconf_change_set_unref (changes); -+} -+ -+void -+gconf_defaults_set_system (GConfDefaults *mechanism, -+ const char **includes, -+ const char **excludes, -+ DBusGMethodInvocation *context) -+{ -+ do_copy (mechanism, FALSE, includes, excludes, context, set_system_changes, NULL, NULL); - } - - void -@@ -624,7 +848,7 @@ gconf_defaults_set_mandatory (GConfDefau - const char **excludes, - DBusGMethodInvocation *context) - { -- do_copy (mechanism, TRUE, includes, excludes, context, NULL); -+ do_copy (mechanism, TRUE, includes, excludes, context, NULL, NULL, NULL); - } - - static void -@@ -636,13 +860,13 @@ unset_tree (GConfClient *dest, - GSList *list, *l; - GConfEntry *entry; - -- if (path_is_excluded (path, excludes)) -+ if (path_is_excluded (path, excludes)) - return; - - list = gconf_client_all_entries (dest, path, NULL); - for (l = list; l; l = l->next) { - entry = l->data; -- if (!path_is_excluded (entry->key, excludes)) -+ if (!path_is_excluded (entry->key, excludes)) - gconf_change_set_unset (changes, entry->key); - } - g_slist_foreach (list, (GFunc)gconf_entry_free, NULL); -@@ -654,25 +878,25 @@ unset_tree (GConfClient *dest, - g_slist_foreach (list, (GFunc)g_free, NULL); - g_slist_free (list); - } -- -+ - static void - unset_entry (GConfClient *dest, - const char *path, - GConfChangeSet *changes, - const char **excludes) - { -- if (path_is_excluded (path, excludes)) -+ if (path_is_excluded (path, excludes)) - return; - - gconf_change_set_unset (changes, path); - } -- -+ - static void --unset_in_db (GConfDefaults *mechanism, -- const char *address, -- const char **includes, -- const char **excludes, -- GError **error) -+unset_in_db (GConfDefaults *mechanism, -+ const gchar *address, -+ const gchar **includes, -+ const gchar **excludes, -+ GError **error) - { - GConfEngine *engine; - GConfClient *dest = NULL; -@@ -680,7 +904,7 @@ unset_in_db (GConfDefaults *mechanism, - int i; - - engine = gconf_engine_get_local (address, error); -- if (*error) -+ if (*error) - goto out; - - dest = gconf_client_get_for_engine (engine); -@@ -706,48 +930,224 @@ out: - gconf_change_set_unref (changes); - } - -+typedef struct -+{ -+ GConfDefaults *mechanism; -+ DBusGMethodInvocation *context; -+ char **includes; -+ char **excludes; -+} UnsetData; -+ -+static void -+unset_data_free (gpointer user_data) -+{ -+ UnsetData *data = user_data; -+ -+ g_object_unref (data->mechanism); -+ g_strfreev (data->includes); -+ g_strfreev (data->excludes); -+ g_free (data); -+} -+ -+static void -+do_unset_authorized (GConfDefaults *mechanism, -+ DBusGMethodInvocation *context, -+ gpointer user_data) -+{ -+ UnsetData *data = user_data; -+ GError *error; -+ -+ error = NULL; -+ unset_in_db (mechanism, "xml:merged:" SYSGCONFDIR "/gconf.xml.mandatory", -+ (const gchar **)data->includes, -+ (const gchar **)data->excludes, &error); -+ -+ if (error) { -+ throw_error (data->context, -+ GCONF_DEFAULTS_ERROR, -+ GCONF_DEFAULTS_ERROR_GENERAL, -+ "%s", error->message); -+ g_error_free (error); -+ } -+ else -+ dbus_g_method_return (data->context); -+} -+ - void - gconf_defaults_unset_mandatory (GConfDefaults *mechanism, - const char **includes, - const char **excludes, - DBusGMethodInvocation *context) - { -- const char *annotation_key; -- const char *default_action; -- int i; -- const char *action; -- GError *error; -- GError *error2; -+ UnsetData *udata; -+ ActionData *adata; - -- stop_killtimer (); -+ start_operation (); - -- annotation_key = "org.gnome.gconf.defaults.set-mandatory.prefix"; -- default_action = "org.gnome.gconf.defaults.set-mandatory"; -+ udata = g_new0 (UnsetData, 1); -+ udata->mechanism = g_object_ref (mechanism); -+ udata->context = context; -+ udata->includes = g_strdupv ((gchar **)includes); -+ udata->excludes = g_strdupv ((gchar **)excludes); -+ -+ adata = g_new0 (ActionData, 1); -+ adata->mechanism = g_object_ref (mechanism); -+ adata->context = context; -+ adata->includes = g_strdupv ((gchar **)includes); -+ adata->auth_obtained_callback = do_unset_authorized; -+ adata->data = udata; -+ adata->destroy = unset_data_free; -+ -+ adata->annotation_key = "org.gnome.gconf.defaults.set-mandatory.prefix"; -+ adata->default_action = "org.gnome.gconf.defaults.set-mandatory"; -+ -+ polkit_authority_enumerate_actions (mechanism->priv->auth, -+ NULL, -+ actions_ready_cb, -+ adata); -+} - -- for (i = 0; includes[i]; i++) { -- action = polkit_action_for_gconf_path (mechanism, annotation_key, includes[i]); -- if (action == NULL) -- action = default_action; -+static void -+check_authorization_only_callback (PolkitAuthority *authority, -+ GAsyncResult *res, -+ gpointer user_data) -+{ -+ CheckAuthData *data = user_data; -+ PolkitAuthorizationResult *result; -+ GError *error; -+ gboolean is_authorized; - -- if (!check_polkit_for_action (mechanism, context, action)) -- goto out; -- } -+ is_authorized = FALSE; - - error = NULL; -- unset_in_db (mechanism, "xml:merged:" SYSGCONFDIR "/gconf.xml.mandatory", -- includes, excludes, &error); -- -- if (error) { -- error2 = g_error_new_literal (GCONF_DEFAULTS_ERROR, -- GCONF_DEFAULTS_ERROR_GENERAL, -- error->message); -+ result = polkit_authority_check_authorization_finish (authority, -+ res, -+ &error); -+ if (error != NULL) { -+ g_debug ("error checking action '%s'\n", error->message); -+ throw_error (data->context, -+ GCONF_DEFAULTS_ERROR_NOT_PRIVILEGED, -+ "Not Authorized: %s", error->message); - g_error_free (error); -+ goto out; -+ } -+ else { -+ if (polkit_authorization_result_get_is_authorized (result)) { -+ g_debug ("result for '%s': authorized\n", -+ data->actions[data->id]); -+ is_authorized = TRUE; -+ } -+ else if (polkit_authorization_result_get_is_challenge (result)) { -+ g_debug ("result for '%s': challenge\n", -+ data->actions[data->id]); -+ is_authorized = TRUE; -+ data->challenge = TRUE; -+ } -+ else { -+ g_debug ("result for '%s': not authorized\n", -+ data->actions[data->id]); -+ is_authorized = FALSE; -+ } -+ } - -- dbus_g_method_return_error (context, error2); -- g_error_free (error2); -+ if (is_authorized) { -+ data->id++; -+ if (data->actions[data->id] == NULL) { -+ gint result; -+ -+ result = data->challenge ? 1 : 2; -+ g_debug ("return %d\n", result); -+ dbus_g_method_return (data->context, result); -+ } -+ else { -+ check_next_action (data); -+ return; /* continue operation */ -+ } - } -- else -- dbus_g_method_return (context); -+ else { -+ g_debug ("return 0\n"); -+ dbus_g_method_return (data->context, 0); -+ } -+ - out: -- start_killtimer(); -+ check_auth_data_free (data); -+ g_object_unref (result); -+ stop_operation (); -+} -+ -+static void -+check_permissions_only (GConfDefaults *mechanism, -+ DBusGMethodInvocation *context, -+ gchar **actions, -+ AuthObtainedCallback auth_obtained_callback, -+ gpointer user_data, -+ GDestroyNotify destroy) -+{ -+ CheckAuthData *data; -+ -+ data = g_new0 (CheckAuthData, 1); -+ data->mechanism = g_object_ref (mechanism); -+ data->context = context; -+ data->actions = actions; -+ data->flags = 0; -+ data->id = 0; -+ data->check_auth_callback = (GAsyncReadyCallback)check_authorization_only_callback; -+ data->auth_obtained_callback = NULL; -+ data->user_data = NULL; -+ data->destroy = NULL; -+ data->subject = polkit_system_bus_name_new (dbus_g_method_get_sender (context)); -+ data->challenge = FALSE; -+ -+ check_next_action (data); -+} -+ -+static void -+do_check (GConfDefaults *mechanism, -+ gboolean mandatory, -+ const gchar **includes, -+ DBusGMethodInvocation *context) -+{ -+ ActionData *adata; -+ -+ start_operation (); -+ -+ adata = g_new0 (ActionData, 1); -+ adata->mechanism = g_object_ref (mechanism); -+ adata->context = context; -+ adata->includes = g_strdupv ((gchar **)includes); -+ adata->actions_ready_callback = check_permissions_only; -+ adata->auth_obtained_callback = NULL; -+ adata->data = NULL; -+ adata->destroy = NULL; -+ -+ if (mandatory) { -+ adata->annotation_key = "org.gnome.gconf.defaults.set-mandatory.prefix"; -+ adata->default_action = "org.gnome.gconf.defaults.set-mandatory"; -+ } -+ else { -+ adata->annotation_key = "org.gnome.gconf.defaults.set-system.prefix"; -+ adata->default_action = "org.gnome.gconf.defaults.set-system"; -+ } -+ -+ polkit_authority_enumerate_actions (mechanism->priv->auth, -+ NULL, -+ actions_ready_cb, -+ adata); -+} -+ -+void -+gconf_defaults_can_set_system (GConfDefaults *mechanism, -+ const char **includes, -+ DBusGMethodInvocation *context) -+{ -+ do_check (mechanism, FALSE, includes, context); - } -+ -+void -+gconf_defaults_can_set_mandatory (GConfDefaults *mechanism, -+ const char **includes, -+ DBusGMethodInvocation *context) -+{ -+ do_check (mechanism, TRUE, includes, context); -+} -+ -diff -up GConf-2.26.2/defaults/gconf-defaults.h.polkit1 GConf-2.26.2/defaults/gconf-defaults.h ---- GConf-2.26.2/defaults/gconf-defaults.h.polkit1 2009-05-14 11:13:40.000000000 -0400 -+++ GConf-2.26.2/defaults/gconf-defaults.h 2009-06-12 13:00:27.984836059 -0400 -@@ -83,6 +83,14 @@ void gconf_defaults_unset_mand - const char **excludes, - DBusGMethodInvocation *context); - -+void gconf_defaults_can_set_system (GConfDefaults *mechanism, -+ const char **includes, -+ DBusGMethodInvocation *context); -+ -+void gconf_defaults_can_set_mandatory (GConfDefaults *mechanism, -+ const char **includes, -+ DBusGMethodInvocation *context); -+ - G_END_DECLS - - #endif /* GCONF_DEFAULTS_H */ -diff -up GConf-2.26.2/defaults/gconf-defaults-main.c.polkit1 GConf-2.26.2/defaults/gconf-defaults-main.c ---- GConf-2.26.2/defaults/gconf-defaults-main.c.polkit1 2009-05-05 20:37:32.000000000 -0400 -+++ GConf-2.26.2/defaults/gconf-defaults-main.c 2009-06-12 13:00:27.987836052 -0400 -@@ -122,6 +122,29 @@ get_system_bus (void) - return bus; - } - -+extern gboolean disable_killtimer; -+gboolean debug = FALSE; -+ -+GOptionEntry entries [] = { -+ { "debug", 0, 0, G_OPTION_ARG_NONE, &debug, "Emit debug output", NULL }, -+ { "no-kill", 0, 0, G_OPTION_ARG_NONE, &disable_killtimer, "Don't exit when idle", NULL }, -+ { NULL, } -+}; -+ -+static gint log_levels = (G_LOG_LEVEL_ERROR | G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING); -+ -+void -+log_default_handler (const gchar *log_domain, -+ GLogLevelFlags log_level, -+ const gchar *message, -+ gpointer unused_data) -+{ -+ if ((log_level & log_levels) != 0) { -+ g_log_default_handler (log_domain, log_level, message, unused_data); -+ } -+} -+ -+ - int - main (int argc, char **argv) - { -@@ -130,6 +153,8 @@ main (int argc, char **argv) - DBusGProxy *bus_proxy; - DBusGConnection *connection; - int ret; -+ GOptionContext *options; -+ GError *error = NULL; - - ret = 1; - -@@ -139,8 +164,22 @@ main (int argc, char **argv) - dbus_g_thread_init (); - g_type_init (); - -+ options = g_option_context_new (NULL); -+ g_option_context_add_main_entries (options, entries, NULL); -+ if (!g_option_context_parse (options, &argc, &argv, &error)) { -+ g_warning ("Failed to parse options: %s\n", error->message); -+ g_error_free (error); -+ } -+ g_option_context_free (options); -+ -+ g_log_set_default_handler (log_default_handler, NULL); -+ if (debug) { -+ log_levels = log_levels | G_LOG_LEVEL_DEBUG; -+ } -+ - connection = get_system_bus (); - if (connection == NULL) { -+ g_warning ("Could not get system bus connection; bailing out"); - goto out; - } - -diff -up GConf-2.26.2/defaults/gconf-defaults.xml.polkit1 GConf-2.26.2/defaults/gconf-defaults.xml ---- GConf-2.26.2/defaults/gconf-defaults.xml.polkit1 2009-05-14 11:13:40.000000000 -0400 -+++ GConf-2.26.2/defaults/gconf-defaults.xml 2009-06-12 14:21:43.646401662 -0400 -@@ -2,12 +2,12 @@ - - -