if (timezone_is_valid(tz, LOG_DEBUG)) {
SAVE_TIMEZONE;
- if (setenv("TZ", strjoina(":", tz), /* overwrite = */ true) < 0)
+ if (setenv("TZ", tz, /* overwrite = */ true) < 0)
return negative_errno();
return parse_timestamp_impl(t, max_len, /* utc = */ false, /* isdst = */ -1, /* gmtoff = */ 0, ret);
SAVE_TIMEZONE;
- /* tzset(3) says $TZ should be prefixed with ":" if we reference timezone files */
- const char *colon_tz = strjoina(":", spec->timezone);
-
- r = RET_NERRNO(setenv("TZ", colon_tz, 1));
+ r = RET_NERRNO(setenv("TZ", spec->timezone, /* overwrite = */ true));
if (r < 0)
return r;
#define TRIAL 100u
static void set_timezone(const char *tz) {
- if (!tz)
- ASSERT_OK_ERRNO(unsetenv("TZ"));
- if (isempty(tz))
- ASSERT_OK_ERRNO(setenv("TZ", tz, /* overwrite = */ true));
- else
- ASSERT_OK_ERRNO(setenv("TZ", strjoina(":", tz), /* overwrite = */ true));
-
+ ASSERT_OK(set_unset_env("TZ", tz, /* overwrite = */ true));
tzset();
log_info("TZ=%s, tzname[0]=%s, tzname[1]=%s", strna(getenv("TZ")), strempty(tzname[0]), strempty(tzname[1]));
}
* timezone may provide time shifted 1 hour from the original. See
* https://github.com/systemd/systemd/issues/28472 and https://github.com/systemd/systemd/pull/35471 */
bool ignore =
- streq_ptr(getenv("TZ"), ":Africa/Windhoek") &&
+ streq_ptr(getenv("TZ"), "Africa/Windhoek") &&
(x_sec > y_sec ? x_sec - y_sec : y_sec - x_sec) == 3600;
log_full(ignore ? LOG_WARNING : LOG_ERR,
TEST(in_utc_timezone) {
SAVE_TIMEZONE;
- assert_se(setenv("TZ", ":UTC", 1) >= 0);
+ assert_se(setenv("TZ", "UTC", 1) >= 0);
assert_se(in_utc_timezone());
ASSERT_STREQ(tzname[0], "UTC");
ASSERT_STREQ(tzname[1], "UTC");
assert_se(timezone == 0);
assert_se(daylight == 0);
- assert_se(setenv("TZ", ":Europe/Berlin", 1) >= 0);
+ assert_se(setenv("TZ", "Europe/Berlin", 1) >= 0);
assert_se(!in_utc_timezone());
ASSERT_STREQ(tzname[0], "CET");
ASSERT_STREQ(tzname[1], "CEST");
static int print_status_info(const StatusInfo *i) {
_cleanup_(table_unrefp) Table *table = NULL;
- const char *tz_colon;
char a[LINE_MAX];
TableCell *cell;
struct tm tm;
SAVE_TIMEZONE;
/* Set the new $TZ */
- tz_colon = strjoina(":", isempty(i->timezone) ? "UTC" : i->timezone);
- if (setenv("TZ", tz_colon, true) < 0)
+ if (setenv("TZ", isempty(i->timezone) ? "UTC" : i->timezone, /* overwrite = */ true) < 0)
log_warning_errno(errno, "Failed to set TZ environment variable, ignoring: %m");
else
tzset();