# HG changeset patch # User Mikael Berthe # Date 1139523709 -3600 # Node ID 3c0a0a993de8f08046cde33e0856f053b0361ac6 # Parent 3e965a1186c7eba3ba1a8c4064e57e1c1d6fa90f Implement IQ:time requests diff -r 3e965a1186c7 -r 3c0a0a993de8 mcabber/src/jab_iq.c --- a/mcabber/src/jab_iq.c Thu Feb 09 23:20:28 2006 +0100 +++ b/mcabber/src/jab_iq.c Thu Feb 09 23:21:49 2006 +0100 @@ -304,6 +304,69 @@ jab_send(jc, iqn->xmldata); } +void iqscallback_time(iqs *iqp, xmlnode xml_result) +{ + xmlnode ansqry; + char *p, *p_noutf8; + + // xml_result is null for timeouts and errors + if (!xml_result) return; + + ansqry = xmlnode_get_tag(xml_result, "query"); + if (!ansqry) { + scr_LogPrint(LPRINT_LOGNORM, "Invalid IQ:time result!"); + return; + } + // Display IQ result sender... + p = xmlnode_get_attrib(xml_result, "from"); + if (!p) { + 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); + } + // 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); + g_free(p_noutf8); + } + } + 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); + g_free(p_noutf8); + } + } + 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); + g_free(p_noutf8); + } + } +} + +void request_time(const char *fulljid) +{ + iqs *iqn; + gchar *utf8_jid = to_utf8(fulljid); + + iqn = iqs_new(JPACKET__GET, NS_TIME, "time", IQS_DEFAULT_TIMEOUT); + xmlnode_put_attrib(iqn->xmldata, "to", utf8_jid); + if (utf8_jid) g_free(utf8_jid); + iqn->callback = &iqscallback_time; + jab_send(jc, iqn->xmldata); +} + void iqscallback_auth(iqs *iqp, xmlnode xml_result) { if (jstate == STATE_GETAUTH) { diff -r 3e965a1186c7 -r 3c0a0a993de8 mcabber/src/jab_priv.h --- a/mcabber/src/jab_priv.h Thu Feb 09 23:20:28 2006 +0100 +++ b/mcabber/src/jab_priv.h Thu Feb 09 23:21:49 2006 +0100 @@ -46,6 +46,7 @@ void iqs_check_timeout(void); void iqscallback_auth(iqs *iqp, xmlnode xml_result); void request_version(const char *fulljid); +void request_time(const char *fulljid); #endif /* __JAB_PRIV_H__ */ diff -r 3e965a1186c7 -r 3c0a0a993de8 mcabber/src/jabglue.c --- a/mcabber/src/jabglue.c Thu Feb 09 23:20:28 2006 +0100 +++ b/mcabber/src/jabglue.c Thu Feb 09 23:21:49 2006 +0100 @@ -571,6 +571,11 @@ g_free(cleanjid); } +void jb_request_time(const char *fulljid) +{ + request_time(fulljid); +} + // Join a MUC room void jb_room_join(const char *room, const char *nickname) {