diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2008-12-23 22:10:34 +0100 |
---|---|---|
committer | Jelmer Vernooij <jelmer@samba.org> | 2008-12-23 22:10:34 +0100 |
commit | ef80d1b794a209ee446c7a586530a5fdd51175f2 (patch) | |
tree | 9c368f4a0d281ca1ba48e575fc25638d59dc27ef /lib | |
parent | d0eeb9aa8db42ed1fc18024614560820354e6dfa (diff) | |
download | samba-ef80d1b794a209ee446c7a586530a5fdd51175f2.tar.gz |
Fix use of "time offset" parameter, and add test to make sure I don't break it again :-)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/util/tests/time.c | 16 | ||||
-rw-r--r-- | lib/util/time.c | 5 | ||||
-rw-r--r-- | lib/util/time.h | 3 |
3 files changed, 23 insertions, 1 deletions
diff --git a/lib/util/tests/time.c b/lib/util/tests/time.c index 4a31566b42..e24c5fe5ef 100644 --- a/lib/util/tests/time.c +++ b/lib/util/tests/time.c @@ -58,6 +58,21 @@ static bool test_timestring(struct torture_context *tctx) return true; } +static bool test_get_time_zone(struct torture_context *tctx) +{ + time_t t = time(NULL); + int old_extra_time_offset = extra_time_offset; + int old_offset, new_offset; + /* test that extra_time_offset works */ + + old_offset = get_time_zone(t); + extra_time_offset = 42; + new_offset = get_time_zone(t); + extra_time_offset = old_extra_time_offset; + torture_assert_int_equal(tctx, old_offset+60*42, new_offset, + "time offset not used"); + return true; +} struct torture_suite *torture_local_util_time(TALLOC_CTX *mem_ctx) @@ -65,6 +80,7 @@ struct torture_suite *torture_local_util_time(TALLOC_CTX *mem_ctx) struct torture_suite *suite = torture_suite_create(mem_ctx, "TIME"); torture_suite_add_simple_test(suite, "null_time", test_null_time); + torture_suite_add_simple_test(suite, "get_time_zone", test_get_time_zone); torture_suite_add_simple_test(suite, "null_nttime", test_null_nttime); torture_suite_add_simple_test(suite, "http_timestring", test_http_timestring); diff --git a/lib/util/time.c b/lib/util/time.c index a001e5f66e..eadafe4562 100644 --- a/lib/util/time.c +++ b/lib/util/time.c @@ -628,6 +628,9 @@ static int tm_diff(struct tm *a, struct tm *b) return seconds; } + +int extra_time_offset=0; + /** return the UTC offset in seconds west of UTC, or 0 if it cannot be determined */ @@ -641,7 +644,7 @@ _PUBLIC_ int get_time_zone(time_t t) tm = localtime(&t); if (!tm) return 0; - return tm_diff(&tm_utc,tm); + return tm_diff(&tm_utc,tm)+60*extra_time_offset; } struct timespec nt_time_to_unix_timespec(NTTIME *nt) diff --git a/lib/util/time.h b/lib/util/time.h index 42644a3954..e40de2de3d 100644 --- a/lib/util/time.h +++ b/lib/util/time.h @@ -239,4 +239,7 @@ struct timespec convert_time_t_to_timespec(time_t t); bool null_timespec(struct timespec ts); +/** Extra minutes to add to the normal GMT to local time conversion. */ +extern int extra_time_offset; + #endif /* _SAMBA_TIME_H_ */ |