From: <ro...@us...> - 2006-07-25 04:26:41
|
Revision: 16569 Author: roast Date: 2006-07-24 21:26:31 -0700 (Mon, 24 Jul 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16569&view=rev Log Message: ----------- accountformatted written. senderformatted in place, not done. Modified Paths: -------------- branches/soc-2006-file-loggers/src/log.c Modified: branches/soc-2006-file-loggers/src/log.c =================================================================== --- branches/soc-2006-file-loggers/src/log.c 2006-07-25 04:08:19 UTC (rev 16568) +++ branches/soc-2006-file-loggers/src/log.c 2006-07-25 04:26:31 UTC (rev 16569) @@ -1018,6 +1018,10 @@ GIOStatus iostat; GError *gerror = NULL; + char *from_normed = g_strdup(gaim_normalize(log->account, from)); + gboolean from_is_normed = (g_ascii_strcasecmp(from, from_normed) == 0); + char *from_suffix = g_strconcat(from_normed, "\" senderformatted=\"", NULL); + writebuf = g_string_new(""); /* This log is new. We could use the loggers 'new' function, but @@ -1027,6 +1031,11 @@ if (!log->logger_data) { const char *prpl = GAIM_PLUGIN_PROTOCOL_INFO(plugin)->list_icon(log->account, NULL); + /* this is not thread-safe at all */ + char *account_normed = g_strdup(gaim_normalize(log->account, gaim_account_get_username(log->account))); + gboolean account_is_normed = (g_ascii_strcasecmp(gaim_account_get_username(log->account), account_normed)); + char *account_suffix = g_strconcat(account_suffix, "\" accountformatted=\"", NULL); + gaim_log_common_writer(log, ".chatlog"); data = log->logger_data; @@ -1037,10 +1046,11 @@ g_string_printf(writebuf, "%c%c%c" "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" - "<chat service=\"%s\" account=\"%s\" version=\"0.3.1-04\"%s>\n" + "<chat xmlns=\"http://purl.org/net/ulf/ns/0.4-02\" service=\"%s\" account=\"%s%s\"%s>\n" "\t<event time=\"%s\" type=\"logStart\" />\n", - 0xEF, 0xBB, 0xBF, - prpl, gaim_account_get_username(log->account), + 0xEF, 0xBB, 0xBF, prpl, + account_is_normed ? "" : account_suffix, + gaim_account_get_username(log->account), log->type == GAIM_LOG_SYSTEM ? "gaim:logtype=\"system\"" : "", date); iostat = g_io_channel_write_chars(data->channel, writebuf->str, -1, &written_buf, &gerror); @@ -1050,6 +1060,9 @@ gerror = NULL; } else written += written_buf; + + g_free(account_normed); + g_free(account_suffix); } /* if we can't write to the file, give up before we hurt ourselves */ @@ -1076,12 +1089,10 @@ else if (type & GAIM_MESSAGE_AUTO_RESP && (type & GAIM_MESSAGE_SEND || type & GAIM_MESSAGE_RECV)) { gboolean recv_from_self = FALSE; if (type & GAIM_MESSAGE_RECV) { - char *from_normed = g_strdup(gaim_normalize(log->account, from)); if (g_ascii_strncasecmp(from_normed, gaim_normalize(log->account, gaim_account_get_username(log->account)), strlen(from)) == 0) { recv_from_self = TRUE; - g_free(from_normed); } } @@ -1092,12 +1103,10 @@ else if (type & GAIM_MESSAGE_SEND || type & GAIM_MESSAGE_RECV) { gboolean recv_from_self = FALSE; if (type & GAIM_MESSAGE_RECV) { - char *from_normed = g_strdup(gaim_normalize(log->account, from)); if (g_ascii_strncasecmp(from_normed, gaim_normalize(log->account, gaim_account_get_username(log->account)), strlen(from)) == 0) { recv_from_self = TRUE; - g_free(from_normed); } } @@ -1148,6 +1157,8 @@ gerror = NULL; } + g_free(from_normed); + g_free(from_suffix); g_string_free(writebuf, TRUE); return written; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |