From 9a789bc9e79ffa29e1f333ebc0242cff013b815b Mon Sep 17 00:00:00 2001 From: Diogo Sousa Date: Tue, 2 Jul 2013 01:41:34 +0100 Subject: [PATCH] Now handle_message_tag_time() doesn't use "timezone" since it is not defined in *BSD. --- src/common/proto-irc.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/common/proto-irc.c b/src/common/proto-irc.c index 7742c064..b19d9afa 100644 --- a/src/common/proto-irc.c +++ b/src/common/proto-irc.c @@ -1326,6 +1326,26 @@ process_named_servermsg (session *sess, char *buf, char *rawname, char *word_eol rawname, NULL, 0, tags_data->timestamp); } +/* Returns the timezone offset. This should be the same as the variable + * "timezone" in time.h, but *BSD doesn't have it. + */ +static int +get_timezone(void) +{ + struct tm tm_utc, tm_local; + time_t t, time_utc, time_local; + + time (&t); + + gmtime_r (&t, &tm_utc); + localtime_r (&t, &tm_local); + + time_utc = mktime (&tm_utc); + time_local = mktime (&tm_local); + + return time_utc - time_local; +} + /* Handle time-server tags. * * Sets tags_data->timestamp to the correct time (in unix time). @@ -1370,7 +1390,7 @@ handle_message_tag_time (const char *time, message_tags_data *tags_data) } /* get rid of the local time (mktime() receives a local calendar time) */ - tags_data->timestamp -= timezone; + tags_data->timestamp -= get_timezone(); } else {