/soc/2015/igor.gajowiak/chatlog: 4d5e7685a967: Fixed date parsin...

Igor Gajowiak igor.gajowiak at gmail.com
Mon Aug 17 17:52:56 EDT 2015


Changeset: 4d5e7685a9670c24f902b19e24bf8ed638d0933c
Author:	 Igor Gajowiak <igor.gajowiak at gmail.com>
Date:	 2015-08-17 23:52 +0200
Branch:	 default
URL: https://hg.pidgin.im/soc/2015/igor.gajowiak/chatlog/rev/4d5e7685a967

Description:

Fixed date parsing in the legacy log.

diffstat:

 libpurple/plugins/log/legacylog.c |  24 +++++++++++++++++++-----
 1 files changed, 19 insertions(+), 5 deletions(-)

diffs (48 lines):

diff --git a/libpurple/plugins/log/legacylog.c b/libpurple/plugins/log/legacylog.c
--- a/libpurple/plugins/log/legacylog.c
+++ b/libpurple/plugins/log/legacylog.c
@@ -336,16 +336,29 @@ parse_timestamp(const gchar *date, const
 		return FALSE;
 	}
 
+	/* If there is a date in time string then probably day changed */
 	g_match_info_fetch_pos(info, 1, &begin, &end);
+	if (begin != -1) {
+		g_match_info_fetch_pos(info, 2, &begin, &end);
+		month = g_ascii_strtoull(&date[begin], NULL, 10);
+
+		g_match_info_fetch_pos(info, 3, &begin, &end);
+		day = g_ascii_strtoull(&date[begin], NULL, 10);
+
+		g_match_info_fetch_pos(info, 4, &begin, &end);
+		year = g_ascii_strtoull(&date[begin], NULL, 10);
+	}
+
+	g_match_info_fetch_pos(info, 5, &begin, &end);
 	guint64 hour = g_ascii_strtoull(&time[begin], NULL, 10);
 
-	g_match_info_fetch_pos(info, 2, &begin, &end);
+	g_match_info_fetch_pos(info, 6, &begin, &end);
 	guint64 min = g_ascii_strtoull(&time[begin], NULL, 10);
 
-	g_match_info_fetch_pos(info, 3, &begin, &end);
+	g_match_info_fetch_pos(info, 7, &begin, &end);
 	guint64 sec = g_ascii_strtoull(&time[begin], NULL, 10);
 
-	g_match_info_fetch_pos(info, 4, &begin, &end);
+	g_match_info_fetch_pos(info, 8, &begin, &end);
 	if (g_strcmp0(&time[begin], "PM") == 0)
 		hour += 12;
 	
@@ -710,8 +723,9 @@ plugin_load(PurplePlugin *plugin, GError
 	date_regex = g_regex_new("^([\\d]{4})-([\\d]{2})-([\\d]{2})\\.",0, 0, NULL);
 	g_assert(date_regex);
 
-	time_regex = g_regex_new("^([\\d]{2}):([\\d]{2}):([\\d]{2}) (AM|PM)",
-		0, 0, NULL);
+	time_regex = g_regex_new(
+		"^(([\\d]{2})/([\\d]{2})/([\\d]{4}) )?([\\d]{2}):([\\d]{2}):([\\d]{2}) "
+		"(AM|PM)", 0, 0, NULL);
 	g_assert(time_regex);
 
 	contact_regex = g_regex_new("^(.*)\\.chat$", 0, 0, NULL);



More information about the Commits mailing list