Thanks very much for the quick fix !<br>I tried today&#39;s snapshot and it seems to work.<br><br>regards<br><br><div><span class="gmail_quote">On 4/29/07, <b class="gmail_sendername">Balazs Scheidler</b> &lt;<a href="mailto:bazsi@balabit.hu">
bazsi@balabit.hu</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">On Sat, 2007-04-28 at 12:44 -0700, stucky wrote:<br>&gt; Baszi
<br>&gt;<br>&gt; Cool. I&#39;m in the middle of building a new infrastructure and would<br>&gt; like to use this feature. I&#39;m not a programmer but I assume adding<br>&gt; this feature shouldn&#39;t be very hard at all right ?
<br>&gt; If you had a rough ETA that&#39;d help me.<br><br>attached patch implements it using perl-like syntax, e.g.:<br><br>filter f_case { match(&#39;(?i)regexp&#39;); };<br><br>It works in all filters that use regexps (
e.g. match, host, program,<br>etc) The regexp must begin with &#39;(?&#39; or otherwise the flag will not be<br>recognized.<br><br>Tomorrow&#39;s snapshot should contain it.<br><br>&gt;From 47f53555268efb72ab8db2d620d7669b8e5dc7a4 Mon Sep 17 00:00:00 2001
<br>From: Balazs Scheidler &lt;<a href="mailto:bazsi@balabit.hu">bazsi@balabit.hu</a>&gt;<br>Date: Sun, 29 Apr 2007 18:53:46 +0200<br>Subject: [PATCH] added support for Perl-like regexp flags to support case-ignoring matches
<br><br>2007-04-28&nbsp;&nbsp;Balazs Scheidler &lt;<a href="mailto:bazsi@balabit.hu">bazsi@balabit.hu</a>&gt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* src/filter.c (filter_re_compile): parse &#39;(?i)&#39; at the beginning of<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;regexps as an ignore-case flag, just like Perl does
<br>---<br> src/filter.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp; 34 +++++++++++++++++++++++++++++++---<br> tests/unit/test_filters.c |&nbsp;&nbsp;&nbsp;&nbsp;5 +++++<br> 2 files changed, 36 insertions(+), 3 deletions(-)<br><br>diff --git a/src/filter.c b/src/filter.c
<br>index 8e19440..cf7e3aa 100644<br>--- a/src/filter.c<br>+++ b/src/filter.c<br>@@ -230,11 +230,39 @@ typedef struct _FilterRE<br> } FilterRE;<br><br> static gboolean<br>-filter_re_compile(const char *re, regex_t *regex)
<br>+filter_re_compile(const gchar *re, regex_t *regex)<br> {<br>-&nbsp;&nbsp;int rc;<br>+&nbsp;&nbsp;gint rc;<br>+&nbsp;&nbsp;const gchar *re_comp = re;<br>+&nbsp;&nbsp;gint flags = REG_EXTENDED;<br><br>-&nbsp;&nbsp;rc = regcomp(regex, re, REG_EXTENDED);<br>+&nbsp;&nbsp;if (re[0] == &#39;(&#39; &amp;&amp; re[1] == &#39;?&#39;)
<br>+&nbsp;&nbsp;&nbsp;&nbsp;{<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gint i;<br>+<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i = 2; re[i] &amp;&amp; re[i] != &#39;)&#39;; i++)<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch (re[i])<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &#39;i&#39;:<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags |= REG_ICASE;
<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (re[i])<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;re_comp = &amp;re[i + 1];<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg_error(&quot;Invalid regexp flags&quot;,
<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt_tag_str(&quot;re&quot;, re),<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL);<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>+&nbsp;&nbsp;&nbsp;&nbsp;}<br>+<br>+&nbsp;&nbsp;rc = regcomp(regex, re_comp, flags);<br>&nbsp;&nbsp; if (rc)<br>&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gchar buf[256];
<br>diff --git a/tests/unit/test_filters.c b/tests/unit/test_filters.c<br>index 58236d7..187b572 100644<br>--- a/tests/unit/test_filters.c<br>+++ b/tests/unit/test_filters.c<br>@@ -137,11 +137,16 @@ main(int argc G_GNUC_UNUSED, char *argv[] G_GNUC_UNUSED)
<br><br>&nbsp;&nbsp; testcase(&quot;&lt;15&gt;Oct 15 16:17:01 host openvpn[2499]: PTHREAD support initialized&quot;, 0, filter_host_new(&quot;^host$&quot;), 1);<br>&nbsp;&nbsp; testcase(&quot;&lt;15&gt;Oct 15 16:17:01 host openvpn[2499]: PTHREAD support initialized&quot;, 0, filter_host_new(&quot;^hos$&quot;), 0);
<br>+&nbsp;&nbsp;testcase(&quot;&lt;15&gt;Oct 15 16:17:01 host openvpn[2499]: PTHREAD support initialized&quot;, 0, filter_host_new(&quot;pthread&quot;), 0);<br>&nbsp;&nbsp; fprintf(stderr, &quot;One \&quot;invalid regular expressions\&quot; message is to be expected\n&quot;);
<br>&nbsp;&nbsp; TEST_ASSERT(filter_host_new(&quot;((&quot;) == NULL);<br><br>+&nbsp;&nbsp;fprintf(stderr, &quot;One \&quot;invalid regular expressions\&quot; message is to be expected\n&quot;);<br>+&nbsp;&nbsp;TEST_ASSERT(filter_host_new(&quot;(?iana&quot;) == NULL);
<br>+<br>&nbsp;&nbsp; testcase(&quot;&lt;15&gt;Oct 15 16:17:01 host openvpn[2499]: PTHREAD support initialized&quot;, 0, filter_match_new(&quot; PTHREAD &quot;), 1);<br>&nbsp;&nbsp; testcase(&quot;&lt;15&gt;Oct 15 16:17:01 host openvpn[2499]: PTHREAD support initialized&quot;, 0, filter_match_new(&quot;^PTHREAD$&quot;), 0);
<br>+&nbsp;&nbsp;testcase(&quot;&lt;15&gt;Oct 15 16:17:01 host openvpn[2499]: PTHREAD support initialized&quot;, 0, filter_match_new(&quot;(?i)pthread&quot;), 1);<br>&nbsp;&nbsp; fprintf(stderr, &quot;One \&quot;invalid regular expression\&quot; message is to be expected\n&quot;);
<br>&nbsp;&nbsp; TEST_ASSERT(filter_match_new(&quot;((&quot;) == NULL);<br><br><br><br>--<br>Bazsi<br><br>_______________________________________________<br>syslog-ng maillist&nbsp;&nbsp;-&nbsp;&nbsp;<a href="mailto:syslog-ng@lists.balabit.hu">syslog-ng@lists.balabit.hu
</a><br><a href="https://lists.balabit.hu/mailman/listinfo/syslog-ng">https://lists.balabit.hu/mailman/listinfo/syslog-ng</a><br>Frequently asked questions at <a href="http://www.campin.net/syslog-ng/faq.html">http://www.campin.net/syslog-ng/faq.html
</a><br><br></blockquote></div><br><br clear="all"><br>-- <br>stucky