talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit fef7068386f01f0abf41c6dde8df21becfb92c45
parent 04185a6e45fa67d2231644a96158441f32afafb8
Author: Andrej Kacian <ticho@claws-mail.org>
Date:   Mon,  5 Nov 2018 11:49:21 +0100

Add config_version to folder item prefs.

Also some minor code comment and debug output tweaks.

Diffstat:
Msrc/folder_item_prefs.c | 5+++++
Msrc/folder_item_prefs.h | 2++
Msrc/prefs_migration.c | 80++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------
Msrc/prefs_migration.h | 1+
4 files changed, 79 insertions(+), 9 deletions(-)

diff --git a/src/folder_item_prefs.c b/src/folder_item_prefs.c @@ -31,6 +31,7 @@ #include "prefs_gtk.h" #include "filtering.h" #include "folder_item_prefs.h" +#include "prefs_migration.h" FolderItemPrefs tmp_prefs; @@ -124,6 +125,8 @@ static PrefParam param[] = { NULL, NULL, NULL}, {"forward_body_format", NULL, &tmp_prefs.forward_body_format, P_STRING, NULL, NULL, NULL}, + {"config_version", "-1", &tmp_prefs.config_version, P_INT, + NULL, NULL, NULL}, {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL} }; @@ -142,6 +145,8 @@ void folder_item_prefs_read_config(FolderItem * item) g_free(rcpath); *item->prefs = tmp_prefs; + + prefs_update_config_version_folder_item(item); } void folder_item_prefs_save_config(FolderItem * item) diff --git a/src/folder_item_prefs.h b/src/folder_item_prefs.h @@ -40,6 +40,8 @@ typedef enum { struct _FolderItemPrefs { gchar * directory; + gint config_version; + int enable_processing; /* at start-up */ int enable_processing_when_opening; GSList * processing; diff --git a/src/prefs_migration.c b/src/prefs_migration.c @@ -30,6 +30,7 @@ #include "defs.h" #include "account.h" +#include "folder_item_prefs.h" #include "prefs_account.h" #include "prefs_common.h" #include "alertpanel.h" @@ -184,6 +185,23 @@ static void _update_config_folderlist(gint version) } } +static void _update_config_folder_item(FolderItem *item, + gint version) +{ + debug_print("Updating config_version from %d to %d.\n", + version, version + 1); + + switch (version) { + /* nothing here yet */ + + default: + + /* NOOP */ + + break; + } +} + int prefs_update_config_version_common() { gint ver = prefs_common_get_prefs()->config_version; @@ -219,9 +237,10 @@ int prefs_update_config_version_accounts() ac_prefs = (PrefsAccount *)cur->data; if (ac_prefs->config_version == -1) { - /* There was no config_version stored in accountrc, let's assume - * config_version same as clawsrc started at, to avoid breaking - * this account by "upgrading" it unnecessarily. */ + /* There was no config_version stored in the config, let's + * assume config_version same as what clawsrc started at + * this session, to avoid breaking the configuration by + * "upgrading" it unnecessarily. */ debug_print("Account '%s': config_version not saved, using one from clawsrc: %d\n", ac_prefs->account_name, starting_config_version); ac_prefs->config_version = starting_config_version; } @@ -243,6 +262,7 @@ int prefs_update_config_version_accounts() } } + debug_print("Accounts config update done.\n"); return 1; } @@ -252,8 +272,8 @@ int prefs_update_config_version_password_store(gint from_version) if (ver == -1) { /* There was no config_version stored in the config, let's assume - * config_version same as clawsrc started at, to avoid breaking - * the configuration by "upgrading" it unnecessarily. */ + * config_version same as what clawsrc started at this session, + * to avoid breaking the configuration by "upgrading" it unnecessarily. */ debug_print("Password store: config_version not saved, using one from clawsrc: %d\n", starting_config_version); ver = starting_config_version; } @@ -272,7 +292,7 @@ int prefs_update_config_version_password_store(gint from_version) _update_config_password_store(ver++); } - debug_print("Config update done.\n"); + debug_print("Passwordstore config update done.\n"); return 1; } @@ -282,8 +302,8 @@ int prefs_update_config_version_folderlist(gint from_version) if (ver == -1) { /* There was no config_version stored in the config, let's assume - * config_version same as clawsrc started at, to avoid breaking - * the configuration by "upgrading" it unnecessarily. */ + * config_version same as what clawsrc started at this session, + * to avoid breaking the configuration by "upgrading" it unnecessarily. */ debug_print("Folderlist: config_version not saved, using one from clawsrc: %d\n", starting_config_version); ver = starting_config_version; } @@ -302,6 +322,48 @@ int prefs_update_config_version_folderlist(gint from_version) _update_config_folderlist(ver++); } - debug_print("Config update done.\n"); + debug_print("Folderlist config update done.\n"); return 1; } + +int prefs_update_config_version_folder_item(FolderItem *item) +{ + gint ver; + gchar *id; + + cm_return_val_if_fail(item != NULL, 0); + + id = folder_item_get_identifier(item); + + if (item->prefs->config_version == -1) { + /* There was no config_version stored in the config, let's assume + * config_version same as what clawsrc started at this session, + * to avoid breaking the configuration by "upgrading" it unnecessarily. */ + debug_print("Folder item '%s': config_version not saved, using one from clawsrc: %d\n", id, starting_config_version); + item->prefs->config_version = starting_config_version; + } + + ver = item->prefs->config_version; + + if (!_version_check(ver)) { + g_free(id); + return -1; + } + + if (ver == CLAWS_CONFIG_VERSION) { + debug_print("Folder item '%s': No update necessary, already at latest config_version %d.\n", id, ver); + g_free(id); + return 0; /* nothing to do */ + } + + debug_print("Folder item '%s': starting config_update at version %d.\n", + id, ver); + g_free(id); + + while (ver < CLAWS_CONFIG_VERSION) { + _update_config_folder_item(item, ver++); + } + + debug_print("Folder item config update done.\n"); + return 0; +} diff --git a/src/prefs_migration.h b/src/prefs_migration.h @@ -23,5 +23,6 @@ int prefs_update_config_version_common(); int prefs_update_config_version_accounts(); int prefs_update_config_version_password_store(gint from_version); int prefs_update_config_version_folderlist(gint from_version); +int prefs_update_config_version_folder_item(FolderItem *item); #endif /* __PREFS_MIGRATION_H__ */