changeset 17647:7b8725f898b3

A patch from QuLogic to fix a bug with a zero timestamp for unidle notices in the system log. I've changed the patch to keep the current behavior for idle notices (i.e. to show the time when the buddy originally went idle). Fixes #1282
author Richard Laager <rlaager@wiktel.com>
date Sat, 02 Jun 2007 04:36:43 +0000
parents 27ee01859e9a
children df911a06e09e
files libpurple/status.c
diffstat 1 files changed, 9 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/libpurple/status.c	Sat Jun 02 04:34:56 2007 +0000
+++ b/libpurple/status.c	Sat Jun 02 04:36:43 2007 +0000
@@ -1275,6 +1275,7 @@
 purple_presence_set_idle(PurplePresence *presence, gboolean idle, time_t idle_time)
 {
 	gboolean old_idle;
+	time_t current_time;
 
 	g_return_if_fail(presence != NULL);
 
@@ -1285,14 +1286,14 @@
 	presence->idle      = idle;
 	presence->idle_time = (idle ? idle_time : 0);
 
+	current_time = time(NULL);
+
 	if (purple_presence_get_context(presence) == PURPLE_PRESENCE_CONTEXT_BUDDY)
 	{
-		time_t current_time = time(NULL);
-
 		update_buddy_idle(purple_presence_get_buddy(presence), presence, current_time,
-		old_idle, idle);
+		                  old_idle, idle);
 	}
-	else if(purple_presence_get_context(presence) == PURPLE_PRESENCE_CONTEXT_ACCOUNT)
+	else if (purple_presence_get_context(presence) == PURPLE_PRESENCE_CONTEXT_ACCOUNT)
 	{
 		PurpleAccount *account;
 		PurpleConnection *gc;
@@ -1312,9 +1313,10 @@
 					msg = g_strdup_printf(_("+++ %s became idle"), purple_account_get_username(account));
 				else
 					msg = g_strdup_printf(_("+++ %s became unidle"), purple_account_get_username(account));
+
 				purple_log_write(log, PURPLE_MESSAGE_SYSTEM,
-							   purple_account_get_username(account),
-							   idle_time, msg);
+				                 purple_account_get_username(account),
+				                 (idle ? idle_time : current_time), msg);
 				g_free(msg);
 			}
 		}
@@ -1326,7 +1328,7 @@
 			prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl);
 
 		if (prpl_info && prpl_info->set_idle)
-			prpl_info->set_idle(gc, (idle ? (time(NULL) - idle_time) : 0));
+			prpl_info->set_idle(gc, (idle ? (current_time - idle_time) : 0));
 	}
 }