mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2025-04-10 19:15:13 +00:00
60 lines
1.2 KiB
Plaintext
60 lines
1.2 KiB
Plaintext
//========================================================================
|
|
//
|
|
// glibc.h
|
|
//
|
|
// Emulate various non-portable glibc functions.
|
|
//
|
|
// This file is licensed under the GPLv2 or later
|
|
//
|
|
// Copyright (C) 2016 Adrian Johnson <ajohnson@redneon.com>
|
|
// Copyright (C) 2022 Albert Astals Cid <aacid@kde.org>
|
|
//
|
|
//========================================================================
|
|
|
|
#include "glibc.h"
|
|
|
|
#ifndef HAVE_GMTIME_R
|
|
struct tm *gmtime_r(const time_t *timep, struct tm *result)
|
|
{
|
|
struct tm *gt;
|
|
gt = gmtime(timep);
|
|
if (gt)
|
|
*result = *gt;
|
|
return gt;
|
|
}
|
|
#endif
|
|
|
|
#ifndef HAVE_LOCALTIME_R
|
|
struct tm *localtime_r(const time_t *timep, struct tm *result)
|
|
{
|
|
struct tm *lt;
|
|
lt = localtime(timep);
|
|
*result = *lt;
|
|
return lt;
|
|
}
|
|
#endif
|
|
|
|
#ifndef HAVE_TIMEGM
|
|
// Get offset of local time from UTC in seconds. DST is ignored.
|
|
static time_t getLocalTimeZoneOffset()
|
|
{
|
|
time_t utc, local;
|
|
struct tm tm_utc;
|
|
time(&utc);
|
|
gmtime_r(&utc, &tm_utc);
|
|
local = mktime(&tm_utc);
|
|
return static_cast<time_t>(difftime(utc, local));
|
|
}
|
|
|
|
time_t timegm(struct tm *tm)
|
|
{
|
|
tm->tm_isdst = 0;
|
|
time_t t = mktime(tm);
|
|
if (t == -1)
|
|
return t;
|
|
|
|
t += getLocalTimeZoneOffset();
|
|
return t;
|
|
}
|
|
#endif
|