int weechat_tcl_command_cb (const void *pointer, void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { char *ptr_name, *ptr_code, *path_script; int i, send_to_buffer_as_input, exec_commands; /* make C compiler happy */ (void) pointer; (void) data; if (argc == 1) { plugin_script_display_list (weechat_tcl_plugin, tcl_scripts, NULL, 0); } else if (argc == 2) { if (weechat_strcasecmp (argv[1], "list") == 0) { plugin_script_display_list (weechat_tcl_plugin, tcl_scripts, NULL, 0); } else if (weechat_strcasecmp (argv[1], "listfull") == 0) { plugin_script_display_list (weechat_tcl_plugin, tcl_scripts, NULL, 1); } else if (weechat_strcasecmp (argv[1], "autoload") == 0) { plugin_script_auto_load (weechat_tcl_plugin, &weechat_tcl_load_cb); } else if (weechat_strcasecmp (argv[1], "reload") == 0) { weechat_tcl_unload_all (); plugin_script_auto_load (weechat_tcl_plugin, &weechat_tcl_load_cb); } else if (weechat_strcasecmp (argv[1], "unload") == 0) { weechat_tcl_unload_all (); } else if (weechat_strcasecmp (argv[1], "version") == 0) { plugin_script_display_interpreter (weechat_tcl_plugin, 0); } else WEECHAT_COMMAND_ERROR; } else { if (weechat_strcasecmp (argv[1], "list") == 0) { plugin_script_display_list (weechat_tcl_plugin, tcl_scripts, argv_eol[2], 0); } else if (weechat_strcasecmp (argv[1], "listfull") == 0) { plugin_script_display_list (weechat_tcl_plugin, tcl_scripts, argv_eol[2], 1); } else if ((weechat_strcasecmp (argv[1], "load") == 0) || (weechat_strcasecmp (argv[1], "reload") == 0) || (weechat_strcasecmp (argv[1], "unload") == 0)) { ptr_name = argv_eol[2]; if (strncmp (ptr_name, "-q ", 3) == 0) { tcl_quiet = 1; ptr_name += 3; while (ptr_name[0] == ' ') { ptr_name++; } } if (weechat_strcasecmp (argv[1], "load") == 0) { /* load tcl script */ path_script = plugin_script_search_path (weechat_tcl_plugin, ptr_name); weechat_tcl_load ((path_script) ? path_script : ptr_name, NULL); if (path_script) free (path_script); } else if (weechat_strcasecmp (argv[1], "reload") == 0) { /* reload one tcl script */ weechat_tcl_reload_name (ptr_name); } else if (weechat_strcasecmp (argv[1], "unload") == 0) { /* unload tcl script */ weechat_tcl_unload_name (ptr_name); } tcl_quiet = 0; } else if (weechat_strcasecmp (argv[1], "eval") == 0) { send_to_buffer_as_input = 0; exec_commands = 0; ptr_code = argv_eol[2]; for (i = 2; i < argc; i++) { if (argv[i][0] == '-') { if (strcmp (argv[i], "-o") == 0) { if (i + 1 >= argc) WEECHAT_COMMAND_ERROR; send_to_buffer_as_input = 1; exec_commands = 0; ptr_code = argv_eol[i + 1]; } else if (strcmp (argv[i], "-oc") == 0) { if (i + 1 >= argc) WEECHAT_COMMAND_ERROR; send_to_buffer_as_input = 1; exec_commands = 1; ptr_code = argv_eol[i + 1]; } } else break; } if (!weechat_tcl_eval (buffer, send_to_buffer_as_input, exec_commands, ptr_code)) WEECHAT_COMMAND_ERROR; /* TODO: implement /tcl eval */ weechat_printf (NULL, _("%sCommand \"/%s eval\" is not yet implemented"), weechat_prefix ("error"), weechat_tcl_plugin->name); } else WEECHAT_COMMAND_ERROR; } return WEECHAT_RC_OK; }
int weechat_tcl_command_cb (void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { char *ptr_name, *path_script; /* make C compiler happy */ (void) data; (void) buffer; if (argc == 1) { plugin_script_display_list (weechat_tcl_plugin, tcl_scripts, NULL, 0); } else if (argc == 2) { if (weechat_strcasecmp (argv[1], "list") == 0) { plugin_script_display_list (weechat_tcl_plugin, tcl_scripts, NULL, 0); } else if (weechat_strcasecmp (argv[1], "listfull") == 0) { plugin_script_display_list (weechat_tcl_plugin, tcl_scripts, NULL, 1); } else if (weechat_strcasecmp (argv[1], "autoload") == 0) { plugin_script_auto_load (weechat_tcl_plugin, &weechat_tcl_load_cb); } else if (weechat_strcasecmp (argv[1], "reload") == 0) { weechat_tcl_unload_all (); plugin_script_auto_load (weechat_tcl_plugin, &weechat_tcl_load_cb); } else if (weechat_strcasecmp (argv[1], "unload") == 0) { weechat_tcl_unload_all (); } } else { if (weechat_strcasecmp (argv[1], "list") == 0) { plugin_script_display_list (weechat_tcl_plugin, tcl_scripts, argv_eol[2], 0); } else if (weechat_strcasecmp (argv[1], "listfull") == 0) { plugin_script_display_list (weechat_tcl_plugin, tcl_scripts, argv_eol[2], 1); } else if ((weechat_strcasecmp (argv[1], "load") == 0) || (weechat_strcasecmp (argv[1], "reload") == 0) || (weechat_strcasecmp (argv[1], "unload") == 0)) { ptr_name = argv_eol[2]; if (strncmp (ptr_name, "-q ", 3) == 0) { tcl_quiet = 1; ptr_name += 3; while (ptr_name[0] == ' ') { ptr_name++; } } if (weechat_strcasecmp (argv[1], "load") == 0) { /* load tcl script */ path_script = plugin_script_search_path (weechat_tcl_plugin, ptr_name); weechat_tcl_load ((path_script) ? path_script : ptr_name); if (path_script) free (path_script); } else if (weechat_strcasecmp (argv[1], "reload") == 0) { /* reload one tcl script */ weechat_tcl_reload_name (ptr_name); } else if (weechat_strcasecmp (argv[1], "unload") == 0) { /* unload tcl script */ weechat_tcl_unload_name (ptr_name); } tcl_quiet = 0; } else { weechat_printf (NULL, weechat_gettext ("%s%s: unknown option for " "command \"%s\""), weechat_prefix ("error"), TCL_PLUGIN_NAME, "tcl"); } } return WEECHAT_RC_OK; }
int weechat_tcl_command_cb (void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { char *path_script; /* make C compiler happy */ (void) data; (void) buffer; if (argc == 1) { script_display_list (weechat_tcl_plugin, tcl_scripts, NULL, 0); } else if (argc == 2) { if (weechat_strcasecmp (argv[1], "list") == 0) { script_display_list (weechat_tcl_plugin, tcl_scripts, NULL, 0); } else if (weechat_strcasecmp (argv[1], "listfull") == 0) { script_display_list (weechat_tcl_plugin, tcl_scripts, NULL, 1); } else if (weechat_strcasecmp (argv[1], "autoload") == 0) { script_auto_load (weechat_tcl_plugin, &weechat_tcl_load_cb); } else if (weechat_strcasecmp (argv[1], "reload") == 0) { weechat_tcl_unload_all (); script_auto_load (weechat_tcl_plugin, &weechat_tcl_load_cb); } else if (weechat_strcasecmp (argv[1], "unload") == 0) { weechat_tcl_unload_all (); } } else { if (weechat_strcasecmp (argv[1], "list") == 0) { script_display_list (weechat_tcl_plugin, tcl_scripts, argv_eol[2], 0); } else if (weechat_strcasecmp (argv[1], "listfull") == 0) { script_display_list (weechat_tcl_plugin, tcl_scripts, argv_eol[2], 1); } else if (weechat_strcasecmp (argv[1], "load") == 0) { /* load Tcl script */ path_script = script_search_path (weechat_tcl_plugin, argv_eol[2]); weechat_tcl_load ((path_script) ? path_script : argv_eol[2]); if (path_script) free (path_script); } else if (weechat_strcasecmp (argv[1], "reload") == 0) { /* reload one Tcl script */ weechat_tcl_reload_name (argv_eol[2]); } else if (weechat_strcasecmp (argv[1], "unload") == 0) { /* unload Tcl script */ weechat_tcl_unload_name (argv_eol[2]); } else { weechat_printf (NULL, weechat_gettext ("%s%s: unknown option for " "command \"%s\""), weechat_prefix ("error"), TCL_PLUGIN_NAME, "tcl"); } } return WEECHAT_RC_OK; }