diff mcabber/src/hooks.c @ 772:464be13343a9

Store most data in UTF-8 internally Only chat buffer data is still using 1 byte for char size. User input still doesn't handle UTF-8 locales.
author Mikael Berthe <mikael@lilotux.net>
date Sat, 25 Mar 2006 18:10:36 +0100
parents 2f027806cd48
children 46304b773a44
line wrap: on
line diff
--- a/mcabber/src/hooks.c	Sat Mar 25 18:00:40 2006 +0100
+++ b/mcabber/src/hooks.c	Sat Mar 25 18:10:36 2006 +0100
@@ -157,7 +157,7 @@
 inline void hk_message_out(const char *jid, const char *nick,
                            time_t timestamp, const char *msg)
 {
-  char *wmsg = NULL, *bmsg = NULL, *mmsg = NULL;;
+  char *wmsg = NULL, *bmsg = NULL, *mmsg = NULL;
 
   if (nick) {
     wmsg = bmsg = g_strdup_printf("PRIV#<%s> %s", nick, msg);
@@ -314,10 +314,14 @@
   if (strchr("MG", type) && data && settings_opt_get_int("event_log_files")) {
     int fd;
     const char *prefix;
+    char *data_locale;
+
+    data_locale = from_utf8(data);
     prefix = settings_opt_get("event_log_dir");
     if (!prefix)
       prefix = ut_get_tmpdir();
     datafname = g_strdup_printf("%s/mcabber-%d.XXXXXX", prefix, getpid());
+
     // XXX Some old systems may require us to set umask first.
     fd = mkstemp(datafname);
     if (fd == -1) {
@@ -326,10 +330,11 @@
       scr_LogPrint(LPRINT_LOGNORM,
                    "Unable to create temp file for external command.");
     }
-    write(fd, data, strlen(data));
+    write(fd, data_locale, strlen(data_locale));
     write(fd, "\n", 1);
     close(fd);
     arg_data = datafname;
+    g_free(data_locale);
   }
 
   if ((pid=fork()) == -1) {