talons

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

commit 9e4a3265d7e0e60ba7b1c43c7a4a8ce9c0cab99b
parent 4d766fb1d2b569504465ae089a69e14fb002768d
Author: Ricardo Mones <ricardo@mones.org>
Date:   Wed, 27 Jul 2016 16:46:22 +0200

Handle configuration versions from the future

Diffstat:
Msrc/common/defs.h | 6+++---
Msrc/main.c | 8+++++++-
Msrc/prefs_migration.c | 46+++++++++++++++++++++++++++++++++++++++++++---
Msrc/prefs_migration.h | 3+--
4 files changed, 54 insertions(+), 9 deletions(-)

diff --git a/src/common/defs.h b/src/common/defs.h @@ -1,6 +1,6 @@ /* - * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client - * Copyright (C) 1999-2013 Hiroyuki Yamamoto and the Claws Mail team + * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client + * Copyright (C) 1999-2016 Hiroyuki Yamamoto and the Claws Mail team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -14,7 +14,6 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. - * */ #ifndef __DEFS_H__ @@ -91,6 +90,7 @@ #define USERS_ML_URI "http://lists.claws-mail.org/cgi-bin/mailman/listinfo/users" #define GPL_URI "http://www.gnu.org/licenses/gpl.html" #define DONATE_URI "http://www.claws-mail.org/sponsors.php" +#define CONFIG_VERSIONS_URI "http://www.claws-mail.org/cvc.php" #define RELEASE_NOTES_FILE "RELEASE_NOTES" #define THEMEINFO_FILE ".claws_themeinfo" #define FOLDER_LIST "folderlist.xml" diff --git a/src/main.c b/src/main.c @@ -1458,7 +1458,13 @@ int main(int argc, char *argv[]) g_slist_free(plug_list); } - prefs_update_config_version(); + if (prefs_update_config_version() < 0) { + exit_claws(mainwin); +#ifdef G_OS_WIN32 + win32_close_log(); +#endif + exit(0); + } if (never_ran) { prefs_common_write_config(); diff --git a/src/prefs_migration.c b/src/prefs_migration.c @@ -1,6 +1,6 @@ /* * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client - * Copyright (C) 1999-2016 the Claws Mail team + * Copyright (C) 2016 the Claws Mail team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,9 +21,18 @@ #include "claws-features.h" #endif +#ifdef ENABLE_NLS +#include <glib/gi18n.h> +#else +#define _(a) (a) +#define N_(a) (a) +#endif + +#include "defs.h" #include "account.h" #include "prefs_account.h" #include "prefs_common.h" +#include "alertpanel.h" static void _update_config(gint version) { @@ -70,14 +79,44 @@ static void _update_config(gint version) } } -void prefs_update_config_version() +int prefs_update_config_version() { gint ver = prefs_common_get_prefs()->config_version; + if (ver > CLAWS_CONFIG_VERSION) { + gchar *msg; + gchar *markup; + AlertValue av; + + markup = g_strdup_printf( + "<a href=\"%s\"><span underline=\"none\">", + CONFIG_VERSIONS_URI); + msg = g_strdup_printf( + _("Your Claws Mail configuration is from a newer " + "version than the version which you are currently " + "using.\n\n" + "This is not recommended.\n\n" + "For further information see the %sClaws Mail " + "website%s.\n\n" + "Do you want to exit now?"), + markup, "</span></a>"); + g_free(markup); + av = alertpanel_full(_("Configuration warning"), msg, + GTK_STOCK_NO, GTK_STOCK_YES, NULL, + FALSE, NULL, + ALERT_ERROR, G_ALERTALTERNATE); + g_free(msg); + + if (av != G_ALERTDEFAULT) + return -1; /* abort startup */ + + return 0; /* hic sunt dracones */ + } + debug_print("Starting config update at config_version %d.\n", ver); if (ver == CLAWS_CONFIG_VERSION) { debug_print("No update necessary, already at latest config_version.\n"); - return; + return 0; /* nothing to do */ } while (ver < CLAWS_CONFIG_VERSION) { @@ -86,4 +125,5 @@ void prefs_update_config_version() } debug_print("Config update done.\n"); + return 1; /* update done */ } diff --git a/src/prefs_migration.h b/src/prefs_migration.h @@ -14,12 +14,11 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. - * */ #ifndef __PREFS_MIGRATION_H__ #define __PREFS_MIGRATION_H__ -void prefs_update_config_version(); +int prefs_update_config_version(); #endif /* __PREFS_MIGRATION_H__ */