Mercurial > hg
changeset 704:4118a66f2c02
Display IQ results (time, version) in the chat window
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Sat, 18 Feb 2006 12:05:46 +0100 |
parents | 8cbcbff8de7d |
children | 603b43e4f56a |
files | mcabber/src/jab_iq.c |
diffstat | 1 files changed, 57 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/mcabber/src/jab_iq.c Wed Feb 15 23:00:49 2006 +0100 +++ b/mcabber/src/jab_iq.c Sat Feb 18 12:05:46 2006 +0100 @@ -31,6 +31,7 @@ #include "utils.h" #include "screen.h" #include "settings.h" +#include "hbuf.h" static GSList *iqs_list; @@ -245,6 +246,8 @@ { xmlnode ansqry; char *p, *p_noutf8; + char *bjid; + char *buf; // Leave now if we cannot process xml_result if (!xml_result || iqcontext) return; @@ -260,36 +263,55 @@ scr_LogPrint(LPRINT_LOGNORM, "Invalid IQ:version result (no sender name)."); return; } - p_noutf8 = from_utf8(p); - if (p_noutf8) { - scr_LogPrint(LPRINT_LOGNORM, "IQ:version from <%s>", p_noutf8); - g_free(p_noutf8); + bjid = from_utf8(p); + if (!bjid) { + scr_LogPrint(LPRINT_LOGNORM, "UTF-8 decoding error in IQ:version result " + "(sender name)."); + return; } + + buf = g_strdup_printf("IQ:version result from <%s>", bjid); + scr_LogPrint(LPRINT_LOGNORM, "%s", buf); + + // bjid should now really be the "bare JID", let's strip the resource + p = strchr(bjid, '/'); + if (p) *p = '\0'; + + scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO); + g_free(buf); + // Get result data... p = xmlnode_get_tag_data(ansqry, "name"); if (p) { p_noutf8 = from_utf8(p); if (p_noutf8) { - scr_LogPrint(LPRINT_LOGNORM, "Name: %s", p_noutf8); + buf = g_strdup_printf("Name: %s", p_noutf8); + scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO); g_free(p_noutf8); + g_free(buf); } } p = xmlnode_get_tag_data(ansqry, "version"); if (p) { p_noutf8 = from_utf8(p); if (p_noutf8) { - scr_LogPrint(LPRINT_LOGNORM, "Version: %s", p_noutf8); + buf = g_strdup_printf("Version: %s", p_noutf8); + scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO); g_free(p_noutf8); + g_free(buf); } } p = xmlnode_get_tag_data(ansqry, "os"); if (p) { p_noutf8 = from_utf8(p); if (p_noutf8) { - scr_LogPrint(LPRINT_LOGNORM, "OS: %s", p_noutf8); + buf = g_strdup_printf("OS: %s", p_noutf8); + scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO); g_free(p_noutf8); + g_free(buf); } } + g_free(bjid); } void request_version(const char *fulljid) @@ -308,6 +330,8 @@ { xmlnode ansqry; char *p, *p_noutf8; + char *bjid; + char *buf; // Leave now if we cannot process xml_result if (!xml_result || iqcontext) return; @@ -323,36 +347,55 @@ scr_LogPrint(LPRINT_LOGNORM, "Invalid IQ:time result (no sender name)."); return; } - p_noutf8 = from_utf8(p); - if (p_noutf8) { - scr_LogPrint(LPRINT_LOGNORM, "IQ:time from <%s>", p_noutf8); - g_free(p_noutf8); + bjid = from_utf8(p); + if (!bjid) { + scr_LogPrint(LPRINT_LOGNORM, "UTF-8 decoding error in IQ:time result " + "(sender name)."); + return; } + + buf = g_strdup_printf("IQ:time result from <%s>", bjid); + scr_LogPrint(LPRINT_LOGNORM, "%s", buf); + + // bjid should now really be the "bare JID", let's strip the resource + p = strchr(bjid, '/'); + if (p) *p = '\0'; + + scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO); + g_free(buf); + // Get result data... p = xmlnode_get_tag_data(ansqry, "utc"); if (p) { p_noutf8 = from_utf8(p); if (p_noutf8) { - scr_LogPrint(LPRINT_LOGNORM, "UTC: %s", p_noutf8); + buf = g_strdup_printf("UTC: %s", p_noutf8); + scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO); g_free(p_noutf8); + g_free(buf); } } p = xmlnode_get_tag_data(ansqry, "tz"); if (p) { p_noutf8 = from_utf8(p); if (p_noutf8) { - scr_LogPrint(LPRINT_LOGNORM, "TZ: %s", p_noutf8); + buf = g_strdup_printf("TZ: %s", p_noutf8); + scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO); g_free(p_noutf8); + g_free(buf); } } p = xmlnode_get_tag_data(ansqry, "display"); if (p) { p_noutf8 = from_utf8(p); if (p_noutf8) { - scr_LogPrint(LPRINT_LOGNORM, "Time: %s", p_noutf8); + buf = g_strdup_printf("Time: %s", p_noutf8); + scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO); g_free(p_noutf8); + g_free(buf); } } + g_free(bjid); } void request_time(const char *fulljid)