about summary refs log tree commit diff stats
path: root/src/command/commands.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/command/commands.c')
-rw-r--r--src/command/commands.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/command/commands.c b/src/command/commands.c
index ede1b395..5e7146fc 100644
--- a/src/command/commands.c
+++ b/src/command/commands.c
@@ -2104,6 +2104,30 @@ cmd_software(ProfWin *window, const char * const command, gchar **args)
             }
             break;
         case WIN_CHAT:
+            if (args[0]) {
+                cons_show("No parameter needed to /software when in chat.");
+            } else {
+                ProfChatWin *chatwin = (ProfChatWin*)window;
+                assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK);
+
+                char *resource = NULL;
+                ChatSession *session = chat_session_get(chatwin->barejid);
+                if (chatwin->resource_override) {
+                    resource = chatwin->resource_override;
+                } else if (session && session->resource) {
+                    resource = session->resource;
+                }
+
+                if (resource) {
+                    GString *fulljid = g_string_new(chatwin->barejid);
+                    g_string_append_printf(fulljid, "/%s", resource);
+                    iq_send_software_version(fulljid->str);
+                    g_string_free(fulljid, TRUE);
+                } else {
+                    win_println(window, 0, "Unknown resource for /software command.");
+                }
+            }
+            break;
         case WIN_CONSOLE:
             if (args[0]) {
                 Jid *myJid = jid_create(jabber_get_fulljid());