summaryrefslogtreecommitdiff
path: root/src/stlink-lib/logging.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/stlink-lib/logging.c')
-rw-r--r--src/stlink-lib/logging.c42
1 files changed, 28 insertions, 14 deletions
diff --git a/src/stlink-lib/logging.c b/src/stlink-lib/logging.c
index 8797823..92092f3 100644
--- a/src/stlink-lib/logging.c
+++ b/src/stlink-lib/logging.c
@@ -1,25 +1,27 @@
/*
- * UglyLogging
+ * File: logging.c
*
- * Slow, yet another wheel reinvented, but enough to make the rest of our code
- * pretty enough.
+ * UglyLogging: Slow, yet another wheel reinvented, but enough to make the rest of our code pretty enough.
*/
-#include <stdarg.h>
-#include <stddef.h>
+
+#define __STDC_WANT_LIB_EXT1__ 1
+
+#include <stdint.h>
#include <stdio.h>
-#include <stdlib.h>
+
+#include <stdarg.h>
#include <time.h>
#include "logging.h"
-static int max_level = UDEBUG;
+static int32_t max_level = UDEBUG;
-int ugly_init(int maximum_threshold) {
+int32_t ugly_init(int32_t maximum_threshold) {
max_level = maximum_threshold;
return (0);
}
-int ugly_log(int level, const char *tag, const char *format, ...) {
+int32_t ugly_log(int32_t level, const char *tag, const char *format, ...) {
if (level > max_level) {
return (0);
}
@@ -29,10 +31,22 @@ int ugly_log(int level, const char *tag, const char *format, ...) {
va_list args;
va_start(args, format);
time_t mytt = time(NULL);
- struct tm *tt;
- tt = localtime(&mytt);
- fprintf(stderr, "%d-%02d-%02dT%02d:%02d:%02d ", tt->tm_year + 1900,
- tt->tm_mon + 1, tt->tm_mday, tt->tm_hour, tt->tm_min, tt->tm_sec);
+
+ struct tm *ptt;
+#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) // C11
+ struct tm tt;
+ ptt = &tt;
+# if defined (_WIN32) || defined(__STDC_LIB_EXT1__)
+ localtime_s(&tt, &mytt);
+# else
+ localtime_r(&mytt, &tt);
+# endif
+#else
+ ptt = localtime(&mytt);
+#endif
+
+ fprintf(stderr, "%d-%02d-%02dT%02d:%02d:%02d ", ptt->tm_year + 1900,
+ ptt->tm_mon + 1, ptt->tm_mday, ptt->tm_hour, ptt->tm_min, ptt->tm_sec);
switch (level) {
case UDEBUG:
@@ -70,7 +84,7 @@ int ugly_log(int level, const char *tag, const char *format, ...) {
* - LIBUSB_LOG_LEVEL_DEBUG (4) : debug and informational messages are
* printed to stderr
*/
-int ugly_libusb_log_level(enum ugly_loglevel v) {
+int32_t ugly_libusb_log_level(enum ugly_loglevel v) {
#ifdef __FreeBSD__
// FreeBSD includes its own reimplementation of libusb.
// Its libusb_set_debug() function expects a lib_debug_level