diff options
author | Max Kellermann <max@duempel.org> | 2008-11-05 18:39:13 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-11-05 18:39:13 +0100 |
commit | 130fa94423213f56cd49d0a9e2ebc784195bcaf7 (patch) | |
tree | e1187cc1e8c5541c1d1a0a854fba06e11e695324 /src | |
parent | 787c6f5e18a6855b3c16a9957edef8da109d686b (diff) |
log: convert messages to system charset
When logging to the terminal, we should print messages in the system
character set. Convert all messages in this case.
Diffstat (limited to 'src')
-rw-r--r-- | src/log.c | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -40,6 +40,8 @@ static unsigned int log_threshold = G_LOG_LEVEL_INFO; +static const char *log_charset; + static bool stdout_mode = true; static int out_fd = -1; static int err_fd = -1; @@ -71,16 +73,27 @@ mpd_log_func(G_GNUC_UNUSED const gchar *log_domain, { FILE *file = log_level <= G_LOG_LEVEL_WARNING ? stderr : stdout; + char *converted; + + converted = g_convert_with_fallback(message, -1, + log_charset, "utf-8", + NULL, NULL, NULL, NULL); + if (converted != NULL) + message = converted; fprintf(file, "%s%s", stdout_mode ? "" : log_date(), message); + + g_free(converted); } void initLog(bool verbose) { ConfigParam *param; + g_get_charset(&log_charset); + g_log_set_default_handler(mpd_log_func, NULL); /* unbuffer stdout, stderr is unbuffered by default, leave it */ @@ -136,6 +149,7 @@ void setup_log_output(bool use_stdout) if (!use_stdout) { redirect_logs(); stdout_mode = false; + log_charset = NULL; } } |