struct t_config_option * irc_msgbuffer_get_option (struct t_irc_server *server, const char *message) { struct t_config_option *ptr_option; char option_name[512]; if (server) { snprintf (option_name, sizeof (option_name), "%s.%s", server->name, message); /* search for msgbuffer in configuration file, for server */ ptr_option = weechat_config_search_option (irc_config_file, irc_config_section_msgbuffer, option_name); if (ptr_option) return ptr_option; } /* search for msgbuffer in configuration file */ ptr_option = weechat_config_search_option (irc_config_file, irc_config_section_msgbuffer, message); if (ptr_option) return ptr_option; /* no msgbuffer found in configuration */ return NULL; }
const char * irc_ctcp_get_reply (struct t_irc_server *server, const char *ctcp) { struct t_config_option *ptr_option; char option_name[512]; snprintf (option_name, sizeof (option_name), "%s.%s", server->name, ctcp); /* search for CTCP in config file, for server */ ptr_option = weechat_config_search_option (irc_config_file, irc_config_section_ctcp, option_name); if (ptr_option) return weechat_config_string (ptr_option); /* search for CTCP in config file */ ptr_option = weechat_config_search_option (irc_config_file, irc_config_section_ctcp, ctcp); if (ptr_option) return weechat_config_string (ptr_option); /* * no CTCP reply found in config, then return default reply, or NULL * for unknown CTCP */ return irc_ctcp_get_default_reply (ctcp); }
struct t_config_option * weechat_aspell_config_get_dict (const char *name) { return weechat_config_search_option (weechat_aspell_config_file, weechat_aspell_config_section_dict, name); }
struct t_config_option * logger_config_get_mask (const char *name) { return weechat_config_search_option (logger_config_file, logger_config_section_mask, name); }
const char * charset_get (struct t_config_section *section, const char *name, struct t_config_option *default_charset) { char *option_name, *ptr_end; struct t_config_option *ptr_option; option_name = strdup (name); if (option_name) { ptr_end = option_name + strlen (option_name); while (ptr_end >= option_name) { ptr_option = weechat_config_search_option (charset_config_file, section, option_name); if (ptr_option) { free (option_name); return weechat_config_string (ptr_option); } ptr_end--; while ((ptr_end >= option_name) && (ptr_end[0] != '.')) { ptr_end--; } if ((ptr_end >= option_name) && (ptr_end[0] == '.')) ptr_end[0] = '\0'; } ptr_option = weechat_config_search_option (charset_config_file, section, option_name); free (option_name); if (ptr_option) return weechat_config_string (ptr_option); } /* nothing found => return default decode/encode charset (if set) */ if (weechat_config_string (default_charset) && weechat_config_string (default_charset)[0]) return weechat_config_string (default_charset); /* no default charset set */ return NULL; }
int logger_config_mask_create_option (void *data, struct t_config_file *config_file, struct t_config_section *section, const char *option_name, const char *value) { struct t_config_option *ptr_option; int rc; /* make C compiler happy */ (void) data; rc = WEECHAT_CONFIG_OPTION_SET_ERROR; if (option_name) { ptr_option = weechat_config_search_option (config_file, section, option_name); if (ptr_option) { if (value && value[0]) rc = weechat_config_option_set (ptr_option, value, 1); else { weechat_config_option_free (ptr_option); rc = WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; } } else { if (value && value[0]) { ptr_option = weechat_config_new_option ( config_file, section, option_name, "string", _("file mask for log file; local buffer variables are " "permitted"), NULL, 0, 0, "", value, 0, NULL, NULL, &logger_config_mask_change, NULL, NULL, NULL); rc = (ptr_option) ? WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE : WEECHAT_CONFIG_OPTION_SET_ERROR; } else rc = WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; } } if (!logger_config_loading) { logger_stop_all (); logger_start_buffer_all (); } return rc; }
int logger_config_level_create_option (const void *pointer, void *data, struct t_config_file *config_file, struct t_config_section *section, const char *option_name, const char *value) { struct t_config_option *ptr_option; int rc; /* make C compiler happy */ (void) pointer; (void) data; rc = WEECHAT_CONFIG_OPTION_SET_ERROR; if (option_name) { ptr_option = weechat_config_search_option (config_file, section, option_name); if (ptr_option) { if (value && value[0]) rc = weechat_config_option_set (ptr_option, value, 1); else { weechat_config_option_free (ptr_option); rc = WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; } } else { if (value && value[0]) { ptr_option = weechat_config_new_option ( config_file, section, option_name, "integer", _("logging level for this buffer (0 = logging disabled, " "1 = a few messages (most important) .. 9 = all messages)"), NULL, 0, 9, "9", value, 0, NULL, NULL, NULL, &logger_config_level_change, NULL, NULL, NULL, NULL, NULL); rc = (ptr_option) ? WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE : WEECHAT_CONFIG_OPTION_SET_ERROR; } else rc = WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; } } if (!logger_config_loading) logger_start_buffer_all (1); return rc; }
int charset_config_create_option (void *data, struct t_config_file *config_file, struct t_config_section *section, const char *option_name, const char *value) { struct t_config_option *ptr_option; int rc; /* make C compiler happy */ (void) data; rc = WEECHAT_CONFIG_OPTION_SET_ERROR; if (option_name) { ptr_option = weechat_config_search_option (config_file, section, option_name); if (ptr_option) { if (value && value[0]) rc = weechat_config_option_set (ptr_option, value, 1); else { weechat_config_option_free (ptr_option); rc = WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; } } else { if (value && value[0]) { ptr_option = weechat_config_new_option ( config_file, section, option_name, "string", NULL, NULL, 0, 0, "", value, 0, NULL, NULL, NULL, NULL, NULL, NULL); rc = (ptr_option) ? WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE : WEECHAT_CONFIG_OPTION_SET_ERROR; } else rc = WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; } } if (rc == WEECHAT_CONFIG_OPTION_SET_ERROR) { weechat_printf (NULL, _("%s%s: error creating charset \"%s\" => \"%s\""), weechat_prefix ("error"), CHARSET_PLUGIN_NAME, option_name, value); } return rc; }
void alias_config_cmd_change_cb (void *data, struct t_config_option *option) { struct t_config_option *ptr_option_completion; /* make C compiler happy */ (void) data; ptr_option_completion = weechat_config_search_option (alias_config_file, alias_config_section_completion, weechat_config_option_get_pointer (option, "name")); alias_new (weechat_config_option_get_pointer (option, "name"), weechat_config_option_get_pointer (option, "value"), (ptr_option_completion) ? weechat_config_option_get_pointer (ptr_option_completion, "value") : NULL); }
void alias_config_cmd_delete_cb (void *data, struct t_config_option *option) { struct t_config_option *ptr_option_completion; struct t_alias *ptr_alias; /* make C compiler happy */ (void) data; ptr_option_completion = weechat_config_search_option (alias_config_file, alias_config_section_completion, weechat_config_option_get_pointer (option, "name")); ptr_alias = alias_search (weechat_config_option_get_pointer (option, "name")); if (ptr_alias) alias_free (ptr_alias); if (ptr_option_completion) weechat_config_option_free (ptr_option_completion); }
int weechat_aspell_config_dict_create_option (void *data, struct t_config_file *config_file, struct t_config_section *section, const char *option_name, const char *value) { struct t_config_option *ptr_option; int rc; /* make C compiler happy */ (void) data; rc = WEECHAT_CONFIG_OPTION_SET_ERROR; if (value && value[0]) weechat_aspell_speller_check_dictionaries (value); if (option_name) { ptr_option = weechat_config_search_option (config_file, section, option_name); if (ptr_option) { if (value && value[0]) rc = weechat_config_option_set (ptr_option, value, 1); else { weechat_config_option_free (ptr_option); rc = WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; } } else { if (value && value[0]) { ptr_option = weechat_config_new_option ( config_file, section, option_name, "string", _("comma separated list of dictionaries to use on this buffer"), NULL, 0, 0, "", value, 0, NULL, NULL, &weechat_aspell_config_dict_change, NULL, NULL, NULL); rc = (ptr_option) ? WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE : WEECHAT_CONFIG_OPTION_SET_ERROR; } else rc = WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; } } if (rc == WEECHAT_CONFIG_OPTION_SET_ERROR) { weechat_printf (NULL, _("%s%s: error creating aspell dictionary \"%s\" => \"%s\""), weechat_prefix ("error"), ASPELL_PLUGIN_NAME, option_name, value); } else weechat_aspell_create_spellers (weechat_current_buffer ()); return rc; }
int weechat_aspell_config_option_create_option (const void *pointer, void *data, struct t_config_file *config_file, struct t_config_section *section, const char *option_name, const char *value) { struct t_config_option *ptr_option; int rc; /* make C compiler happy */ (void) pointer; (void) data; rc = WEECHAT_CONFIG_OPTION_SET_ERROR; if (option_name) { ptr_option = weechat_config_search_option (config_file, section, option_name); if (ptr_option) { if (value && value[0]) rc = weechat_config_option_set (ptr_option, value, 1); else { weechat_config_option_free (ptr_option); rc = WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; } } else { if (value && value[0]) { ptr_option = weechat_config_new_option ( config_file, section, option_name, "string", _("option for aspell (for list of available options and " "format, run command \"aspell config\" in a shell)"), NULL, 0, 0, "", value, 0, NULL, NULL, NULL, &weechat_aspell_config_option_change, NULL, NULL, NULL, NULL, NULL); rc = (ptr_option) ? WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE : WEECHAT_CONFIG_OPTION_SET_ERROR; } else rc = WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; } } if (rc == WEECHAT_CONFIG_OPTION_SET_ERROR) { weechat_printf (NULL, _("%s%s: error creating aspell option \"%s\" => \"%s\""), weechat_prefix ("error"), ASPELL_PLUGIN_NAME, option_name, value); } else { weechat_hashtable_remove_all (weechat_aspell_speller_buffer); if (!weechat_aspell_config_loading) weechat_aspell_speller_remove_unused (); } return rc; }
int relay_config_create_option_port (void *data, struct t_config_file *config_file, struct t_config_section *section, const char *option_name, const char *value) { int rc, protocol_number, ipv4, ipv6, ssl; char *error, *protocol, *protocol_args; long port; struct t_relay_server *ptr_server; /* make C compiler happy */ (void) data; rc = WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; protocol_number = -1; port = -1; relay_server_get_protocol_args (option_name, &ipv4, &ipv6, &ssl, &protocol, &protocol_args); #ifndef HAVE_GNUTLS if (ssl) { weechat_printf (NULL, _("%s%s: cannot use SSL because WeeChat was not built " "with GnuTLS support"), weechat_prefix ("error"), RELAY_PLUGIN_NAME); rc = WEECHAT_CONFIG_OPTION_SET_ERROR; } #endif if (rc != WEECHAT_CONFIG_OPTION_SET_ERROR) { if (protocol) protocol_number = relay_protocol_search (protocol); if (protocol_number < 0) { weechat_printf (NULL, _("%s%s: error: unknown protocol \"%s\""), weechat_prefix ("error"), RELAY_PLUGIN_NAME, protocol); rc = WEECHAT_CONFIG_OPTION_SET_ERROR; } if ((protocol_number == RELAY_PROTOCOL_WEECHAT) && protocol_args) { weechat_printf (NULL, _("%s%s: error: name is not allowed for " "protocol \"%s\""), weechat_prefix ("error"), RELAY_PLUGIN_NAME, protocol); rc = WEECHAT_CONFIG_OPTION_SET_ERROR; } } if (rc != WEECHAT_CONFIG_OPTION_SET_ERROR) { if (weechat_config_search_option (config_file, section, option_name)) { weechat_printf (NULL, _("%s%s: error: relay for \"%s\" already exists"), weechat_prefix ("error"), RELAY_PLUGIN_NAME, option_name); rc = WEECHAT_CONFIG_OPTION_SET_ERROR; } } if (rc != WEECHAT_CONFIG_OPTION_SET_ERROR) { error = NULL; port = strtol (value, &error, 10); ptr_server = relay_server_search_port ((int)port); if (ptr_server) { weechat_printf (NULL, _("%s%s: error: port \"%d\" is already used"), weechat_prefix ("error"), RELAY_PLUGIN_NAME, (int)port); rc = WEECHAT_CONFIG_OPTION_SET_ERROR; } } if (rc != WEECHAT_CONFIG_OPTION_SET_ERROR) { if (relay_server_new (option_name, protocol_number, protocol_args, port, ipv4, ipv6, ssl)) { /* create configuration option */ weechat_config_new_option ( config_file, section, option_name, "integer", NULL, NULL, 0, 65535, "", value, 0, &relay_config_check_port_cb, NULL, &relay_config_change_port_cb, NULL, &relay_config_delete_port_cb, NULL); rc = WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; } else rc = WEECHAT_CONFIG_OPTION_SET_ERROR; } if (protocol) free (protocol); if (protocol_args) free (protocol_args); return rc; }
int relay_command_relay (void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { struct t_relay_server *ptr_server; struct t_config_option *ptr_option; int port; /* make C compiler happy */ (void) data; (void) buffer; if (argc > 1) { if (weechat_strcasecmp (argv[1], "list") == 0) { relay_command_client_list (0); return WEECHAT_RC_OK; } if (weechat_strcasecmp (argv[1], "listfull") == 0) { relay_command_client_list (1); return WEECHAT_RC_OK; } if (weechat_strcasecmp (argv[1], "listrelay") == 0) { relay_command_server_list (); return WEECHAT_RC_OK; } if (weechat_strcasecmp (argv[1], "add") == 0) { if (argc >= 4) { if (relay_config_create_option_port (NULL, relay_config_file, relay_config_section_port, argv[2], argv_eol[3]) != WEECHAT_CONFIG_OPTION_SET_ERROR) { weechat_printf (NULL, _("%s: relay \"%s\" (port %s) added"), RELAY_PLUGIN_NAME, argv[2], argv_eol[3]); } } else { weechat_printf (NULL, _("%s%s: missing arguments for \"%s\" " "command"), weechat_prefix ("error"), RELAY_PLUGIN_NAME, "relay add"); } return WEECHAT_RC_OK; } if (weechat_strcasecmp (argv[1], "del") == 0) { if (argc >= 3) { ptr_server = relay_server_search (argv_eol[2]); if (ptr_server) { port = ptr_server->port; relay_server_free (ptr_server); ptr_option = weechat_config_search_option (relay_config_file, relay_config_section_port, argv_eol[2]); if (ptr_option) weechat_config_option_free (ptr_option); weechat_printf (NULL, _("%s: relay \"%s\" (port %d) removed"), RELAY_PLUGIN_NAME, argv[2], port); } else { weechat_printf (NULL, _("%s%s: relay \"%s\" not found"), weechat_prefix ("error"), RELAY_PLUGIN_NAME, argv_eol[2]); } } else { weechat_printf (NULL, _("%s%s: missing arguments for \"%s\" " "command"), weechat_prefix ("error"), RELAY_PLUGIN_NAME, "relay del"); } return WEECHAT_RC_OK; } if (weechat_strcasecmp (argv[1], "raw") == 0) { relay_raw_open (1); return WEECHAT_RC_OK; } if (weechat_strcasecmp (argv[1], "sslcertkey") == 0) { relay_network_set_ssl_cert_key (1); return WEECHAT_RC_OK; } } if (!relay_buffer) relay_buffer_open (); if (relay_buffer) { weechat_buffer_set (relay_buffer, "display", "1"); if (argc > 1) { if (strcmp (argv[1], "up") == 0) { if (relay_buffer_selected_line > 0) relay_buffer_selected_line--; } else if (strcmp (argv[1], "down") == 0) { if (relay_buffer_selected_line < relay_client_count - 1) relay_buffer_selected_line++; } } } relay_buffer_refresh (NULL); return WEECHAT_RC_OK; }