1 /* 2 * cmd_funcs.h 3 * vim: expandtab:ts=4:sts=4:sw=4 4 * 5 * Copyright (C) 2012 - 2019 James Booth <boothj5@gmail.com> 6 * Copyright (C) 2019 Michael Vetter <jubalh@iodoru.org> 7 * 8 * This file is part of Profanity. 9 * 10 * Profanity is free software: you can redistribute it and/or modify 11 * it under the terms of the GNU General Public License as published by 12 * the Free Software Foundation, either version 3 of the License, or 13 * (at your option) any later version. 14 * 15 * Profanity is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU General Public License for more details. 19 * 20 * You should have received a copy of the GNU General Public License 21 * along with Profanity. If not, see <https://www.gnu.org/licenses/>. 22 * 23 * In addition, as a special exception, the copyright holders give permission to 24 * link the code of portions of this program with the OpenSSL library under 25 * certain conditions as described in each individual source file, and 26 * distribute linked combinations including the two. 27 * 28 * You must obey the GNU General Public License in all respects for all of the 29 * code used other than OpenSSL. If you modify file(s) with this exception, you 30 * may extend this exception to your version of the file(s), but you are not 31 * obligated to do so. If you do not wish to do so, delete this exception 32 * statement from your version. If you delete this exception statement from all 33 * source files in the program, then also delete it here. 34 * 35 */ 36 37 #ifndef COMMAND_CMD_FUNCS_H 38 #define COMMAND_CMD_FUNCS_H 39 40 #include "ui/win_types.h" 41 42 // Command help strings 43 typedef struct cmd_help_t 44 { 45 gchar* tags[20]; 46 gchar* synopsis[50]; 47 gchar* desc; 48 gchar* args[128][2]; 49 gchar* examples[20]; 50 } CommandHelp; 51 52 /* 53 * Command structure 54 * 55 * cmd - The command string including leading '/' 56 * parser - The function used to parse arguments 57 * min_args - Minimum number of arguments 58 * max_args - Maximum number of arguments, -1 for infinite 59 * setting_func - Function to display current settings to the console 60 * sub_funcs - Optional list of functions mapped to the first argument 61 * func - Main function to call when no arguments, or sub_funcs not implemented 62 * help - A help struct containing usage info etc 63 */ 64 typedef struct cmd_t 65 { 66 gchar* cmd; 67 gchar** (*parser)(const char* const inp, int min, int max, gboolean* result); 68 int min_args; 69 int max_args; 70 void (*setting_func)(void); 71 void* sub_funcs[50][2]; 72 gboolean (*func)(ProfWin* window, const char* const command, gchar** args); 73 CommandHelp help; 74 } Command; 75 76 gboolean cmd_process_input(ProfWin* window, char* inp); 77 void cmd_execute_connect(ProfWin* window, const char* const account); 78 79 gboolean cmd_about(ProfWin* window, const char* const command, gchar** args); 80 gboolean cmd_autoaway(ProfWin* window, const char* const command, gchar** args); 81 gboolean cmd_autoconnect(ProfWin* window, const char* const command, gchar** args); 82 gboolean cmd_autoping(ProfWin* window, const char* const command, gchar** args); 83 gboolean cmd_beep(ProfWin* window, const char* const command, gchar** args); 84 gboolean cmd_caps(ProfWin* window, const char* const command, gchar** args); 85 gboolean cmd_logging(ProfWin* window, const char* const command, gchar** args); 86 gboolean cmd_clear(ProfWin* window, const char* const command, gchar** args); 87 gboolean cmd_close(ProfWin* window, const char* const command, gchar** args); 88 gboolean cmd_connect(ProfWin* window, const char* const command, gchar** args); 89 gboolean cmd_disco(ProfWin* window, const char* const command, gchar** args); 90 gboolean cmd_sendfile(ProfWin* window, const char* const command, gchar** args); 91 gboolean cmd_lastactivity(ProfWin* window, const char* const command, gchar** args); 92 gboolean cmd_disconnect(ProfWin* window, const char* const command, gchar** args); 93 gboolean cmd_flash(ProfWin* window, const char* const command, gchar** args); 94 gboolean cmd_tray(ProfWin* window, const char* const command, gchar** args); 95 gboolean cmd_gone(ProfWin* window, const char* const command, gchar** args); 96 gboolean cmd_group(ProfWin* window, const char* const command, gchar** args); 97 gboolean cmd_help(ProfWin* window, const char* const command, gchar** args); 98 gboolean cmd_history(ProfWin* window, const char* const command, gchar** args); 99 gboolean cmd_carbons(ProfWin* window, const char* const command, gchar** args); 100 gboolean cmd_receipts(ProfWin* window, const char* const command, gchar** args); 101 gboolean cmd_info(ProfWin* window, const char* const command, gchar** args); 102 gboolean cmd_intype(ProfWin* window, const char* const command, gchar** args); 103 gboolean cmd_invite(ProfWin* window, const char* const command, gchar** args); 104 gboolean cmd_join(ProfWin* window, const char* const command, gchar** args); 105 gboolean cmd_leave(ProfWin* window, const char* const command, gchar** args); 106 gboolean cmd_log(ProfWin* window, const char* const command, gchar** args); 107 gboolean cmd_msg(ProfWin* window, const char* const command, gchar** args); 108 gboolean cmd_nick(ProfWin* window, const char* const command, gchar** args); 109 gboolean cmd_notify(ProfWin* window, const char* const command, gchar** args); 110 gboolean cmd_pgp(ProfWin* window, const char* const command, gchar** args); 111 #ifdef HAVE_LIBGPGME 112 gboolean cmd_ox(ProfWin* window, const char* const command, gchar** args); 113 #endif // HAVE_LIBGPGME 114 gboolean cmd_outtype(ProfWin* window, const char* const command, gchar** args); 115 gboolean cmd_prefs(ProfWin* window, const char* const command, gchar** args); 116 gboolean cmd_priority(ProfWin* window, const char* const command, gchar** args); 117 gboolean cmd_quit(ProfWin* window, const char* const command, gchar** args); 118 gboolean cmd_reconnect(ProfWin* window, const char* const command, gchar** args); 119 gboolean cmd_room(ProfWin* window, const char* const command, gchar** args); 120 gboolean cmd_rooms(ProfWin* window, const char* const command, gchar** args); 121 gboolean cmd_bookmark(ProfWin* window, const char* const command, gchar** args); 122 gboolean cmd_bookmark_ignore(ProfWin* window, const char* const command, gchar** args); 123 gboolean cmd_roster(ProfWin* window, const char* const command, gchar** args); 124 gboolean cmd_software(ProfWin* window, const char* const command, gchar** args); 125 gboolean cmd_splash(ProfWin* window, const char* const command, gchar** args); 126 gboolean cmd_states(ProfWin* window, const char* const command, gchar** args); 127 gboolean cmd_status_get(ProfWin* window, const char* const command, gchar** args); 128 gboolean cmd_status_set(ProfWin* window, const char* const command, gchar** args); 129 gboolean cmd_sub(ProfWin* window, const char* const command, gchar** args); 130 gboolean cmd_theme(ProfWin* window, const char* const command, gchar** args); 131 gboolean cmd_wintitle(ProfWin* window, const char* const command, gchar** args); 132 gboolean cmd_vercheck(ProfWin* window, const char* const command, gchar** args); 133 gboolean cmd_who(ProfWin* window, const char* const command, gchar** args); 134 gboolean cmd_win(ProfWin* window, const char* const command, gchar** args); 135 gboolean cmd_alias(ProfWin* window, const char* const command, gchar** args); 136 gboolean cmd_xmlconsole(ProfWin* window, const char* const command, gchar** args); 137 gboolean cmd_ping(ProfWin* window, const char* const command, gchar** args); 138 gboolean cmd_form(ProfWin* window, const char* const command, gchar** args); 139 gboolean cmd_occupants(ProfWin* window, const char* const command, gchar** args); 140 gboolean cmd_kick(ProfWin* window, const char* const command, gchar** args); 141 gboolean cmd_ban(ProfWin* window, const char* const command, gchar** args); 142 gboolean cmd_subject(ProfWin* window, const char* const command, gchar** args); 143 gboolean cmd_affiliation(ProfWin* window, const char* const command, gchar** args); 144 gboolean cmd_role(ProfWin* window, const char* const command, gchar** args); 145 gboolean cmd_privileges(ProfWin* window, const char* const command, gchar** args); 146 gboolean cmd_presence(ProfWin* window, const char* const command, gchar** args); 147 gboolean cmd_wrap(ProfWin* window, const char* const command, gchar** args); 148 gboolean cmd_time(ProfWin* window, const char* const command, gchar** args); 149 gboolean cmd_resource(ProfWin* window, const char* const command, gchar** args); 150 gboolean cmd_inpblock(ProfWin* window, const char* const command, gchar** args); 151 gboolean cmd_titlebar(ProfWin* window, const char* const command, gchar** args); 152 gboolean cmd_titlebar_show_hide(ProfWin* window, const char* const command, gchar** args); 153 gboolean cmd_mainwin(ProfWin* window, const char* const command, gchar** args); 154 gboolean cmd_statusbar(ProfWin* window, const char* const command, gchar** args); 155 gboolean cmd_inputwin(ProfWin* window, const char* const command, gchar** args); 156 gboolean cmd_script(ProfWin* window, const char* const command, gchar** args); 157 gboolean cmd_export(ProfWin* window, const char* const command, gchar** args); 158 gboolean cmd_charset(ProfWin* window, const char* const command, gchar** args); 159 gboolean cmd_console(ProfWin* window, const char* const command, gchar** args); 160 gboolean cmd_command_list(ProfWin* window, const char* const command, gchar** args); 161 gboolean cmd_command_exec(ProfWin* window, const char* const command, gchar** args); 162 gboolean cmd_change_password(ProfWin* window, const char* const command, gchar** args); 163 164 gboolean cmd_plugins(ProfWin* window, const char* const command, gchar** args); 165 gboolean cmd_plugins_sourcepath(ProfWin* window, const char* const command, gchar** args); 166 gboolean cmd_plugins_install(ProfWin* window, const char* const command, gchar** args); 167 gboolean cmd_plugins_update(ProfWin* window, const char* const command, gchar** args); 168 gboolean cmd_plugins_uninstall(ProfWin* window, const char* const command, gchar** args); 169 gboolean cmd_plugins_load(ProfWin* window, const char* const command, gchar** args); 170 gboolean cmd_plugins_unload(ProfWin* window, const char* const command, gchar** args); 171 gboolean cmd_plugins_reload(ProfWin* window, const char* const command, gchar** args); 172 gboolean cmd_plugins_python_version(ProfWin* window, const char* const command, gchar** args); 173 174 gboolean cmd_blocked(ProfWin* window, const char* const command, gchar** args); 175 176 gboolean cmd_account(ProfWin* window, const char* const command, gchar** args); 177 gboolean cmd_account_list(ProfWin* window, const char* const command, gchar** args); 178 gboolean cmd_account_show(ProfWin* window, const char* const command, gchar** args); 179 gboolean cmd_account_add(ProfWin* window, const char* const command, gchar** args); 180 gboolean cmd_account_remove(ProfWin* window, const char* const command, gchar** args); 181 gboolean cmd_account_enable(ProfWin* window, const char* const command, gchar** args); 182 gboolean cmd_account_disable(ProfWin* window, const char* const command, gchar** args); 183 gboolean cmd_account_rename(ProfWin* window, const char* const command, gchar** args); 184 gboolean cmd_account_default(ProfWin* window, const char* const command, gchar** args); 185 gboolean cmd_account_set(ProfWin* window, const char* const command, gchar** args); 186 gboolean cmd_account_clear(ProfWin* window, const char* const command, gchar** args); 187 188 gboolean cmd_tls_certpath(ProfWin* window, const char* const command, gchar** args); 189 gboolean cmd_tls_trust(ProfWin* window, const char* const command, gchar** args); 190 gboolean cmd_tls_trusted(ProfWin* window, const char* const command, gchar** args); 191 gboolean cmd_tls_revoke(ProfWin* window, const char* const command, gchar** args); 192 gboolean cmd_tls_cert(ProfWin* window, const char* const command, gchar** args); 193 194 gboolean cmd_otr_char(ProfWin* window, const char* const command, gchar** args); 195 gboolean cmd_otr_log(ProfWin* window, const char* const command, gchar** args); 196 gboolean cmd_otr_libver(ProfWin* window, const char* const command, gchar** args); 197 gboolean cmd_otr_policy(ProfWin* window, const char* const command, gchar** args); 198 gboolean cmd_otr_gen(ProfWin* window, const char* const command, gchar** args); 199 gboolean cmd_otr_myfp(ProfWin* window, const char* const command, gchar** args); 200 gboolean cmd_otr_theirfp(ProfWin* window, const char* const command, gchar** args); 201 gboolean cmd_otr_start(ProfWin* window, const char* const command, gchar** args); 202 gboolean cmd_otr_end(ProfWin* window, const char* const command, gchar** args); 203 gboolean cmd_otr_trust(ProfWin* window, const char* const command, gchar** args); 204 gboolean cmd_otr_untrust(ProfWin* window, const char* const command, gchar** args); 205 gboolean cmd_otr_secret(ProfWin* window, const char* const command, gchar** args); 206 gboolean cmd_otr_question(ProfWin* window, const char* const command, gchar** args); 207 gboolean cmd_otr_answer(ProfWin* window, const char* const command, gchar** args); 208 gboolean cmd_otr_sendfile(ProfWin* window, const char* const command, gchar** args); 209 210 gboolean cmd_wins(ProfWin* window, const char* const command, gchar** args); 211 gboolean cmd_wins_unread(ProfWin* window, const char* const command, gchar** args); 212 gboolean cmd_wins_attention(ProfWin* window, const char* const command, gchar** args); 213 gboolean cmd_wins_prune(ProfWin* window, const char* const command, gchar** args); 214 gboolean cmd_wins_swap(ProfWin* window, const char* const command, gchar** args); 215 216 gboolean cmd_form_field(ProfWin* window, char* tag, gchar** args); 217 218 gboolean cmd_omemo_gen(ProfWin* window, const char* const command, gchar** args); 219 gboolean cmd_omemo_char(ProfWin* window, const char* const command, gchar** args); 220 gboolean cmd_omemo_log(ProfWin* window, const char* const command, gchar** args); 221 gboolean cmd_omemo_start(ProfWin* window, const char* const command, gchar** args); 222 gboolean cmd_omemo_end(ProfWin* window, const char* const command, gchar** args); 223 gboolean cmd_omemo_fingerprint(ProfWin* window, const char* const command, gchar** args); 224 gboolean cmd_omemo_trust(ProfWin* window, const char* const command, gchar** args); 225 gboolean cmd_omemo_untrust(ProfWin* window, const char* const command, gchar** args); 226 gboolean cmd_omemo_trust_mode(ProfWin* window, const char* const command, gchar** args); 227 gboolean cmd_omemo_policy(ProfWin* window, const char* const command, gchar** args); 228 gboolean cmd_omemo_clear_device_list(ProfWin* window, const char* const command, gchar** args); 229 230 gboolean cmd_save(ProfWin* window, const char* const command, gchar** args); 231 gboolean cmd_reload(ProfWin* window, const char* const command, gchar** args); 232 233 gboolean cmd_paste(ProfWin* window, const char* const command, gchar** args); 234 gboolean cmd_color(ProfWin* window, const char* const command, gchar** args); 235 gboolean cmd_avatar(ProfWin* window, const char* const command, gchar** args); 236 gboolean cmd_os(ProfWin* window, const char* const command, gchar** args); 237 gboolean cmd_correction(ProfWin* window, const char* const command, gchar** args); 238 gboolean cmd_correct(ProfWin* window, const char* const command, gchar** args); 239 gboolean cmd_slashguard(ProfWin* window, const char* const command, gchar** args); 240 gboolean cmd_serversoftware(ProfWin* window, const char* const command, gchar** args); 241 gboolean cmd_url_open(ProfWin* window, const char* const command, gchar** args); 242 gboolean cmd_url_save(ProfWin* window, const char* const command, gchar** args); 243 gboolean cmd_executable_avatar(ProfWin* window, const char* const command, gchar** args); 244 gboolean cmd_executable_urlopen(ProfWin* window, const char* const command, gchar** args); 245 gboolean cmd_executable_urlsave(ProfWin* window, const char* const command, gchar** args); 246 gboolean cmd_executable_editor(ProfWin* window, const char* const command, gchar** args); 247 gboolean cmd_mam(ProfWin* window, const char* const command, gchar** args); 248 gboolean cmd_editor(ProfWin* window, const char* const command, gchar** args); 249 gboolean cmd_silence(ProfWin* window, const char* const command, gchar** args); 250 251 #endif 252