Handle configuration versions from the future
authorRicardo Mones <ricardo@mones.org>
Wed, 27 Jul 2016 14:46:22 +0000 (16:46 +0200)
committerRicardo Mones <ricardo@mones.org>
Wed, 27 Jul 2016 14:46:22 +0000 (16:46 +0200)
src/common/defs.h
src/main.c
src/prefs_migration.c
src/prefs_migration.h

index c19a26ee820fff99ebb33bf6a9ee6e2a0918ad57..c10ac659d309dd8a78a956b0c9688c9638d66783 100644 (file)
@@ -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"
index 987bc6830e1dd8085a15aefb2fbb85aec95830f5..11ce45e85092d7e76ff270f4add0f6e1d7a12438 100644 (file)
@@ -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();
index 0ee859c4d2699f1b7badfec59a743948a8d4fa82..cf8a103da55119cc7a1e5136783fe7c39ec32c68 100644 (file)
@@ -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
 #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 */
 }
index 226f1df5f0a1336b00d840ba4e75dffd1d1f229d..e9840961c87994e2026c3d9a9efd01415378c137 100644 (file)
  *
  * 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__ */