aboutsummaryrefslogtreecommitdiff
path: root/src/RTC.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/RTC.cpp')
-rw-r--r--src/RTC.cpp41
1 files changed, 21 insertions, 20 deletions
diff --git a/src/RTC.cpp b/src/RTC.cpp
index ba51dff..aff3dd3 100644
--- a/src/RTC.cpp
+++ b/src/RTC.cpp
@@ -16,6 +16,9 @@
with melonDS. If not, see http://www.gnu.org/licenses/.
*/
+// Required by MinGW to enable localtime_r in time.h
+#define _POSIX_THREAD_SAFE_FUNCTIONS
+
#include <stdio.h>
#include <string.h>
#include <time.h>
@@ -125,31 +128,29 @@ void ByteIn(u8 val)
case 0x20:
{
- time_t timestamp;
- struct tm* timedata;
- time(&timestamp);
- timedata = localtime(&timestamp);
-
- Output[0] = BCD(timedata->tm_year - 100);
- Output[1] = BCD(timedata->tm_mon + 1);
- Output[2] = BCD(timedata->tm_mday);
- Output[3] = BCD(timedata->tm_wday);
- Output[4] = BCD(timedata->tm_hour);
- Output[5] = BCD(timedata->tm_min);
- Output[6] = BCD(timedata->tm_sec);
+ time_t timestamp = time(NULL);
+ struct tm timedata;
+ localtime_r(&timestamp, &timedata);
+
+ Output[0] = BCD(timedata.tm_year - 100);
+ Output[1] = BCD(timedata.tm_mon + 1);
+ Output[2] = BCD(timedata.tm_mday);
+ Output[3] = BCD(timedata.tm_wday);
+ Output[4] = BCD(timedata.tm_hour);
+ Output[5] = BCD(timedata.tm_min);
+ Output[6] = BCD(timedata.tm_sec);
}
break;
case 0x60:
{
- time_t timestamp;
- struct tm* timedata;
- time(&timestamp);
- timedata = localtime(&timestamp);
-
- Output[0] = BCD(timedata->tm_hour);
- Output[1] = BCD(timedata->tm_min);
- Output[2] = BCD(timedata->tm_sec);
+ time_t timestamp = time(NULL);
+ struct tm timedata;
+ localtime_r(&timestamp, &timedata);
+
+ Output[0] = BCD(timedata.tm_hour);
+ Output[1] = BCD(timedata.tm_min);
+ Output[2] = BCD(timedata.tm_sec);
}
break;