about summary refs log tree commit diff stats
path: root/src/command/cmd_funcs.c
diff options
context:
space:
mode:
authorPaul Fariello <paul@fariello.eu>2018-03-22 04:47:52 +0220
committerPaul Fariello <paul@fariello.eu>2018-09-05 13:49:40 +0200
commitc9f6a78f574ce2a90ae7871a08a5ddcfb9ab7270 (patch)
treef56d2e25e1d5d127c57dd78c82634674774687f7 /src/command/cmd_funcs.c
parentca022ec75e12d28e6ce71447fe877b90518de310 (diff)
downloadprofani-tty-c9f6a78f574ce2a90ae7871a08a5ddcfb9ab7270.tar.gz
Add command subcommands: list and exec
Also handle list result
Diffstat (limited to 'src/command/cmd_funcs.c')
-rw-r--r--src/command/cmd_funcs.c29
1 files changed, 26 insertions, 3 deletions
diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c
index 048bdd6c..2e606ef5 100644
--- a/src/command/cmd_funcs.c
+++ b/src/command/cmd_funcs.c
@@ -7470,7 +7470,7 @@ cmd_encwarn(ProfWin *window, const char *const command, gchar **args)
 }
 
 gboolean
-cmd_command(ProfWin *window, const char *const command, gchar **args)
+cmd_command_list(ProfWin *window, const char *const command, gchar **args)
 {
     jabber_conn_status_t conn_status = connection_get_status();
 
@@ -7479,14 +7479,37 @@ cmd_command(ProfWin *window, const char *const command, gchar **args)
         return TRUE;
     }
 
-    if (args[0] == NULL && connection_supports(XMPP_FEATURE_COMMANDS) == FALSE) {
+    if (connection_supports(XMPP_FEATURE_COMMANDS) == FALSE) {
         cons_show("Server does not support ad hoc commands.");
         return TRUE;
     }
 
     ProfMucWin *mucwin = (ProfMucWin*)window;
 
-    iq_send_command(mucwin->roomjid, args[0]);
+    iq_command_list(mucwin->roomjid);
+
+    cons_show("List available ad hoc commands");
+    return TRUE;
+}
+
+gboolean
+cmd_command_exec(ProfWin *window, const char *const command, gchar **args)
+{
+    jabber_conn_status_t conn_status = connection_get_status();
+
+    if (conn_status != JABBER_CONNECTED) {
+        cons_show("You are not currently connected.");
+        return TRUE;
+    }
+
+    if (connection_supports(XMPP_FEATURE_COMMANDS) == FALSE) {
+        cons_show("Server does not support ad hoc commands.");
+        return TRUE;
+    }
+
+    ProfMucWin *mucwin = (ProfMucWin*)window;
+
+    iq_command_exec(mucwin->roomjid, args[0]);
 
     cons_show("Execute %s...", args[0]);
     return TRUE;