]> source.dussan.org Git - rspamd.git/commitdiff
[Feature] Add utility methods for multipattern
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 13 Apr 2016 12:46:33 +0000 (13:46 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 13 Apr 2016 12:46:33 +0000 (13:46 +0100)
src/libutil/multipattern.c
src/libutil/multipattern.h

index 8241d1d4ea2df03cb8daf1fec35bdc12eca41c60..229ef2a9b4bb2833327b241d908c8b1b6baabf02 100644 (file)
@@ -611,3 +611,30 @@ rspamd_multipattern_destroy (struct rspamd_multipattern *mp)
                g_slice_free1 (sizeof (*mp), mp);
        }
 }
+
+const gchar*
+rspamd_multipattern_get_pattern (struct rspamd_multipattern *mp,
+               guint index)
+{
+       g_assert (mp != NULL);
+       g_assert (index < mp->cnt);
+
+#ifdef WITH_HYPERSCAN
+       return g_array_index (mp->hs_pats, gchar *, index);
+#else
+
+       ac_trie_pat_t pat;
+
+       pat = g_array_index (mp->pats, ac_trie_pat_t, index);
+
+       return pat.ptr;
+#endif
+}
+
+guint
+rspamd_multipattern_get_npatterns (struct rspamd_multipattern *mp)
+{
+       g_assert (mp != NULL);
+
+       return mp->cnt;
+}
index 45ade27433912825893e47901dbcd704d3be4b99..c2797715900489537d1e4fe71380b707113436bb 100644 (file)
@@ -112,6 +112,21 @@ gboolean rspamd_multipattern_compile (struct rspamd_multipattern *mp,
 gint rspamd_multipattern_lookup (struct rspamd_multipattern *mp,
                const gchar *in, gsize len, rspamd_multipattern_cb_t cb,
                gpointer ud, guint *pnfound);
+/**
+ * Get pattern string from multipattern identified by index
+ * @param mp
+ * @param index
+ * @return
+ */
+const gchar* rspamd_multipattern_get_pattern (struct rspamd_multipattern *mp,
+               guint index);
+
+/**
+ * Returns number of patterns in a multipattern matcher
+ * @param mp
+ * @return
+ */
+guint rspamd_multipattern_get_npatterns (struct rspamd_multipattern *mp);
 
 /**
  * Destroys multipattern structure