From 4763e270e123f2b12d918f58d6bb81ee6c3ea19f Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Tue, 17 Dec 2019 12:54:01 +0100 Subject: fix shutdown logic on configuration error --- src/namestore/gnunet-namestore-gtk.c | 210 ++++++++++++++++++----------------- 1 file changed, 107 insertions(+), 103 deletions(-) diff --git a/src/namestore/gnunet-namestore-gtk.c b/src/namestore/gnunet-namestore-gtk.c index eeac58ee..52066e73 100644 --- a/src/namestore/gnunet-namestore-gtk.c +++ b/src/namestore/gnunet-namestore-gtk.c @@ -629,6 +629,7 @@ setup_qrcode () g_object_unref (pb); } + #endif @@ -1304,7 +1305,8 @@ edit_dialog_setup_common_elements ( if (GNUNET_YES != edc->old_record_in_namestore) { gtk_widget_hide (GTK_WIDGET ( - gtk_builder_get_object (edc->builder, "edit_dialog_delete_button"))); + gtk_builder_get_object (edc->builder, + "edit_dialog_delete_button"))); edit_dialog_disable_save (edc); } gtk_entry_set_text (GTK_ENTRY ( @@ -1312,12 +1314,12 @@ edit_dialog_setup_common_elements ( "edit_dialog_name_entry")), edc->name); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object ( - edc->builder, - "edit_dialog_options_public_checkbutton")), + edc->builder, + "edit_dialog_options_public_checkbutton")), edc->n_public); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object ( - edc->builder, - "edit_dialog_options_shadow_checkbutton")), + edc->builder, + "edit_dialog_options_shadow_checkbutton")), edc->n_is_shadow); if (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us == edc->n_exp_time) @@ -1328,14 +1330,14 @@ edit_dialog_setup_common_elements ( "edit_dialog_expiration_never_radiobutton")), TRUE); gtk_widget_hide (GTK_WIDGET ( - gtk_builder_get_object (edc->builder, - "edit_dialog_expiration_absolute_calendar"))); + gtk_builder_get_object (edc->builder, + "edit_dialog_expiration_absolute_calendar"))); gtk_widget_hide (GTK_WIDGET ( - gtk_builder_get_object (edc->builder, - "edit_dialog_expiration_absolute_hbox"))); + gtk_builder_get_object (edc->builder, + "edit_dialog_expiration_absolute_hbox"))); gtk_widget_hide (GTK_WIDGET ( - gtk_builder_get_object (edc->builder, - "edit_dialog_expiration_relative_combobox"))); + gtk_builder_get_object (edc->builder, + "edit_dialog_expiration_relative_combobox"))); } if ((edc->n_is_relative) && (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us != edc->n_exp_time)) @@ -1346,11 +1348,11 @@ edit_dialog_setup_common_elements ( "edit_dialog_expiration_relative_radiobutton")), TRUE); gtk_widget_hide (GTK_WIDGET ( - gtk_builder_get_object (edc->builder, - "edit_dialog_expiration_absolute_calendar"))); + gtk_builder_get_object (edc->builder, + "edit_dialog_expiration_absolute_calendar"))); gtk_widget_hide (GTK_WIDGET ( - gtk_builder_get_object (edc->builder, - "edit_dialog_expiration_absolute_hbox"))); + gtk_builder_get_object (edc->builder, + "edit_dialog_expiration_absolute_hbox"))); rt.rel_value_us = edc->n_exp_time; } else @@ -1380,8 +1382,8 @@ edit_dialog_setup_common_elements ( TRUE); gtk_widget_hide (GTK_WIDGET ( - gtk_builder_get_object (edc->builder, - "edit_dialog_expiration_relative_combobox"))); + gtk_builder_get_object (edc->builder, + "edit_dialog_expiration_relative_combobox"))); at.abs_value_us = edc->n_exp_time; } else @@ -1403,13 +1405,13 @@ edit_dialog_setup_common_elements ( (double) ymd->tm_hour); gtk_spin_button_set_value ( GTK_SPIN_BUTTON (gtk_builder_get_object ( - edc->builder, - "edit_dialog_expiration_absolute_minutes_spinbutton")), + edc->builder, + "edit_dialog_expiration_absolute_minutes_spinbutton")), (double) ymd->tm_min); gtk_spin_button_set_value ( GTK_SPIN_BUTTON (gtk_builder_get_object ( - edc->builder, - "edit_dialog_expiration_absolute_seconds_spinbutton")), + edc->builder, + "edit_dialog_expiration_absolute_seconds_spinbutton")), (double) ymd->tm_sec); } @@ -1435,17 +1437,19 @@ edit_dialog_putes_common_elements ( /* is public flag */ edc->n_public = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON ( - gtk_builder_get_object (edc->builder, - "edit_dialog_options_public_checkbutton"))); + gtk_builder_get_object ( + edc->builder, + "edit_dialog_options_public_checkbutton"))); /* is shadow flag */ edc->n_is_shadow = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON ( - gtk_builder_get_object (edc->builder, - "edit_dialog_options_shadow_checkbutton"))); + gtk_builder_get_object ( + edc->builder, + "edit_dialog_options_shadow_checkbutton"))); /* 'forever' expiration time */ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON ( - gtk_builder_get_object (edc->builder, - "edit_dialog_expiration_never_radiobutton")))) + gtk_builder_get_object (edc->builder, + "edit_dialog_expiration_never_radiobutton")))) { edc->n_exp_time = GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us; edc->n_is_relative = @@ -1455,8 +1459,8 @@ edit_dialog_putes_common_elements ( /* 'relative' expiration time */ if ( gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON ( - gtk_builder_get_object (edc->builder, - "edit_dialog_expiration_relative_radiobutton")))) + gtk_builder_get_object (edc->builder, + "edit_dialog_expiration_relative_radiobutton")))) { cb = GTK_COMBO_BOX ( gtk_builder_get_object (edc->builder, @@ -1477,8 +1481,8 @@ edit_dialog_putes_common_elements ( /* 'absolute' expiration time */ if ( gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON ( - gtk_builder_get_object (edc->builder, - "edit_dialog_expiration_absolute_radiobutton")))) + gtk_builder_get_object (edc->builder, + "edit_dialog_expiration_absolute_radiobutton")))) { guint year; guint month; @@ -1490,22 +1494,22 @@ edit_dialog_putes_common_elements ( struct GNUNET_TIME_Absolute atime; gtk_calendar_get_date (GTK_CALENDAR (gtk_builder_get_object ( - edc->builder, - "edit_dialog_expiration_absolute_calendar")), + edc->builder, + "edit_dialog_expiration_absolute_calendar")), &year, &month, &day); hour = gtk_spin_button_get_value (GTK_SPIN_BUTTON ( - gtk_builder_get_object (edc->builder, - "edit_dialog_expiration_absolute_hours_spinbutton"))); + gtk_builder_get_object (edc->builder, + "edit_dialog_expiration_absolute_hours_spinbutton"))); minute = gtk_spin_button_get_value (GTK_SPIN_BUTTON (gtk_builder_get_object ( - edc->builder, - "edit_dialog_expiration_absolute_minutes_spinbutton"))); + edc->builder, + "edit_dialog_expiration_absolute_minutes_spinbutton"))); second = gtk_spin_button_get_value (GTK_SPIN_BUTTON (gtk_builder_get_object ( - edc->builder, - "edit_dialog_expiration_absolute_seconds_spinbutton"))); + edc->builder, + "edit_dialog_expiration_absolute_seconds_spinbutton"))); GNUNET_snprintf (fancydate, sizeof (fancydate), "%u-%u-%u %u:%u:%u", @@ -1661,8 +1665,8 @@ launch_edit_dialog (gint n_type, if (NULL == typename) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Record type `%u' not supported by this installation\n", - (unsigned int) n_type); + "Record type `%u' not supported by this installation\n", + (unsigned int) n_type); return; } if (NULL == current_pseudonym) @@ -1701,9 +1705,7 @@ launch_edit_dialog (gint n_type, edc->new_zone_option = g_strdup (current_pseudonym); edc->zone_liststore = zone_liststore; edc->check_validity = &check_validity; - GNUNET_asprintf (&edc->liblow, - "libgnunet_plugin_gtk_namestore_%s", - typename); + GNUNET_asprintf (&edc->liblow, "libgnunet_plugin_gtk_namestore_%s", typename); GNUNET_STRINGS_utf8_tolower (edc->liblow, edc->liblow); edc->plugin = GNUNET_PLUGIN_load (edc->liblow, edc); if (NULL == edc->plugin) @@ -1817,10 +1819,10 @@ gnunet_namestore_gtk_popup_edit_button_activate_cb (GtkWidget *widget, return; } GNUNET_CRYPTO_hash (n_name, - strlen (n_name), - &name_hash); + strlen (n_name), + &name_hash); ri = GNUNET_CONTAINER_multihashmap_get (n2r, - &name_hash); + &name_hash); if ( (NULL == ri) || (off >= ri->rd_count) ) { @@ -1829,7 +1831,7 @@ gnunet_namestore_gtk_popup_edit_button_activate_cb (GtkWidget *widget, return; } launch_edit_dialog (n_type, n_name, - ri, off); + ri, off); g_free (n_name); } @@ -1844,10 +1846,11 @@ gnunet_namestore_gtk_popup_edit_button_activate_cb (GtkWidget *widget, * @param user_data unused */ void -gnunet_namestore_gtk_type_cellrenderercombo_changed_cb (GtkCellRendererText *text, - gchar *path_string, - GtkTreeIter *iter, - gpointer user_data) +gnunet_namestore_gtk_type_cellrenderercombo_changed_cb ( + GtkCellRendererText *text, + gchar *path_string, + GtkTreeIter *iter, + gpointer user_data) { GtkTreeIter it; guint type; @@ -1870,8 +1873,8 @@ gnunet_namestore_gtk_type_cellrenderercombo_changed_cb (GtkCellRendererText *tex return; } gtk_tree_model_get (tm, &it, - GNS_TREESTORE_COL_NAME, &name_str, - -1); + GNS_TREESTORE_COL_NAME, &name_str, + -1); if (NULL == name_str) { GNUNET_break (0); @@ -1903,10 +1906,11 @@ gnunet_namestore_gtk_type_cellrenderercombo_changed_cb (GtkCellRendererText *tex * @param user_data unused */ void -gnunet_namestore_gtk_name_cellrenderertext_edited_cb (GtkCellRendererText *renderer, - gchar *path, - gchar *new_text, - gpointer user_data) +gnunet_namestore_gtk_name_cellrenderertext_edited_cb ( + GtkCellRendererText *renderer, + gchar *path, + gchar *new_text, + gpointer user_data) { GtkTreeIter it; gboolean not_dummy; @@ -1916,8 +1920,8 @@ gnunet_namestore_gtk_name_cellrenderertext_edited_cb (GtkCellRendererText *rende GtkTreePath *tpath; GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "New text for `%s' is `%s'\n", - path, + "New text for `%s' is `%s'\n", + path, new_text); if ((0 == strcmp (new_text, NEW_NAME_STR)) || @@ -1928,8 +1932,9 @@ gnunet_namestore_gtk_name_cellrenderertext_edited_cb (GtkCellRendererText *rende GNUNET_DNSPARSER_check_label (new_text)) { GNUNET_log (GNUNET_ERROR_TYPE_WARNING, - _("Name `%s' invalid for GNS/DNS (too long for a DNS label?)\n"), - new_text); + _ ( + "Name `%s' invalid for GNS/DNS (too long for a DNS label?)\n"), + new_text); gtk_widget_error_bell (GTK_WIDGET (main_window)); return; } @@ -1941,25 +1946,25 @@ gnunet_namestore_gtk_name_cellrenderertext_edited_cb (GtkCellRendererText *rende return; } gtk_tree_model_get (tm, &it, - GNS_TREESTORE_COL_NOT_DUMMY_ROW, ¬_dummy, - GNS_TREESTORE_COL_NAME, &name, - -1); + GNS_TREESTORE_COL_NOT_DUMMY_ROW, ¬_dummy, + GNS_TREESTORE_COL_NAME, &name, + -1); GNUNET_break (! not_dummy); - GNUNET_break (0 == strcmp (name, _(NEW_NAME_STR))); + GNUNET_break (0 == strcmp (name, _ (NEW_NAME_STR))); g_free (name); GNUNET_CRYPTO_hash (new_text, strlen (new_text), &name_hash); ri = GNUNET_CONTAINER_multihashmap_get (n2r, - &name_hash); + &name_hash); if (NULL != ri) { GtkTreeSelection *sel; GtkTreePath *sel_path; sel_path = gtk_tree_row_reference_get_path (ri->rr); - sel = gtk_tree_view_get_selection(tv); + sel = gtk_tree_view_get_selection (tv); gtk_tree_selection_select_path (sel, sel_path); gtk_tree_path_free (sel_path); return; @@ -1969,17 +1974,17 @@ gnunet_namestore_gtk_name_cellrenderertext_edited_cb (GtkCellRendererText *rende ri = GNUNET_new (struct RecordInfo); gtk_tree_store_set (ts, &it, - GNS_TREESTORE_COL_NAME, new_text, - GNS_TREESTORE_COL_NAME_IS_VISIBLE, TRUE, - GNS_TREESTORE_COL_RECORD_TYPE, 0, - GNS_TREESTORE_COL_RECORD_TYPE_AS_STR, _(NEW_RECORD_STR), - GNS_TREESTORE_COL_NOT_DUMMY_ROW, FALSE, - GNS_TREESTORE_COL_IS_RECORD_ROW, TRUE, - GNS_TREESTORE_COL_TYPE_IS_EDITABLE, TRUE, - GNS_TREESTORE_COL_NAME_IS_EDITABLE, FALSE, - -1); + GNS_TREESTORE_COL_NAME, new_text, + GNS_TREESTORE_COL_NAME_IS_VISIBLE, TRUE, + GNS_TREESTORE_COL_RECORD_TYPE, 0, + GNS_TREESTORE_COL_RECORD_TYPE_AS_STR, _ (NEW_RECORD_STR), + GNS_TREESTORE_COL_NOT_DUMMY_ROW, FALSE, + GNS_TREESTORE_COL_IS_RECORD_ROW, TRUE, + GNS_TREESTORE_COL_TYPE_IS_EDITABLE, TRUE, + GNS_TREESTORE_COL_NAME_IS_EDITABLE, FALSE, + -1); tpath = gtk_tree_model_get_path (tm, - &it); + &it); ri->rr = gtk_tree_row_reference_new (tm, tpath); ri->name = GNUNET_strdup (name); @@ -1995,15 +2000,16 @@ gnunet_namestore_gtk_name_cellrenderertext_edited_cb (GtkCellRendererText *rende &it, NULL, 0, - GNS_TREESTORE_COL_NAME, _(NEW_NAME_STR), - GNS_TREESTORE_COL_NAME_IS_VISIBLE, TRUE, - GNS_TREESTORE_COL_RECORD_TYPE, GNUNET_DNSPARSER_TYPE_A, - GNS_TREESTORE_COL_NOT_DUMMY_ROW, FALSE, - GNS_TREESTORE_COL_IS_RECORD_ROW, FALSE, - GNS_TREESTORE_COL_TYPE_IS_EDITABLE, FALSE, - GNS_TREESTORE_COL_NAME_IS_EDITABLE, TRUE, - GNS_TREESTORE_COL_RECORD_OFFSET, UINT_MAX, - -1); + GNS_TREESTORE_COL_NAME, _ (NEW_NAME_STR), + GNS_TREESTORE_COL_NAME_IS_VISIBLE, TRUE, + GNS_TREESTORE_COL_RECORD_TYPE, + GNUNET_DNSPARSER_TYPE_A, + GNS_TREESTORE_COL_NOT_DUMMY_ROW, FALSE, + GNS_TREESTORE_COL_IS_RECORD_ROW, FALSE, + GNS_TREESTORE_COL_TYPE_IS_EDITABLE, FALSE, + GNS_TREESTORE_COL_NAME_IS_EDITABLE, TRUE, + GNS_TREESTORE_COL_RECORD_OFFSET, UINT_MAX, + -1); } @@ -2022,23 +2028,23 @@ create_popup_menu () gboolean name_vis; GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Considering creating popup menu...\n"); + "Considering creating popup menu...\n"); sel = gtk_tree_view_get_selection (tv); if (! gtk_tree_selection_get_selected (sel, NULL, &it)) { GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "No row selected\n"); + "No row selected\n"); return NULL; } gtk_tree_model_get (tm, &it, - GNS_TREESTORE_COL_NAME_IS_VISIBLE, &name_vis, - -1); + GNS_TREESTORE_COL_NAME_IS_VISIBLE, &name_vis, + -1); if (name_vis) { GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Selected row is not a record row\n"); + "Selected row is not a record row\n"); return NULL; } popup = GTK_MENU (get_object ("gnunet_namestore_gtk_edit_popup_menu")); @@ -2118,8 +2124,8 @@ gnunet_namestore_gtk_treeview_button_press_event_cb (GtkWidget *widget, */ gboolean gnunet_namestore_gtk_treeview_key_press_event_cb (GtkWidget *widget, - GdkEvent *event, - gpointer user_data) + GdkEvent *event, + gpointer user_data) { GdkEventKey *event_key = (GdkEventKey *) event; GtkTreeIter iter; @@ -2987,7 +2993,7 @@ gnunet_namestore_gtk_zone_combobox_changed_cb (GtkComboBox *widget, -1); /* clang-format on */ gtk_widget_set_sensitive (GTK_WIDGET (get_object ( - "gnunet_namestore_gtk_zone_del_button")), + "gnunet_namestore_gtk_zone_del_button")), TRUE); load_zone (name, ego); } @@ -3088,7 +3094,7 @@ identity_cb (void *cls, /* make combo box insensitive if nothing can be selected */ gtk_widget_set_sensitive (GTK_WIDGET (zone_combo_box), FALSE); gtk_widget_set_sensitive (GTK_WIDGET (get_object ( - "gnunet_namestore_gtk_zone_entry")), + "gnunet_namestore_gtk_zone_entry")), FALSE); clear_zone_view (); } @@ -3175,7 +3181,7 @@ gnunet_namestore_gtk_zone_del_button_clicked_cb (GtkButton *button, GNUNET_CONTAINER_multihashmap_iterate (n2r, &delete_records, NULL); gtk_tree_store_clear (ts); gtk_widget_set_sensitive (GTK_WIDGET (get_object ( - "gnunet_namestore_gtk_zone_del_button")), + "gnunet_namestore_gtk_zone_del_button")), FALSE); gtk_widget_set_sensitive (main_window, FALSE); iop = GNUNET_IDENTITY_delete (identity, pseu, &iop_cont, NULL); @@ -3200,7 +3206,7 @@ gnunet_namestore_gtk_zone_add_entry_changed_cb (GtkEditable *editable, (void) user_data; label = gtk_entry_get_text (GTK_ENTRY (editable)); gtk_widget_set_sensitive (GTK_WIDGET (get_object ( - "gnunet_namestore_gtk_zone_add_button")), + "gnunet_namestore_gtk_zone_add_button")), NULL == fresh_label (label)); } @@ -3265,12 +3271,12 @@ run (void *cls) GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR, "gnunet-namestore-gtk", "NICK_EXPIRATION"); - GNUNET_SCHEDULER_shutdown (); + GNUNET_GTK_main_loop_quit (ml); return; } if (GNUNET_OK != GNUNET_GTK_main_loop_build_window (ml, NULL)) { - GNUNET_SCHEDULER_shutdown (); + GNUNET_GTK_main_loop_quit (ml); return; } GNUNET_GTK_set_icon_search_path (); @@ -3313,9 +3319,7 @@ run (void *cls) int main (int argc, char *const *argv) { - struct GNUNET_GETOPT_CommandLineOption options[] = { - GNUNET_GETOPT_OPTION_END - }; + struct GNUNET_GETOPT_CommandLineOption options[] = {GNUNET_GETOPT_OPTION_END}; int ret; if (GNUNET_OK == -- cgit v1.2.3