Mercurial > hg
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) {