diff options
author | Diogo Sousa <diogogsousa@gmail.com> | 2013-07-02 01:41:34 +0100 |
---|---|---|
committer | Diogo Sousa <diogogsousa@gmail.com> | 2013-07-02 01:54:18 +0100 |
commit | 9a789bc9e79ffa29e1f333ebc0242cff013b815b (patch) | |
tree | ec08541e83226d30c6fef7b21ea70dc66cf96542 /src/common/proto-irc.c | |
parent | 4886cc8258783047ab035ea35ec5b08997948567 (diff) |
Now handle_message_tag_time() doesn't use "timezone" since it is not defined
in *BSD.
Diffstat (limited to 'src/common/proto-irc.c')
-rw-r--r-- | src/common/proto-irc.c | 22 |
1 files changed, 21 insertions, 1 deletions
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 { |