Ejemplo n.º 1
0
void
irc_redirect_pattern_free_all ()
{
    while (irc_redirect_patterns)
    {
        irc_redirect_pattern_free (irc_redirect_patterns);
    }
}
Ejemplo n.º 2
0
struct t_irc_redirect *
irc_redirect_new (struct t_irc_server *server,
                  const char *pattern, const char *signal,
                  int count, const char *string, int timeout,
                  const char *cmd_filter)
{
    struct t_irc_redirect_pattern *ptr_redirect_pattern;
    struct t_irc_redirect *new_redirect;

    if (!server->is_connected)
    {
        weechat_printf (NULL,
                        _("%s%s: no connection to server \"%s\" for redirect"),
                        weechat_prefix ("error"), IRC_PLUGIN_NAME,
                        server->name);
        return NULL;
    }

    if (!pattern || !pattern[0])
    {
        weechat_printf (NULL, _("%s%s: missing argument \"%s\" for redirect"),
                        weechat_prefix ("error"), IRC_PLUGIN_NAME, "pattern");
        return NULL;
    }
    if (!signal || !signal[0])
    {
        weechat_printf (NULL, _("%s%s: missing argument \"%s\" for redirect"),
                        weechat_prefix ("error"), IRC_PLUGIN_NAME, "signal");
        return NULL;
    }

    ptr_redirect_pattern = irc_redirect_pattern_search (pattern);
    if (!ptr_redirect_pattern)
    {
        weechat_printf (NULL, _("%s%s: redirect pattern \"%s\" not found"),
                        weechat_prefix ("error"), IRC_PLUGIN_NAME,
                        pattern);
        return NULL;
    }

    new_redirect = irc_redirect_new_with_commands (server, pattern, signal,
                                                   count, string,
                                                   (timeout > 0) ? timeout : ptr_redirect_pattern->timeout,
                                                   ptr_redirect_pattern->cmd_start,
                                                   ptr_redirect_pattern->cmd_stop,
                                                   ptr_redirect_pattern->cmd_extra,
                                                   cmd_filter);

    /*
     * remove redirect pattern if it is temporary (created by external
     * plugin/script)
     */
    if (new_redirect && ptr_redirect_pattern->temp_pattern)
        irc_redirect_pattern_free (ptr_redirect_pattern);

    return new_redirect;
}