timedate: remove daylight saving time handling and tzfile parser

We planned to support (the conceptually broken) daylight saving
time/local time features in the kernel, SCSI, networking, FAT
filesystem, but it turned out to be a race we cannot win and do
not want to get involved. Systemd should not fiddle with daylight
saving time or parse timezone information itself.

Leave everything to glibc or tools like date(1) and do not make any
promises or raise expectations that systemd should handle anything
like this.
This commit is contained in:
Kay Sievers
2015-03-24 15:03:36 +01:00
parent 3e5e74d5b7
commit 16c6ea2934
4 changed files with 0 additions and 413 deletions
-56
View File
@@ -33,7 +33,6 @@
#include "build.h"
#include "strv.h"
#include "pager.h"
#include "time-dst.h"
static bool arg_no_pager = false;
static bool arg_ask_password = true;
@@ -73,33 +72,12 @@ typedef struct StatusInfo {
bool ntp_synced;
} StatusInfo;
static const char *jump_str(int delta_minutes, char *s, size_t size) {
if (delta_minutes == 60)
return "one hour forward";
if (delta_minutes == -60)
return "one hour backwards";
if (delta_minutes < 0) {
snprintf(s, size, "%i minutes backwards", -delta_minutes);
return s;
}
if (delta_minutes > 0) {
snprintf(s, size, "%i minutes forward", delta_minutes);
return s;
}
return "";
}
static void print_status_info(const StatusInfo *i) {
char a[FORMAT_TIMESTAMP_MAX];
char b[FORMAT_TIMESTAMP_MAX];
char s[32];
struct tm tm;
time_t sec;
bool have_time = false;
_cleanup_free_ char *zc = NULL, *zn = NULL;
time_t t, tc, tn;
int dn = 0;
bool is_dstc = false, is_dstn = false;
int r;
assert(i);
@@ -158,40 +136,6 @@ static void print_status_info(const StatusInfo *i) {
yes_no(i->ntp_synced),
yes_no(i->rtc_local));
if (have_time) {
r = time_get_dst(sec, "/etc/localtime",
&tc, &zc, &is_dstc,
&tn, &dn, &zn, &is_dstn);
if (r < 0)
printf(" DST active: %s\n", "n/a");
else {
printf(" DST active: %s\n", yes_no(is_dstc));
t = tc - 1;
xstrftime(a, "%a %Y-%m-%d %H:%M:%S %Z", localtime_r(&t, &tm));
xstrftime(b, "%a %Y-%m-%d %H:%M:%S %Z", localtime_r(&tc, &tm));
printf(" Last DST change: DST %s at\n"
" %.*s\n"
" %.*s\n",
is_dstc ? "began" : "ended",
(int) sizeof(a), a,
(int) sizeof(b), b);
t = tn - 1;
xstrftime(a, "%a %Y-%m-%d %H:%M:%S %Z", localtime_r(&t, &tm));
xstrftime(b, "%a %Y-%m-%d %H:%M:%S %Z", localtime_r(&tn, &tm));
printf(" Next DST change: DST %s (the clock jumps %s) at\n"
" %.*s\n"
" %.*s\n",
is_dstn ? "begins" : "ends",
jump_str(dn, s, sizeof(s)),
(int) sizeof(a), a,
(int) sizeof(b), b);
}
} else
printf(" DST active: %s\n", yes_no(is_dstc));
if (i->rtc_local)
fputs("\n" ANSI_HIGHLIGHT_ON
"Warning: The system is configured to read the RTC time in the local time zone. This\n"