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)