# HG changeset patch # User Gary Kramlich # Date 1573443718 0 # Node ID e374a2cf0611e37e66476a162ed311c430077b20 # Parent 6e6d4e671a85ec4a5898992391da46cb2a4a340a# Parent 564fcabca6d9e852d353cea7b6005700e64beb1b Merged in default (pull request #630) Add purple_get_month() util function Approved-by: Elliott Sales de Andrade Approved-by: Gary Kramlich Approved-by: Eion Robb diff -r 6e6d4e671a85 -r e374a2cf0611 ChangeLog.API --- a/ChangeLog.API Mon Nov 11 02:47:44 2019 +0000 +++ b/ChangeLog.API Mon Nov 11 03:41:58 2019 +0000 @@ -124,6 +124,7 @@ * purple_roomlist_room_set_expanded_once * purple_roomlist_set_proto_data * purple_roomlist_set_ui_data + * purple_time_parse_month * purple_whiteboard_get_account * purple_whiteboard_get_draw_list * purple_whiteboard_set_draw_list diff -r 6e6d4e671a85 -r e374a2cf0611 libpurple/log.c --- a/libpurple/log.c Mon Nov 11 02:47:44 2019 +0000 +++ b/libpurple/log.c Mon Nov 11 03:41:58 2019 +0000 @@ -1704,31 +1704,7 @@ purple_debug_warning("log", "invalid date format\n"); } /* Ugly hack, in case current locale is not English */ - if (purple_strequal(month_str, "Jan")) { - month = 1; - } else if (purple_strequal(month_str, "Feb")) { - month = 2; - } else if (purple_strequal(month_str, "Mar")) { - month = 3; - } else if (purple_strequal(month_str, "Apr")) { - month = 4; - } else if (purple_strequal(month_str, "May")) { - month = 5; - } else if (purple_strequal(month_str, "Jun")) { - month = 6; - } else if (purple_strequal(month_str, "Jul")) { - month = 7; - } else if (purple_strequal(month_str, "Aug")) { - month = 8; - } else if (purple_strequal(month_str, "Sep")) { - month = 9; - } else if (purple_strequal(month_str, "Oct")) { - month = 10; - } else if (purple_strequal(month_str, "Nov")) { - month = 11; - } else if (purple_strequal(month_str, "Dec")) { - month = 12; - } + month = purple_time_parse_month(month_str); if (lasttime) g_date_time_unref(lasttime); lasttime = g_date_time_new_local(year, month, day, diff -r 6e6d4e671a85 -r e374a2cf0611 libpurple/plugins/log_reader.c --- a/libpurple/plugins/log_reader.c Mon Nov 11 02:47:44 2019 +0000 +++ b/libpurple/plugins/log_reader.c Mon Nov 11 03:41:58 2019 +0000 @@ -32,19 +32,6 @@ NAME_GUESS_THEM }; -/* Some common functions. */ -static int get_month(const char *month) -{ - int iter; - const char *months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", NULL}; - for (iter = 0; months[iter]; iter++) { - if (purple_strequal(month, months[iter])) - break; - } - return iter; -} - /***************************************************************************** * Adium Logger * @@ -1222,7 +1209,7 @@ } else { PurpleLog *log; - month = get_month(month_str); + month = purple_time_parse_month(month_str); data = g_new0( struct trillian_logger_data, 1); @@ -2026,7 +2013,7 @@ "Error parsing start date for %s\n", filename); } else { - month = get_month(month_str); + month = purple_time_parse_month(month_str); found_start = TRUE; offset = c - contents; diff -r 6e6d4e671a85 -r e374a2cf0611 libpurple/util.c --- a/libpurple/util.c Mon Nov 11 02:47:44 2019 +0000 +++ b/libpurple/util.c Mon Nov 11 03:41:58 2019 +0000 @@ -561,6 +561,20 @@ return retval; } +gint purple_time_parse_month(const char *month_abbr) +{ + const char *months[] = { + "Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", + NULL}; + for (gint month = 0; months[month] != NULL; month++) { + if (purple_strequal(month_abbr, months[month])) { + return month + 1; + } + } + return 0; +} + /************************************************************************** * Markup Functions **************************************************************************/ diff -r 6e6d4e671a85 -r e374a2cf0611 libpurple/util.h --- a/libpurple/util.h Mon Nov 11 02:47:44 2019 +0000 +++ b/libpurple/util.h Mon Nov 11 03:41:58 2019 +0000 @@ -314,6 +314,19 @@ */ GDateTime *purple_str_to_date_time(const char *timestamp, gboolean utc); +/** + * purple_time_parse_month: + * @month_abbr: The 3-letter month abbreviation + * + * Get month number suitable for GDateTime. If @month_abbr is unknown, + * returns 0. + * + * Returns: A month number or 0. + * + * Since: 3.0.0 + */ +gint purple_time_parse_month(const char *month_abbr); + /**************************************************************************/ /* Markup Functions */ /**************************************************************************/