int exec_command_exec (void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { int i, length, count; char *text; struct t_exec_cmd *ptr_exec_cmd, *ptr_next_exec_cmd; /* make C compiler happy */ (void) data; (void) buffer; /* list running commands */ if ((argc == 1) || ((argc == 2) && (weechat_strcasecmp (argv[1], "-list") == 0))) { exec_command_list (); return WEECHAT_RC_OK; } /* send text to a running process */ if (weechat_strcasecmp (argv[1], "-in") == 0) { WEECHAT_COMMAND_MIN_ARGS(4, "-in"); ptr_exec_cmd = exec_command_search_running_id (argv[2]); if (ptr_exec_cmd && ptr_exec_cmd->hook) { length = strlen (argv_eol[3]) + 1 + 1; text = malloc (length); if (text) { snprintf (text, length, "%s\n", argv_eol[3]); weechat_hook_set (ptr_exec_cmd->hook, "stdin", text); free (text); } } return WEECHAT_RC_OK; } /* send text to a running process (if given), then close stdin */ if (weechat_strcasecmp (argv[1], "-inclose") == 0) { WEECHAT_COMMAND_MIN_ARGS(3, "-inclose"); ptr_exec_cmd = exec_command_search_running_id (argv[2]); if (ptr_exec_cmd && ptr_exec_cmd->hook) { if (argc > 3) { length = strlen (argv_eol[3]) + 1 + 1; text = malloc (length); if (text) { snprintf (text, length, "%s\n", argv_eol[3]); weechat_hook_set (ptr_exec_cmd->hook, "stdin", text); free (text); } } weechat_hook_set (ptr_exec_cmd->hook, "stdin_close", "1"); } return WEECHAT_RC_OK; } /* send a signal to a running process */ if (weechat_strcasecmp (argv[1], "-signal") == 0) { WEECHAT_COMMAND_MIN_ARGS(4, "-signal"); ptr_exec_cmd = exec_command_search_running_id (argv[2]); if (ptr_exec_cmd) weechat_hook_set (ptr_exec_cmd->hook, "signal", argv[3]); return WEECHAT_RC_OK; } /* send a KILL signal to a running process */ if (weechat_strcasecmp (argv[1], "-kill") == 0) { WEECHAT_COMMAND_MIN_ARGS(3, "-kill"); ptr_exec_cmd = exec_command_search_running_id (argv[2]); if (ptr_exec_cmd) weechat_hook_set (ptr_exec_cmd->hook, "signal", "kill"); return WEECHAT_RC_OK; } /* send a KILL signal to all running processes */ if (weechat_strcasecmp (argv[1], "-killall") == 0) { for (ptr_exec_cmd = exec_cmds; ptr_exec_cmd; ptr_exec_cmd = ptr_exec_cmd->next_cmd) { if (ptr_exec_cmd->hook) { weechat_hook_set (ptr_exec_cmd->hook, "signal", "kill"); } } return WEECHAT_RC_OK; } /* set a hook property */ if (weechat_strcasecmp (argv[1], "-set") == 0) { WEECHAT_COMMAND_MIN_ARGS(5, "-set"); ptr_exec_cmd = exec_command_search_running_id (argv[2]); if (ptr_exec_cmd) weechat_hook_set (ptr_exec_cmd->hook, argv[3], argv_eol[4]); return WEECHAT_RC_OK; } /* delete terminated command(s) */ if (weechat_strcasecmp (argv[1], "-del") == 0) { WEECHAT_COMMAND_MIN_ARGS(3, "-del"); if (weechat_strcasecmp (argv[2], "-all") == 0) { count = 0; ptr_exec_cmd = exec_cmds; while (ptr_exec_cmd) { ptr_next_exec_cmd = ptr_exec_cmd->next_cmd; if (!ptr_exec_cmd->hook) { exec_free (ptr_exec_cmd); count++; } ptr_exec_cmd = ptr_next_exec_cmd; } weechat_printf (NULL, _("%d commands removed"), count); } else { for (i = 2; i < argc; i++) { ptr_exec_cmd = exec_search_by_id (argv[i]); if (ptr_exec_cmd) { if (ptr_exec_cmd->hook) { weechat_printf (NULL, _("%s%s: command with id \"%s\" is still " "running"), weechat_prefix ("error"), EXEC_PLUGIN_NAME, argv[i]); } else { exec_free (ptr_exec_cmd); weechat_printf (NULL, _("Command \"%s\" removed"), argv[i]); } } else { weechat_printf (NULL, _("%s%s: command id \"%s\" not found"), weechat_prefix ("error"), EXEC_PLUGIN_NAME, argv[i]); } } } return WEECHAT_RC_OK; } return exec_command_run (buffer, argc, argv, argv_eol, 1); }
int weechat_aspell_command_cb (void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { char *dicts; const char *default_dict; struct t_infolist *infolist; int number; /* make C compiler happy */ (void) data; if (argc == 1) { /* display aspell status */ weechat_printf (NULL, ""); weechat_printf (NULL, /* TRANSLATORS: second "%s" is "aspell" or "enchant" */ _("%s (using %s)"), (aspell_enabled) ? _("Spell checking is enabled") : _("Spell checking is disabled"), #ifdef USE_ENCHANT "enchant" #else "aspell" #endif /* USE_ENCHANT */ ); default_dict = weechat_config_string (weechat_aspell_config_check_default_dict); weechat_printf (NULL, _("Default dictionary: %s"), (default_dict && default_dict[0]) ? default_dict : _("(not set)")); number = 0; infolist = weechat_infolist_get ("option", NULL, "aspell.dict.*"); if (infolist) { while (weechat_infolist_next (infolist)) { if (number == 0) weechat_printf (NULL, _("Specific dictionaries on buffers:")); number++; weechat_printf (NULL, " %s: %s", weechat_infolist_string (infolist, "option_name"), weechat_infolist_string (infolist, "value")); } weechat_infolist_free (infolist); } return WEECHAT_RC_OK; } /* enable aspell */ if (weechat_strcasecmp (argv[1], "enable") == 0) { weechat_config_option_set (weechat_aspell_config_check_enabled, "1", 1); weechat_printf (NULL, _("Aspell enabled")); return WEECHAT_RC_OK; } /* disable aspell */ if (weechat_strcasecmp (argv[1], "disable") == 0) { weechat_config_option_set (weechat_aspell_config_check_enabled, "0", 1); weechat_printf (NULL, _("Aspell disabled")); return WEECHAT_RC_OK; } /* toggle aspell */ if (weechat_strcasecmp (argv[1], "toggle") == 0) { if (aspell_enabled) { weechat_config_option_set (weechat_aspell_config_check_enabled, "0", 1); weechat_printf (NULL, _("Aspell disabled")); } else { weechat_config_option_set (weechat_aspell_config_check_enabled, "1", 1); weechat_printf (NULL, _("Aspell enabled")); } return WEECHAT_RC_OK; } /* list of dictionaries */ if (weechat_strcasecmp (argv[1], "listdict") == 0) { weechat_aspell_command_speller_list_dicts (); return WEECHAT_RC_OK; } /* set dictionary for current buffer */ if (weechat_strcasecmp (argv[1], "setdict") == 0) { WEECHAT_COMMAND_MIN_ARGS(3, "setdict"); dicts = weechat_string_replace (argv_eol[2], " ", ""); weechat_aspell_command_set_dict (buffer, (dicts) ? dicts : argv[2]); if (dicts) free (dicts); return WEECHAT_RC_OK; } /* delete dictionary used on current buffer */ if (weechat_strcasecmp (argv[1], "deldict") == 0) { weechat_aspell_command_set_dict (buffer, NULL); return WEECHAT_RC_OK; } /* add word to personal dictionary */ if (weechat_strcasecmp (argv[1], "addword") == 0) { WEECHAT_COMMAND_MIN_ARGS(3, "addword"); if (argc > 3) { /* use a given dict */ weechat_aspell_command_add_word (buffer, argv[2], argv_eol[3]); } else { /* use default dict */ weechat_aspell_command_add_word (buffer, NULL, argv_eol[2]); } return WEECHAT_RC_OK; } WEECHAT_COMMAND_ERROR; }