]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Add move-match-to-head-of-queue stuff to pcre filter
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Sat, 14 Apr 2007 11:54:20 +0000 (11:54 +0000)
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Sat, 14 Apr 2007 11:54:20 +0000 (11:54 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6793 e03df62e-2008-0410-955e-edbf42e46eb7

src/modules/extra/m_filter_pcre.cpp

index 19ff1b48ca13fb6975571e293ff8227ef915dc0f..e35094ac0ecc701581297b65cacf30731bb7a5b8 100644 (file)
@@ -6,7 +6,7 @@
  * See: http://www.inspircd.org/wiki/index.php/Credits
  *
  * This program is free but copyrighted software; see
- *            the file COPYING for details.
+ *         the file COPYING for details.
  *
  * ---------------------------------------------------
  */
@@ -56,13 +56,18 @@ class ModuleFilterPCRE : public FilterBase
 
        virtual FilterResult* FilterMatch(const std::string &text)
        {
-               for (unsigned int index = 0; index < filters.size(); index++)
+               for (std::vector<PCREFilter>::iterator index = filters.begin(); index != filters.end(); index++)
                {
-                       PCREFilter& filt = filters[index];
-                       
-                       if (pcre_exec(filt.regexp,NULL,text.c_str(),text.length(),0,0,NULL,0) > -1)
+                       if (pcre_exec(index->regexp, NULL, text.c_str(), text.length(), 0, 0, NULL, 0) > -1)
                        {
-                               return &filt;
+                               PCREFilter* fr = &(*index);
+                               if (index != filters.begin())
+                               {
+                                       filters.erase(index);
+                                       filters.insert(filters.begin(), *fr);
+                                       index = filters.begin();
+                               }
+                               return &(*index);
                        }
                }
                return NULL;