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);