Mercurial > hg
changeset 771:ce4f8a2129a4
scr_LogPrint() can display UTF-8 strings
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Sat, 25 Mar 2006 18:00:40 +0100 |
parents | c3bb5ae65a86 |
children | 464be13343a9 |
files | mcabber/src/logprint.h mcabber/src/screen.c |
diffstat | 2 files changed, 12 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/mcabber/src/logprint.h Thu Mar 23 19:14:15 2006 +0100 +++ b/mcabber/src/logprint.h Sat Mar 25 18:00:40 2006 +0100 @@ -5,6 +5,7 @@ #define LPRINT_NORMAL 1 // Display in log window #define LPRINT_LOG 2 // Log to file (if enabled) #define LPRINT_DEBUG 4 // Debug message (log if enabled) +#define LPRINT_NOTUTF8 8 // Do not convert from UTF-8 to locale // For convenience... #define LPRINT_LOGNORM (LPRINT_NORMAL|LPRINT_LOG)
--- a/mcabber/src/screen.c Thu Mar 23 19:14:15 2006 +0100 +++ b/mcabber/src/screen.c Sat Mar 25 18:00:40 2006 +0100 @@ -318,13 +318,14 @@ // scr_LogPrint(...) // Display a message in the log window. +// This function will convert from UTF-8 unless the LPRINT_NOTUTF8 flag is set. void scr_LogPrint(unsigned int flag, const char *fmt, ...) { time_t timestamp; char *buffer, *b2; va_list ap; - if (!flag) return; + if (!(flag & ~LPRINT_NOTUTF8)) return; // Shouldn't happen buffer = g_new(char, 5184); @@ -337,13 +338,20 @@ va_end(ap); if (flag & LPRINT_NORMAL) { + char *buffer_locale; + if (!(flag & LPRINT_NOTUTF8)) + buffer_locale = from_utf8(buffer); + else + buffer_locale = buffer; if (Curses) { - wprintw(logWnd, "\n%s", buffer); + wprintw(logWnd, "\n%s", buffer_locale); update_panels(); doupdate(); } else { - printf("%s\n", buffer); + printf("%s\n", buffer_locale); } + if (!(flag & LPRINT_NOTUTF8)) + g_free(buffer_locale); } if (flag & (LPRINT_LOG|LPRINT_DEBUG)) { char *buffer2 = g_new(char, 5184);