From 0155b07c9d3c1d8138d6be079204e6371e86d3ac Mon Sep 17 00:00:00 2001 From: deepend-tildeclub Date: Tue, 17 Mar 2026 10:07:34 -0600 Subject: [PATCH] refactor: route exit saves through FE persistence wrapper; keep text mode simple --- src/common/fe.h | 9 +++++++++ src/common/zoitechat.c | 14 ++++++++++++-- src/fe-gtk/fe-gtk.c | 16 ++++++++++++++++ src/fe-text/fe-text.c | 13 +++++++++++++ 4 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/common/fe.h b/src/common/fe.h index d9cd23ee..e456ad73 100644 --- a/src/common/fe.h +++ b/src/common/fe.h @@ -44,11 +44,20 @@ typedef struct char *icon; /* filename */ } menu_entry; +typedef struct +{ + gboolean success; + gboolean partial_failure; + gboolean config_failed; + gboolean theme_failed; +} fe_preferences_save_result; + int fe_args (int argc, char *argv[]); void fe_init (void); void fe_main (void); void fe_cleanup (void); void fe_exit (void); +fe_preferences_save_result fe_preferences_persistence_save_all (void); int fe_timeout_add (int interval, void *callback, void *userdata); int fe_timeout_add_seconds (int interval, void *callback, void *userdata); void fe_timeout_remove (int tag); diff --git a/src/common/zoitechat.c b/src/common/zoitechat.c index 2aa36e90..4d8ca3fa 100644 --- a/src/common/zoitechat.c +++ b/src/common/zoitechat.c @@ -1104,8 +1104,18 @@ zoitechat_exit (void) plugin_kill_all (); fe_cleanup (); - if (!save_config ()) - g_printerr ("Could not save zoitechat.conf.\n"); + { + fe_preferences_save_result save_result; + + save_result = fe_preferences_persistence_save_all (); + if (!save_result.success) + { + if (save_result.partial_failure || (!save_result.config_failed && save_result.theme_failed)) + g_printerr ("Could not fully save preferences. zoitechat.conf was written, but colors.conf failed.\n"); + else + g_printerr ("Could not save zoitechat.conf.\n"); + } + } if (prefs.save_pevents) { pevent_save (NULL); diff --git a/src/fe-gtk/fe-gtk.c b/src/fe-gtk/fe-gtk.c index 863f189f..9c48a44d 100644 --- a/src/fe-gtk/fe-gtk.c +++ b/src/fe-gtk/fe-gtk.c @@ -59,6 +59,7 @@ #include "plugin-notification.h" #include "theme/theme-manager.h" #include "theme/theme-application.h" +#include "preferences-persistence.h" #ifdef USE_LIBCANBERRA #include @@ -585,6 +586,21 @@ fe_cleanup (void) { } +fe_preferences_save_result +fe_preferences_persistence_save_all (void) +{ + PreferencesPersistenceResult save_result; + fe_preferences_save_result result; + + save_result = preferences_persistence_save_all (); + result.success = save_result.success; + result.partial_failure = save_result.partial_failure; + result.config_failed = save_result.config_failed; + result.theme_failed = save_result.theme_failed; + + return result; +} + void fe_exit (void) { diff --git a/src/fe-text/fe-text.c b/src/fe-text/fe-text.c index 53d85f30..e73bd585 100644 --- a/src/fe-text/fe-text.c +++ b/src/fe-text/fe-text.c @@ -581,6 +581,19 @@ fe_exit (void) g_main_loop_quit(main_loop); } +fe_preferences_save_result +fe_preferences_persistence_save_all (void) +{ + fe_preferences_save_result result; + + result.success = save_config () != 0; + result.partial_failure = FALSE; + result.config_failed = !result.success; + result.theme_failed = FALSE; + + return result; +} + void fe_new_server (struct server *serv) {