static GConfSchema* gconf_dialog_safely_get_schema (GConfDialog* self, GConfEntry* entry) { GConfSchema* result = NULL; GError * _inner_error_; const char* schema_name; GConfSchema* rt; GConfSchema* _tmp3_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (entry != NULL, NULL); _inner_error_ = NULL; schema_name = gconf_entry_get_schema_name (entry); rt = NULL; if (schema_name != NULL) { { GConfSchema* _tmp0_; GConfSchema* _tmp2_; GConfSchema* _tmp1_; _tmp0_ = gconf_client_get_schema (self->priv->_default_client, schema_name, &_inner_error_); if (_inner_error_ != NULL) { goto __catch24_g_error; } rt = (_tmp2_ = gconf_schema_copy (_tmp1_ = _tmp0_), _gconf_schema_free0 (rt), _tmp2_); _gconf_schema_free0 (_tmp1_); result = rt; return result; } goto __finally24; __catch24_g_error: { GError * e; e = _inner_error_; _inner_error_ = NULL; { _g_error_free0 (e); } } __finally24: if (_inner_error_ != NULL) { _gconf_schema_free0 (rt); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return NULL; } } g_critical ("gtkextra-gconfdialog.vala:161: schema not found for entry %s", gconf_entry_get_key (entry)); rt = (_tmp3_ = gconf_schema_new (), _gconf_schema_free0 (rt), _tmp3_); gconf_schema_set_short_desc (rt, gconf_entry_get_key (entry)); gconf_schema_set_long_desc (rt, "This key lacks a schema"); gconf_schema_set_type (rt, GCONF_VALUE_STRING); result = rt; return result; }
static GConfSchema * utils_get_schema (DBusMessageIter *main_iter) { DBusMessageIter struct_iter; gint32 type, list_type, car_type, cdr_type; const gchar *locale, *short_desc, *long_desc, *owner; const gchar *encoded; GConfSchema *schema; GConfValue *default_value; g_assert (dbus_message_iter_get_arg_type (main_iter) == DBUS_TYPE_STRUCT); dbus_message_iter_recurse (main_iter, &struct_iter); dbus_message_iter_get_basic (&struct_iter, &type); dbus_message_iter_next (&struct_iter); dbus_message_iter_get_basic (&struct_iter, &list_type); dbus_message_iter_next (&struct_iter); dbus_message_iter_get_basic (&struct_iter, &car_type); dbus_message_iter_next (&struct_iter); dbus_message_iter_get_basic (&struct_iter, &cdr_type); dbus_message_iter_next (&struct_iter); locale = utils_get_optional_string (&struct_iter); dbus_message_iter_next (&struct_iter); short_desc = utils_get_optional_string (&struct_iter); dbus_message_iter_next (&struct_iter); long_desc = utils_get_optional_string (&struct_iter); dbus_message_iter_next (&struct_iter); owner = utils_get_optional_string (&struct_iter); dbus_message_iter_next (&struct_iter); dbus_message_iter_get_basic (&struct_iter, &encoded); schema = gconf_schema_new (); gconf_schema_set_type (schema, type); gconf_schema_set_list_type (schema, list_type); gconf_schema_set_car_type (schema, car_type); gconf_schema_set_cdr_type (schema, cdr_type); if (locale) gconf_schema_set_locale (schema, locale); if (short_desc) gconf_schema_set_short_desc (schema, short_desc); if (long_desc) gconf_schema_set_long_desc (schema, long_desc); if (owner) gconf_schema_set_owner (schema, owner); if (*encoded != '\0') { default_value = gconf_value_decode (encoded); if (default_value) gconf_schema_set_default_value_nocopy (schema, default_value); } return schema; }
static void schema_subnode_extract_data(xmlNodePtr node, GConfSchema* sc) { gchar* sd_str; gchar* locale_str; GError* error = NULL; sd_str = my_xmlGetProp(node, "short_desc"); locale_str = my_xmlGetProp(node, "locale"); if (sd_str) { gconf_schema_set_short_desc(sc, sd_str); xmlFree(sd_str); } if (locale_str) { gconf_log(GCL_DEBUG, "found locale `%s'", locale_str); gconf_schema_set_locale(sc, locale_str); xmlFree(locale_str); } else { gconf_log(GCL_DEBUG, "found <%s> with no locale setting", node->name ? node->name : (unsigned char*) "null"); } if (node->xmlChildrenNode != NULL) { GConfValue* default_value = NULL; xmlChar* ld_str = NULL; GSList* bad_nodes = NULL; xmlNodePtr iter = node->xmlChildrenNode; while (iter != NULL) { if (iter->type == XML_ELEMENT_NODE) { if (default_value == NULL && strcmp((char *)iter->name, "default") == 0) { default_value = node_extract_value(iter, NULL, &error); if (error != NULL) { g_assert(default_value == NULL); gconf_log(GCL_WARNING, _("Failed reading default value for schema: %s"), error->message); g_error_free(error); error = NULL; bad_nodes = g_slist_prepend(bad_nodes, iter); } } else if (ld_str == NULL && strcmp((char *)iter->name, "longdesc") == 0) { ld_str = xmlNodeGetContent(iter); } else { bad_nodes = g_slist_prepend(bad_nodes, iter); } } else bad_nodes = g_slist_prepend(bad_nodes, iter); /* what is this node? */ iter = iter->next; } /* Remove the bad nodes from the parse tree */ if (bad_nodes != NULL) { GSList* tmp = bad_nodes; while (tmp != NULL) { xmlUnlinkNode(tmp->data); xmlFreeNode(tmp->data); tmp = g_slist_next(tmp); } g_slist_free(bad_nodes); } if (default_value != NULL) gconf_schema_set_default_value_nocopy(sc, default_value); if (ld_str) { gconf_schema_set_long_desc(sc, (char *)ld_str); xmlFree(ld_str); } } }