grim/purple-plugin-pack
* This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301, USA. # include "../pp_config.h" #include <glib/gprintf.h> #define IGNORANCE_RULE_INVALID 0 #define IGNORANCE_RULE_MINVALID INT_MAX #define IGNORANCE_RULE_SIMPLETEXT 1 #define IGNORANCE_RULE_SIMPLETEXT_NUMTOKENS 6 #define IGNORANCE_RULE_REGEX 2 #define IGNORANCE_RULE_REGEX_NUMTOKENS 6 #define IGNORANCE_RULE_REPEAT 4 #define IGNORANCE_RULE_REPEAT_NUMTOKENS 6 #define IGNORANCE_FLAG_FILTER 1 #define IGNORANCE_FLAG_IGNORE 2 #define IGNORANCE_FLAG_MESSAGE 4 #define IGNORANCE_FLAG_EXECUTE 8 #define IGNORANCE_FLAG_SOUND 16 * describes an ignorance rule * name - user's name for the rule * type - one of the ruletypes defined within this struct * value - the actual value of the rule * could be a string/regex, integer, other * depending on the rule type * score - an arbitrary (user-assigned) number * that determines the severity of the rule typedef struct ignorance_rule { ignorance_rule* ignorance_rule_new(); ignorance_rule* ignorance_rule_newp(const GString *name, gint type, const gchar *value, gint score, gint flags, gboolean enabled, const gchar *message, const gchar *sound, const gchar *command); void ignorance_rule_free(ignorance_rule *ir); void ignorance_rule_free_g(gpointer ir,gpointer user_data); gboolean ignorance_rule_has_type(gint type); * Determines whether a string violates a rule * text is the possibly offending string gint ignorance_rule_rulecheck(ignorance_rule *rule, const GString *text, gint simple_text_rulecheck(ignorance_rule *rule, const GString *text); gint regex_rulecheck(ignorance_rule *rule, const GString *text); gint repeat_rulecheck(ignorance_rule *rule, gint repeats); ignorance_rule* ignorance_rule_read(const gchar *ruletext); * Writes out an ignorance rule to a file * rule is the rule to write * f is the file which will be written * success/failure returned gboolean ignorance_rule_write(ignorance_rule *rule, FILE *f);