#include "libs/sha1/sha1.h"
#include "backends/ilang/ilang_backend.h"
-#include <sys/time.h>
+#ifndef _WIN32
+ #include <sys/time.h>
+#endif
+
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
static bool next_print_log = false;
static int log_newline_count = 0;
+#ifdef _WIN32
+// this will get time information and return it in timeval, simulating gettimeofday()
+int gettimeofday(struct timeval *tv, struct timezone *tz)
+{
+ LARGE_INTEGER counter;
+ LARGE_INTEGER freq;
+
+ QueryPerformanceFrequency(&freq);
+ QueryPerformanceCounter(&counter);
+
+ counter.QuadPart *= 1000000;
+ counter.QuadPart /= freq.QuadPart;
+
+ tv->tv_sec = counter.QuadPart / 1000000;
+ tv->tv_usec = counter.QuadPart % 1000000;
+
+ return 0;
+}
+#endif
+
void logv(const char *format, va_list ap)
{
while (format[0] == '\n' && format[1] != 0) {
#define LOG_H
#include <time.h>
-#include <sys/time.h>
#ifndef _WIN32
-# include <sys/resource.h>
+ #include <sys/time.h>
+ #include <sys/resource.h>
#endif
// from libs/sha1/sha1.h
void logv(const char *format, va_list ap);
void logv_header(const char *format, va_list ap);
-void logv_error(const char *format, va_list ap) __attribute__ ((noreturn));
-void log(const char *format, ...) __attribute__ ((format (printf, 1, 2)));
-void log_header(const char *format, ...) __attribute__ ((format (printf, 1, 2)));
-void log_error(const char *format, ...) __attribute__ ((format (printf, 1, 2))) __attribute__ ((noreturn));
-void log_cmd_error(const char *format, ...) __attribute__ ((format (printf, 1, 2))) __attribute__ ((noreturn));
+#if !defined(__GNUC__) && !defined(__clang__)
+ void logv_error(const char *format, va_list ap);
+ void log(const char *format, ...);
+ void log_header(const char *format, ...);
+ void log_error(const char *format, ...);
+ void log_cmd_error(const char *format, ...);
+#else
+ void logv_error(const char *format, va_list ap) __attribute__((noreturn));
+ void log(const char *format, ...) __attribute__((format(printf, 1, 2)));
+ void log_header(const char *format, ...) __attribute__((format(printf, 1, 2)));
+ void log_error(const char *format, ...) __attribute__((format(printf, 1, 2))) __attribute__((noreturn));
+ void log_cmd_error(const char *format, ...) __attribute__((format(printf, 1, 2))) __attribute__((noreturn));
+#endif
void log_spacer();
void log_push();