231 static LmHandlerResult cb_version(LmMessageHandler *h, LmConnection *c, |
231 static LmHandlerResult cb_version(LmMessageHandler *h, LmConnection *c, |
232 LmMessage *m, gpointer user_data) |
232 LmMessage *m, gpointer user_data) |
233 { |
233 { |
234 LmMessageNode *ansqry; |
234 LmMessageNode *ansqry; |
235 const char *p, *bjid; |
235 const char *p, *bjid; |
236 char *buf, *tmp; |
236 char *bare_jid; |
|
237 char *buf; |
237 |
238 |
238 // Check IQ result sender |
239 // Check IQ result sender |
239 bjid = lm_message_get_from(m); |
240 bjid = lm_message_get_from(m); |
240 if (!bjid) |
241 if (!bjid) |
241 bjid = lm_connection_get_jid(lconnection); // No from means our JID... |
242 bjid = lm_connection_get_jid(lconnection); // No from means our JID... |
260 |
261 |
261 buf = g_strdup_printf("Received IQ:version result from <%s>", bjid); |
262 buf = g_strdup_printf("Received IQ:version result from <%s>", bjid); |
262 scr_LogPrint(LPRINT_LOGNORM, "%s", buf); |
263 scr_LogPrint(LPRINT_LOGNORM, "%s", buf); |
263 |
264 |
264 // bjid should now really be the "bare JID", let's strip the resource |
265 // bjid should now really be the "bare JID", let's strip the resource |
265 tmp = strchr(bjid, JID_RESOURCE_SEPARATOR); |
266 bare_jid = jidtodisp(bjid); |
266 if (tmp) *tmp = '\0'; |
267 |
267 |
268 scr_WriteIncomingMessage(bare_jid, buf, 0, HBB_PREFIX_INFO, 0); |
268 scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO, 0); |
|
269 g_free(buf); |
269 g_free(buf); |
270 |
270 |
271 // Get result data... |
271 // Get result data... |
272 p = lm_message_node_get_child_value(ansqry, "name"); |
272 p = lm_message_node_get_child_value(ansqry, "name"); |
273 if (p && *p) { |
273 if (p && *p) { |
274 buf = g_strdup_printf("Name: %s", p); |
274 buf = g_strdup_printf("Name: %s", p); |
275 scr_WriteIncomingMessage(bjid, buf, |
275 scr_WriteIncomingMessage(bare_jid, buf, |
276 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
276 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
277 g_free(buf); |
277 g_free(buf); |
278 } |
278 } |
279 p = lm_message_node_get_child_value(ansqry, "version"); |
279 p = lm_message_node_get_child_value(ansqry, "version"); |
280 if (p && *p) { |
280 if (p && *p) { |
281 buf = g_strdup_printf("Version: %s", p); |
281 buf = g_strdup_printf("Version: %s", p); |
282 scr_WriteIncomingMessage(bjid, buf, |
282 scr_WriteIncomingMessage(bare_jid, buf, |
283 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
283 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
284 g_free(buf); |
284 g_free(buf); |
285 } |
285 } |
286 p = lm_message_node_get_child_value(ansqry, "os"); |
286 p = lm_message_node_get_child_value(ansqry, "os"); |
287 if (p && *p) { |
287 if (p && *p) { |
288 buf = g_strdup_printf("OS: %s", p); |
288 buf = g_strdup_printf("OS: %s", p); |
289 scr_WriteIncomingMessage(bjid, buf, |
289 scr_WriteIncomingMessage(bare_jid, buf, |
290 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
290 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
291 g_free(buf); |
291 g_free(buf); |
292 } |
292 } |
|
293 g_free(bare_jid); |
293 return LM_HANDLER_RESULT_REMOVE_MESSAGE; |
294 return LM_HANDLER_RESULT_REMOVE_MESSAGE; |
294 } |
295 } |
295 |
296 |
296 static LmHandlerResult cb_time(LmMessageHandler *h, LmConnection *c, |
297 static LmHandlerResult cb_time(LmMessageHandler *h, LmConnection *c, |
297 LmMessage *m, gpointer user_data) |
298 LmMessage *m, gpointer user_data) |
298 { |
299 { |
299 LmMessageNode *ansqry; |
300 LmMessageNode *ansqry; |
300 const char *p, *bjid; |
301 const char *p, *bjid; |
301 char *buf, *tmp; |
302 char *bare_jid; |
|
303 char *buf; |
302 |
304 |
303 // Check IQ result sender |
305 // Check IQ result sender |
304 bjid = lm_message_get_from(m); |
306 bjid = lm_message_get_from(m); |
305 if (!bjid) |
307 if (!bjid) |
306 bjid = lm_connection_get_jid(lconnection); // No from means our JID... |
308 bjid = lm_connection_get_jid(lconnection); // No from means our JID... |
325 |
327 |
326 buf = g_strdup_printf("Received IQ:time result from <%s>", bjid); |
328 buf = g_strdup_printf("Received IQ:time result from <%s>", bjid); |
327 scr_LogPrint(LPRINT_LOGNORM, "%s", buf); |
329 scr_LogPrint(LPRINT_LOGNORM, "%s", buf); |
328 |
330 |
329 // bjid should now really be the "bare JID", let's strip the resource |
331 // bjid should now really be the "bare JID", let's strip the resource |
330 tmp = strchr(bjid, JID_RESOURCE_SEPARATOR); |
332 bare_jid = jidtodisp(bjid); |
331 if (tmp) *tmp = '\0'; |
333 |
332 |
334 scr_WriteIncomingMessage(bare_jid, buf, 0, HBB_PREFIX_INFO, 0); |
333 scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO, 0); |
|
334 g_free(buf); |
335 g_free(buf); |
335 |
336 |
336 // Get result data... |
337 // Get result data... |
337 p = lm_message_node_get_child_value(ansqry, "utc"); |
338 p = lm_message_node_get_child_value(ansqry, "utc"); |
338 if (p && *p) { |
339 if (p && *p) { |
339 buf = g_strdup_printf("UTC: %s", p); |
340 buf = g_strdup_printf("UTC: %s", p); |
340 scr_WriteIncomingMessage(bjid, buf, |
341 scr_WriteIncomingMessage(bare_jid, buf, |
341 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
342 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
342 g_free(buf); |
343 g_free(buf); |
343 } |
344 } |
344 p = lm_message_node_get_child_value(ansqry, "tzo"); |
345 p = lm_message_node_get_child_value(ansqry, "tzo"); |
345 if (p && *p) { |
346 if (p && *p) { |
346 buf = g_strdup_printf("TZ: %s", p); |
347 buf = g_strdup_printf("TZ: %s", p); |
347 scr_WriteIncomingMessage(bjid, buf, |
348 scr_WriteIncomingMessage(bare_jid, buf, |
348 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
349 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
349 g_free(buf); |
350 g_free(buf); |
350 } |
351 } |
351 p = lm_message_node_get_child_value(ansqry, "display"); |
352 p = lm_message_node_get_child_value(ansqry, "display"); |
352 if (p && *p) { |
353 if (p && *p) { |
353 buf = g_strdup_printf("Time: %s", p); |
354 buf = g_strdup_printf("Time: %s", p); |
354 scr_WriteIncomingMessage(bjid, buf, |
355 scr_WriteIncomingMessage(bare_jid, buf, |
355 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
356 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
356 g_free(buf); |
357 g_free(buf); |
357 } |
358 } |
|
359 g_free(bare_jid); |
358 return LM_HANDLER_RESULT_REMOVE_MESSAGE; |
360 return LM_HANDLER_RESULT_REMOVE_MESSAGE; |
359 } |
361 } |
360 |
362 |
361 static LmHandlerResult cb_last(LmMessageHandler *h, LmConnection *c, |
363 static LmHandlerResult cb_last(LmMessageHandler *h, LmConnection *c, |
362 LmMessage *m, gpointer user_data) |
364 LmMessage *m, gpointer user_data) |
363 { |
365 { |
364 LmMessageNode *ansqry; |
366 LmMessageNode *ansqry; |
365 const char *p, *bjid; |
367 const char *p, *bjid; |
366 char *buf, *tmp; |
368 char *bare_jid; |
|
369 char *buf; |
367 |
370 |
368 // Check IQ result sender |
371 // Check IQ result sender |
369 bjid = lm_message_get_from(m); |
372 bjid = lm_message_get_from(m); |
370 if (!bjid) |
373 if (!bjid) |
371 bjid = lm_connection_get_jid(lconnection); // No from means our JID... |
374 bjid = lm_connection_get_jid(lconnection); // No from means our JID... |
390 |
393 |
391 buf = g_strdup_printf("Received IQ:last result from <%s>", bjid); |
394 buf = g_strdup_printf("Received IQ:last result from <%s>", bjid); |
392 scr_LogPrint(LPRINT_LOGNORM, "%s", buf); |
395 scr_LogPrint(LPRINT_LOGNORM, "%s", buf); |
393 |
396 |
394 // bjid should now really be the "bare JID", let's strip the resource |
397 // bjid should now really be the "bare JID", let's strip the resource |
395 tmp = strchr(bjid, JID_RESOURCE_SEPARATOR); |
398 bare_jid = jidtodisp(bjid); |
396 if (tmp) *tmp = '\0'; |
399 |
397 |
400 scr_WriteIncomingMessage(bare_jid, buf, 0, HBB_PREFIX_INFO, 0); |
398 scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO, 0); |
|
399 g_free(buf); |
401 g_free(buf); |
400 |
402 |
401 // Get result data... |
403 // Get result data... |
402 p = lm_message_node_get_attribute(ansqry, "seconds"); |
404 p = lm_message_node_get_attribute(ansqry, "seconds"); |
403 if (p) { |
405 if (p) { |
412 } |
414 } |
413 // hh:mm:ss |
415 // hh:mm:ss |
414 g_string_append_printf(sbuf, "%02ld:", s/3600L); |
416 g_string_append_printf(sbuf, "%02ld:", s/3600L); |
415 s %= 3600L; |
417 s %= 3600L; |
416 g_string_append_printf(sbuf, "%02ld:%02ld", s/60L, s%60L); |
418 g_string_append_printf(sbuf, "%02ld:%02ld", s/60L, s%60L); |
417 scr_WriteIncomingMessage(bjid, sbuf->str, |
419 scr_WriteIncomingMessage(bare_jid, sbuf->str, |
418 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
420 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
419 g_string_free(sbuf, TRUE); |
421 g_string_free(sbuf, TRUE); |
420 } else { |
422 } else { |
421 scr_WriteIncomingMessage(bjid, "No idle time reported.", |
423 scr_WriteIncomingMessage(bare_jid, "No idle time reported.", |
422 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
424 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
423 } |
425 } |
424 p = lm_message_node_get_value(ansqry); |
426 p = lm_message_node_get_value(ansqry); |
425 if (p) { |
427 if (p) { |
426 buf = g_strdup_printf("Status message: %s", p); |
428 buf = g_strdup_printf("Status message: %s", p); |
427 scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO, 0); |
429 scr_WriteIncomingMessage(bare_jid, buf, 0, HBB_PREFIX_INFO, 0); |
428 g_free(buf); |
430 g_free(buf); |
429 } |
431 } |
|
432 g_free(bare_jid); |
430 return LM_HANDLER_RESULT_REMOVE_MESSAGE; |
433 return LM_HANDLER_RESULT_REMOVE_MESSAGE; |
431 } |
434 } |
432 |
435 |
433 static void display_vcard_item(const char *bjid, const char *label, |
436 static void display_vcard_item(const char *bjid, const char *label, |
434 enum vcard_attr vcard_attrib, const char *text) |
437 enum vcard_attr vcard_attrib, const char *text) |
574 g_free(buf); |
578 g_free(buf); |
575 return LM_HANDLER_RESULT_REMOVE_MESSAGE; |
579 return LM_HANDLER_RESULT_REMOVE_MESSAGE; |
576 } |
580 } |
577 |
581 |
578 // bjid should really be the "bare JID", let's strip the resource |
582 // bjid should really be the "bare JID", let's strip the resource |
579 tmp = strchr(bjid, JID_RESOURCE_SEPARATOR); |
583 bare_jid = jidtodisp(bjid); |
580 if (tmp) *tmp = '\0'; |
584 |
581 |
585 scr_WriteIncomingMessage(bare_jid, buf, 0, HBB_PREFIX_INFO, 0); |
582 scr_WriteIncomingMessage(bjid, buf, 0, HBB_PREFIX_INFO, 0); |
|
583 g_free(buf); |
586 g_free(buf); |
584 |
587 |
585 // Get result data... |
588 // Get result data... |
586 handle_vcard_node(bjid, ansqry); |
589 handle_vcard_node(bare_jid, ansqry); |
|
590 g_free(bare_jid); |
587 return LM_HANDLER_RESULT_REMOVE_MESSAGE; |
591 return LM_HANDLER_RESULT_REMOVE_MESSAGE; |
588 } |
592 } |
589 |
593 |
590 static void storage_bookmarks_parse_conference(LmMessageNode *node) |
594 static void storage_bookmarks_parse_conference(LmMessageNode *node) |
591 { |
595 { |