Mercurial > hg
comparison 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 |
comparison
equal
deleted
inserted
replaced
771:ce4f8a2129a4 | 772:464be13343a9 |
---|---|
155 // nick should be set for private messages in a chat room, and null for | 155 // nick should be set for private messages in a chat room, and null for |
156 // normal messages. | 156 // normal messages. |
157 inline void hk_message_out(const char *jid, const char *nick, | 157 inline void hk_message_out(const char *jid, const char *nick, |
158 time_t timestamp, const char *msg) | 158 time_t timestamp, const char *msg) |
159 { | 159 { |
160 char *wmsg = NULL, *bmsg = NULL, *mmsg = NULL;; | 160 char *wmsg = NULL, *bmsg = NULL, *mmsg = NULL; |
161 | 161 |
162 if (nick) { | 162 if (nick) { |
163 wmsg = bmsg = g_strdup_printf("PRIV#<%s> %s", nick, msg); | 163 wmsg = bmsg = g_strdup_printf("PRIV#<%s> %s", nick, msg); |
164 } else { | 164 } else { |
165 wmsg = (char*)msg; | 165 wmsg = (char*)msg; |
312 if (!arg_type || !arg_info) return; | 312 if (!arg_type || !arg_info) return; |
313 | 313 |
314 if (strchr("MG", type) && data && settings_opt_get_int("event_log_files")) { | 314 if (strchr("MG", type) && data && settings_opt_get_int("event_log_files")) { |
315 int fd; | 315 int fd; |
316 const char *prefix; | 316 const char *prefix; |
317 char *data_locale; | |
318 | |
319 data_locale = from_utf8(data); | |
317 prefix = settings_opt_get("event_log_dir"); | 320 prefix = settings_opt_get("event_log_dir"); |
318 if (!prefix) | 321 if (!prefix) |
319 prefix = ut_get_tmpdir(); | 322 prefix = ut_get_tmpdir(); |
320 datafname = g_strdup_printf("%s/mcabber-%d.XXXXXX", prefix, getpid()); | 323 datafname = g_strdup_printf("%s/mcabber-%d.XXXXXX", prefix, getpid()); |
324 | |
321 // XXX Some old systems may require us to set umask first. | 325 // XXX Some old systems may require us to set umask first. |
322 fd = mkstemp(datafname); | 326 fd = mkstemp(datafname); |
323 if (fd == -1) { | 327 if (fd == -1) { |
324 g_free(datafname); | 328 g_free(datafname); |
325 datafname = NULL; | 329 datafname = NULL; |
326 scr_LogPrint(LPRINT_LOGNORM, | 330 scr_LogPrint(LPRINT_LOGNORM, |
327 "Unable to create temp file for external command."); | 331 "Unable to create temp file for external command."); |
328 } | 332 } |
329 write(fd, data, strlen(data)); | 333 write(fd, data_locale, strlen(data_locale)); |
330 write(fd, "\n", 1); | 334 write(fd, "\n", 1); |
331 close(fd); | 335 close(fd); |
332 arg_data = datafname; | 336 arg_data = datafname; |
337 g_free(data_locale); | |
333 } | 338 } |
334 | 339 |
335 if ((pid=fork()) == -1) { | 340 if ((pid=fork()) == -1) { |
336 scr_LogPrint(LPRINT_LOGNORM, "Fork error, cannot launch external command."); | 341 scr_LogPrint(LPRINT_LOGNORM, "Fork error, cannot launch external command."); |
337 if (datafname) | 342 if (datafname) |