diff --git a/src/pw3270/common.h b/src/pw3270/common.h index 6d90af4..705a9c2 100644 --- a/src/pw3270/common.h +++ b/src/pw3270/common.h @@ -58,8 +58,9 @@ // Configuration LIB3270_EXPORT void pw3270_session_config_load(const gchar *filename); + LIB3270_EXPORT void pw3270_session_config_save(); LIB3270_EXPORT void pw3270_session_config_free(void); - LIB3270_EXPORT GKeyFile * pw3270_session_config_get(void); + LIB3270_EXPORT GKeyFile * pw3270_session_config_get(gboolean create); gchar * get_string_from_config(const gchar *group, const gchar *key, const gchar *def); gboolean get_boolean_from_config(const gchar *group, const gchar *key, gboolean def); diff --git a/src/pw3270/linux/config.c b/src/pw3270/linux/config.c index 64d5c71..14416a9 100644 --- a/src/pw3270/linux/config.c +++ b/src/pw3270/linux/config.c @@ -265,9 +265,8 @@ void set_integer_to_config(const gchar *group, const gchar *key, gint val) } -void pw3270_session_config_free(void) +void pw3270_session_config_save() { - if(!keyfile) return; @@ -301,9 +300,13 @@ void pw3270_session_config_free(void) } +} + +void pw3270_session_config_free(void) +{ + pw3270_session_config_save(); g_key_file_free(keyfile); keyfile = NULL; - } gchar * build_data_filename(const gchar *first_element, ...) @@ -361,9 +364,9 @@ gchar * filename_from_va(const gchar *first_element, va_list args) return g_build_filename(".",suffix,NULL); } -GKeyFile * pw3270_session_config_get(void) +GKeyFile * pw3270_session_config_get(gboolean create) { - if(!keyfile) + if(!keyfile && create) pw3270_session_config_load(NULL); return keyfile; } @@ -383,7 +386,7 @@ GKeyFile * pw3270_session_config_get(void) void save_window_state_to_config(const gchar *group, const gchar *key, GdkWindowState CurrentState) { int f; - GKeyFile * conf = pw3270_session_config_get(); + GKeyFile * conf = pw3270_session_config_get(TRUE); gchar * id = g_strconcat(group,".",key,NULL); for(f=0;f