perform periodic update checks automatically

This commit is contained in:
Berke Viktor 2011-11-25 21:44:08 +01:00
parent 75904d4a04
commit 408487f89b
1 changed files with 33 additions and 4 deletions

View File

@ -65,7 +65,7 @@ check_version ()
return "Unknown"; return "Unknown";
} }
static void static int
print_version () print_version ()
{ {
char *version = check_version (); char *version = check_version ();
@ -73,10 +73,12 @@ print_version ()
if (strcmp (version, xchat_get_info (ph, "wdk_version")) == 0) if (strcmp (version, xchat_get_info (ph, "wdk_version")) == 0)
{ {
xchat_printf (ph, "You have the latest version of XChat-WDK installed!\n"); xchat_printf (ph, "You have the latest version of XChat-WDK installed!\n");
return 0;
} }
else if (strcmp (version, "Unknown") == 0) else if (strcmp (version, "Unknown") == 0)
{ {
xchat_printf (ph, "Unable to check for XChat-WDK updates!\n"); xchat_printf (ph, "Unable to check for XChat-WDK updates!\n");
return 0;
} }
else else
{ {
@ -85,9 +87,30 @@ print_version ()
#else #else
xchat_printf (ph, "An XChat-WDK update is available! You can download it from here:\nhttp://xchat-wdk.googlecode.com/files/XChat-WDK%%20%s%%20x86.exe\n", version); xchat_printf (ph, "An XChat-WDK update is available! You can download it from here:\nhttp://xchat-wdk.googlecode.com/files/XChat-WDK%%20%s%%20x86.exe\n", version);
#endif #endif
return 1;
} }
} }
static int
print_version_quiet (void *userdata)
{
char *version = check_version ();
/* if it's not the current version AND not network error */
if (!(strcmp (version, xchat_get_info (ph, "wdk_version")) == 0) && !(strcmp (version, "Unknown") == 0))
{
#ifdef _WIN64 /* use this approach, the wProcessorArchitecture method always returns 0 (=x86) for plugins for some reason */
xchat_printf (ph, "An XChat-WDK update is available! You can download it from here:\nhttp://xchat-wdk.googlecode.com/files/XChat-WDK%%20%s%%20x64.exe\n", version);
#else
xchat_printf (ph, "An XChat-WDK update is available! You can download it from here:\nhttp://xchat-wdk.googlecode.com/files/XChat-WDK%%20%s%%20x86.exe\n", version);
#endif
/* print update url once, then stop the timer */
return 0;
}
/* keep checking */
return 1;
}
int int
xchat_plugin_init (xchat_plugin *plugin_handle, char **plugin_name, char **plugin_desc, char **plugin_version, char *arg) xchat_plugin_init (xchat_plugin *plugin_handle, char **plugin_name, char **plugin_desc, char **plugin_version, char *arg)
{ {
@ -95,13 +118,19 @@ xchat_plugin_init (xchat_plugin *plugin_handle, char **plugin_name, char **plugi
*plugin_name = "Update Checker"; *plugin_name = "Update Checker";
*plugin_desc = "Plugin for checking for XChat-WDK updates"; *plugin_desc = "Plugin for checking for XChat-WDK updates";
*plugin_version = "1.5"; *plugin_version = "2.0";
xchat_hook_command (ph, "UPDCHK", XCHAT_PRI_NORM, print_version, 0, 0); xchat_hook_command (ph, "UPDCHK", XCHAT_PRI_NORM, print_version, 0, 0);
xchat_command (ph, "MENU -ietc\\download.png ADD \"Help/Check for Updates\" \"UPDCHK\""); xchat_command (ph, "MENU -ietc\\download.png ADD \"Help/Check for Updates\" \"UPDCHK\"");
xchat_print (ph, "Update Checker plugin loaded\n"); xchat_printf (ph, "%s plugin loaded\n", *plugin_name);
print_version ();
/* only start the timer if there's no update available during startup */
if (!print_version ())
{
/* check for updates every 6 hours */
xchat_hook_timer (ph, 21600000, print_version_quiet, NULL);
}
return 1; /* return 1 for success */ return 1; /* return 1 for success */
} }