commit df64897d90df65aa6ae53d6c1a9442261e962c15 from: Oliver Lowe date: Sat Aug 16 06:42:42 2025 UTC just fsync... always close files safely...? commit - b61bed3eb264ab5974412e2053921e55944ed0bf commit + df64897d90df65aa6ae53d6c1a9442261e962c15 blob - 4382c8b79b1788fb7bbb415158135f08d25c3770 blob + ab2efd4476c69fb617f6148bcecd54b1a8353766 --- src/common/file-utils.c +++ src/common/file-utils.c @@ -35,14 +35,12 @@ #include "utils.h" #include "file-utils.h" -gboolean prefs_common_get_flush_metadata(void); - int safe_fclose(FILE *fp) { if (fflush(fp) != 0) { return EOF; } - if (prefs_common_get_flush_metadata() && fsync(fileno(fp)) != 0) { + if (fsync(fileno(fp)) != 0) { return EOF; } return fclose(fp); blob - db8f90c4070a6a18e433030b5fd5df3de367d17c blob + f2fb971389289cb8b6307846cb759fee7e1ebb13 --- src/common/prefs.c +++ src/common/prefs.c @@ -105,8 +105,6 @@ PrefFile *prefs_write_open(const gchar *path) return pfile; } -gboolean prefs_common_get_flush_metadata (void); - /*! *\brief Close and free preferences file * Creates final file from temp, creates backup blob - 266f56067d9ea62a006d96a87a66a2bf3a348d84 blob + c377d79c7c845dedcacdabd80bc36d317a08f322 --- src/headerview.c +++ src/headerview.c @@ -65,8 +65,6 @@ HeaderView *headerview_create(void) GtkWidget *ng_body_label; GtkWidget *subject_header_label; GtkWidget *subject_body_label; - GtkWidget *tags_header_label; - GtkWidget *tags_body_label; debug_print("Creating header view...\n"); headerview = g_new0(HeaderView, 1); @@ -92,20 +90,16 @@ HeaderView *headerview_create(void) ng_body_label = gtk_label_new(""); subject_header_label = gtk_label_new(prefs_common_translated_header_name("Subject:")); subject_body_label = gtk_label_new(""); - tags_header_label = gtk_label_new(_("Tags:")); - tags_body_label = gtk_label_new(""); gtk_label_set_selectable(GTK_LABEL(from_body_label), TRUE); gtk_label_set_selectable(GTK_LABEL(to_body_label), TRUE); gtk_label_set_selectable(GTK_LABEL(ng_body_label), TRUE); gtk_label_set_selectable(GTK_LABEL(subject_body_label), TRUE); - gtk_label_set_selectable(GTK_LABEL(tags_body_label), TRUE); gtk_widget_set_can_focus(from_body_label, FALSE); gtk_widget_set_can_focus(to_body_label, FALSE); gtk_widget_set_can_focus(ng_body_label, FALSE); gtk_widget_set_can_focus(subject_body_label, FALSE); - gtk_widget_set_can_focus(tags_body_label, FALSE); gtk_box_pack_start(GTK_BOX(hbox1), from_header_label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox1), from_body_label, FALSE, FALSE, 0); @@ -115,17 +109,13 @@ HeaderView *headerview_create(void) gtk_box_pack_start(GTK_BOX(hbox1), ng_body_label, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox2), subject_header_label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox2), subject_body_label, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(hbox3), tags_header_label, FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(hbox3), tags_body_label, TRUE, TRUE, 0); gtk_label_set_xalign(GTK_LABEL(to_body_label), 0.0); gtk_label_set_xalign(GTK_LABEL(ng_body_label), 0.0); gtk_label_set_xalign(GTK_LABEL(subject_body_label), 0.0); - gtk_label_set_xalign(GTK_LABEL(tags_body_label), 0.0); gtk_label_set_ellipsize(GTK_LABEL(to_body_label), PANGO_ELLIPSIZE_END); gtk_label_set_ellipsize(GTK_LABEL(ng_body_label), PANGO_ELLIPSIZE_END); gtk_label_set_ellipsize(GTK_LABEL(subject_body_label), PANGO_ELLIPSIZE_END); - gtk_label_set_ellipsize(GTK_LABEL(tags_body_label), PANGO_ELLIPSIZE_END); headerview->hbox = hbox; headerview->from_header_label = from_header_label; @@ -136,8 +126,6 @@ HeaderView *headerview_create(void) headerview->ng_body_label = ng_body_label; headerview->subject_header_label = subject_header_label; headerview->subject_body_label = subject_body_label; - headerview->tags_header_label = tags_header_label; - headerview->tags_body_label = tags_body_label; headerview->image = NULL; gtk_widget_show_all(hbox); @@ -156,7 +144,6 @@ void headerview_set_font(HeaderView *headerview) gtk_widget_override_font(headerview->to_body_label, normalfont); gtk_widget_override_font(headerview->ng_body_label, normalfont); gtk_widget_override_font(headerview->subject_body_label, normalfont); - gtk_widget_override_font(headerview->tags_body_label, normalfont); pango_font_description_free(normalfont); } @@ -171,7 +158,6 @@ void headerview_set_font(HeaderView *headerview) gtk_widget_override_font(headerview->to_header_label, boldfont); gtk_widget_override_font(headerview->ng_header_label, boldfont); gtk_widget_override_font(headerview->subject_header_label, boldfont); - gtk_widget_override_font(headerview->tags_header_label, boldfont); pango_font_description_free(boldfont); } } @@ -335,13 +321,10 @@ void headerview_clear(HeaderView *headerview) gtk_label_set_text(GTK_LABEL(headerview->to_body_label), ""); gtk_label_set_text(GTK_LABEL(headerview->ng_body_label), ""); gtk_label_set_text(GTK_LABEL(headerview->subject_body_label), ""); - gtk_label_set_text(GTK_LABEL(headerview->tags_body_label), ""); gtk_widget_hide(headerview->to_header_label); gtk_widget_hide(headerview->to_body_label); gtk_widget_hide(headerview->ng_header_label); gtk_widget_hide(headerview->ng_body_label); - gtk_widget_hide(headerview->tags_header_label); - gtk_widget_hide(headerview->tags_body_label); if (headerview->image && gtk_widget_get_visible(headerview->image)) { gtk_widget_hide(headerview->image); blob - ee717117536997975a6aaa7421169aba8c2d917c blob + f255e7e66768a1fae9dfaf72edd9010c5ba6c9a9 --- src/headerview.h +++ src/headerview.h @@ -14,7 +14,7 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see . - * + * */ #ifndef __HEADERVIEW_H__ @@ -38,8 +38,6 @@ struct _HeaderView GtkWidget *ng_body_label; GtkWidget *subject_header_label; GtkWidget *subject_body_label; - GtkWidget *tags_header_label; - GtkWidget *tags_body_label; GtkWidget *image; }; blob - afe1447f357b700f108fec50e3eed9c8f7ab6e6f blob + e7fb97d22643f94e65062ecd8e71b9efa5d54abd --- src/prefs_common.c +++ src/prefs_common.c @@ -1023,9 +1023,6 @@ static PrefParam param[] = { {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL, NULL, NULL, NULL}, - {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL, - NULL, NULL, NULL}, - {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT, NULL, NULL, NULL}, @@ -1481,11 +1478,6 @@ const gchar *prefs_common_get_ext_editor_cmd(void) #endif /* 0 */ } -gboolean prefs_common_get_flush_metadata (void) -{ - return prefs_common.flush_metadata; -} - PrefsCommon *prefs_common_get_prefs(void) { return &prefs_common; blob - 171a92506508d2da6c294bb62f9c64b0864b3467 blob + 5888cf55a0e0747fed14c26a2367ab87efea7548 --- src/prefs_common.h +++ src/prefs_common.h @@ -559,7 +559,6 @@ struct _PrefsCommon gboolean two_line_vert; gboolean inherit_folder_props; - gboolean flush_metadata; gint nav_history_length; blob - dc87164f6cf3a373ea12db80ce2d2cf68d9b62da blob + 6e793ece389408be8855c105e61f7c196629b1e4 --- src/prefs_other.c +++ src/prefs_other.c @@ -65,8 +65,6 @@ typedef struct _OtherPage GtkWidget *checkbtn_askonfilter; GtkWidget *checkbtn_real_time_sync; GtkWidget *entry_attach_save_chmod; - GtkWidget *flush_metadata_faster_radiobtn; - GtkWidget *flush_metadata_safer_radiobtn; GtkWidget *checkbtn_transhdr; GtkWidget *checkbtn_use_passphrase; } OtherPage; @@ -367,12 +365,6 @@ static void prefs_other_create_widget(PrefsPage *_page GtkWidget *label_attach_save_chmod; GtkWidget *entry_attach_save_chmod; - GtkWidget *frame_metadata; - GtkWidget *vbox_metadata; - GtkWidget *metadata_label; - GtkWidget *flush_metadata_faster_radiobtn; - GtkWidget *flush_metadata_safer_radiobtn; - GtkWidget *vbox_passphrase; GtkWidget *frame_passphrase; GtkWidget *checkbtn_use_passphrase; @@ -428,30 +420,8 @@ static void prefs_other_create_widget(PrefsPage *_page gtk_widget_show_all(frame_keys); SET_TOGGLE_SENSITIVITY (checkbtn_gtk_enable_accels, keys_preset_hbox); - vbox_metadata = gtkut_get_options_frame(vbox1, &frame_metadata, _("Metadata handling")); - metadata_label = gtk_label_new(_("Safer mode asks the OS to write metadata to disk directly;\n" - "it avoids data loss after crashes but can take some time")); - gtk_label_set_xalign(GTK_LABEL(metadata_label), 0.0); - gtk_label_set_yalign(GTK_LABEL(metadata_label), 0.0); - gtk_box_pack_start (GTK_BOX (vbox_metadata), metadata_label, FALSE, FALSE, 0); - flush_metadata_safer_radiobtn = gtk_radio_button_new_with_label(NULL, _("Safer")); - flush_metadata_faster_radiobtn = gtk_radio_button_new_with_label_from_widget( - GTK_RADIO_BUTTON(flush_metadata_safer_radiobtn), _("Faster")); hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8); gtk_widget_show (hbox1); - gtk_box_pack_start (GTK_BOX (vbox_metadata), hbox1, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (hbox1), flush_metadata_safer_radiobtn, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (hbox1), flush_metadata_faster_radiobtn, FALSE, FALSE, 0); - - if (prefs_common.flush_metadata) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(flush_metadata_safer_radiobtn), TRUE); - else - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(flush_metadata_faster_radiobtn), TRUE); - - gtk_widget_show_all(frame_metadata); - - hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8); - gtk_widget_show (hbox1); gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0); label_iotimeout = gtk_label_new (_("Socket I/O timeout")); @@ -576,8 +546,6 @@ static void prefs_other_create_widget(PrefsPage *_page prefs_other->checkbtn_askonfilter = checkbtn_askonfilter; prefs_other->checkbtn_real_time_sync = checkbtn_real_time_sync; prefs_other->entry_attach_save_chmod = entry_attach_save_chmod; - prefs_other->flush_metadata_safer_radiobtn = flush_metadata_safer_radiobtn; - prefs_other->flush_metadata_faster_radiobtn = flush_metadata_faster_radiobtn; prefs_other->checkbtn_use_passphrase = checkbtn_use_passphrase; prefs_other->page.widget = vbox1; } @@ -601,8 +569,6 @@ static void prefs_other_save(PrefsPage *_page) GTK_TOGGLE_BUTTON(page->checkbtn_warnqueued)); prefs_common.io_timeout_secs = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON(page->spinbtn_iotimeout)); - prefs_common.flush_metadata = gtk_toggle_button_get_active( - GTK_TOGGLE_BUTTON(page->flush_metadata_safer_radiobtn)); sock_set_io_timeout(prefs_common.io_timeout_secs); #ifdef HAVE_LIBETPAN imap_main_set_timeout(prefs_common.io_timeout_secs);