diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2010-05-28 08:42:45 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2010-05-28 08:42:45 +0000 |
commit | 3dc9b18af690611442f591bc4badc7d86b241117 (patch) | |
tree | de9e3f60ebca0181d635776c8d6851a8addcab6e | |
parent | 7721162ad8e0cd3e817b4bea7c47d3523a1bd5d0 (diff) |
support DISP_RELEASE / DISP_DEVEL which set displayed new version.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@2553 ee746299-78ed-0310-b773-934348b2243d
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | src/update_check.c | 82 |
2 files changed, 59 insertions, 28 deletions
@@ -1,5 +1,10 @@ 2010-05-28 + * src/update_check.c: support DISP_RELEASE / DISP_DEVEL which + set displayed new version. + +2010-05-28 + * src/update_check.[ch] src/plugin.[ch] src/main.c: added functions to modify URLs for update check. diff --git a/src/update_check.c b/src/update_check.c index 7a65cc7c..b5dffeb1 100644 --- a/src/update_check.c +++ b/src/update_check.c @@ -108,7 +108,8 @@ static void parse_version_string(const gchar *ver, gint *major, gint *minor, g_strfreev(vers); } -static void update_dialog(const gchar *new_ver, gboolean manual) +static void update_dialog(const gchar *new_ver, const gchar *disp_ver, + gboolean manual) { gchar buf[1024]; AlertValue val; @@ -116,12 +117,18 @@ static void update_dialog(const gchar *new_ver, gboolean manual) if (!jump_url) update_check_set_jump_url(HOMEPAGE_URI); - if (new_ver) - g_snprintf(buf, sizeof(buf), "%s\n\n%s -> %s", - _("A newer version of Sylpheed has been found.\n" - "Upgrade now?"), - VERSION, new_ver); - else + if (new_ver) { + if (disp_ver) + g_snprintf(buf, sizeof(buf), "%s\n\n%s\n(%s -> %s)", + _("A newer version of Sylpheed has been found.\n" + "Upgrade now?"), + disp_ver, VERSION, new_ver); + else + g_snprintf(buf, sizeof(buf), "%s\n\n%s -> %s", + _("A newer version of Sylpheed has been found.\n" + "Upgrade now?"), + VERSION, new_ver); + } else g_snprintf(buf, sizeof(buf), "%s", _("A newer version of Sylpheed has been found.\n" "Upgrade now?")); @@ -154,9 +161,13 @@ static void update_check_cb(GPid pid, gint status, gpointer data) #endif gboolean result = FALSE; gboolean got_version = FALSE; + gboolean rel_result = FALSE; + gboolean dev_result = FALSE; gboolean show_dialog_always = (gboolean)data; gchar buf[BUFFSIZE]; ssize_t size; + gchar *disp_rel_ver = NULL; + gchar *disp_dev_ver = NULL; debug_print("update_check_cb\n"); @@ -190,28 +201,37 @@ static void update_check_cb(GPid pid, gint status, gpointer data) key = g_strndup(lines[i], p - lines[i]); val = p + 1; - if (!strcmp(key, "RELEASE")) { - parse_version_string(val, &major, &minor, µ, - &extra); - result = compare_version(major, minor, micro, extra, - TRUE, cur_ver_is_release); - } else if (!cur_ver_is_release && !strcmp(key, "DEVEL")) { - parse_version_string(val, &major, &minor, µ, - &extra); - result = compare_version(major, minor, micro, extra, - FALSE, cur_ver_is_release); + if (!disp_rel_ver && !strcmp(key, "DISP_RELEASE")) { + disp_rel_ver = g_strdup(val); + } else if (!cur_ver_is_release && !disp_dev_ver && + !strcmp(key, "DISP_DEVEL")) { + disp_dev_ver = g_strdup(val); } - if (major + minor + micro != 0) - got_version = TRUE; + if (!result) { + if (!strcmp(key, "RELEASE")) { + parse_version_string(val, &major, &minor, µ, + &extra); + result = compare_version(major, minor, micro, extra, + TRUE, cur_ver_is_release); + rel_result = result; + } else if (!cur_ver_is_release && !strcmp(key, "DEVEL")) { + parse_version_string(val, &major, &minor, µ, + &extra); + result = compare_version(major, minor, micro, extra, + FALSE, cur_ver_is_release); + dev_result = result; + } - if (result) { - new_ver = g_strdup_printf("%d.%d.%d%s", major, minor, micro, extra ? extra : ""); - debug_print("update_check: new ver: %s\n", new_ver); - g_free(extra); - g_free(key); - break; + if (major + minor + micro != 0) + got_version = TRUE; + + if (result) { + new_ver = g_strdup_printf("%d.%d.%d%s", major, minor, micro, extra ? extra : ""); + debug_print("update_check: new ver: %s (%s)\n", new_ver, rel_result ? "release version" : "devel version"); + } } + g_free(extra); g_free(key); } @@ -221,9 +241,12 @@ static void update_check_cb(GPid pid, gint status, gpointer data) gdk_threads_enter(); if (!gtkut_window_modal_exist() && !inc_is_active()) { - if (result) - update_dialog(new_ver, show_dialog_always); - else if (show_dialog_always) { + if (result) { + if (rel_result) + update_dialog(new_ver, disp_rel_ver, show_dialog_always); + else + update_dialog(new_ver, disp_dev_ver, show_dialog_always); + } else if (show_dialog_always) { if (got_version) alertpanel_message(_("Information"), _("Sylpheed is already the latest version."), @@ -234,6 +257,9 @@ static void update_check_cb(GPid pid, gint status, gpointer data) } else { debug_print("update_check_cb: modal dialog exists or incorporation is active. Disabling update dialog.\n"); } + + g_free(disp_rel_ver); + g_free(disp_dev_ver); g_free(new_ver); gdk_threads_leave(); |