diff --git a/logger/android_logger_override.h b/logger/android_logger_override.h
deleted file mode 100644
index 078750732b..0000000000
--- a/logger/android_logger_override.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* RetroArch - A frontend for libretro.
- * Copyright (C) 2010-2014 - Hans-Kristian Arntzen
- * Copyright (C) 2011-2015 - Daniel De Matteis
- *
- * RetroArch is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Found-
- * ation, either version 3 of the License, or (at your option) any later version.
- *
- * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with RetroArch.
- * If not, see .
- */
-
-#ifndef __ANDROID_LOGGER_H
-#define __ANDROID_LOGGER_H
-
-#include
-#include
-
-// Log tag. Used for logcat filtering, e.g.: adb logcat RetroArch:V *:S
-#define RARCH_LOG_TAG "RetroArch"
-
-#ifndef RARCH_LOG
-#define RARCH_LOG(...) __android_log_print(ANDROID_LOG_INFO, RARCH_LOG_TAG, __VA_ARGS__)
-#endif
-
-#ifndef RARCH_LOG_V
-#define RARCH_LOG_V(tag, fmt, vp) __android_log_vprint(ANDROID_LOG_INFO, RARCH_LOG_TAG tag, fmt, vp)
-#endif
-
-#ifndef RARCH_LOG_OUTPUT
-#define RARCH_LOG_OUTPUT(...) RARCH_LOG(__VA_ARGS__)
-#endif
-
-#ifndef RARCH_LOG_OUTPUT_V
-#define RARCH_LOG_OUTPUT_V(tag, fmt, vp) RARCH_LOG_V(tag, fmt, vp)
-#endif
-
-#ifndef RARCH_ERR
-#define RARCH_ERR(...) __android_log_print(ANDROID_LOG_ERROR, RARCH_LOG_TAG, __VA_ARGS__)
-#endif
-
-#ifndef RARCH_ERR_V
-#define RARCH_ERR_V(tag, fmt, vp) __android_log_vprint(ANDROID_LOG_ERROR, RARCH_LOG_TAG tag, fmt, vp)
-#endif
-
-#ifndef RARCH_WARN
-#define RARCH_WARN(...) __android_log_print(ANDROID_LOG_WARN, RARCH_LOG_TAG, __VA_ARGS__)
-#endif
-
-#ifndef RARCH_WARN_V
-#define RARCH_WARN_V(tag, fmt, vp) __android_log_print(ANDROID_LOG_WARN, RARCH_LOG_TAG tag, fmt, vp)
-#endif
-
-#endif
diff --git a/logger/generic_logger_override.h b/logger/generic_logger_override.h
deleted file mode 100644
index bafdeae24a..0000000000
--- a/logger/generic_logger_override.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/* RetroArch - A frontend for libretro.
- * Copyright (C) 2010-2014 - Hans-Kristian Arntzen
- * Copyright (C) 2011-2015 - Daniel De Matteis
- *
- * RetroArch is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Found-
- * ation, either version 3 of the License, or (at your option) any later version.
- *
- * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with RetroArch.
- * If not, see .
- */
-
-#ifndef __GENERIC_LOGGER_H
-#define __GENERIC_LOGGER_H
-
-#ifndef RARCH_LOG
-#undef RARCH_LOG_V
-#define RARCH_LOG(...) do { \
- if (RARCH_LOG_VERBOSE) \
- { \
- fprintf(LOG_FILE, "%s: %s: ", PROGRAM_NAME, __FUNCTION__); \
- fprintf(LOG_FILE, __VA_ARGS__); \
- fflush(LOG_FILE); \
- } \
- } while (0)
-#define RARCH_LOG_V(tag, fmt, vp) do { \
- if (RARCH_LOG_VERBOSE) \
- { \
- fprintf(LOG_FILE, "%s: %s: ", PROGRAM_NAME, __FUNCTION__); \
- fprintf(LOG_FILE, tag);\
- vfprintf(LOG_FILE, fmt, vp); \
- fflush(LOG_FILE); \
- } \
- } while (0)
-#endif
-
-#ifndef RARCH_LOG_OUTPUT
-#undef RARCH_LOG_OUTPUT_V
-#define RARCH_LOG_OUTPUT(...) do { \
- fprintf(LOG_FILE, "%s: ", __FUNCTION__); \
- fprintf(LOG_FILE, __VA_ARGS__); \
- fflush(LOG_FILE); \
- } while (0)
-#define RARCH_LOG_OUTPUT_V(tag, fmt, vp) do { \
- fprintf(LOG_FILE, "%s: %s: ", PROGRAM_NAME, __FUNCTION__); \
- fprintf(LOG_FILE, tag); \
- vfprintf(LOG_FILE, fmt, vp); \
- fflush(LOG_FILE); \
- } while (0)
-#endif
-
-#ifndef RARCH_ERR
-#undef RARCH_ERR_V
-#define RARCH_ERR(...) do { \
- fprintf(LOG_FILE, "%s [ERROR] :: %s :: ", PROGRAM_NAME, __FUNCTION__); \
- fprintf(LOG_FILE, __VA_ARGS__); \
- fflush(LOG_FILE); \
- } while (0)
-#define RARCH_ERR_V(tag, fmt, vp) do { \
- fprintf(LOG_FILE, "%s [ERROR] :: %s :: ", PROGRAM_NAME, __FUNCTION__); \
- fprintf(LOG_FILE, tag); \
- vfprintf(LOG_FILE, fmt, vp); \
- fflush(LOG_FILE); \
- } while (0)
-#endif
-
-#ifndef RARCH_WARN
-#undef RARCH_WARN_V
-#define RARCH_WARN(...) do { \
- fprintf(LOG_FILE, "%s [WARN] :: %s :: ", PROGRAM_NAME, __FUNCTION__); \
- fprintf(LOG_FILE, __VA_ARGS__); \
- fflush(LOG_FILE); \
- } while (0)
-#define RARCH_WARN_V(tag, fmt, vp) do { \
- fprintf(LOG_FILE, "%s [WARN] :: %s :: ", PROGRAM_NAME, __FUNCTION__); \
- fprintf(LOG_FILE, tag); \
- vfprintf(LOG_FILE, fmt, vp); \
- fflush(LOG_FILE); \
- } while (0)
-#endif
-
-#endif
diff --git a/logger/ios_logger_override.h b/logger/ios_logger_override.h
deleted file mode 100644
index a39c079031..0000000000
--- a/logger/ios_logger_override.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/* RetroArch - A frontend for libretro.
- * Copyright (C) 2010-2014 - Hans-Kristian Arntzen
- * Copyright (C) 2011-2015 - Daniel De Matteis
- *
- * RetroArch is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Found-
- * ation, either version 3 of the License, or (at your option) any later version.
- *
- * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with RetroArch.
- * If not, see .
- */
-
-#ifndef __APPLE_IOS_LOGGER_H
-#define __APPLE_IOS_LOGGER_H
-
-#include
-
-#if TARGET_IPHONE_SIMULATOR
-#include
-#else
-#include
-#endif
-
-#include
-#include
-
-static INLINE void RARCH_LOG_V(const char *tag, const char *fmt, va_list ap)
-{
-#if TARGET_IPHONE_SIMULATOR
- vprintf(fmt, ap);
-#else
- aslmsg msg = asl_new(ASL_TYPE_MSG);
- asl_set(msg, ASL_KEY_READ_UID, "-1");
- if (tag)
- asl_log(NULL, msg, ASL_LEVEL_NOTICE, "%s", tag);
- asl_vlog(NULL, msg, ASL_LEVEL_NOTICE, fmt, ap);
- asl_free(msg);
-#endif
-}
-
-static INLINE void RARCH_LOG(const char *fmt, ...)
-{
- va_list ap;
- va_start(ap, fmt);
- RARCH_LOG_V(NULL, fmt, ap);
- va_end(ap);
-}
-
-static INLINE void RARCH_LOG_OUTPUT_V(const char *tag,
- const char *fmt, va_list ap)
-{
- RARCH_LOG_V(tag, fmt, ap);
-}
-
-static INLINE void RARCH_LOG_OUTPUT(const char *fmt, ...)
-{
- va_list ap;
- va_start(ap, fmt);
- RARCH_LOG_OUTPUT_V(NULL, fmt, ap);
- va_end(ap);
-}
-
-static INLINE void RARCH_WARN_V(const char *tag, const char *fmt, va_list ap)
-{
- RARCH_LOG_V(tag, fmt, ap);
-}
-
-static INLINE void RARCH_WARN(const char *fmt, ...)
-{
- va_list ap;
- va_start(ap, fmt);
- RARCH_WARN_V(NULL, fmt, ap);
- va_end(ap);
-}
-
-static INLINE void RARCH_ERR_V(const char *tag, const char *fmt, va_list ap)
-{
- RARCH_LOG_V(tag, fmt, ap);
-}
-
-static INLINE void RARCH_ERR(const char *fmt, ...)
-{
- va_list ap;
- va_start(ap, fmt);
- RARCH_ERR_V(NULL, fmt, ap);
- va_end(ap);
-}
-
-#endif
diff --git a/logger/xdk1_logger_override.h b/logger/xdk1_logger_override.h
deleted file mode 100644
index fbb19553d0..0000000000
--- a/logger/xdk1_logger_override.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/* RetroArch - A frontend for libretro.
- * Copyright (C) 2010-2014 - Hans-Kristian Arntzen
- * Copyright (C) 2011-2015 - Daniel De Matteis
- *
- * RetroArch is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Found-
- * ation, either version 3 of the License, or (at your option) any later version.
- *
- * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with RetroArch.
- * If not, see .
- */
-
-#ifndef __MSVC_71_H
-#define __MSVC_71_H
-
-#ifdef _XBOX1
-#include
-#endif
-#include
-
-#include
-#include
-#include
-
-// FIXME: Using arbitrary string as fmt argument is unsafe.
-static INLINE void RARCH_LOG_V(const char *tag, const char *fmt, va_list ap)
-{
- char msg_new[1024], buffer[1024];
-#ifdef IS_SALAMANDER
- strlcpy(msg_new, "RetroArch Salamander: ", sizeof(msg_new));
-#else
- strlcpy(msg_new, "RetroArch: ", sizeof(msg_new));
-#endif
- strlcat(msg_new, tag ? tag : "", sizeof(msg_new));
- strlcat(msg_new, fmt, sizeof(msg_new));
- wvsprintf(buffer, msg_new, ap);
- OutputDebugStringA(buffer);
-}
-
-static INLINE void RARCH_LOG(const char *fmt, ...)
-{
- char buffer[1024];
- va_list ap;
- va_start(ap, fmt);
- wvsprintf(buffer, fmt, ap);
- OutputDebugStringA(buffer);
- va_end(ap);
-}
-
-static INLINE void RARCH_LOG_OUTPUT_V(const char *tag,
- const char *msg, va_list ap)
-{
- RARCH_LOG_V(tag, msg, ap);
-}
-
-static INLINE void RARCH_LOG_OUTPUT(const char *msg, ...)
-{
- va_list ap;
- va_start(ap, msg);
- RARCH_LOG_V(NULL, msg, ap);
- va_end(ap);
-}
-
-static INLINE void RARCH_WARN_V(const char *tag, const char *fmt, va_list ap)
-{
- char msg_new[1024], buffer[1024];
-#ifdef IS_SALAMANDER
- strlcpy(msg_new, "RetroArch Salamander [WARN] :: ", sizeof(msg_new));
-#else
- strlcpy(msg_new, "RetroArch [WARN] :: ", sizeof(msg_new));
-#endif
- strlcat(msg_new, tag ? tag : "", sizeof(msg_new));
- strlcat(msg_new, fmt, sizeof(msg_new));
- wvsprintf(buffer, msg_new, ap);
- OutputDebugStringA(buffer);
-}
-
-static INLINE void RARCH_WARN(const char *fmt, ...)
-{
- char buffer[1024];
- va_list ap;
- va_start(ap, fmt);
- wvsprintf(buffer, fmt, ap);
- OutputDebugStringA(buffer);
- va_end(ap);
-}
-
-static INLINE void RARCH_ERR_V(const char *tag, const char *fmt, ...)
-{
- char msg_new[1024];
-#ifdef IS_SALAMANDER
- strlcpy(msg_new, "RetroArch Salamander [ERR] :: ", sizeof(msg_new));
-#else
- strlcpy(msg_new, "RetroArch [ERR] :: ", sizeof(msg_new));
-#endif
- strlcat(msg_new, tag ? tag : "", sizeof(msg_new));
- strlcat(msg_new, fmt, sizeof(msg_new));
- OutputDebugStringA(fmt);
-}
-
-static INLINE void RARCH_ERR(const char *fmt, ...)
-{
- char buffer[1024];
- va_list ap;
- va_start(ap, fmt);
- wvsprintf(buffer, fmt, ap);
- OutputDebugStringA(buffer);
- va_end(ap);
-}
-
-#endif
diff --git a/retroarch_logger.h b/retroarch_logger.h
index 11d2a1c512..fd39deac8c 100644
--- a/retroarch_logger.h
+++ b/retroarch_logger.h
@@ -17,9 +17,29 @@
#ifndef __RARCH_LOGGER_H
#define __RARCH_LOGGER_H
+#ifdef _XBOX1
+#include
+#endif
#include
#include
+#ifdef __MACH__
+#include
+#if TARGET_IPHONE_SIMULATOR
+#include
+#else
+#include
+#endif
+#endif
+
+#ifdef ANDROID
+#include
+#endif
+
+#include
+#include
+#include
+
#if defined(HAVE_FILE_LOGGER) && defined(RARCH_INTERNAL) && !defined(IS_JOYCONFIG)
#ifdef __cplusplus
extern "C"
@@ -45,15 +65,261 @@ FILE *rarch_main_log_file(void);
#endif
#if defined(_XBOX1)
-#include "logger/xdk1_logger_override.h"
+// FIXME: Using arbitrary string as fmt argument is unsafe.
+static INLINE void RARCH_LOG_V(const char *tag, const char *fmt, va_list ap)
+{
+ char msg_new[1024], buffer[1024];
+#ifdef IS_SALAMANDER
+ strlcpy(msg_new, "RetroArch Salamander: ", sizeof(msg_new));
+#else
+ strlcpy(msg_new, "RetroArch: ", sizeof(msg_new));
+#endif
+ strlcat(msg_new, tag ? tag : "", sizeof(msg_new));
+ strlcat(msg_new, fmt, sizeof(msg_new));
+ wvsprintf(buffer, msg_new, ap);
+ OutputDebugStringA(buffer);
+}
+
+static INLINE void RARCH_LOG(const char *fmt, ...)
+{
+ char buffer[1024];
+ va_list ap;
+ va_start(ap, fmt);
+ wvsprintf(buffer, fmt, ap);
+ OutputDebugStringA(buffer);
+ va_end(ap);
+}
+
+static INLINE void RARCH_LOG_OUTPUT_V(const char *tag,
+ const char *msg, va_list ap)
+{
+ RARCH_LOG_V(tag, msg, ap);
+}
+
+static INLINE void RARCH_LOG_OUTPUT(const char *msg, ...)
+{
+ va_list ap;
+ va_start(ap, msg);
+ RARCH_LOG_V(NULL, msg, ap);
+ va_end(ap);
+}
+
+static INLINE void RARCH_WARN_V(const char *tag, const char *fmt, va_list ap)
+{
+ char msg_new[1024], buffer[1024];
+#ifdef IS_SALAMANDER
+ strlcpy(msg_new, "RetroArch Salamander [WARN] :: ", sizeof(msg_new));
+#else
+ strlcpy(msg_new, "RetroArch [WARN] :: ", sizeof(msg_new));
+#endif
+ strlcat(msg_new, tag ? tag : "", sizeof(msg_new));
+ strlcat(msg_new, fmt, sizeof(msg_new));
+ wvsprintf(buffer, msg_new, ap);
+ OutputDebugStringA(buffer);
+}
+
+static INLINE void RARCH_WARN(const char *fmt, ...)
+{
+ char buffer[1024];
+ va_list ap;
+ va_start(ap, fmt);
+ wvsprintf(buffer, fmt, ap);
+ OutputDebugStringA(buffer);
+ va_end(ap);
+}
+
+static INLINE void RARCH_ERR_V(const char *tag, const char *fmt, ...)
+{
+ char msg_new[1024];
+#ifdef IS_SALAMANDER
+ strlcpy(msg_new, "RetroArch Salamander [ERR] :: ", sizeof(msg_new));
+#else
+ strlcpy(msg_new, "RetroArch [ERR] :: ", sizeof(msg_new));
+#endif
+ strlcat(msg_new, tag ? tag : "", sizeof(msg_new));
+ strlcat(msg_new, fmt, sizeof(msg_new));
+ OutputDebugStringA(fmt);
+}
+
+static INLINE void RARCH_ERR(const char *fmt, ...)
+{
+ char buffer[1024];
+ va_list ap;
+ va_start(ap, fmt);
+ wvsprintf(buffer, fmt, ap);
+ OutputDebugStringA(buffer);
+ va_end(ap);
+}
+
#elif defined(RARCH_CONSOLE) && defined(HAVE_LOGGER) && defined(RARCH_INTERNAL)
#include
-#elif defined(IOS) && defined(RARCH_INTERNAL)
-#include "logger/ios_logger_override.h"
-#elif defined(ANDROID) && defined(HAVE_LOGGER) && defined(RARCH_INTERNAL)
-#include "logger/android_logger_override.h"
+#elif TARGET_OS_IPHONE && defined(RARCH_INTERNAL)
+static INLINE void RARCH_LOG_V(const char *tag, const char *fmt, va_list ap)
+{
+#if TARGET_IPHONE_SIMULATOR
+ vprintf(fmt, ap);
#else
-#include "logger/generic_logger_override.h"
+ aslmsg msg = asl_new(ASL_TYPE_MSG);
+ asl_set(msg, ASL_KEY_READ_UID, "-1");
+ if (tag)
+ asl_log(NULL, msg, ASL_LEVEL_NOTICE, "%s", tag);
+ asl_vlog(NULL, msg, ASL_LEVEL_NOTICE, fmt, ap);
+ asl_free(msg);
+#endif
+}
+
+static INLINE void RARCH_LOG(const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ RARCH_LOG_V(NULL, fmt, ap);
+ va_end(ap);
+}
+
+static INLINE void RARCH_LOG_OUTPUT_V(const char *tag,
+ const char *fmt, va_list ap)
+{
+ RARCH_LOG_V(tag, fmt, ap);
+}
+
+static INLINE void RARCH_LOG_OUTPUT(const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ RARCH_LOG_OUTPUT_V(NULL, fmt, ap);
+ va_end(ap);
+}
+
+static INLINE void RARCH_WARN_V(const char *tag, const char *fmt, va_list ap)
+{
+ RARCH_LOG_V(tag, fmt, ap);
+}
+
+static INLINE void RARCH_WARN(const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ RARCH_WARN_V(NULL, fmt, ap);
+ va_end(ap);
+}
+
+static INLINE void RARCH_ERR_V(const char *tag, const char *fmt, va_list ap)
+{
+ RARCH_LOG_V(tag, fmt, ap);
+}
+
+static INLINE void RARCH_ERR(const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ RARCH_ERR_V(NULL, fmt, ap);
+ va_end(ap);
+}
+#elif defined(ANDROID) && defined(HAVE_LOGGER) && defined(RARCH_INTERNAL)
+
+/* Log tag. Used for logcat filtering, e.g.: adb logcat RetroArch:V *:S */
+#define RARCH_LOG_TAG "RetroArch"
+
+#ifndef RARCH_LOG
+#define RARCH_LOG(...) __android_log_print(ANDROID_LOG_INFO, RARCH_LOG_TAG, __VA_ARGS__)
+#endif
+
+#ifndef RARCH_LOG_V
+#define RARCH_LOG_V(tag, fmt, vp) __android_log_vprint(ANDROID_LOG_INFO, RARCH_LOG_TAG tag, fmt, vp)
+#endif
+
+#ifndef RARCH_LOG_OUTPUT
+#define RARCH_LOG_OUTPUT(...) RARCH_LOG(__VA_ARGS__)
+#endif
+
+#ifndef RARCH_LOG_OUTPUT_V
+#define RARCH_LOG_OUTPUT_V(tag, fmt, vp) RARCH_LOG_V(tag, fmt, vp)
+#endif
+
+#ifndef RARCH_ERR
+#define RARCH_ERR(...) __android_log_print(ANDROID_LOG_ERROR, RARCH_LOG_TAG, __VA_ARGS__)
+#endif
+
+#ifndef RARCH_ERR_V
+#define RARCH_ERR_V(tag, fmt, vp) __android_log_vprint(ANDROID_LOG_ERROR, RARCH_LOG_TAG tag, fmt, vp)
+#endif
+
+#ifndef RARCH_WARN
+#define RARCH_WARN(...) __android_log_print(ANDROID_LOG_WARN, RARCH_LOG_TAG, __VA_ARGS__)
+#endif
+
+#ifndef RARCH_WARN_V
+#define RARCH_WARN_V(tag, fmt, vp) __android_log_print(ANDROID_LOG_WARN, RARCH_LOG_TAG tag, fmt, vp)
+#endif
+
+#else
+
+#ifndef RARCH_LOG
+#undef RARCH_LOG_V
+#define RARCH_LOG(...) do { \
+ if (RARCH_LOG_VERBOSE) \
+ { \
+ fprintf(LOG_FILE, "%s: %s: ", PROGRAM_NAME, __FUNCTION__); \
+ fprintf(LOG_FILE, __VA_ARGS__); \
+ fflush(LOG_FILE); \
+ } \
+ } while (0)
+#define RARCH_LOG_V(tag, fmt, vp) do { \
+ if (RARCH_LOG_VERBOSE) \
+ { \
+ fprintf(LOG_FILE, "%s: %s: ", PROGRAM_NAME, __FUNCTION__); \
+ fprintf(LOG_FILE, tag);\
+ vfprintf(LOG_FILE, fmt, vp); \
+ fflush(LOG_FILE); \
+ } \
+ } while (0)
+#endif
+
+#ifndef RARCH_LOG_OUTPUT
+#undef RARCH_LOG_OUTPUT_V
+#define RARCH_LOG_OUTPUT(...) do { \
+ fprintf(LOG_FILE, "%s: ", __FUNCTION__); \
+ fprintf(LOG_FILE, __VA_ARGS__); \
+ fflush(LOG_FILE); \
+ } while (0)
+#define RARCH_LOG_OUTPUT_V(tag, fmt, vp) do { \
+ fprintf(LOG_FILE, "%s: %s: ", PROGRAM_NAME, __FUNCTION__); \
+ fprintf(LOG_FILE, tag); \
+ vfprintf(LOG_FILE, fmt, vp); \
+ fflush(LOG_FILE); \
+ } while (0)
+#endif
+
+#ifndef RARCH_ERR
+#undef RARCH_ERR_V
+#define RARCH_ERR(...) do { \
+ fprintf(LOG_FILE, "%s [ERROR] :: %s :: ", PROGRAM_NAME, __FUNCTION__); \
+ fprintf(LOG_FILE, __VA_ARGS__); \
+ fflush(LOG_FILE); \
+ } while (0)
+#define RARCH_ERR_V(tag, fmt, vp) do { \
+ fprintf(LOG_FILE, "%s [ERROR] :: %s :: ", PROGRAM_NAME, __FUNCTION__); \
+ fprintf(LOG_FILE, tag); \
+ vfprintf(LOG_FILE, fmt, vp); \
+ fflush(LOG_FILE); \
+ } while (0)
+#endif
+
+#ifndef RARCH_WARN
+#undef RARCH_WARN_V
+#define RARCH_WARN(...) do { \
+ fprintf(LOG_FILE, "%s [WARN] :: %s :: ", PROGRAM_NAME, __FUNCTION__); \
+ fprintf(LOG_FILE, __VA_ARGS__); \
+ fflush(LOG_FILE); \
+ } while (0)
+#define RARCH_WARN_V(tag, fmt, vp) do { \
+ fprintf(LOG_FILE, "%s [WARN] :: %s :: ", PROGRAM_NAME, __FUNCTION__); \
+ fprintf(LOG_FILE, tag); \
+ vfprintf(LOG_FILE, fmt, vp); \
+ fflush(LOG_FILE); \
+ } while (0)
+#endif
+
#endif
#endif