mirror of
https://github.com/systemd/systemd
synced 2024-10-15 12:34:37 +00:00
util: add new helper in_utc_timezone()
As the name suggests it checks whether we are running in an UTC timezone.
This commit is contained in:
parent
7c123d49fc
commit
9a9a4f10e9
|
@ -1457,3 +1457,9 @@ usec_t usec_shift_clock(usec_t x, clockid_t from, clockid_t to) {
|
|||
/* x lies in the past */
|
||||
return usec_sub_unsigned(b, usec_sub_unsigned(a, x));
|
||||
}
|
||||
|
||||
bool in_utc_timezone(void) {
|
||||
tzset();
|
||||
|
||||
return timezone == 0 && daylight == 0;
|
||||
}
|
||||
|
|
|
@ -156,6 +156,8 @@ struct tm *localtime_or_gmtime_r(const time_t *t, struct tm *tm, bool utc);
|
|||
|
||||
unsigned long usec_to_jiffies(usec_t usec);
|
||||
|
||||
bool in_utc_timezone(void);
|
||||
|
||||
static inline usec_t usec_add(usec_t a, usec_t b) {
|
||||
usec_t c;
|
||||
|
||||
|
|
|
@ -383,6 +383,22 @@ static void test_usec_shift_clock(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static void test_in_utc_timezone(void) {
|
||||
assert_se(setenv("TZ", ":UTC", 1) >= 0);
|
||||
assert_se(in_utc_timezone());
|
||||
assert_se(streq(tzname[0], "UTC"));
|
||||
assert_se(streq(tzname[1], "UTC"));
|
||||
assert_se(timezone == 0);
|
||||
assert_se(daylight == 0);
|
||||
|
||||
assert_se(setenv("TZ", "Europe/Berlin", 1) >= 0);
|
||||
assert_se(!in_utc_timezone());
|
||||
assert_se(streq(tzname[0], "CET"));
|
||||
assert_se(streq(tzname[1], "CEST"));
|
||||
|
||||
assert_se(unsetenv("TZ") >= 0);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
uintmax_t x;
|
||||
|
||||
|
@ -409,6 +425,7 @@ int main(int argc, char *argv[]) {
|
|||
test_format_timestamp_utc();
|
||||
test_dual_timestamp_deserialize();
|
||||
test_usec_shift_clock();
|
||||
test_in_utc_timezone();
|
||||
|
||||
/* Ensure time_t is signed */
|
||||
assert_cc((time_t) -1 < (time_t) 1);
|
||||
|
|
Loading…
Reference in a new issue