summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordefanor <defanor@uberspace.net>2021-01-06 20:41:59 +0300
committerdefanor <defanor@uberspace.net>2021-01-06 20:41:59 +0300
commite9bffd1bb839404fe40c739631a588dbbaf05a9a (patch)
tree5bbe0f9b0642ba5960f8731ace7a686c5758eedf
parentb0e0ae5bfaba96a9550dd7ee337b16f3559686c4 (diff)
Print presence "show" and "status" in the console
-rw-r--r--src/rexmpp_console.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/rexmpp_console.c b/src/rexmpp_console.c
index e5192df..05f28a0 100644
--- a/src/rexmpp_console.c
+++ b/src/rexmpp_console.c
@@ -133,10 +133,25 @@ void rexmpp_console_on_recv (rexmpp_t *s, xmlNodePtr node) {
} else if (presence_type != NULL && ! strcmp(presence_type, "unsubscribed")) {
rexmpp_console_printf(s, "%s denies a presence subscription\n", from);
} else {
- rexmpp_console_printf(s, "%s is %s\n", from,
+ rexmpp_console_printf(s, "%s is %s", from,
(presence_type == NULL) ?
"available" :
presence_type);
+ xmlNodePtr show = rexmpp_xml_find_child(node, "jabber:client", "show");
+ if (show != NULL) {
+ char *show_str = xmlNodeGetContent(show);
+ rexmpp_console_printf(s, " (%s)", show_str);
+ free(show_str);
+ show_str = NULL;
+ }
+ xmlNodePtr status = rexmpp_xml_find_child(node, "jabber:client", "status");
+ if (status != NULL) {
+ char *status_str = xmlNodeGetContent(status);
+ rexmpp_console_printf(s, ": %s", status_str);
+ free(status_str);
+ status_str = NULL;
+ }
+ rexmpp_console_printf(s, "\n");
}
if (presence_type != NULL) {
free(presence_type);