|
@@ -50,9 +50,12 @@ typedef struct SDL_LogLevel
|
|
|
struct SDL_LogLevel *next;
|
|
|
} SDL_LogLevel;
|
|
|
|
|
|
+
|
|
|
/* The default log output function */
|
|
|
static void SDLCALL SDL_LogOutput(void *userdata, int category, SDL_LogPriority priority, const char *message);
|
|
|
|
|
|
+static void SDL_ResetLogPrefixes(void);
|
|
|
+
|
|
|
static SDL_LogLevel *SDL_loglevels;
|
|
|
static SDL_bool SDL_forced_priority = SDL_FALSE;
|
|
|
static SDL_LogPriority SDL_forced_priority_level;
|
|
@@ -77,17 +80,7 @@ static const char * const SDL_priority_names[] = {
|
|
|
};
|
|
|
SDL_COMPILE_TIME_ASSERT(priority_names, SDL_arraysize(SDL_priority_names) == SDL_NUM_LOG_PRIORITIES);
|
|
|
|
|
|
-/* If this list changes, update the documentation for SDL_HINT_LOGGING */
|
|
|
-static const char *SDL_priority_prefixes[] = {
|
|
|
- NULL,
|
|
|
- "",
|
|
|
- "",
|
|
|
- "",
|
|
|
- "WARNING: ",
|
|
|
- "ERROR: ",
|
|
|
- "CRITICAL: "
|
|
|
-};
|
|
|
-SDL_COMPILE_TIME_ASSERT(priority_prefixes, SDL_arraysize(SDL_priority_prefixes) == SDL_NUM_LOG_PRIORITIES);
|
|
|
+static const char *SDL_priority_prefixes[SDL_NUM_LOG_PRIORITIES];
|
|
|
|
|
|
/* If this list changes, update the documentation for SDL_HINT_LOGGING */
|
|
|
static const char * const SDL_category_names[] = {
|
|
@@ -130,6 +123,7 @@ void SDL_InitLog(void)
|
|
|
void SDL_QuitLog(void)
|
|
|
{
|
|
|
SDL_ResetLogPriorities();
|
|
|
+ SDL_ResetLogPrefixes();
|
|
|
|
|
|
if (log_function_mutex) {
|
|
|
SDL_DestroyMutex(log_function_mutex);
|
|
@@ -315,6 +309,35 @@ void SDL_ResetLogPriorities(void)
|
|
|
SDL_forced_priority = SDL_FALSE;
|
|
|
}
|
|
|
|
|
|
+static void SDL_ResetLogPrefixes(void)
|
|
|
+{
|
|
|
+ for (int i = 0; i < SDL_arraysize(SDL_priority_prefixes); ++i) {
|
|
|
+ SDL_priority_prefixes[i] = NULL;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+static const char *SDL_GetLogPriorityPrefix(SDL_LogPriority priority)
|
|
|
+{
|
|
|
+ if (priority < SDL_LOG_PRIORITY_VERBOSE || priority >= SDL_NUM_LOG_PRIORITIES) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (SDL_priority_prefixes[priority]) {
|
|
|
+ return SDL_priority_prefixes[priority];
|
|
|
+ }
|
|
|
+
|
|
|
+ switch (priority) {
|
|
|
+ case SDL_LOG_PRIORITY_WARN:
|
|
|
+ return "WARNING: ";
|
|
|
+ case SDL_LOG_PRIORITY_ERROR:
|
|
|
+ return "ERROR: ";
|
|
|
+ case SDL_LOG_PRIORITY_CRITICAL:
|
|
|
+ return "ERROR: ";
|
|
|
+ default:
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
int SDL_SetLogPriorityPrefix(SDL_LogPriority priority, const char *prefix)
|
|
|
{
|
|
|
if (priority < SDL_LOG_PRIORITY_VERBOSE || priority >= SDL_NUM_LOG_PRIORITIES) {
|
|
@@ -548,9 +571,9 @@ static void SDLCALL SDL_LogOutput(void *userdata, int category, SDL_LogPriority
|
|
|
}
|
|
|
#endif /* !defined(HAVE_STDIO_H) && !defined(SDL_PLATFORM_WINRT) && !defined(SDL_PLATFORM_GDK) */
|
|
|
|
|
|
- length = SDL_strlen(SDL_priority_prefixes[priority]) + SDL_strlen(message) + 1 + 1 + 1;
|
|
|
+ length = SDL_strlen(SDL_GetLogPriorityPrefix(priority)) + SDL_strlen(message) + 1 + 1 + 1;
|
|
|
output = SDL_small_alloc(char, length, &isstack);
|
|
|
- (void)SDL_snprintf(output, length, "%s%s\r\n", SDL_priority_prefixes[priority], message);
|
|
|
+ (void)SDL_snprintf(output, length, "%s%s\r\n", SDL_GetLogPriorityPrefix(priority), message);
|
|
|
tstr = WIN_UTF8ToString(output);
|
|
|
|
|
|
/* Output to debugger */
|
|
@@ -588,7 +611,7 @@ static void SDLCALL SDL_LogOutput(void *userdata, int category, SDL_LogPriority
|
|
|
*/
|
|
|
extern void SDL_NSLog(const char *prefix, const char *text);
|
|
|
{
|
|
|
- SDL_NSLog(SDL_priority_prefixes[priority], message);
|
|
|
+ SDL_NSLog(SDL_GetLogPriorityPrefix(priority), message);
|
|
|
return;
|
|
|
}
|
|
|
#elif defined(SDL_PLATFORM_PSP) || defined(SDL_PLATFORM_PS2)
|
|
@@ -596,7 +619,7 @@ static void SDLCALL SDL_LogOutput(void *userdata, int category, SDL_LogPriority
|
|
|
FILE *pFile;
|
|
|
pFile = fopen("SDL_Log.txt", "a");
|
|
|
if (pFile) {
|
|
|
- (void)fprintf(pFile, "%s%s\n", SDL_priority_prefixes[priority], message);
|
|
|
+ (void)fprintf(pFile, "%s%s\n", SDL_GetLogPriorityPrefix(priority), message);
|
|
|
(void)fclose(pFile);
|
|
|
}
|
|
|
}
|
|
@@ -605,7 +628,7 @@ static void SDLCALL SDL_LogOutput(void *userdata, int category, SDL_LogPriority
|
|
|
FILE *pFile;
|
|
|
pFile = fopen("ux0:/data/SDL_Log.txt", "a");
|
|
|
if (pFile) {
|
|
|
- (void)fprintf(pFile, "%s%s\n", SDL_priority_prefixes[priority], message);
|
|
|
+ (void)fprintf(pFile, "%s%s\n", SDL_GetLogPriorityPrefix(priority), message);
|
|
|
(void)fclose(pFile);
|
|
|
}
|
|
|
}
|
|
@@ -614,14 +637,14 @@ static void SDLCALL SDL_LogOutput(void *userdata, int category, SDL_LogPriority
|
|
|
FILE *pFile;
|
|
|
pFile = fopen("sdmc:/3ds/SDL_Log.txt", "a");
|
|
|
if (pFile) {
|
|
|
- (void)fprintf(pFile, "%s%s\n", SDL_priority_prefixes[priority], message);
|
|
|
+ (void)fprintf(pFile, "%s%s\n", SDL_GetLogPriorityPrefix(priority), message);
|
|
|
(void)fclose(pFile);
|
|
|
}
|
|
|
}
|
|
|
#endif
|
|
|
#if defined(HAVE_STDIO_H) && \
|
|
|
!(defined(SDL_PLATFORM_APPLE) && (defined(SDL_VIDEO_DRIVER_COCOA) || defined(SDL_VIDEO_DRIVER_UIKIT)))
|
|
|
- (void)fprintf(stderr, "%s%s\n", SDL_priority_prefixes[priority], message);
|
|
|
+ (void)fprintf(stderr, "%s%s\n", SDL_GetLogPriorityPrefix(priority), message);
|
|
|
#endif
|
|
|
}
|
|
|
|