X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fmisc.c;h=b71fee31934da47516917d3dbdb9e99aee3fdd49;hb=259128f543fa1c3c6f3bf8bff8309e815beedad6;hp=17072d87cf249b43c38bbd21ebe0b27783dbef21;hpb=7719feee76dac64d8f6153d4c379c44db1d89f7d;p=rocksndiamonds.git diff --git a/src/libgame/misc.c b/src/libgame/misc.c index 17072d87..b71fee31 100644 --- a/src/libgame/misc.c +++ b/src/libgame/misc.c @@ -288,11 +288,31 @@ static void printf_log_prefix(int log_level, char *mode) printf_log_nonewline("[%s] ", log_token); } -static void Log(int log_level, char *mode, char *format, va_list ap) +static void vLog(int log_level, char *mode, char *format, va_list ap) { if (log_level < 0 || log_level > LOG_FATAL) return; + if (log_level == LOG_DEBUG) + { + if (!options.debug) + return; + + // if optional debug mode specified, limit debug output accordingly + if (options.debug_mode != NULL && + strstr(mode, options.debug_mode) == NULL) + return; + } + +#if defined(PLATFORM_ANDROID) + android_log_prio = (log_level == LOG_DEBUG ? ANDROID_LOG_DEBUG : + log_level == LOG_INFO ? ANDROID_LOG_INFO : + log_level == LOG_WARN ? ANDROID_LOG_WARN : + log_level == LOG_ERROR ? ANDROID_LOG_ERROR : + log_level == LOG_FATAL ? ANDROID_LOG_FATAL : + ANDROID_LOG_UNKNOWN); +#endif + static boolean last_line_was_separator = FALSE; char *log_token = log_tokens[log_level]; @@ -332,7 +352,7 @@ void Debug(char *mode, char *format, ...) va_list ap; va_start(ap, format); - Log(LOG_DEBUG, mode, format, ap); + vLog(LOG_DEBUG, mode, format, ap); va_end(ap); } @@ -341,7 +361,7 @@ void Info(char *format, ...) va_list ap; va_start(ap, format); - Log(LOG_INFO, NULL, format, ap); + vLog(LOG_INFO, NULL, format, ap); va_end(ap); } @@ -350,7 +370,7 @@ void Warn(char *format, ...) va_list ap; va_start(ap, format); - Log(LOG_WARN, NULL, format, ap); + vLog(LOG_WARN, NULL, format, ap); va_end(ap); } @@ -557,10 +577,15 @@ void SkipUntilDelayReached(unsigned int *counter_var, unsigned int delay, #if 0 #if DEBUG - printf("::: %d: %d ms", *loop_var, delay); if (skip_frames) - printf(" -> SKIP %d FRAME(S) [%d ms]", skip_frames, skip_frames * delay); - printf("\n"); + Debug("internal:SkipUntilDelayReached", + "%d: %d ms -> SKIP %d FRAME(S) [%d ms]", + *loop_var, delay, + skip_frames, skip_frames * delay); + else + Debug("internal:SkipUntilDelayReached", + "%d: %d ms", + *loop_var, delay); #endif #endif @@ -1036,6 +1061,7 @@ void GetOptions(int argc, char *argv[], options.execute_command = NULL; options.special_flags = NULL; + options.debug_mode = NULL; options.mytapes = FALSE; options.serveronly = FALSE; @@ -1170,6 +1196,10 @@ void GetOptions(int argc, char *argv[], else if (strncmp(option, "-debug", option_len) == 0) { options.debug = TRUE; + + // optionally, debug output can be limited to a specific debug mode + if (option_arg != next_option) + options.debug_mode = getStringCopy(option_arg); } else if (strncmp(option, "-verbose", option_len) == 0) { @@ -1860,7 +1890,7 @@ static void translate_keyname(Key *keysym, char **x11name, char **name, int mode } if (key == KSYM_UNDEFINED) - Error(ERR_WARN, "getKeyFromKeyName(): not completely implemented"); + Warn("getKeyFromKeyName(): not completely implemented"); *keysym = key; } @@ -2228,12 +2258,12 @@ static void dumpList(ListNode *node_first) while (node) { - printf("['%s' (%d)]\n", node->key, - ((struct ListNodeInfo *)node->content)->num_references); + Debug("internal:dumpList", "['%s' (%d)]", node->key, + ((struct ListNodeInfo *)node->content)->num_references); node = node->next; } - printf("[%d nodes]\n", getNumNodes(node_first)); + Debug("internal:dumpList", "[%d nodes]", getNumNodes(node_first)); } #endif @@ -3379,53 +3409,53 @@ static void LoadArtworkConfigFromFilename(struct ArtworkListInfo *artwork_info, if (options.debug && dynamic_tokens_found) { - Error(ERR_INFO_LINE, "-"); - Error(ERR_INFO, "dynamic token(s) found in config file:"); - Error(ERR_INFO, "- config file: '%s'", filename); + Debug("config", "---"); + Debug("config", "dynamic token(s) found in config file:"); + Debug("config", "- config file: '%s'", filename); for (list = setup_file_list; list != NULL; list = list->next) { char *value = getHashEntry(extra_file_hash, list->token); if (value != NULL && strEqual(value, known_token_value)) - Error(ERR_INFO, "- dynamic token: '%s'", list->token); + Debug("config", "- dynamic token: '%s'", list->token); } - Error(ERR_INFO_LINE, "-"); + Debug("config", "---"); } if (unknown_tokens_found) { - Error(ERR_INFO_LINE, "-"); - Error(ERR_INFO, "warning: unknown token(s) found in config file:"); - Error(ERR_INFO, "- config file: '%s'", filename); + Warn("---"); + Warn("unknown token(s) found in config file:"); + Warn("- config file: '%s'", filename); for (list = setup_file_list; list != NULL; list = list->next) { char *value = getHashEntry(extra_file_hash, list->token); if (value != NULL && !strEqual(value, known_token_value)) - Error(ERR_INFO, "- dynamic token: '%s'", list->token); + Warn("- dynamic token: '%s'", list->token); } - Error(ERR_INFO_LINE, "-"); + Warn("---"); } if (undefined_values_found) { - Error(ERR_INFO_LINE, "-"); - Error(ERR_INFO, "warning: undefined values found in config file:"); - Error(ERR_INFO, "- config file: '%s'", filename); + Warn("---"); + Warn("undefined values found in config file:"); + Warn("- config file: '%s'", filename); for (list = setup_file_list; list != NULL; list = list->next) { char *value = getHashEntry(empty_file_hash, list->token); if (value != NULL) - Error(ERR_INFO, "- undefined value for token: '%s'", list->token); + Warn("- undefined value for token: '%s'", list->token); } - Error(ERR_INFO_LINE, "-"); + Warn("---"); } freeSetupFileList(setup_file_list); @@ -3531,7 +3561,7 @@ static void replaceArtworkListEntry(struct ArtworkListInfo *artwork_info, if (filename == NULL) { - Error(ERR_WARN, "cannot find artwork file '%s'", basename); + Warn("cannot find artwork file '%s'", basename); basename = file_list_entry->default_filename; @@ -3557,7 +3587,7 @@ static void replaceArtworkListEntry(struct ArtworkListInfo *artwork_info, file_list_entry->fallback_to_default = TRUE; - Error(ERR_WARN, "trying default artwork file '%s'", basename); + Warn("trying default artwork file '%s'", basename); filename = getCustomArtworkFilename(basename, artwork_info->type); @@ -3715,8 +3745,8 @@ void OpenLogFiles(void) { program.log_file[i] = program.log_file_default[i]; // reset to default - Error(ERR_WARN, "cannot open file '%s' for writing: %s", - program.log_filename[i], strerror(errno)); + Warn("cannot open file '%s' for writing: %s", + program.log_filename[i], strerror(errno)); } // output should be unbuffered so it is not truncated in a crash @@ -3834,12 +3864,12 @@ void debug_print_timestamp(int counter_nr, char *message) counter[counter_nr][1] = counter[counter_nr][0]; if (message) - Error(ERR_DEBUG, "%s%s%s %.3f %s", - debug_print_timestamp_get_padding(counter_nr * indent_size), - message, - debug_print_timestamp_get_padding(padding_size - strlen(message)), - timestamp_interval / 1000, - unit); + Debug("time", "%s%s%s %.3f %s", + debug_print_timestamp_get_padding(counter_nr * indent_size), + message, + debug_print_timestamp_get_padding(padding_size - strlen(message)), + timestamp_interval / 1000, + unit); } #if 0