void checkConfigUpdates() { static const char * const updates[] = { "9", "3.1-update-identities", "3.1-use-identity-uoids", "3.1-new-mail-notification", "3.2-update-loop-on-goto-unread-settings", "3.1.4-dont-use-UOID-0-for-any-identity", //krazy:exclude=spelling "3.2-misc", "3.2-moves", "3.3-use-ID-for-accounts", "3.3-update-filter-rules", "3.3-move-identities-to-own-file", "3.3-aegypten-kpgprc-to-kmailrc", "3.3-aegypten-kpgprc-to-libkleopatrarc", "3.3-aegypten-emailidentities-split-sign-encr-keys", "3.3-misc", "3.3b1-misc", "3.4-misc", "3.4a", "3.4b", "3.4.1", "3.5.4", "3.5.7-imap-flag-migration", "4.0-misc", "4.2" }; static const int numUpdates = sizeof updates / sizeof *updates; // Warning: do not remove entries in the above array, or the update-level check below will break KSharedConfig::Ptr config = KMKernel::config(); KConfigGroup startup( config, "Startup" ); const int configUpdateLevel = startup.readEntry( "update-level", 0 ); if ( configUpdateLevel == numUpdates ) // Optimize for the common case that everything is OK return; for ( int i = configUpdateLevel ; i < numUpdates ; ++i ) { config->checkUpdate( updates[i], "kmail.upd" ); } startup.writeEntry( "update-level", numUpdates ); }