Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.1:ARM:Staging
ntp
ntp-sntp-dst.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ntp-sntp-dst.patch of Package ntp
Index: ntp-4.2.8p4/sntp/utilities.c =================================================================== --- ntp-4.2.8p4.orig/sntp/utilities.c +++ ntp-4.2.8p4/sntp/utilities.c @@ -139,34 +139,36 @@ tv_to_str( { const size_t bufsize = 48; char *buf; - time_t gmt_time, local_time; - struct tm *p_tm_local; + time_t time_gmt, time_local; + struct tm tm_gmt, tm_local; int hh, mm, lto; - /* - * convert to struct tm in UTC, then intentionally feed - * that tm to mktime() which expects local time input, to - * derive the offset from UTC to local time. + /* Get local time, convert it to GMT, adjust the tm_isdst to the + * current local DST value. Then call mktime which will not adjust + * for DST allowing us to calculate the offset from local to GMT */ - gmt_time = tv->tv_sec; - local_time = mktime(gmtime(&gmt_time)); - p_tm_local = localtime(&gmt_time); + time_gmt = tv->tv_sec; + localtime_r(&time_gmt, &tm_local); + time_local = mktime(&tm_local); + gmtime_r(&time_local, &tm_gmt); + tm_gmt.tm_isdst=tm_local.tm_isdst; + time_gmt = mktime(&tm_gmt); /* Local timezone offsets should never cause an overflow. Yeah. */ - lto = difftime(local_time, gmt_time); + lto = difftime(time_local, time_gmt); lto /= 60; hh = lto / 60; mm = abs(lto % 60); - buf = emalloc(bufsize); + buf = malloc(bufsize); snprintf(buf, bufsize, "%d-%.2d-%.2d %.2d:%.2d:%.2d.%.6d (%+03d%02d)", - p_tm_local->tm_year + 1900, - p_tm_local->tm_mon + 1, - p_tm_local->tm_mday, - p_tm_local->tm_hour, - p_tm_local->tm_min, - p_tm_local->tm_sec, + tm_local.tm_year + 1900, + tm_local.tm_mon + 1, + tm_local.tm_mday, + tm_local.tm_hour, + tm_local.tm_min, + tm_local.tm_sec, (int)tv->tv_usec, hh, mm);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor