Mercurial > pidgin
changeset 21612:18fb032a602a
Fix the bug in purple_str_to_time() that was causing 'make check' to fail.
Also fix the test value that 'make check' was using. that didn't help ;-)
author | Stu Tomlinson <stu@nosnilmot.com> |
---|---|
date | Thu, 22 Nov 2007 16:37:08 +0000 |
parents | 87387eac4348 |
children | 31101e7d275f |
files | libpurple/tests/test_util.c libpurple/util.c |
diffstat | 2 files changed, 14 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/tests/test_util.c Thu Nov 22 16:32:56 2007 +0000 +++ b/libpurple/tests/test_util.c Thu Nov 22 16:37:08 2007 +0000 @@ -76,7 +76,7 @@ START_TEST(test_util_str_to_time) { - fail_unless(377185800 == purple_str_to_time("19811214T12:50:00", TRUE, NULL, NULL, NULL)); + fail_unless(377182200 == purple_str_to_time("19811214T12:50:00", TRUE, NULL, NULL, NULL)); fail_unless(1175919261 == purple_str_to_time("20070407T04:14:21", TRUE, NULL, NULL, NULL)); } END_TEST
--- a/libpurple/util.c Thu Nov 22 16:32:56 2007 +0000 +++ b/libpurple/util.c Thu Nov 22 16:37:08 2007 +0000 @@ -837,7 +837,19 @@ } else if (utc) { - t->tm_isdst = -1; + struct tm *tmptm; + time_t tmp; + tmp = mktime(t); + /* we care about whether it *was* dst, and the offset, here on this + * date, not whether we are currently observing dst locally *now*. + * This isn't perfect, because we would need to know in advance the + * offset we are trying to work out in advance to be sure this + * works for times around dst transitions but it'll have to do. */ + tmptm = localtime(&tmp); + t->tm_isdst = tmptm->tm_isdst; +#ifdef HAVE_TM_GMTOFF + t->tm_gmtoff = tmptm->tm_gmtoff; +#endif } if (rest != NULL && *c != '\0')