Add command subcommands: list and exec
Also handle list result
This commit is contained in:
@@ -2300,19 +2300,24 @@ static struct cmd_t command_defs[] =
|
||||
"/export ~/contacts.csv")
|
||||
},
|
||||
|
||||
{ "/command",
|
||||
parse_args, 1, 1, NULL,
|
||||
CMD_NOSUBFUNCS
|
||||
CMD_MAINFUNC(cmd_command)
|
||||
{ "/cmd",
|
||||
parse_args, 1, 3, NULL,
|
||||
CMD_SUBFUNCS(
|
||||
{ "list", cmd_command_list },
|
||||
{ "exec", cmd_command_exec })
|
||||
CMD_NOMAINFUNC
|
||||
CMD_NOTAGS
|
||||
CMD_SYN(
|
||||
"/command <cmd>")
|
||||
"/otr list",
|
||||
"/otr exec <command>")
|
||||
CMD_DESC(
|
||||
"Execute an ad hoc command")
|
||||
"Execute ad hoc commands.")
|
||||
CMD_ARGS(
|
||||
{ "<cmd>", "Command to be executed" })
|
||||
{ "list", "List supported ad hoc commands." },
|
||||
{ "exec <command>", "Execute a command." })
|
||||
CMD_EXAMPLES(
|
||||
"/command ping")
|
||||
"/cmd list",
|
||||
"/cmd exec ping")
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -158,7 +158,8 @@ gboolean cmd_script(ProfWin *window, const char *const command, gchar **args);
|
||||
gboolean cmd_export(ProfWin *window, const char *const command, gchar **args);
|
||||
gboolean cmd_charset(ProfWin *window, const char *const command, gchar **args);
|
||||
gboolean cmd_console(ProfWin *window, const char *const command, gchar **args);
|
||||
gboolean cmd_command(ProfWin *window, const char *const command, gchar **args);
|
||||
gboolean cmd_command_list(ProfWin *window, const char *const command, gchar **args);
|
||||
gboolean cmd_command_exec(ProfWin *window, const char *const command, gchar **args);
|
||||
|
||||
gboolean cmd_plugins(ProfWin *window, const char *const command, gchar **args);
|
||||
gboolean cmd_plugins_sourcepath(ProfWin *window, const char *const command, gchar **args);
|
||||
|
||||
Reference in New Issue
Block a user