Replace calls to gmtime with gmtime_r and localtime with localtime_r.
This commit is contained in:
parent
6a03aed5a4
commit
4b3aec50c0
1 changed files with 18 additions and 17 deletions
|
@ -171,52 +171,53 @@ double OS_Unix::get_unix_time() const {
|
||||||
|
|
||||||
OS::Date OS_Unix::get_date(bool utc) const {
|
OS::Date OS_Unix::get_date(bool utc) const {
|
||||||
time_t t = time(nullptr);
|
time_t t = time(nullptr);
|
||||||
struct tm *lt;
|
struct tm lt;
|
||||||
if (utc) {
|
if (utc) {
|
||||||
lt = gmtime(&t);
|
gmtime_r(&t, <);
|
||||||
} else {
|
} else {
|
||||||
lt = localtime(&t);
|
localtime_r(&t, <);
|
||||||
}
|
}
|
||||||
Date ret;
|
Date ret;
|
||||||
ret.year = 1900 + lt->tm_year;
|
ret.year = 1900 + lt.tm_year;
|
||||||
// Index starting at 1 to match OS_Unix::get_date
|
// Index starting at 1 to match OS_Unix::get_date
|
||||||
// and Windows SYSTEMTIME and tm_mon follows the typical structure
|
// and Windows SYSTEMTIME and tm_mon follows the typical structure
|
||||||
// of 0-11, noted here: http://www.cplusplus.com/reference/ctime/tm/
|
// of 0-11, noted here: http://www.cplusplus.com/reference/ctime/tm/
|
||||||
ret.month = (Month)(lt->tm_mon + 1);
|
ret.month = (Month)(lt.tm_mon + 1);
|
||||||
ret.day = lt->tm_mday;
|
ret.day = lt.tm_mday;
|
||||||
ret.weekday = (Weekday)lt->tm_wday;
|
ret.weekday = (Weekday)lt.tm_wday;
|
||||||
ret.dst = lt->tm_isdst;
|
ret.dst = lt.tm_isdst;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
OS::Time OS_Unix::get_time(bool utc) const {
|
OS::Time OS_Unix::get_time(bool utc) const {
|
||||||
time_t t = time(nullptr);
|
time_t t = time(nullptr);
|
||||||
struct tm *lt;
|
struct tm lt;
|
||||||
if (utc) {
|
if (utc) {
|
||||||
lt = gmtime(&t);
|
gmtime_r(&t, <);
|
||||||
} else {
|
} else {
|
||||||
lt = localtime(&t);
|
localtime_r(&t, <);
|
||||||
}
|
}
|
||||||
Time ret;
|
Time ret;
|
||||||
ret.hour = lt->tm_hour;
|
ret.hour = lt.tm_hour;
|
||||||
ret.min = lt->tm_min;
|
ret.min = lt.tm_min;
|
||||||
ret.sec = lt->tm_sec;
|
ret.sec = lt.tm_sec;
|
||||||
get_time_zone_info();
|
get_time_zone_info();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
OS::TimeZoneInfo OS_Unix::get_time_zone_info() const {
|
OS::TimeZoneInfo OS_Unix::get_time_zone_info() const {
|
||||||
time_t t = time(nullptr);
|
time_t t = time(nullptr);
|
||||||
struct tm *lt = localtime(&t);
|
struct tm lt;
|
||||||
|
localtime_r(&t, <);
|
||||||
char name[16];
|
char name[16];
|
||||||
strftime(name, 16, "%Z", lt);
|
strftime(name, 16, "%Z", <);
|
||||||
name[15] = 0;
|
name[15] = 0;
|
||||||
TimeZoneInfo ret;
|
TimeZoneInfo ret;
|
||||||
ret.name = name;
|
ret.name = name;
|
||||||
|
|
||||||
char bias_buf[16];
|
char bias_buf[16];
|
||||||
strftime(bias_buf, 16, "%z", lt);
|
strftime(bias_buf, 16, "%z", <);
|
||||||
int bias;
|
int bias;
|
||||||
bias_buf[15] = 0;
|
bias_buf[15] = 0;
|
||||||
sscanf(bias_buf, "%d", &bias);
|
sscanf(bias_buf, "%d", &bias);
|
||||||
|
|
Loading…
Reference in a new issue